Merge branch 'core-updates'
[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>
3246cc91 3;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
c0eac5a8 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
d464e725
AE
5;;;
6;;; This file is part of GNU Guix.
7;;;
8;;; GNU Guix is free software; you can redistribute it and/or modify it
9;;; under the terms of the GNU General Public License as published by
10;;; the Free Software Foundation; either version 3 of the License, or (at
11;;; your option) any later version.
12;;;
13;;; GNU Guix is distributed in the hope that it will be useful, but
14;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;;; GNU General Public License for more details.
17;;;
18;;; You should have received a copy of the GNU General Public License
19;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21(define-module (gnu packages mp3)
b5b73a82 22 #:use-module ((guix licenses) #:prefix license:)
25352fe1 23 #:use-module (gnu packages)
d464e725 24 #:use-module (gnu packages autotools)
194782a8
MW
25 #:use-module (gnu packages base)
26 #:use-module (gnu packages gcc)
25352fe1 27 #:use-module (gnu packages cdrom)
8cc9c0da 28 #:use-module (gnu packages compression)
54ff0b7d 29 #:use-module (gnu packages gettext)
25352fe1 30 #:use-module (gnu packages ghostscript)
68ff528c 31 #:use-module (gnu packages ncurses)
25352fe1
AE
32 #:use-module (gnu packages glib)
33 #:use-module (gnu packages gtk)
c23e9e48
AE
34 #:use-module (gnu packages pcre)
35 #:use-module (gnu packages pkg-config)
13ef3e99 36 #:use-module (gnu packages python)
54ff0b7d 37 #:use-module (gnu packages xiph)
1bdb591b 38 #:use-module (gnu packages pulseaudio)
a82bec4e 39 #:use-module (gnu packages linux) ;alsa-lib
d464e725
AE
40 #:use-module (guix packages)
41 #:use-module (guix download)
086518dd 42 #:use-module (guix build-system gnu)
13ef3e99 43 #:use-module (guix build-system python)
086518dd 44 #:use-module (guix build-system cmake))
d464e725
AE
45
46(define-public libmad
47 (package
48 (name "libmad")
49 (version "0.15.1b")
50 (source (origin
51 (method url-fetch)
52 (uri (string-append "mirror://sourceforge/mad/libmad/"
53 version "/libmad-"
54 version ".tar.gz"))
55 (sha256
56 (base32
dd863f1f 57 "14460zhacxhswnzb36qfpd1f2wbk10qvksvm6wyq5hpvdgnw7ymv"))
c0eac5a8
MW
58 (patches (map search-patch '("libmad-armv7-thumb-pt1.patch"
59 "libmad-armv7-thumb-pt2.patch"
60 "libmad-frame-length.patch"
61 "libmad-mips-newgcc.patch")))))
d464e725
AE
62 (build-system gnu-build-system)
63 (arguments
64 `(#:phases
d4bf49b1
EB
65 (alist-cons-before
66 'configure 'remove-unsupported-gcc-flags
67 (lambda _
68 ;; remove option that is not supported by gcc any more
69 (substitute* "configure" ((" -fforce-mem") "")))
d464e725 70 %standard-phases)))
35b9e423 71 (synopsis "MPEG audio decoder")
d464e725
AE
72 (description
73 "MAD (MPEG Audio Decoder) supports MPEG-1 and the MPEG-2 extension to
74lower sampling frequencies, as well as the de facto MPEG 2.5 format.
75All three audio layers — Layer I, Layer II, and Layer III (i.e. MP3) — are
76fully implemented.
77
78This package contains the library.")
79 (license license:gpl2+)
80 (home-page "http://www.underbit.com/products/mad/")))
81
8cc9c0da
AE
82(define-public libid3tag
83 (package
84 (name "libid3tag")
85 (version "0.15.1b")
86 (source (origin
87 (method url-fetch)
88 (uri (string-append "mirror://sourceforge/mad/libid3tag/"
89 version "/libid3tag-"
90 version ".tar.gz"))
91 (sha256
92 (base32
93 "0lb1w883dc46dajbdvnia5870brl5lvnlk7g7y58y9wpg5p4znk3"))))
94 (build-system gnu-build-system)
95 (inputs `(("zlib" ,zlib)))
35b9e423 96 (synopsis "Library for reading ID3 tags")
8cc9c0da 97 (description
35b9e423 98 "Libid3tag is a library for reading ID3 tags, both ID3v1 and the various
e881752c 99versions of ID3v2.")
8cc9c0da
AE
100 (license license:gpl2+)
101 (home-page "http://www.underbit.com/products/mad/")))
102
fbd84457
AE
103(define-public id3lib
104 (package
105 (name "id3lib")
106 (version "3.8.3")
107 (source (origin
108 (method url-fetch)
109 (uri (string-append "mirror://sourceforge/id3lib/id3lib/"
110 version "/id3lib-"
111 version ".tar.gz"))
112 (sha256
113 (base32
114 "0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))))
115 (build-system gnu-build-system)
116 (arguments
117 `(#:phases
d4bf49b1
EB
118 (alist-cons-before
119 'configure 'apply-patches
120 ;; TODO: create a patch for origin instead?
121 (lambda _
122 (substitute* "configure"
123 (("iomanip.h") "")) ; drop check for unused header
124 ;; see http://www.linuxfromscratch.org/patches/downloads/id3lib/
125 (substitute* "include/id3/id3lib_strings.h"
126 (("include <string>") "include <cstring>\n#include <string>"))
127 (substitute* "include/id3/writers.h"
128 (("//\\#include <string.h>") "#include <cstring>"))
129 (substitute* "examples/test_io.cpp"
130 (("dami;") "dami;\nusing namespace std;")))
fbd84457 131 %standard-phases)))
35b9e423 132 (synopsis "Library for reading, writing, and manipulating ID3v1 and ID3v2 tags")
fbd84457 133 (description
35b9e423
EB
134 "Id3lib is a cross-platform software development library for reading,
135writing, and manipulating ID3v1 and ID3v2 tags. It is an on-going project
fbd84457
AE
136whose primary goals are full compliance with the ID3v2 standard, portability
137across several platforms, and providing a powerful and feature-rich API with
138a highly stable and efficient implementation.")
139 (license license:lgpl2.0+)
140 (home-page "http://id3lib.sourceforge.net/")))
141
086518dd
LC
142(define-public taglib
143 (package
144 (name "taglib")
145 (version "1.9.1")
146 (source (origin
147 (method url-fetch)
148 (uri (string-append "http://taglib.github.io/releases/taglib-"
149 version ".tar.gz"))
150 (sha256
151 (base32
152 "06n7gnbcqa3r6c9gv00y0y1r48dyyazm6yj403i7ma0r2k6p3lvj"))))
153 (build-system cmake-build-system)
154 (arguments '(#:tests? #f)) ;no 'test' target
155 (inputs `(("zlib" ,zlib)))
156 (home-page "http://developer.kde.org/~wheeler/taglib.html")
157 (synopsis "Library to access audio file meta-data")
158 (description
159 "TagLib is a C++ library for reading and editing the meta-data of several
160popular audio formats. Currently it supports both ID3v1 and ID3v2 for MP3
161files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC,
162Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
163
164 ;; Dual-licensed: user may choose between LGPLv2.1 or MPLv1.1.
165 (license (list license:lgpl2.1 license:mpl1.1))))
166
68ff528c
LC
167(define-public mp3info
168 (package
169 (name "mp3info")
170 (version "0.8.5a")
171 (source (origin
172 (method url-fetch)
173 (uri (string-append
f8f8897f
AV
174 "http://ibiblio.org"
175 "/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-"
68ff528c
LC
176 version ".tgz"))
177 (sha256
178 (base32
179 "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04"))
180 (modules '((guix build utils)))
181 (snippet
182 '(substitute* "Makefile"
183 (("/bin/rm") "rm")
184 (("/usr/bin/install") "install")
185 (("man/man1") "share/man/man1")))))
186 (build-system gnu-build-system)
187 (outputs '("out" "gui")) ;GTK+ interface in "gui"
188 (arguments
189 '(#:phases (alist-replace
190 'configure
191 (lambda* (#:key outputs #:allow-other-keys)
192 (let ((out (assoc-ref outputs "out")))
193 (substitute* "Makefile"
194 (("prefix=.*")
195 (string-append "prefix := " out "\n")))))
196 (alist-cons-before
197 'install 'pre-install
198 (lambda* (#:key outputs #:allow-other-keys)
199 (let ((out (assoc-ref outputs "out")))
200 (mkdir-p (string-append out "/bin"))
201 (mkdir-p (string-append out "/share/man/man1"))))
202 (alist-cons-after
203 'install 'post-install
204 (lambda* (#:key outputs #:allow-other-keys)
205 ;; Move the GTK+ interface to "gui".
206 (let ((out (assoc-ref outputs "out"))
207 (gui (assoc-ref outputs "gui")))
208 (mkdir-p (string-append gui "/bin"))
209 (rename-file (string-append out "/bin/gmp3info")
210 (string-append gui "/bin/gmp3info"))))
211 %standard-phases)))
212 #:tests? #f))
213 (native-inputs
214 `(("pkg-config" ,pkg-config)))
215 (inputs
216 `(("gtk+" ,gtk+-2)
217 ("ncurses" ,ncurses)))
218 (home-page "http://www.ibiblio.org/mp3info/")
219 (synopsis "MP3 technical info viewer and ID3 1.x tag editor")
220 (description
221 "MP3Info is a little utility used to read and modify the ID3 tags of MP3
e881752c 222files. MP3Info can also display various technical aspects of an MP3 file
68ff528c
LC
223including playing time, bit-rate, sampling frequency and other attributes in a
224pre-defined or user-specifiable output format.")
225 (license license:gpl2+)))
226
c23e9e48
AE
227(define-public libmp3splt
228 (package
229 (name "libmp3splt")
230 (version "0.8.1a")
231 (source (origin
232 (method url-fetch)
233 (uri (string-append "mirror://sourceforge/mp3splt/libmp3splt/"
234 version "/libmp3splt-"
235 version ".tar.gz"))
236 (sha256
237 (base32
238 "0d20r1bd4fgp9kp7w3qixjgll34czck9dgw59mx2kbhb0mhh00d8"))))
239 (build-system gnu-build-system)
240 (inputs `(("libid3tag" ,libid3tag)
241 ("libmad" ,libmad)
242 ("libogg" ,libogg)
3246cc91 243 ("libltdl" ,libltdl)
e881752c 244 ("libvorbis" ,libvorbis)
c23e9e48 245 ("pcre" ,pcre)))
c4c4cc05
JD
246 (native-inputs
247 `(("pkg-config" ,pkg-config)))
35b9e423 248 (synopsis "Library for splitting mp3 and ogg vorbis files")
c23e9e48
AE
249 (description
250 "Mp3splt is a utility to split mp3 and ogg vorbis files selecting a begin
35b9e423 251and an end time position, without decoding. For splitting an album, one may
e881752c 252select split points and file names manually or obtain them automatically from
35b9e423 253CDDB (internet or a local file) or from .cue files. The tool also supports
c23e9e48
AE
254automatic silence split, that can be used also to adjust cddb/cue splitpoints.
255
256This package contains the library.")
257 (license license:gpl2+)
258 (home-page "http://mp3splt.sourceforge.net/mp3splt_page/home.php")))
259
260(define-public mp3splt
261 (package
262 (name "mp3splt")
263 (version "2.5.1")
264 (source (origin
265 (method url-fetch)
266 (uri (string-append "mirror://sourceforge/mp3splt/mp3splt/"
267 version "/mp3splt-"
268 version ".tar.gz"))
269 (sha256
270 (base32
271 "106dnka56prlc9nsfh300f8841am2lmkwlzgl9lkr25mgnc35wwh"))))
272 (build-system gnu-build-system)
273 (inputs `(("libmp3splt" ,libmp3splt)))
e881752c 274 (synopsis "Utility 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 binary.")
283 (license license:gpl2+)
284 (home-page "http://mp3splt.sourceforge.net/mp3splt_page/home.php")))
285
1bdb591b
LC
286(define-public mpg123
287 (package
288 (name "mpg123")
9e125175 289 (version "1.22.4")
1bdb591b
LC
290 (source (origin
291 (method url-fetch)
292 (uri (string-append "mirror://sourceforge/mpg123/mpg123-"
293 version ".tar.bz2"))
294 (sha256
295 (base32
9e125175 296 "1lj0xv0b6sgqsbhx10dg60cnzgz98i76gxy51kqh11hka0pf0sah"))))
1bdb591b
LC
297 (build-system gnu-build-system)
298 (arguments '(#:configure-flags '("--with-default-audio=pulse")))
299 (native-inputs `(("pkg-config" ,pkg-config)))
300 (inputs `(("pulseaudio" ,pulseaudio)
301 ("alsa-lib" ,alsa-lib)))
302 (home-page "http://www.mpg123.org/")
303 (synopsis "Console MP3 player and decoder library")
304 (description
35b9e423 305 "Mpg123 is a real time MPEG 1.0/2.0/2.5 audio player/decoder for layers
1bdb591b
LC
3061,2 and 3 (MPEG 1.0 layer 3 aka MP3 most commonly tested). It comes with a
307command-line tool as well as a C library, libmpg123.")
308 (license license:lgpl2.1)))
309
0a56fadb
LC
310(define-public mpg321
311 (package
312 (name "mpg321")
313 (version "0.3.1")
314 (source (origin
315 (method url-fetch)
316 (uri (string-append "mirror://sourceforge/mpg321/"
317 version "/mpg321-" version ".tar.gz"))
318 (sha256
319 (base32
320 "0yamsqvj15nsxxnjs9mgyslzx7krgsfk3q1hk3g6l8w9bbbj770b"))))
321 (build-system gnu-build-system)
322 (arguments '(#:configure-flags '("--disable-alsa")))
323 (inputs
324 `(("zlib" ,zlib)
325 ("libmad" ,libmad)
326 ("libid3tag" ,libid3tag)
327 ("libao" ,ao)))
328 (home-page "http://mpg321.sourceforge.net/")
329 (synopsis "Command-line MP3 player")
35b9e423 330 (description "Mpg321 is a command-line mp3 player. mpg321 is used for
0a56fadb
LC
331frontends, as an mp3 player and as an mp3 to wave file decoder (primarily for
332use with CD-recording software).")
333 (license license:gpl2)))
2ae92cbc
AE
334
335(define-public lame
336 (package
337 (name "lame")
338 (version "3.99.5")
339 (source (origin
340 (method url-fetch)
341 (uri (string-append "mirror://sourceforge/lame/lame/3.99/lame-"
342 version ".tar.gz"))
343 (sha256
344 (base32
345 "1zr3kadv35ii6liia0bpfgxpag27xcivp571ybckpbz4b10nnd14"))))
346 (build-system gnu-build-system)
194782a8
MW
347 ;; XXX FIXME: Use gcc-4.8 on i686 to work around
348 ;; <http://bugs.gnu.org/20856>.
349 (native-inputs (if (and (not (%current-target-system))
350 (string-prefix? "i686-" (%current-system)))
351 `(("gcc" ,(canonical-package gcc-4.8)))
352 '()))
2ae92cbc
AE
353 (home-page "http://lame.sourceforge.net/")
354 (synopsis "MPEG Audio Layer III (MP3) encoder")
355 (description "LAME is a high quality MPEG Audio Layer III (MP3) encoder.")
356 (license license:lgpl2.0)))
25352fe1
AE
357
358(define-public ripperx
359 (package
360 (name "ripperx")
d0dfc066 361 (version "2.8.0")
25352fe1
AE
362 (source (origin
363 (method url-fetch)
364 (uri (string-append "mirror://sourceforge/ripperx/ripperx/"
d0dfc066
AE
365 version "/ripperx-"
366 version ".tar.bz2"))
25352fe1
AE
367 (sha256
368 (base32
d0dfc066 369 "1ss3c1a5hx6c99q1cryxg0jhbnbdj6ga9xyz0dzlz9qhzg5qswfs"))
01eafd38 370 (patches
d0dfc066 371 (list (search-patch "ripperx-missing-file.patch")))))
25352fe1
AE
372 (build-system gnu-build-system)
373 (propagated-inputs
374 `(("gs-fonts" ,gs-fonts)
375 ("cdparanoia" ,cdparanoia)
376 ("flac" ,flac)
377 ("lame" ,lame)
378 ("vorbis-tools" ,vorbis-tools)))
379 (inputs
01eafd38 380 `(("glib" ,glib)
8b0275b6 381 ("gtk+" ,gtk+-2)
d0dfc066
AE
382 ("id3lib" ,id3lib)
383 ("taglib" ,taglib)))
c4c4cc05
JD
384 (native-inputs
385 `(("pkg-config" ,pkg-config)))
25352fe1
AE
386 (synopsis "GTK program to rip and encode CD audio tracks")
387 (description
388 "RipperX is a GTK program to rip CD audio tracks and encode them to the
35b9e423
EB
389Ogg, MP3, or FLAC formats. Its goal is to be easy to use, requiring only
390a few mouse clicks to convert an entire album. It supports CDDB lookups
25352fe1
AE
391for album and track information.")
392 (license license:gpl2)
393 (home-page "http://sourceforge.net/projects/ripperx/")))
8f0fd238
LC
394
395(define-public libmpcdec
396 (package
397 (name "libmpcdec")
398 (version "1.2.6")
399 (source (origin
400 (method url-fetch)
401 (uri (string-append
402 "http://files.musepack.net/source/libmpcdec-"
403 version ".tar.bz2"))
404 (sha256
405 (base32
406 "1a0jdyga1zfi4wgkg3905y6inghy3s4xfs5m4x7pal08m0llkmab"))))
407 (build-system gnu-build-system)
408 (synopsis "Decoding library for the Musepack audio format")
409 (description
410 "This library supports decoding of the Musepack (MPC) audio compression
411format.")
412 (license license:bsd-3)
413 (home-page "http://musepack.net")))
414
415(define-public mpc123
416 (package
417 (name "mpc123")
418 (version "0.2.4")
419 (source (origin
420 (method url-fetch)
421 (uri (string-append "mirror://sourceforge/mpc123/version%20"
422 version "/mpc123-" version ".tar.gz"))
423 (sha256
424 (base32
86d07a55
LC
425 "0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1"))
426 (patches (list (search-patch "mpc123-initialize-ao.patch")))))
8f0fd238
LC
427 (build-system gnu-build-system)
428 (arguments
429 '(#:phases (alist-replace
430 'configure
431 (lambda _
432 (substitute* "Makefile"
433 (("CC[[:blank:]]*:=.*")
434 "CC := gcc\n")))
435 (alist-replace
436 'install
437 (lambda* (#:key outputs #:allow-other-keys)
438 (let* ((out (assoc-ref outputs "out"))
439 (bin (string-append out "/bin")))
440 (mkdir-p bin)
96c46210 441 (install-file "mpc123" bin)))
8f0fd238
LC
442 %standard-phases))
443 #:tests? #f))
444
445 (native-inputs
446 `(("gettext" ,gnu-gettext)))
447 (inputs
448 `(("libao" ,ao)
449 ("libmpcdec" ,libmpcdec)))
450 (home-page "http://mpc123.sourceforge.net/")
451 (synopsis "Audio player for Musepack-formatted files")
452 (description
35b9e423 453 "Mpc123 is a command-line player for files in the Musepack audio
e881752c 454compression format (.mpc files).")
8f0fd238 455 (license license:gpl2+)))
13ef3e99
LF
456
457(define-public eyed3
458 (package
459 (name "eyed3")
460 (version "0.7.8")
461 (source (origin
462 (method url-fetch)
463 (uri (string-append
464 "http://eyed3.nicfit.net/releases/eyeD3-"
465 version ".tar.gz"))
466 (sha256
467 (base32
468 "1nv7nhfn1d0qm7rgkzksbccgqisng8klf97np0nwaqwd5dbmdf86"))))
469 (build-system python-build-system)
470 (arguments
471 `(#:python ,python-2))
472 (native-inputs
473 `(("python2-setuptools" ,python2-setuptools)
474 ("python2-nose" ,python2-nose)
475 ("python2-sphinx" ,python2-sphinx)
476 ("python2-coverage" ,python2-coverage)))
477 (synopsis "MP3 tag ID3 metadata editor")
478 (description "eyeD3 is a Python tool for working with audio files,
479specifically mp3 files containing ID3 metadata (i.e. song info). It provides a
480command-line tool (eyeD3) and a Python library (import eyed3) that can be used
481to write your own applications or plugins that are callable from the
482command-line tool.")
483 (home-page "http://eyed3.nicfit.net/")
484 (license license:gpl2+)))