gnu: waybar: Update to 0.9.5.
[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>
d2a7114e 3;;; Copyright © 2014, 2015, 2017, 2020 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>
6cea2873 8;;; Copyright © 2018–2021 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") ""))
83afa4e9 84 #t))
eb9d3667
KK
85 ;; Normally one should not add a pkg-config file if one is not provided
86 ;; by upstream developers, but Audacity expects a pkg-config file for
87 ;; this package, and other major GNU/Linux distributions already provide
88 ;; such a file.
83afa4e9
KK
89 (add-after 'install 'install-pkg-config
90 (lambda* (#:key outputs #:allow-other-keys)
91 (let* ((out (assoc-ref outputs "out"))
92 (pkg-config-dir (string-append out "/lib/pkgconfig")))
93 (mkdir-p pkg-config-dir)
94 (with-output-to-file (string-append pkg-config-dir "/mad.pc")
95 (lambda _
96 (format #t
97 "prefix=~@*~a~@
98 libdir=${prefix}/lib~@
99 includedir=${prefix}/include~@
100
101 Name: libmad~@
102 Description:~@
103 Version: ~a~@
104 Libs: -L${libdir} -lmad~@
105 Cflags: -I${includedir}~%"
106 out ,version)))))))))
35b9e423 107 (synopsis "MPEG audio decoder")
d464e725
AE
108 (description
109 "MAD (MPEG Audio Decoder) supports MPEG-1 and the MPEG-2 extension to
110lower sampling frequencies, as well as the de facto MPEG 2.5 format.
111All three audio layers — Layer I, Layer II, and Layer III (i.e. MP3) — are
112fully implemented.
113
114This package contains the library.")
115 (license license:gpl2+)
296f091b 116 (home-page "https://www.underbit.com/products/mad/")))
d464e725 117
8cc9c0da
AE
118(define-public libid3tag
119 (package
120 (name "libid3tag")
121 (version "0.15.1b")
122 (source (origin
123 (method url-fetch)
124 (uri (string-append "mirror://sourceforge/mad/libid3tag/"
125 version "/libid3tag-"
126 version ".tar.gz"))
127 (sha256
128 (base32
129 "0lb1w883dc46dajbdvnia5870brl5lvnlk7g7y58y9wpg5p4znk3"))))
130 (build-system gnu-build-system)
14e68191
KK
131 (arguments
132 `(#:phases
133 (modify-phases %standard-phases
ac3c4e32
KK
134 ;; Normally one should not add a pkg-config file if one is not provided
135 ;; by upstream developers, but Audacity expects a pkg-config file for
136 ;; this package, and other major GNU/Linux distributions already provide
137 ;; such a file.
14e68191
KK
138 (add-after 'install 'install-pkg-config
139 (lambda* (#:key outputs #:allow-other-keys)
140 (let* ((out (assoc-ref outputs "out"))
141 (pkg-config-dir (string-append out "/lib/pkgconfig")))
142 (mkdir-p pkg-config-dir)
143 (with-output-to-file (string-append pkg-config-dir "/id3tag.pc")
144 (lambda _
145 (format #t
146 "prefix=~@*~a~@
147 libdir=${prefix}/lib~@
148 includedir=${prefix}/include~@
149
150 Name: libid3tag~@
151 Description:~@
152 Version: ~a~@
153 Libs: -L${libdir} -lid3tag -lz~@
154 Cflags: -I${includedir}~%"
155 out ,version)))))))))
8cc9c0da 156 (inputs `(("zlib" ,zlib)))
35b9e423 157 (synopsis "Library for reading ID3 tags")
8cc9c0da 158 (description
35b9e423 159 "Libid3tag is a library for reading ID3 tags, both ID3v1 and the various
e881752c 160versions of ID3v2.")
8cc9c0da 161 (license license:gpl2+)
296f091b 162 (home-page "https://www.underbit.com/products/mad/")))
8cc9c0da 163
fbd84457
AE
164(define-public id3lib
165 (package
166 (name "id3lib")
167 (version "3.8.3")
168 (source (origin
169 (method url-fetch)
170 (uri (string-append "mirror://sourceforge/id3lib/id3lib/"
1f521b70 171 version "/id3lib-" version ".tar.gz"))
fbd84457
AE
172 (sha256
173 (base32
1f521b70 174 "0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))
35e65701
TD
175 (modules '((guix build utils)))
176 ;; Don't use bundled zlib
6cbee49d 177 (snippet '(begin (delete-file-recursively "zlib") #t))
b5f6700f
PL
178 (patches (search-patches "id3lib-CVE-2007-4460.patch"
179 "id3lib-UTF16-writing-bug.patch"))))
fbd84457 180 (build-system gnu-build-system)
35e65701 181 (inputs `(("zlib" ,zlib)))
fbd84457
AE
182 (arguments
183 `(#:phases
dc1d3cde
KK
184 (modify-phases %standard-phases
185 (add-before 'configure 'apply-patches
186 ;; TODO: create a patch for origin instead?
187 (lambda _
188 (substitute* "configure"
189 (("iomanip.h") "")) ; drop check for unused header
190 ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
191 (substitute* "include/id3/id3lib_strings.h"
192 (("include <string>") "include <cstring>\n#include <string>"))
193 (substitute* "include/id3/writers.h"
194 (("//\\#include <string.h>") "#include <cstring>"))
195 (substitute* "examples/test_io.cpp"
196 (("dami;") "dami;\nusing namespace std;"))
197 #t)))))
35b9e423 198 (synopsis "Library for reading, writing, and manipulating ID3v1 and ID3v2 tags")
fbd84457 199 (description
35b9e423
EB
200 "Id3lib is a cross-platform software development library for reading,
201writing, and manipulating ID3v1 and ID3v2 tags. It is an on-going project
fbd84457
AE
202whose primary goals are full compliance with the ID3v2 standard, portability
203across several platforms, and providing a powerful and feature-rich API with
204a highly stable and efficient implementation.")
205 (license license:lgpl2.0+)
206 (home-page "http://id3lib.sourceforge.net/")))
207
086518dd
LC
208(define-public taglib
209 (package
210 (name "taglib")
89e1e448 211 (version "1.12-beta-1")
086518dd 212 (source (origin
89e1e448
PL
213 (method git-fetch)
214 (uri (git-reference
215 (url "https://github.com/taglib/taglib")
216 (commit (string-append "v" version))))
217 (file-name (git-file-name name version))
086518dd
LC
218 (sha256
219 (base32
89e1e448 220 "1mp6w2ikniw8w6d5wr0h20j0ijg8jw7s9dli5a8k9znpznvxpym4"))))
086518dd 221 (build-system cmake-build-system)
d1451fa0
PL
222 (arguments
223 '(#:tests? #f ; Tests are not ran with BUILD_SHARED_LIBS on.
d2a7114e
LC
224 #:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
225 #:phases (modify-phases %standard-phases
226 (add-before 'configure 'adjust-zlib-ldflags
227 (lambda* (#:key inputs #:allow-other-keys)
228 ;; Make sure users of 'taglib-config --libs' get the -L
229 ;; flag for zlib.
230 (substitute* "CMakeLists.txt"
231 (("set\\(ZLIB_LIBRARIES_FLAGS -lz\\)")
219e0a49 232 (string-append "set(ZLIB_LIBRARIES_FLAGS \"-L"
d2a7114e 233 (assoc-ref inputs "zlib")
219e0a49 234 "/lib -lz\")")))
d2a7114e 235 #t)))))
086518dd 236 (inputs `(("zlib" ,zlib)))
788425c2 237 (home-page "https://taglib.org")
086518dd
LC
238 (synopsis "Library to access audio file meta-data")
239 (description
240 "TagLib is a C++ library for reading and editing the meta-data of several
241popular audio formats. Currently it supports both ID3v1 and ID3v2 for MP3
242files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC,
243Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
244
245 ;; Dual-licensed: user may choose between LGPLv2.1 or MPLv1.1.
246 (license (list license:lgpl2.1 license:mpl1.1))))
247
68ff528c
LC
248(define-public mp3info
249 (package
250 (name "mp3info")
251 (version "0.8.5a")
252 (source (origin
253 (method url-fetch)
254 (uri (string-append
296f091b 255 "https://ibiblio.org"
f8f8897f 256 "/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-"
68ff528c
LC
257 version ".tgz"))
258 (sha256
259 (base32
260 "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04"))
261 (modules '((guix build utils)))
262 (snippet
6cbee49d
MW
263 '(begin
264 (substitute* "Makefile"
265 (("/bin/rm") "rm")
266 (("/usr/bin/install") "install")
267 (("man/man1") "share/man/man1"))
268 #t))))
68ff528c
LC
269 (build-system gnu-build-system)
270 (outputs '("out" "gui")) ;GTK+ interface in "gui"
271 (arguments
dc1d3cde
KK
272 '(#:phases
273 (modify-phases %standard-phases
274 (replace 'configure
275 (lambda* (#:key outputs #:allow-other-keys)
276 (let ((out (assoc-ref outputs "out")))
277 (substitute* "Makefile"
278 (("prefix=.*")
279 (string-append "prefix := " out "\n"))))
280 #t))
281 (add-before 'install 'pre-install
282 (lambda* (#:key outputs #:allow-other-keys)
283 (let ((out (assoc-ref outputs "out")))
284 (mkdir-p (string-append out "/bin"))
285 (mkdir-p (string-append out "/share/man/man1")))
286 #t))
287 (add-after 'install 'post-install
288 (lambda* (#:key outputs #:allow-other-keys)
289 ;; Move the GTK+ interface to "gui".
290 (let ((out (assoc-ref outputs "out"))
291 (gui (assoc-ref outputs "gui")))
292 (mkdir-p (string-append gui "/bin"))
293 (rename-file (string-append out "/bin/gmp3info")
294 (string-append gui "/bin/gmp3info")))
295 #t)))
68ff528c
LC
296 #:tests? #f))
297 (native-inputs
298 `(("pkg-config" ,pkg-config)))
299 (inputs
300 `(("gtk+" ,gtk+-2)
301 ("ncurses" ,ncurses)))
296f091b 302 (home-page "https://www.ibiblio.org/mp3info/")
68ff528c
LC
303 (synopsis "MP3 technical info viewer and ID3 1.x tag editor")
304 (description
305 "MP3Info is a little utility used to read and modify the ID3 tags of MP3
e881752c 306files. MP3Info can also display various technical aspects of an MP3 file
68ff528c
LC
307including playing time, bit-rate, sampling frequency and other attributes in a
308pre-defined or user-specifiable output format.")
309 (license license:gpl2+)))
310
c23e9e48
AE
311(define-public libmp3splt
312 (package
313 (name "libmp3splt")
67a8298c 314 (version "0.9.2")
c23e9e48
AE
315 (source (origin
316 (method url-fetch)
317 (uri (string-append "mirror://sourceforge/mp3splt/libmp3splt/"
318 version "/libmp3splt-"
319 version ".tar.gz"))
320 (sha256
321 (base32
67a8298c 322 "1p1mn2hsmj5cp40fnc8g1yfvk72p8pjxi866gjdkgjsqrr7xdvih"))))
c23e9e48 323 (build-system gnu-build-system)
0d5d1bdf
MB
324 (inputs `(("flac" ,flac)
325 ("libid3tag" ,libid3tag)
c23e9e48
AE
326 ("libmad" ,libmad)
327 ("libogg" ,libogg)
3246cc91 328 ("libltdl" ,libltdl)
e881752c 329 ("libvorbis" ,libvorbis)
c23e9e48 330 ("pcre" ,pcre)))
c4c4cc05
JD
331 (native-inputs
332 `(("pkg-config" ,pkg-config)))
35b9e423 333 (synopsis "Library for splitting mp3 and ogg vorbis files")
c23e9e48
AE
334 (description
335 "Mp3splt is a utility to split mp3 and ogg vorbis files selecting a begin
35b9e423 336and an end time position, without decoding. For splitting an album, one may
e881752c 337select split points and file names manually or obtain them automatically from
35b9e423 338CDDB (internet or a local file) or from .cue files. The tool also supports
c23e9e48
AE
339automatic silence split, that can be used also to adjust cddb/cue splitpoints.
340
341This package contains the library.")
342 (license license:gpl2+)
343 (home-page "http://mp3splt.sourceforge.net/mp3splt_page/home.php")))
344
345(define-public mp3splt
346 (package
347 (name "mp3splt")
2041f901 348 (version "2.6.2")
c23e9e48
AE
349 (source (origin
350 (method url-fetch)
351 (uri (string-append "mirror://sourceforge/mp3splt/mp3splt/"
352 version "/mp3splt-"
353 version ".tar.gz"))
354 (sha256
355 (base32
2041f901 356 "1aiv20gypb6r84qabz8gblk8vi42cg3x333vk2pi3fyqvl82phry"))))
c23e9e48 357 (build-system gnu-build-system)
2041f901 358 (native-inputs `(("pkg-config" ,pkg-config)))
c23e9e48 359 (inputs `(("libmp3splt" ,libmp3splt)))
e881752c 360 (synopsis "Utility for splitting mp3 and ogg vorbis files")
c23e9e48
AE
361 (description
362 "Mp3splt is a utility to split mp3 and ogg vorbis files selecting a begin
35b9e423 363and an end time position, without decoding. For splitting an album, one may
e881752c 364select split points and file names manually or obtain them automatically from
35b9e423 365CDDB (internet or a local file) or from .cue files. The tool also supports
c23e9e48
AE
366automatic silence split, that can be used also to adjust cddb/cue splitpoints.
367
368This package contains the binary.")
369 (license license:gpl2+)
370 (home-page "http://mp3splt.sourceforge.net/mp3splt_page/home.php")))
371
1bdb591b
LC
372(define-public mpg123
373 (package
374 (name "mpg123")
6cea2873 375 (version "1.26.5")
fa3e71d6
NG
376 (source
377 (origin
378 (method url-fetch)
379 (uri (list (string-append "mirror://sourceforge/mpg123/mpg123/"
380 version "/mpg123-" version ".tar.bz2")
381 (string-append
382 "https://www.mpg123.org/download/mpg123-"
383 version ".tar.bz2")))
384 (sha256
6cea2873 385 (base32 "01pgcqjbbi2r7nlg5118bkivl0gkv0hq0cw7v4vpxgimv7h9fajh"))))
1bdb591b
LC
386 (build-system gnu-build-system)
387 (arguments '(#:configure-flags '("--with-default-audio=pulse")))
fa3e71d6
NG
388 (native-inputs
389 `(("pkg-config" ,pkg-config)))
390 (inputs
391 `(("alsa-lib" ,alsa-lib)
392 ("pulseaudio" ,pulseaudio)))
53a416d6 393 (home-page "https://www.mpg123.org/")
1bdb591b
LC
394 (synopsis "Console MP3 player and decoder library")
395 (description
35b9e423 396 "Mpg123 is a real time MPEG 1.0/2.0/2.5 audio player/decoder for layers
1bdb591b
LC
3971,2 and 3 (MPEG 1.0 layer 3 aka MP3 most commonly tested). It comes with a
398command-line tool as well as a C library, libmpg123.")
399 (license license:lgpl2.1)))
400
0a56fadb
LC
401(define-public mpg321
402 (package
403 (name "mpg321")
5ed7f28d 404 (version "0.3.2")
0a56fadb
LC
405 (source (origin
406 (method url-fetch)
de67e922 407 (uri (string-append "mirror://sourceforge/mpg321/mpg321/"
0a56fadb
LC
408 version "/mpg321-" version ".tar.gz"))
409 (sha256
410 (base32
109f5844
KK
411 "0ki8mh76bbmdh77qsiw682dvi8y468yhbdabqwg05igmwc1wqvq5"))
412 (patches
413 (search-patches "mpg321-CVE-2019-14247.patch"))))
0a56fadb
LC
414 (build-system gnu-build-system)
415 (arguments '(#:configure-flags '("--disable-alsa")))
416 (inputs
417 `(("zlib" ,zlib)
418 ("libmad" ,libmad)
419 ("libid3tag" ,libid3tag)
420 ("libao" ,ao)))
421 (home-page "http://mpg321.sourceforge.net/")
422 (synopsis "Command-line MP3 player")
35b9e423 423 (description "Mpg321 is a command-line mp3 player. mpg321 is used for
0a56fadb
LC
424frontends, as an mp3 player and as an mp3 to wave file decoder (primarily for
425use with CD-recording software).")
426 (license license:gpl2)))
2ae92cbc
AE
427
428(define-public lame
429 (package
430 (name "lame")
3d679ab1 431 (version "3.100")
2ae92cbc
AE
432 (source (origin
433 (method url-fetch)
3d679ab1
MB
434 (uri (string-append "mirror://sourceforge/lame/lame/"
435 (version-major+minor version) "/lame-"
2ae92cbc
AE
436 version ".tar.gz"))
437 (sha256
438 (base32
3d679ab1 439 "07nsn5sy3a8xbmw1bidxnsj5fj6kg9ai04icmqw40ybkp353dznx"))))
2ae92cbc 440 (build-system gnu-build-system)
fc5f56ea
KK
441 (arguments
442 `(#:phases
443 (modify-phases %standard-phases
444 (add-after 'install 'install-pkg-config
445 (lambda* (#:key outputs #:allow-other-keys)
446 (let* ((out (assoc-ref outputs "out"))
447 (pkg-config-dir (string-append out "/lib/pkgconfig")))
448 (mkdir-p pkg-config-dir)
449 (with-output-to-file (string-append pkg-config-dir "/lame.pc")
450 (lambda _
451 (format #t
452 "prefix=~@*~a~@
453 libdir=${prefix}/lib~@
454 includedir=${prefix}/include~@
455
456 Name: lame~@
457 Description:~@
458 Version: ~a~@
459 Libs: -L${libdir} -lmp3lame~@
460 Cflags: -I${includedir}~%"
461 out ,version)))))))))
2ae92cbc
AE
462 (home-page "http://lame.sourceforge.net/")
463 (synopsis "MPEG Audio Layer III (MP3) encoder")
464 (description "LAME is a high quality MPEG Audio Layer III (MP3) encoder.")
465 (license license:lgpl2.0)))
25352fe1
AE
466
467(define-public ripperx
468 (package
469 (name "ripperx")
d0dfc066 470 (version "2.8.0")
25352fe1
AE
471 (source (origin
472 (method url-fetch)
473 (uri (string-append "mirror://sourceforge/ripperx/ripperx/"
d0dfc066
AE
474 version "/ripperx-"
475 version ".tar.bz2"))
25352fe1
AE
476 (sha256
477 (base32
d0dfc066 478 "1ss3c1a5hx6c99q1cryxg0jhbnbdj6ga9xyz0dzlz9qhzg5qswfs"))
fc1adab1 479 (patches (search-patches "ripperx-missing-file.patch"))))
25352fe1
AE
480 (build-system gnu-build-system)
481 (propagated-inputs
482 `(("gs-fonts" ,gs-fonts)
483 ("cdparanoia" ,cdparanoia)
484 ("flac" ,flac)
485 ("lame" ,lame)
486 ("vorbis-tools" ,vorbis-tools)))
487 (inputs
01eafd38 488 `(("glib" ,glib)
8b0275b6 489 ("gtk+" ,gtk+-2)
d0dfc066
AE
490 ("id3lib" ,id3lib)
491 ("taglib" ,taglib)))
c4c4cc05
JD
492 (native-inputs
493 `(("pkg-config" ,pkg-config)))
25352fe1
AE
494 (synopsis "GTK program to rip and encode CD audio tracks")
495 (description
496 "RipperX is a GTK program to rip CD audio tracks and encode them to the
35b9e423
EB
497Ogg, MP3, or FLAC formats. Its goal is to be easy to use, requiring only
498a few mouse clicks to convert an entire album. It supports CDDB lookups
25352fe1
AE
499for album and track information.")
500 (license license:gpl2)
3b3b60d0 501 (home-page "https://sourceforge.net/projects/ripperx/")))
8f0fd238
LC
502
503(define-public libmpcdec
504 (package
505 (name "libmpcdec")
506 (version "1.2.6")
507 (source (origin
508 (method url-fetch)
509 (uri (string-append
296f091b 510 "https://files.musepack.net/source/libmpcdec-"
8f0fd238
LC
511 version ".tar.bz2"))
512 (sha256
513 (base32
514 "1a0jdyga1zfi4wgkg3905y6inghy3s4xfs5m4x7pal08m0llkmab"))))
515 (build-system gnu-build-system)
516 (synopsis "Decoding library for the Musepack audio format")
517 (description
518 "This library supports decoding of the Musepack (MPC) audio compression
519format.")
520 (license license:bsd-3)
296f091b 521 (home-page "https://musepack.net")))
8f0fd238
LC
522
523(define-public mpc123
524 (package
525 (name "mpc123")
526 (version "0.2.4")
527 (source (origin
528 (method url-fetch)
d1cd67af
EF
529 (uri (list (string-append "mirror://sourceforge/mpc123/version%20"
530 version "/mpc123-" version ".tar.gz")
531 (string-append "mirror://debian/pool/main/m/" name
532 "/" name "_" version ".orig.tar.gz")))
8f0fd238
LC
533 (sha256
534 (base32
86d07a55 535 "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1"))
fc1adab1 536 (patches (search-patches "mpc123-initialize-ao.patch"))))
8f0fd238
LC
537 (build-system gnu-build-system)
538 (arguments
1a847b70
EF
539 '(#:phases
540 (modify-phases %standard-phases
541 (replace 'configure
542 (lambda _
543 (substitute* "Makefile"
544 (("CC[[:blank:]]*:=.*")
545 "CC := gcc\n"))))
546 (replace 'install
547 (lambda* (#:key outputs #:allow-other-keys)
548 (let* ((out (assoc-ref outputs "out"))
549 (bin (string-append out "/bin")))
1a847b70 550 (install-file "mpc123" bin)))))
8f0fd238 551 #:tests? #f))
8f0fd238 552 (native-inputs
b94a6ca0 553 `(("gettext" ,gettext-minimal)))
8f0fd238
LC
554 (inputs
555 `(("libao" ,ao)
556 ("libmpcdec" ,libmpcdec)))
d1cd67af 557 (home-page "https://github.com/bucciarati/mpc123")
8f0fd238
LC
558 (synopsis "Audio player for Musepack-formatted files")
559 (description
35b9e423 560 "Mpc123 is a command-line player for files in the Musepack audio
e881752c 561compression format (.mpc files).")
8f0fd238 562 (license license:gpl2+)))
13ef3e99
LF
563
564(define-public eyed3
565 (package
566 (name "eyed3")
a96c0086 567 (version "0.8.12")
7c64cc7a
TGR
568 (source
569 (origin
570 (method url-fetch)
571 (uri (pypi-uri "eyeD3" version))
572 (sha256
a96c0086 573 (base32 "0vabr7hh6vy1w8gn35vmx9qwiyrfv734d5ahifg7x3pv0c5fqkp5"))))
13ef3e99
LF
574 (build-system python-build-system)
575 (arguments
7c64cc7a 576 `(#:tests? #f)) ; the required test data contains copyrighted material
33485fa9 577 (propagated-inputs
1825ce80
LF
578 `(("python-grako" ,python-grako)
579 ("python-magic" ,python-magic)
580 ("python-pathlib" ,python-pathlib)
581 ("python-six" ,python-six)))
13ef3e99
LF
582 (synopsis "MP3 tag ID3 metadata editor")
583 (description "eyeD3 is a Python tool for working with audio files,
584specifically mp3 files containing ID3 metadata (i.e. song info). It provides a
585command-line tool (eyeD3) and a Python library (import eyed3) that can be used
586to write your own applications or plugins that are callable from the
587command-line tool.")
998100e6 588 (home-page "https://eyed3.readthedocs.io/en/latest/")
13ef3e99 589 (license license:gpl2+)))
9518fde1
HG
590
591(define-public chromaprint
592 (package
593 (name "chromaprint")
938bb06a 594 (version "1.5.0")
9518fde1
HG
595 (source (origin
596 (method url-fetch)
597 (uri (string-append
1f577b46
TGR
598 "https://github.com/acoustid/chromaprint/releases/download/v"
599 version "/chromaprint-" version ".tar.gz"))
9518fde1 600 (sha256
3694a9b3 601 (base32
938bb06a 602 "0sknmyl5254rc55bvkhfwpl4dfvz45xglk1rq8zq5crmwq058fjp"))))
9518fde1
HG
603 (build-system cmake-build-system)
604 (arguments
605 `(#:tests? #f ; tests require googletest *sources*
606 ;;#:configure-flags '("-DBUILD_TESTS=ON") ; for building the tests
a509041f 607 #:configure-flags '("-DBUILD_TOOLS=ON") ; for fpcalc
9518fde1
HG
608 #:test-target "check"))
609 (inputs
610 ;; requires one of FFmpeg (prefered), FFTW3 or vDSP
611 ;; use the same ffmpeg version as for acoustid-fingerprinter
612 `(("ffmpeg" ,ffmpeg)
60e1de6d 613 ("boost" ,boost)))
9518fde1
HG
614 (home-page "https://acoustid.org/chromaprint")
615 (synopsis "Audio fingerprinting library")
616 (description "Chromaprint is a library for calculating audio
617fingerprints which are used by the Acoustid service. Its main purpose
618is to provide an accurate identifier for record tracks.")
619 (license license:lgpl2.1+)))
8ce704b2
RW
620
621(define-public python-audioread
622 (package
623 (name "python-audioread")
48951e85 624 (version "2.1.9")
8ce704b2
RW
625 (source
626 (origin
627 (method url-fetch)
628 (uri (pypi-uri "audioread" version))
629 (sha256
48951e85 630 (base32 "129hab8x9sb3plff2bkq4xnzc3i8k9rgcm1a36l813kc0m10wj53"))))
8ce704b2
RW
631 (build-system python-build-system)
632 (arguments `(#:tests? #f)) ; there is no "audiofile" fixture
633 (native-inputs
634 `(("python-pytest" ,python-pytest)
635 ("python-pytest-runner" ,python-pytest-runner)))
636 (home-page "https://github.com/sampsyo/audioread")
637 (synopsis "Decode audio files using whichever backend is available")
638 (description
639 "This package provides a Python library for audo decoding. It uses
640whatever audio backend is available, such as GStreamer, Core Audio, MAD,
641FFmpeg, etc.")
642 (license license:expat)))
2577d934
RW
643
644(define-public python-pyacoustid
645 (package
646 (name "python-pyacoustid")
647 (version "1.1.7")
648 (source
649 (origin
650 (method url-fetch)
651 (uri (pypi-uri "pyacoustid" version))
652 (sha256
653 (base32
654 "1zan6c22ca6sjy0g9ajwjp6mkzw7jv8r3n7jzska09a6x254lf87"))))
655 (build-system python-build-system)
656 (propagated-inputs
657 `(("python-audioread" ,python-audioread)
658 ("python-requests" ,python-requests)))
659 (home-page "https://github.com/sampsyo/pyacoustid")
660 (synopsis "Bindings for Chromaprint acoustic fingerprinting")
661 (description
662 "This package provides bindings for the Chromaprint acoustic
663fingerprinting library and the Acoustid API.")
664 (license license:expat)))
4c41dd99
MB
665
666(define-public python-pytaglib
667 (package
668 (name "python-pytaglib")
669 (version "1.4.6")
670 (source
671 (origin
672 (method url-fetch)
673 (uri (pypi-uri "pytaglib" version))
674 (sha256
675 (base32
676 "0li970qslfymz4vk1wrij2nfqw3l15cpc3fjjci48mpvg17gbnhn"))
677 ;; Delete file generated by Cython.
678 (modules '((guix build utils)))
679 (snippet
680 '(begin
681 (delete-file "src/taglib.cpp")))))
682 (build-system python-build-system)
683 (arguments
684 '(#:phases
685 (modify-phases %standard-phases
686 ;; Ensure that the Cython file is regenerated.
687 (add-after 'unpack 'setup-environment
688 (lambda _
689 (setenv "PYTAGLIB_CYTHONIZE" "1"))))))
690 (native-inputs
691 `(("python-cython" ,python-cython)
692 ("python-pytest" ,python-pytest)))
693 (inputs
694 `(("taglib" ,taglib)))
695 (home-page
696 "https://github.com/supermihi/pytaglib")
697 (synopsis
698 "Python bindings for taglib")
699 (description
700 "This package is a Python audio tagging library. It is
701cross-platform, works with all Python versions, and is very
702simple to use yet fully featured.")
703 (license license:gpl3)))