gnu: Add rust-cbindgen@0.14.1.
[jackhill/guix/guix.git] / gnu / packages / mp3.scm
CommitLineData
d464e725
AE
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
d5ff67f4 3;;; Copyright © 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
c0eac5a8 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
d1cd67af 5;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
35e65701 6;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
89e1e448 7;;; Copyright © 2017, 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com>
a96c0086 8;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
8ce704b2 9;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
938bb06a 10;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
d464e725
AE
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
27(define-module (gnu packages mp3)
b5b73a82 28 #:use-module ((guix licenses) #:prefix license:)
25352fe1 29 #:use-module (gnu packages)
d464e725 30 #:use-module (gnu packages autotools)
194782a8
MW
31 #:use-module (gnu packages base)
32 #:use-module (gnu packages gcc)
9518fde1 33 #:use-module (gnu packages boost)
25352fe1 34 #:use-module (gnu packages cdrom)
8ce704b2 35 #:use-module (gnu packages check)
8cc9c0da 36 #:use-module (gnu packages compression)
54ff0b7d 37 #:use-module (gnu packages gettext)
25352fe1 38 #:use-module (gnu packages ghostscript)
68ff528c 39 #:use-module (gnu packages ncurses)
25352fe1
AE
40 #:use-module (gnu packages glib)
41 #:use-module (gnu packages gtk)
c23e9e48
AE
42 #:use-module (gnu packages pcre)
43 #:use-module (gnu packages pkg-config)
13ef3e99 44 #:use-module (gnu packages python)
2577d934 45 #:use-module (gnu packages python-web)
44d10b1f 46 #:use-module (gnu packages python-xyz)
54ff0b7d 47 #:use-module (gnu packages xiph)
1bdb591b 48 #:use-module (gnu packages pulseaudio)
a82bec4e 49 #:use-module (gnu packages linux) ;alsa-lib
9518fde1 50 #:use-module (gnu packages video) ;ffmpeg
d464e725
AE
51 #:use-module (guix packages)
52 #:use-module (guix download)
89e1e448 53 #:use-module (guix git-download)
3d679ab1 54 #:use-module (guix utils)
086518dd 55 #:use-module (guix build-system gnu)
13ef3e99 56 #:use-module (guix build-system python)
086518dd 57 #:use-module (guix build-system cmake))
d464e725
AE
58
59(define-public libmad
60 (package
61 (name "libmad")
62 (version "0.15.1b")
63 (source (origin
64 (method url-fetch)
65 (uri (string-append "mirror://sourceforge/mad/libmad/"
66 version "/libmad-"
67 version ".tar.gz"))
68 (sha256
69 (base32
dd863f1f 70 "14460zhacxhswnzb36qfpd1f2wbk10qvksvm6wyq5hpvdgnw7ymv"))
fc1adab1
AK
71 (patches (search-patches "libmad-armv7-thumb-pt1.patch"
72 "libmad-armv7-thumb-pt2.patch"
aac6c53a
MW
73 "libmad-md_size.patch"
74 "libmad-length-check.patch"
fc1adab1 75 "libmad-mips-newgcc.patch"))))
d464e725
AE
76 (build-system gnu-build-system)
77 (arguments
78 `(#:phases
dc1d3cde
KK
79 (modify-phases %standard-phases
80 (add-before 'configure 'remove-unsupported-gcc-flags
4f27a333
MB
81 (lambda _
82 ;; remove option that is not supported by gcc any more
83 (substitute* "configure" ((" -fforce-mem") ""))
84 #t)))))
35b9e423 85 (synopsis "MPEG audio decoder")
d464e725
AE
86 (description
87 "MAD (MPEG Audio Decoder) supports MPEG-1 and the MPEG-2 extension to
88lower sampling frequencies, as well as the de facto MPEG 2.5 format.
89All three audio layers — Layer I, Layer II, and Layer III (i.e. MP3) — are
90fully implemented.
91
92This package contains the library.")
93 (license license:gpl2+)
296f091b 94 (home-page "https://www.underbit.com/products/mad/")))
d464e725 95
8cc9c0da
AE
96(define-public libid3tag
97 (package
98 (name "libid3tag")
99 (version "0.15.1b")
100 (source (origin
101 (method url-fetch)
102 (uri (string-append "mirror://sourceforge/mad/libid3tag/"
103 version "/libid3tag-"
104 version ".tar.gz"))
105 (sha256
106 (base32
107 "0lb1w883dc46dajbdvnia5870brl5lvnlk7g7y58y9wpg5p4znk3"))))
108 (build-system gnu-build-system)
109 (inputs `(("zlib" ,zlib)))
35b9e423 110 (synopsis "Library for reading ID3 tags")
8cc9c0da 111 (description
35b9e423 112 "Libid3tag is a library for reading ID3 tags, both ID3v1 and the various
e881752c 113versions of ID3v2.")
8cc9c0da 114 (license license:gpl2+)
296f091b 115 (home-page "https://www.underbit.com/products/mad/")))
8cc9c0da 116
fbd84457
AE
117(define-public id3lib
118 (package
119 (name "id3lib")
120 (version "3.8.3")
121 (source (origin
122 (method url-fetch)
123 (uri (string-append "mirror://sourceforge/id3lib/id3lib/"
1f521b70 124 version "/id3lib-" version ".tar.gz"))
fbd84457
AE
125 (sha256
126 (base32
1f521b70 127 "0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))
35e65701
TD
128 (modules '((guix build utils)))
129 ;; Don't use bundled zlib
6cbee49d 130 (snippet '(begin (delete-file-recursively "zlib") #t))
b5f6700f
PL
131 (patches (search-patches "id3lib-CVE-2007-4460.patch"
132 "id3lib-UTF16-writing-bug.patch"))))
fbd84457 133 (build-system gnu-build-system)
35e65701 134 (inputs `(("zlib" ,zlib)))
fbd84457
AE
135 (arguments
136 `(#:phases
dc1d3cde
KK
137 (modify-phases %standard-phases
138 (add-before 'configure 'apply-patches
139 ;; TODO: create a patch for origin instead?
140 (lambda _
141 (substitute* "configure"
142 (("iomanip.h") "")) ; drop check for unused header
143 ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
144 (substitute* "include/id3/id3lib_strings.h"
145 (("include <string>") "include <cstring>\n#include <string>"))
146 (substitute* "include/id3/writers.h"
147 (("//\\#include <string.h>") "#include <cstring>"))
148 (substitute* "examples/test_io.cpp"
149 (("dami;") "dami;\nusing namespace std;"))
150 #t)))))
35b9e423 151 (synopsis "Library for reading, writing, and manipulating ID3v1 and ID3v2 tags")
fbd84457 152 (description
35b9e423
EB
153 "Id3lib is a cross-platform software development library for reading,
154writing, and manipulating ID3v1 and ID3v2 tags. It is an on-going project
fbd84457
AE
155whose primary goals are full compliance with the ID3v2 standard, portability
156across several platforms, and providing a powerful and feature-rich API with
157a highly stable and efficient implementation.")
158 (license license:lgpl2.0+)
159 (home-page "http://id3lib.sourceforge.net/")))
160
086518dd
LC
161(define-public taglib
162 (package
163 (name "taglib")
89e1e448 164 (version "1.12-beta-1")
086518dd 165 (source (origin
89e1e448
PL
166 (method git-fetch)
167 (uri (git-reference
168 (url "https://github.com/taglib/taglib")
169 (commit (string-append "v" version))))
170 (file-name (git-file-name name version))
086518dd
LC
171 (sha256
172 (base32
89e1e448 173 "1mp6w2ikniw8w6d5wr0h20j0ijg8jw7s9dli5a8k9znpznvxpym4"))))
086518dd 174 (build-system cmake-build-system)
d1451fa0
PL
175 (arguments
176 '(#:tests? #f ; Tests are not ran with BUILD_SHARED_LIBS on.
177 #:configure-flags (list "-DBUILD_SHARED_LIBS=ON")))
086518dd 178 (inputs `(("zlib" ,zlib)))
788425c2 179 (home-page "https://taglib.org")
086518dd
LC
180 (synopsis "Library to access audio file meta-data")
181 (description
182 "TagLib is a C++ library for reading and editing the meta-data of several
183popular audio formats. Currently it supports both ID3v1 and ID3v2 for MP3
184files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC,
185Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
186
187 ;; Dual-licensed: user may choose between LGPLv2.1 or MPLv1.1.
188 (license (list license:lgpl2.1 license:mpl1.1))))
189
68ff528c
LC
190(define-public mp3info
191 (package
192 (name "mp3info")
193 (version "0.8.5a")
194 (source (origin
195 (method url-fetch)
196 (uri (string-append
296f091b 197 "https://ibiblio.org"
f8f8897f 198 "/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-"
68ff528c
LC
199 version ".tgz"))
200 (sha256
201 (base32
202 "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04"))
203 (modules '((guix build utils)))
204 (snippet
6cbee49d
MW
205 '(begin
206 (substitute* "Makefile"
207 (("/bin/rm") "rm")
208 (("/usr/bin/install") "install")
209 (("man/man1") "share/man/man1"))
210 #t))))
68ff528c
LC
211 (build-system gnu-build-system)
212 (outputs '("out" "gui")) ;GTK+ interface in "gui"
213 (arguments
dc1d3cde
KK
214 '(#:phases
215 (modify-phases %standard-phases
216 (replace 'configure
217 (lambda* (#:key outputs #:allow-other-keys)
218 (let ((out (assoc-ref outputs "out")))
219 (substitute* "Makefile"
220 (("prefix=.*")
221 (string-append "prefix := " out "\n"))))
222 #t))
223 (add-before 'install 'pre-install
224 (lambda* (#:key outputs #:allow-other-keys)
225 (let ((out (assoc-ref outputs "out")))
226 (mkdir-p (string-append out "/bin"))
227 (mkdir-p (string-append out "/share/man/man1")))
228 #t))
229 (add-after 'install 'post-install
230 (lambda* (#:key outputs #:allow-other-keys)
231 ;; Move the GTK+ interface to "gui".
232 (let ((out (assoc-ref outputs "out"))
233 (gui (assoc-ref outputs "gui")))
234 (mkdir-p (string-append gui "/bin"))
235 (rename-file (string-append out "/bin/gmp3info")
236 (string-append gui "/bin/gmp3info")))
237 #t)))
68ff528c
LC
238 #:tests? #f))
239 (native-inputs
240 `(("pkg-config" ,pkg-config)))
241 (inputs
242 `(("gtk+" ,gtk+-2)
243 ("ncurses" ,ncurses)))
296f091b 244 (home-page "https://www.ibiblio.org/mp3info/")
68ff528c
LC
245 (synopsis "MP3 technical info viewer and ID3 1.x tag editor")
246 (description
247 "MP3Info is a little utility used to read and modify the ID3 tags of MP3
e881752c 248files. MP3Info can also display various technical aspects of an MP3 file
68ff528c
LC
249including playing time, bit-rate, sampling frequency and other attributes in a
250pre-defined or user-specifiable output format.")
251 (license license:gpl2+)))
252
c23e9e48
AE
253(define-public libmp3splt
254 (package
255 (name "libmp3splt")
67a8298c 256 (version "0.9.2")
c23e9e48
AE
257 (source (origin
258 (method url-fetch)
259 (uri (string-append "mirror://sourceforge/mp3splt/libmp3splt/"
260 version "/libmp3splt-"
261 version ".tar.gz"))
262 (sha256
263 (base32
67a8298c 264 "1p1mn2hsmj5cp40fnc8g1yfvk72p8pjxi866gjdkgjsqrr7xdvih"))))
c23e9e48
AE
265 (build-system gnu-build-system)
266 (inputs `(("libid3tag" ,libid3tag)
267 ("libmad" ,libmad)
268 ("libogg" ,libogg)
3246cc91 269 ("libltdl" ,libltdl)
e881752c 270 ("libvorbis" ,libvorbis)
c23e9e48 271 ("pcre" ,pcre)))
c4c4cc05
JD
272 (native-inputs
273 `(("pkg-config" ,pkg-config)))
35b9e423 274 (synopsis "Library for splitting mp3 and ogg vorbis files")
c23e9e48
AE
275 (description
276 "Mp3splt is a utility to split mp3 and ogg vorbis files selecting a begin
35b9e423 277and an end time position, without decoding. For splitting an album, one may
e881752c 278select split points and file names manually or obtain them automatically from
35b9e423 279CDDB (internet or a local file) or from .cue files. The tool also supports
c23e9e48
AE
280automatic silence split, that can be used also to adjust cddb/cue splitpoints.
281
282This package contains the library.")
283 (license license:gpl2+)
284 (home-page "http://mp3splt.sourceforge.net/mp3splt_page/home.php")))
285
286(define-public mp3splt
287 (package
288 (name "mp3splt")
2041f901 289 (version "2.6.2")
c23e9e48
AE
290 (source (origin
291 (method url-fetch)
292 (uri (string-append "mirror://sourceforge/mp3splt/mp3splt/"
293 version "/mp3splt-"
294 version ".tar.gz"))
295 (sha256
296 (base32
2041f901 297 "1aiv20gypb6r84qabz8gblk8vi42cg3x333vk2pi3fyqvl82phry"))))
c23e9e48 298 (build-system gnu-build-system)
2041f901 299 (native-inputs `(("pkg-config" ,pkg-config)))
c23e9e48 300 (inputs `(("libmp3splt" ,libmp3splt)))
e881752c 301 (synopsis "Utility for splitting mp3 and ogg vorbis files")
c23e9e48
AE
302 (description
303 "Mp3splt is a utility to split mp3 and ogg vorbis files selecting a begin
35b9e423 304and an end time position, without decoding. For splitting an album, one may
e881752c 305select split points and file names manually or obtain them automatically from
35b9e423 306CDDB (internet or a local file) or from .cue files. The tool also supports
c23e9e48
AE
307automatic silence split, that can be used also to adjust cddb/cue splitpoints.
308
309This package contains the binary.")
310 (license license:gpl2+)
311 (home-page "http://mp3splt.sourceforge.net/mp3splt_page/home.php")))
312
1bdb591b
LC
313(define-public mpg123
314 (package
315 (name "mpg123")
46b5e67e 316 (version "1.26.3")
fa3e71d6
NG
317 (source
318 (origin
319 (method url-fetch)
320 (uri (list (string-append "mirror://sourceforge/mpg123/mpg123/"
321 version "/mpg123-" version ".tar.bz2")
322 (string-append
323 "https://www.mpg123.org/download/mpg123-"
324 version ".tar.bz2")))
325 (sha256
46b5e67e 326 (base32 "0vkcfdx0mqq6lmpczsmpa2jsb0s6dryx3i7gvr32i3w9b9w9ij9h"))))
1bdb591b
LC
327 (build-system gnu-build-system)
328 (arguments '(#:configure-flags '("--with-default-audio=pulse")))
fa3e71d6
NG
329 (native-inputs
330 `(("pkg-config" ,pkg-config)))
331 (inputs
332 `(("alsa-lib" ,alsa-lib)
333 ("pulseaudio" ,pulseaudio)))
53a416d6 334 (home-page "https://www.mpg123.org/")
1bdb591b
LC
335 (synopsis "Console MP3 player and decoder library")
336 (description
35b9e423 337 "Mpg123 is a real time MPEG 1.0/2.0/2.5 audio player/decoder for layers
1bdb591b
LC
3381,2 and 3 (MPEG 1.0 layer 3 aka MP3 most commonly tested). It comes with a
339command-line tool as well as a C library, libmpg123.")
340 (license license:lgpl2.1)))
341
0a56fadb
LC
342(define-public mpg321
343 (package
344 (name "mpg321")
5ed7f28d 345 (version "0.3.2")
0a56fadb
LC
346 (source (origin
347 (method url-fetch)
de67e922 348 (uri (string-append "mirror://sourceforge/mpg321/mpg321/"
0a56fadb
LC
349 version "/mpg321-" version ".tar.gz"))
350 (sha256
351 (base32
5ed7f28d 352 "0ki8mh76bbmdh77qsiw682dvi8y468yhbdabqwg05igmwc1wqvq5"))))
0a56fadb
LC
353 (build-system gnu-build-system)
354 (arguments '(#:configure-flags '("--disable-alsa")))
355 (inputs
356 `(("zlib" ,zlib)
357 ("libmad" ,libmad)
358 ("libid3tag" ,libid3tag)
359 ("libao" ,ao)))
360 (home-page "http://mpg321.sourceforge.net/")
361 (synopsis "Command-line MP3 player")
35b9e423 362 (description "Mpg321 is a command-line mp3 player. mpg321 is used for
0a56fadb
LC
363frontends, as an mp3 player and as an mp3 to wave file decoder (primarily for
364use with CD-recording software).")
365 (license license:gpl2)))
2ae92cbc
AE
366
367(define-public lame
368 (package
369 (name "lame")
3d679ab1 370 (version "3.100")
2ae92cbc
AE
371 (source (origin
372 (method url-fetch)
3d679ab1
MB
373 (uri (string-append "mirror://sourceforge/lame/lame/"
374 (version-major+minor version) "/lame-"
2ae92cbc
AE
375 version ".tar.gz"))
376 (sha256
377 (base32
3d679ab1 378 "07nsn5sy3a8xbmw1bidxnsj5fj6kg9ai04icmqw40ybkp353dznx"))))
2ae92cbc
AE
379 (build-system gnu-build-system)
380 (home-page "http://lame.sourceforge.net/")
381 (synopsis "MPEG Audio Layer III (MP3) encoder")
382 (description "LAME is a high quality MPEG Audio Layer III (MP3) encoder.")
383 (license license:lgpl2.0)))
25352fe1
AE
384
385(define-public ripperx
386 (package
387 (name "ripperx")
d0dfc066 388 (version "2.8.0")
25352fe1
AE
389 (source (origin
390 (method url-fetch)
391 (uri (string-append "mirror://sourceforge/ripperx/ripperx/"
d0dfc066
AE
392 version "/ripperx-"
393 version ".tar.bz2"))
25352fe1
AE
394 (sha256
395 (base32
d0dfc066 396 "1ss3c1a5hx6c99q1cryxg0jhbnbdj6ga9xyz0dzlz9qhzg5qswfs"))
fc1adab1 397 (patches (search-patches "ripperx-missing-file.patch"))))
25352fe1
AE
398 (build-system gnu-build-system)
399 (propagated-inputs
400 `(("gs-fonts" ,gs-fonts)
401 ("cdparanoia" ,cdparanoia)
402 ("flac" ,flac)
403 ("lame" ,lame)
404 ("vorbis-tools" ,vorbis-tools)))
405 (inputs
01eafd38 406 `(("glib" ,glib)
8b0275b6 407 ("gtk+" ,gtk+-2)
d0dfc066
AE
408 ("id3lib" ,id3lib)
409 ("taglib" ,taglib)))
c4c4cc05
JD
410 (native-inputs
411 `(("pkg-config" ,pkg-config)))
25352fe1
AE
412 (synopsis "GTK program to rip and encode CD audio tracks")
413 (description
414 "RipperX is a GTK program to rip CD audio tracks and encode them to the
35b9e423
EB
415Ogg, MP3, or FLAC formats. Its goal is to be easy to use, requiring only
416a few mouse clicks to convert an entire album. It supports CDDB lookups
25352fe1
AE
417for album and track information.")
418 (license license:gpl2)
3b3b60d0 419 (home-page "https://sourceforge.net/projects/ripperx/")))
8f0fd238
LC
420
421(define-public libmpcdec
422 (package
423 (name "libmpcdec")
424 (version "1.2.6")
425 (source (origin
426 (method url-fetch)
427 (uri (string-append
296f091b 428 "https://files.musepack.net/source/libmpcdec-"
8f0fd238
LC
429 version ".tar.bz2"))
430 (sha256
431 (base32
432 "1a0jdyga1zfi4wgkg3905y6inghy3s4xfs5m4x7pal08m0llkmab"))))
433 (build-system gnu-build-system)
434 (synopsis "Decoding library for the Musepack audio format")
435 (description
436 "This library supports decoding of the Musepack (MPC) audio compression
437format.")
438 (license license:bsd-3)
296f091b 439 (home-page "https://musepack.net")))
8f0fd238
LC
440
441(define-public mpc123
442 (package
443 (name "mpc123")
444 (version "0.2.4")
445 (source (origin
446 (method url-fetch)
d1cd67af
EF
447 (uri (list (string-append "mirror://sourceforge/mpc123/version%20"
448 version "/mpc123-" version ".tar.gz")
449 (string-append "mirror://debian/pool/main/m/" name
450 "/" name "_" version ".orig.tar.gz")))
8f0fd238
LC
451 (sha256
452 (base32
86d07a55 453 "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1"))
fc1adab1 454 (patches (search-patches "mpc123-initialize-ao.patch"))))
8f0fd238
LC
455 (build-system gnu-build-system)
456 (arguments
1a847b70
EF
457 '(#:phases
458 (modify-phases %standard-phases
459 (replace 'configure
460 (lambda _
461 (substitute* "Makefile"
462 (("CC[[:blank:]]*:=.*")
463 "CC := gcc\n"))))
464 (replace 'install
465 (lambda* (#:key outputs #:allow-other-keys)
466 (let* ((out (assoc-ref outputs "out"))
467 (bin (string-append out "/bin")))
1a847b70 468 (install-file "mpc123" bin)))))
8f0fd238 469 #:tests? #f))
8f0fd238 470 (native-inputs
b94a6ca0 471 `(("gettext" ,gettext-minimal)))
8f0fd238
LC
472 (inputs
473 `(("libao" ,ao)
474 ("libmpcdec" ,libmpcdec)))
d1cd67af 475 (home-page "https://github.com/bucciarati/mpc123")
8f0fd238
LC
476 (synopsis "Audio player for Musepack-formatted files")
477 (description
35b9e423 478 "Mpc123 is a command-line player for files in the Musepack audio
e881752c 479compression format (.mpc files).")
8f0fd238 480 (license license:gpl2+)))
13ef3e99
LF
481
482(define-public eyed3
483 (package
484 (name "eyed3")
a96c0086 485 (version "0.8.12")
7c64cc7a
TGR
486 (source
487 (origin
488 (method url-fetch)
489 (uri (pypi-uri "eyeD3" version))
490 (sha256
a96c0086 491 (base32 "0vabr7hh6vy1w8gn35vmx9qwiyrfv734d5ahifg7x3pv0c5fqkp5"))))
13ef3e99
LF
492 (build-system python-build-system)
493 (arguments
7c64cc7a 494 `(#:tests? #f)) ; the required test data contains copyrighted material
33485fa9 495 (propagated-inputs
1825ce80
LF
496 `(("python-grako" ,python-grako)
497 ("python-magic" ,python-magic)
498 ("python-pathlib" ,python-pathlib)
499 ("python-six" ,python-six)))
13ef3e99
LF
500 (synopsis "MP3 tag ID3 metadata editor")
501 (description "eyeD3 is a Python tool for working with audio files,
502specifically mp3 files containing ID3 metadata (i.e. song info). It provides a
503command-line tool (eyeD3) and a Python library (import eyed3) that can be used
504to write your own applications or plugins that are callable from the
505command-line tool.")
998100e6 506 (home-page "https://eyed3.readthedocs.io/en/latest/")
13ef3e99 507 (license license:gpl2+)))
9518fde1
HG
508
509(define-public chromaprint
510 (package
511 (name "chromaprint")
938bb06a 512 (version "1.5.0")
9518fde1
HG
513 (source (origin
514 (method url-fetch)
515 (uri (string-append
1f577b46
TGR
516 "https://github.com/acoustid/chromaprint/releases/download/v"
517 version "/chromaprint-" version ".tar.gz"))
9518fde1 518 (sha256
3694a9b3 519 (base32
938bb06a 520 "0sknmyl5254rc55bvkhfwpl4dfvz45xglk1rq8zq5crmwq058fjp"))))
9518fde1
HG
521 (build-system cmake-build-system)
522 (arguments
523 `(#:tests? #f ; tests require googletest *sources*
524 ;;#:configure-flags '("-DBUILD_TESTS=ON") ; for building the tests
a509041f 525 #:configure-flags '("-DBUILD_TOOLS=ON") ; for fpcalc
9518fde1
HG
526 #:test-target "check"))
527 (inputs
528 ;; requires one of FFmpeg (prefered), FFTW3 or vDSP
529 ;; use the same ffmpeg version as for acoustid-fingerprinter
530 `(("ffmpeg" ,ffmpeg)
60e1de6d 531 ("boost" ,boost)))
9518fde1
HG
532 (home-page "https://acoustid.org/chromaprint")
533 (synopsis "Audio fingerprinting library")
534 (description "Chromaprint is a library for calculating audio
535fingerprints which are used by the Acoustid service. Its main purpose
536is to provide an accurate identifier for record tracks.")
537 (license license:lgpl2.1+)))
8ce704b2
RW
538
539(define-public python-audioread
540 (package
541 (name "python-audioread")
542 (version "2.1.8")
543 (source
544 (origin
545 (method url-fetch)
546 (uri (pypi-uri "audioread" version))
547 (sha256
548 (base32
549 "0s6iilb8ca6j6nv5a5hbyxi5alr3crvsbr6kggh82a44pkx08f87"))))
550 (build-system python-build-system)
551 (arguments `(#:tests? #f)) ; there is no "audiofile" fixture
552 (native-inputs
553 `(("python-pytest" ,python-pytest)
554 ("python-pytest-runner" ,python-pytest-runner)))
555 (home-page "https://github.com/sampsyo/audioread")
556 (synopsis "Decode audio files using whichever backend is available")
557 (description
558 "This package provides a Python library for audo decoding. It uses
559whatever audio backend is available, such as GStreamer, Core Audio, MAD,
560FFmpeg, etc.")
561 (license license:expat)))
2577d934
RW
562
563(define-public python-pyacoustid
564 (package
565 (name "python-pyacoustid")
566 (version "1.1.7")
567 (source
568 (origin
569 (method url-fetch)
570 (uri (pypi-uri "pyacoustid" version))
571 (sha256
572 (base32
573 "1zan6c22ca6sjy0g9ajwjp6mkzw7jv8r3n7jzska09a6x254lf87"))))
574 (build-system python-build-system)
575 (propagated-inputs
576 `(("python-audioread" ,python-audioread)
577 ("python-requests" ,python-requests)))
578 (home-page "https://github.com/sampsyo/pyacoustid")
579 (synopsis "Bindings for Chromaprint acoustic fingerprinting")
580 (description
581 "This package provides bindings for the Chromaprint acoustic
582fingerprinting library and the Acoustid API.")
583 (license license:expat)))