audio.scm 139 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
  3. ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
  4. ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
  5. ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
  6. ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
  7. ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
  8. ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
  9. ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
  10. ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
  11. ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
  12. ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
  13. ;;; Copyright © 2018 okapi <okapi@firemail.cc>
  14. ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
  15. ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
  16. ;;; Copyright © 2018 Brett Gilio <brettg@posteo.net>
  17. ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
  18. ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
  19. ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
  20. ;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
  21. ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
  22. ;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
  23. ;;;
  24. ;;; This file is part of GNU Guix.
  25. ;;;
  26. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  27. ;;; under the terms of the GNU General Public License as published by
  28. ;;; the Free Software Foundation; either version 3 of the License, or (at
  29. ;;; your option) any later version.
  30. ;;;
  31. ;;; GNU Guix is distributed in the hope that it will be useful, but
  32. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  33. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  34. ;;; GNU General Public License for more details.
  35. ;;;
  36. ;;; You should have received a copy of the GNU General Public License
  37. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  38. (define-module (gnu packages audio)
  39. #:use-module (guix packages)
  40. #:use-module (guix download)
  41. #:use-module (guix git-download)
  42. #:use-module (guix utils)
  43. #:use-module ((guix licenses) #:prefix license:)
  44. #:use-module (guix build-system gnu)
  45. #:use-module (guix build-system waf)
  46. #:use-module (guix build-system trivial)
  47. #:use-module (guix build-system cmake)
  48. #:use-module (guix build-system python)
  49. #:use-module (guix build-system glib-or-gtk)
  50. #:use-module (gnu packages)
  51. #:use-module (gnu packages algebra)
  52. #:use-module (gnu packages autotools)
  53. #:use-module (gnu packages avahi)
  54. #:use-module (gnu packages boost)
  55. #:use-module (gnu packages backup)
  56. #:use-module (gnu packages base)
  57. #:use-module (gnu packages bison)
  58. #:use-module (gnu packages check)
  59. #:use-module (gnu packages compression)
  60. #:use-module (gnu packages curl)
  61. #:use-module (gnu packages dbm)
  62. #:use-module (gnu packages emacs)
  63. #:use-module (gnu packages file)
  64. #:use-module (gnu packages flex)
  65. #:use-module (gnu packages fltk)
  66. #:use-module (gnu packages fontutils)
  67. #:use-module (gnu packages gettext)
  68. #:use-module (gnu packages glib)
  69. #:use-module (gnu packages gtk)
  70. #:use-module (gnu packages gnome)
  71. #:use-module (gnu packages gnunet) ; libmicrohttpd
  72. #:use-module (gnu packages gperf)
  73. #:use-module (gnu packages icu4c)
  74. #:use-module (gnu packages image)
  75. #:use-module (gnu packages ncurses)
  76. #:use-module (gnu packages qt)
  77. #:use-module (gnu packages libbsd)
  78. #:use-module (gnu packages linux)
  79. #:use-module (gnu packages libusb)
  80. #:use-module (gnu packages llvm)
  81. #:use-module (gnu packages mp3) ;taglib
  82. #:use-module (gnu packages perl)
  83. #:use-module (gnu packages pkg-config)
  84. #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
  85. #:use-module (gnu packages python)
  86. #:use-module (gnu packages python-xyz)
  87. #:use-module (gnu packages rdf)
  88. #:use-module (gnu packages readline)
  89. #:use-module (gnu packages serialization)
  90. #:use-module (gnu packages telephony)
  91. #:use-module (gnu packages tls)
  92. #:use-module (gnu packages video)
  93. #:use-module (gnu packages vim) ;xxd
  94. #:use-module (gnu packages webkit)
  95. #:use-module (gnu packages wxwidgets)
  96. #:use-module (gnu packages xiph)
  97. #:use-module (gnu packages xml)
  98. #:use-module (gnu packages xorg)
  99. #:use-module (gnu packages maths)
  100. #:use-module (gnu packages multiprecision)
  101. #:use-module (gnu packages music)
  102. #:use-module (srfi srfi-1)
  103. #:use-module (srfi srfi-26))
  104. (define-public alsa-modular-synth
  105. (package
  106. (name "alsa-modular-synth")
  107. (version "2.1.2")
  108. (source (origin
  109. (method url-fetch)
  110. (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
  111. "/" version "/ams-" version ".tar.bz2"))
  112. (sha256
  113. (base32
  114. "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0"))))
  115. (build-system gnu-build-system)
  116. (arguments
  117. `(#:configure-flags
  118. '("--enable-qt5"
  119. "CXXFLAGS=-std=gnu++11")
  120. #:phases
  121. (modify-phases %standard-phases
  122. ;; Insert an extra space between linker flags.
  123. (add-before 'configure 'add-missing-space
  124. (lambda _
  125. (substitute* "configure"
  126. (("LIBS\\+=\\$LIBSsave") "LIBS+=\" $LIBSsave\"")
  127. (("CFLAGS\\+=\\$CFLAGSsave") "CFLAGS+=\" $CFLAGSsave\""))
  128. #t)))))
  129. (inputs
  130. `(("alsa-lib" ,alsa-lib)
  131. ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
  132. ;; license incompatibility.
  133. ("clalsadrv" ,clalsadrv)
  134. ("fftw" ,fftw)
  135. ("jack" ,jack-1)
  136. ("ladspa" ,ladspa)
  137. ("liblo" ,liblo)
  138. ("qtbase" ,qtbase)
  139. ("qttools" ,qttools)))
  140. (native-inputs
  141. `(("pkg-config" ,pkg-config)))
  142. (home-page "http://alsamodular.sourceforge.net/")
  143. (synopsis "Realtime modular synthesizer and effect processor")
  144. (description
  145. "AlsaModularSynth is a digital implementation of a classical analog
  146. modular synthesizer system. It uses virtual control voltages to control the
  147. parameters of the modules. The control voltages which control the frequency
  148. e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
  149. Filter) modules follow the convention of 1V / Octave.")
  150. (license license:gpl2)))
  151. (define-public aubio
  152. (package
  153. (name "aubio")
  154. (version "0.4.6")
  155. (source (origin
  156. (method url-fetch)
  157. (uri (string-append
  158. "https://aubio.org/pub/aubio-" version ".tar.bz2"))
  159. (sha256
  160. (base32
  161. "1yvwskahx1bf3x2fvi6cwah1ay11iarh79fjlqz8s887y3hkpixx"))))
  162. (build-system waf-build-system)
  163. (arguments
  164. `(#:tests? #f ; no check target
  165. #:configure-flags
  166. (list
  167. (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
  168. "--enable-fftw3f"
  169. "--enable-jack"
  170. "--enable-sndfile"
  171. "--enable-samplerate"
  172. ;; TODO: enable compilation with avcodec once available.
  173. "--disable-avcodec")
  174. #:python ,python-2))
  175. (inputs
  176. `(("jack" ,jack-1)
  177. ("libsndfile" ,libsndfile)
  178. ("libsamplerate" ,libsamplerate)
  179. ("fftwf" ,fftwf)))
  180. (native-inputs
  181. `(("pkg-config" ,pkg-config)))
  182. (home-page "https://aubio.org/")
  183. (synopsis "Library for audio labelling")
  184. (description
  185. "aubio is a tool designed for the extraction of annotations from audio
  186. signals. Its features include segmenting a sound file before each of its
  187. attacks, performing pitch detection, tapping the beat and producing MIDI
  188. streams from live audio.")
  189. (license license:gpl3+)))
  190. (define (ardour-rpath-phase major-version)
  191. `(lambda* (#:key outputs #:allow-other-keys)
  192. (let ((libdir (string-append (assoc-ref outputs "out")
  193. "/lib/ardour" ,major-version)))
  194. (substitute* "wscript"
  195. (("linker_flags = \\[\\]")
  196. (string-append "linker_flags = [\""
  197. "-Wl,-rpath="
  198. libdir ":"
  199. libdir "/backends" ":"
  200. libdir "/engines" ":"
  201. libdir "/panners" ":"
  202. libdir "/surfaces" ":"
  203. libdir "/vamp" "\"]"))))
  204. #t))
  205. (define-public ardour
  206. (package
  207. (name "ardour")
  208. (version "5.12")
  209. (source (origin
  210. (method git-fetch)
  211. (uri (git-reference
  212. (url "https://git.ardour.org/ardour/ardour.git")
  213. (commit version)))
  214. (snippet
  215. ;; Ardour expects this file to exist at build time. The revision
  216. ;; is the output of
  217. ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
  218. `(call-with-output-file
  219. "libs/ardour/revision.cc"
  220. (lambda (port)
  221. (format port ,(string-append "#include \"ardour/revision.h\"
  222. namespace ARDOUR { const char* revision = \"" version "\" ; }"))
  223. #t)))
  224. (sha256
  225. (base32
  226. "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"))
  227. (file-name (string-append name "-" version))))
  228. (build-system waf-build-system)
  229. (arguments
  230. `(#:configure-flags '("--cxx11" ; required by gtkmm
  231. "--no-phone-home" ; don't contact ardour.org
  232. "--freedesktop" ; build .desktop file
  233. "--test") ; build unit tests
  234. #:phases
  235. (modify-phases %standard-phases
  236. (add-after 'unpack 'set-rpath-in-LDFLAGS
  237. ,(ardour-rpath-phase (version-major version)))
  238. (add-after 'install 'install-freedesktop-files
  239. (lambda* (#:key outputs #:allow-other-keys)
  240. (let* ((out (assoc-ref outputs "out"))
  241. (share (string-append out "/share"))
  242. (ver ,(version-major version)))
  243. (for-each
  244. (lambda (size)
  245. (let ((dir (string-append share "/icons/hicolor/"
  246. size "x" size "/apps")))
  247. (mkdir-p dir)
  248. (copy-file
  249. (string-append "gtk2_ardour/resources/Ardour-icon_"
  250. size "px.png")
  251. (string-append dir "/ardour" ver ".png"))))
  252. '("16" "22" "32" "48" "256"))
  253. (install-file (string-append "build/gtk2_ardour/ardour"
  254. ver ".desktop")
  255. (string-append share "/applications/"))
  256. (install-file (string-append "build/gtk2_ardour/ardour"
  257. ver ".appdata.xml")
  258. (string-append share "/appdata/")))
  259. #t)))
  260. #:test-target "test"
  261. #:python ,python-2))
  262. (inputs
  263. `(("alsa-lib" ,alsa-lib)
  264. ("atkmm" ,atkmm)
  265. ("aubio" ,aubio)
  266. ("boost" ,boost)
  267. ("cairomm" ,cairomm)
  268. ("curl" ,curl)
  269. ("eudev" ,eudev)
  270. ("fftw" ,fftw)
  271. ("fftwf" ,fftwf)
  272. ("flac" ,flac)
  273. ("glibmm" ,glibmm)
  274. ("gtkmm" ,gtkmm-2)
  275. ("jack" ,jack-1)
  276. ("libarchive" ,libarchive)
  277. ("libart-lgpl" ,libart-lgpl)
  278. ("libgnomecanvasmm" ,libgnomecanvasmm)
  279. ("liblo" ,liblo)
  280. ("libogg" ,libogg)
  281. ("libsamplerate" ,libsamplerate)
  282. ("libsndfile" ,libsndfile)
  283. ("libusb" ,libusb)
  284. ("libvorbis" ,libvorbis)
  285. ("libxml2" ,libxml2)
  286. ("lilv" ,lilv)
  287. ("lrdf" ,lrdf)
  288. ("lv2" ,lv2)
  289. ("pangomm" ,pangomm)
  290. ("python-rdflib" ,python-rdflib)
  291. ("readline" ,readline)
  292. ("redland" ,redland)
  293. ("rubberband" ,rubberband)
  294. ("serd" ,serd)
  295. ("sord" ,sord)
  296. ("sratom" ,sratom)
  297. ("suil" ,suil)
  298. ("taglib" ,taglib)
  299. ("vamp" ,vamp)))
  300. (native-inputs
  301. `(("cppunit" ,cppunit)
  302. ("gettext" ,gettext-minimal)
  303. ("itstool" ,itstool)
  304. ("perl" ,perl)
  305. ("pkg-config" ,pkg-config)))
  306. (home-page "http://ardour.org")
  307. (synopsis "Digital audio workstation")
  308. (description
  309. "Ardour is a multi-channel digital audio workstation, allowing users to
  310. record, edit, mix and master audio and MIDI projects. It is targeted at audio
  311. engineers, musicians, soundtrack editors and composers.")
  312. (license license:gpl2+)))
  313. (define-public audacity
  314. (package
  315. (name "audacity")
  316. (version "2.2.2")
  317. (source
  318. (origin
  319. (method git-fetch)
  320. (uri (git-reference
  321. (url "https://github.com/audacity/audacity.git")
  322. (commit (string-append "Audacity-" version))))
  323. (file-name (git-file-name name version))
  324. (sha256
  325. (base32
  326. "10maxmjxbmjybj7n4m7a9bbm7g8xxw8f8vbsf7c9ih5j2gr15ihs"))
  327. (patches (search-patches "audacity-build-with-system-portaudio.patch"))
  328. (modules '((guix build utils)))
  329. (snippet
  330. ;; Remove bundled libraries.
  331. '(begin
  332. (for-each
  333. (lambda (dir)
  334. (delete-file-recursively (string-append "lib-src/" dir)))
  335. '("expat" "ffmpeg" "libflac" "libid3tag" "libmad" "libogg"
  336. "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
  337. "portaudio-v19" "portmidi" "soundtouch" "twolame"
  338. ;; FIXME: these libraries have not been packaged yet:
  339. ;; "libnyquist"
  340. ;; "libscorealign"
  341. ;; "libwidgetextra"
  342. ;; "portburn"
  343. ;; "portsmf"
  344. ;; "portmixer"
  345. ;; FIXME: we have this library, but it differs in that the Slide
  346. ;; class does not have a member "getInverseStretchedTime".
  347. ;; "sbsms"
  348. ))
  349. #t))))
  350. (build-system glib-or-gtk-build-system)
  351. (inputs
  352. `(("wxwidgets" ,wxwidgets)
  353. ("gtk+" ,gtk+)
  354. ("alsa-lib" ,alsa-lib)
  355. ("jack" ,jack-1)
  356. ("expat" ,expat)
  357. ("ffmpeg" ,ffmpeg)
  358. ("lame" ,lame)
  359. ("flac" ,flac)
  360. ("libid3tag" ,libid3tag)
  361. ("libmad" ,libmad)
  362. ;;("libsbsms" ,libsbsms) ;bundled version is modified
  363. ("libsndfile" ,libsndfile)
  364. ("soundtouch" ,soundtouch)
  365. ("soxr" ,soxr) ;replaces libsamplerate
  366. ("twolame" ,twolame)
  367. ("vamp" ,vamp)
  368. ("libvorbis" ,libvorbis)
  369. ("lv2" ,lv2)
  370. ("lilv" ,lilv) ;for lv2
  371. ("suil" ,suil) ;for lv2
  372. ("portaudio" ,portaudio)
  373. ("portmidi" ,portmidi)))
  374. (native-inputs
  375. `(("autoconf" ,autoconf)
  376. ("automake" ,automake)
  377. ("gettext" ,gettext-minimal) ;for msgfmt
  378. ("libtool" ,libtool)
  379. ("pkg-config" ,pkg-config)
  380. ("python" ,python-2)
  381. ("which" ,which)))
  382. (arguments
  383. `(#:configure-flags
  384. (let ((libid3tag (assoc-ref %build-inputs "libid3tag"))
  385. (libmad (assoc-ref %build-inputs "libmad"))
  386. (portmidi (assoc-ref %build-inputs "portmidi")))
  387. (list
  388. ;; Loading FFmpeg dynamically is problematic.
  389. "--disable-dynamic-loading"
  390. ;; SSE instructions are available on Intel systems only.
  391. ,@(if (any (cute string-prefix? <> (or (%current-target-system)
  392. (%current-system)))
  393. '("x64_64" "i686"))
  394. '()
  395. '("--enable-sse=no"))
  396. ;; portmidi, libid3tag and libmad provide no .pc files, so
  397. ;; pkg-config fails to find them. Force their inclusion.
  398. (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include")
  399. (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz")
  400. (string-append "LIBMAD_CFLAGS=-I" libmad "/include")
  401. (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad")
  402. (string-append "PORTMIDI_CFLAGS=-I" portmidi "/include")
  403. (string-append "PORTMIDI_LIBS=-L" portmidi "/lib -lportmidi")
  404. "EXPAT_USE_SYSTEM=yes"
  405. "FFMPEG_USE_SYSTEM=yes"
  406. "LAME_USE_SYSTEM=yes"
  407. "LIBFLAC_USE_SYSTEM=yes"
  408. "LIBID3TAG_USE_SYSTEM=yes"
  409. "LIBMAD_USE_SYSTEM=yes"
  410. "USE_LOCAL_LIBNYQUIST=" ;not packaged yet
  411. ;;"LIBSBSMS_USE_SYSTEM=yes" ;bundled version is patched
  412. "LIBSNDFILE_USE_SYSTEM=yes"
  413. "LIBSOUNDTOUCH_USE_SYSTEM=yes"
  414. "LIBSOXR_USE_SYSTEM=yes"
  415. "LIBTWOLAME_USE_SYSTEM=yes"
  416. "LIBVAMP_USE_SYSTEM=yes"
  417. "LIBVORBIS_USE_SYSTEM=yes"
  418. "LV2_USE_SYSTEM=yes"
  419. "PORTAUDIO_USE_SYSTEM=yes"))
  420. #:phases
  421. (modify-phases %standard-phases
  422. (add-after 'unpack 'fix-sbsms-check
  423. (lambda _
  424. ;; This check is wrong: there is no 2.2.0 release; not even the
  425. ;; bundled sources match this release string.
  426. (substitute* '("m4/audacity_checklib_libsbsms.m4"
  427. "configure")
  428. (("sbsms >= 2.2.0") "sbsms >= 2.0.0"))
  429. #t))
  430. (add-after 'unpack 'use-upstream-headers
  431. (lambda* (#:key inputs #:allow-other-keys)
  432. (substitute* '("src/NoteTrack.cpp"
  433. "src/AudioIO.cpp"
  434. "src/AudioIO.h")
  435. (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
  436. (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
  437. (substitute* "src/prefs/MidiIOPrefs.cpp"
  438. (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))
  439. #t)))
  440. ;; The test suite is not "well exercised" according to the developers,
  441. ;; and fails with various errors. See
  442. ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
  443. #:tests? #f))
  444. (home-page "https://www.audacityteam.org/")
  445. (synopsis "Software for recording and editing sounds")
  446. (description
  447. "Audacity is a multi-track audio editor designed for recording, playing
  448. and editing digital audio. It features digital effects and spectrum analysis
  449. tools.")
  450. (license license:gpl2+)))
  451. (define-public autotalent
  452. (package
  453. (name "autotalent")
  454. (version "0.2")
  455. (source (origin
  456. (method url-fetch)
  457. (uri (string-append "http://tombaran.info/autotalent-"
  458. version ".tar.gz"))
  459. (sha256
  460. (base32
  461. "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
  462. (build-system gnu-build-system)
  463. (arguments
  464. `(#:tests? #f ; no check target
  465. #:phases
  466. (modify-phases %standard-phases
  467. ;; no configure script
  468. (delete 'configure)
  469. (add-before 'install 'prepare-target-directory
  470. (lambda* (#:key outputs #:allow-other-keys)
  471. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  472. #t))
  473. (add-after 'unpack 'override-target-directory
  474. (lambda* (#:key outputs #:allow-other-keys)
  475. (substitute* "Makefile"
  476. (("/usr/lib64/ladspa")
  477. (string-append (assoc-ref outputs "out") "/lib/ladspa")))
  478. #t)))))
  479. (inputs
  480. `(("ladspa" ,ladspa)))
  481. (home-page "http://tombaran.info/autotalent.html")
  482. (synopsis "Pitch-correction LADSPA audio plugin")
  483. (description
  484. "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
  485. controls are allowable notes, strength of correction, LFO for vibrato and
  486. formant warp.")
  487. ;; All code except the FFT routine is licensed under GPLv2+.
  488. ;; The FFT routine is under BSD-3.
  489. (license license:gpl2+)))
  490. (define-public azr3
  491. (package
  492. (name "azr3")
  493. (version "1.2.3")
  494. (source (origin
  495. (method url-fetch)
  496. (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
  497. version
  498. ".tar.bz2"))
  499. (sha256
  500. (base32
  501. "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
  502. (patches (search-patches "azr3.patch"))))
  503. (build-system gnu-build-system)
  504. (arguments
  505. `(#:tests? #f ; no check target
  506. #:make-flags
  507. (list "LV2PEG=ttl2c"
  508. "CXXFLAGS=-std=gnu++11"
  509. "CFLAGS=-std=gnu++11"
  510. (string-append "prefix=" %output)
  511. (string-append "pkgdatadir=" %output "/share/azr3-jack"))
  512. #:phases
  513. (modify-phases %standard-phases
  514. (add-before 'install 'fix-timestamp
  515. (lambda _
  516. (let ((early-1980 315619200)) ; 1980-01-02 UTC
  517. (utime "azr3.1" early-1980 early-1980))
  518. #t)))))
  519. (inputs
  520. `(("gtkmm" ,gtkmm-2)
  521. ("lvtk" ,lvtk)
  522. ("jack" ,jack-1)
  523. ("lash" ,lash)))
  524. (native-inputs
  525. `(("pkg-config" ,pkg-config)))
  526. (home-page "http://ll-plugins.nongnu.org/azr3/")
  527. (synopsis "Tonewheel organ synthesizer")
  528. (description
  529. "AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ
  530. with drawbars, distortion and rotating speakers. The organ has three
  531. sections, two polyphonic sections with nine drawbars each and one monophonic
  532. bass section with five drawbars. A standalone JACK application and LV2
  533. plugins are provided.")
  534. (license license:gpl2)))
  535. (define-public calf
  536. (package
  537. (name "calf")
  538. (version "0.90.1")
  539. (source (origin
  540. (method url-fetch)
  541. (uri (string-append "https://calf-studio-gear.org/files/calf-"
  542. version ".tar.gz"))
  543. (sha256
  544. (base32
  545. "0znwx5gidr5n503gya9n8gagr8cfym6cwlbiv2r6iksji7jc4fpb"))))
  546. (build-system gnu-build-system)
  547. (inputs
  548. `(("fluidsynth" ,fluidsynth)
  549. ("expat" ,expat)
  550. ("glib" ,glib)
  551. ("gtk" ,gtk+-2)
  552. ("cairo" ,cairo)
  553. ("lash" ,lash)
  554. ("jack" ,jack-1)
  555. ("lv2" ,lv2)
  556. ("ladspa" ,ladspa)
  557. ("fftw" ,fftw)))
  558. (native-inputs
  559. `(("pkg-config" ,pkg-config)))
  560. (native-search-paths
  561. (list (search-path-specification
  562. (variable "LV2_PATH")
  563. (files '("lib/lv2")))))
  564. (home-page "http://calf.sourceforge.net/")
  565. (synopsis "Audio plug-in pack for LV2 and JACK environments")
  566. (description
  567. "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
  568. The suite contains lots of effects (delay, modulation, signal processing,
  569. filters, equalizers, dynamics, distortion and mastering effects),
  570. instruments (SF2 player, organ simulator and a monophonic synthesizer) and
  571. tools (analyzer, mono/stereo tools, crossovers).")
  572. ;; calfjackhost is released under GPLv2+
  573. ;; The plugins are released under LGPLv2.1+
  574. (license (list license:lgpl2.1+ license:gpl2+))))
  575. (define-public caps-plugins-lv2
  576. (package
  577. (name "caps-plugins-lv2")
  578. (version "0.9.24") ; version that has been ported.
  579. (source
  580. (origin
  581. ;; The Github project hasn't tagged a release.
  582. (method git-fetch)
  583. (uri (git-reference
  584. ;; Actually https://github.com/moddevices/caps-lv2.git, but it's
  585. ;; missing fixes for newer glibc, so using the origin of a pull
  586. ;; request regarding this issue:
  587. (url "https://github.com/jujudusud/caps-lv2.git")
  588. (commit "9c9478b7fbd8f9714f552ebe2a6866398b0babfb")))
  589. (file-name (git-file-name name version))
  590. (sha256
  591. (base32
  592. "1idfnazin3cca41zw1a8vwgnxjnkrap7bxxjamjqvgpmvydgcam1"))))
  593. (build-system gnu-build-system)
  594. (arguments
  595. `(#:tests? #f ; no check target
  596. #:phases
  597. (modify-phases %standard-phases
  598. ;; no configure script
  599. (delete 'configure)
  600. (add-after 'unpack 'override-target-directory
  601. (lambda* (#:key outputs #:allow-other-keys)
  602. (substitute* (find-files "plugins" "Makefile")
  603. (("/usr/local")(assoc-ref outputs "out")))
  604. #t)))))
  605. (inputs
  606. `(("lv2" ,lv2)))
  607. ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
  608. (home-page "https://github.com/moddevices/caps-lv2")
  609. (synopsis "LV2 port of the CAPS audio plugin colection")
  610. (description
  611. "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
  612. guitar amplification and a small range of classic effects, signal processors and
  613. generators of mostly elementary and occasionally exotic nature.")
  614. (license license:gpl3+)))
  615. (define-public espeak
  616. (package
  617. (name "espeak")
  618. (version "1.48.04")
  619. (source (origin
  620. (method url-fetch)
  621. (uri (string-append "mirror://sourceforge/espeak/espeak/"
  622. "espeak-" (version-major+minor version)
  623. "/espeak-" version "-source.zip"))
  624. (sha256
  625. (base32
  626. "0n86gwh9pw0jqqpdz7mxggllfr8k0r7pc67ayy7w5z6z79kig6mz"))
  627. (modules '((guix build utils)))
  628. (snippet
  629. ;; remove prebuilt binaries
  630. '(begin
  631. (delete-file-recursively "linux_32bit")
  632. #t))))
  633. (build-system gnu-build-system)
  634. (arguments
  635. `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  636. (string-append "DATADIR="
  637. (assoc-ref %outputs "out")
  638. "/share/espeak-data")
  639. (string-append "LDFLAGS=-Wl,-rpath="
  640. (assoc-ref %outputs "out")
  641. "/lib")
  642. "AUDIO=pulseaudio")
  643. #:tests? #f ; no check target
  644. #:phases
  645. (modify-phases %standard-phases
  646. (replace 'configure
  647. (lambda _
  648. (chdir "src")
  649. ;; We use version 19 of the PortAudio library, so we must copy the
  650. ;; corresponding file to be sure that espeak compiles correctly.
  651. (copy-file "portaudio19.h" "portaudio.h")
  652. (substitute* "Makefile"
  653. (("/bin/ln") "ln"))
  654. #t)))))
  655. (inputs
  656. `(("portaudio" ,portaudio)
  657. ("pulseaudio" ,pulseaudio)))
  658. (native-inputs `(("unzip" ,unzip)))
  659. (home-page "http://espeak.sourceforge.net/")
  660. (synopsis "Software speech synthesizer")
  661. (description "eSpeak is a software speech synthesizer for English and
  662. other languages. eSpeak uses a \"formant synthesis\" method. This allows many
  663. languages to be provided in a small size. The speech is clear, and can be used
  664. at high speeds, but is not as natural or smooth as larger synthesizers which are
  665. based on human speech recordings.")
  666. (license license:gpl3+)))
  667. (define-public infamous-plugins
  668. (package
  669. (name "infamous-plugins")
  670. (version "0.2.04")
  671. (source (origin
  672. (method git-fetch)
  673. (uri (git-reference
  674. (url "https://github.com/ssj71/infamousPlugins.git")
  675. (commit (string-append "v" version))))
  676. (file-name (git-file-name name version))
  677. (sha256
  678. (base32
  679. "0hmqk80w4qxq09iag7b7srf2g0wigkyhzq0ywxvhz2iz0hq9k0dh"))))
  680. (build-system cmake-build-system)
  681. (arguments
  682. `(#:tests? #f ; there are no tests
  683. #:phases
  684. (modify-phases %standard-phases
  685. (add-after 'unpack 'remove-compiler-flags
  686. (lambda _
  687. (substitute* (find-files "." "CMakeLists.txt")
  688. (("-msse2 -mfpmath=sse") ""))
  689. #t)))))
  690. (inputs
  691. `(("cairo" ,cairo)
  692. ("fftwf" ,fftwf)
  693. ("lv2" ,lv2)
  694. ("ntk" ,ntk)
  695. ("zita-resampler" ,zita-resampler)))
  696. (native-inputs
  697. `(("pkg-config" ,pkg-config)))
  698. (home-page "https://ssj71.github.io/infamousPlugins")
  699. (synopsis "LV2 plugins for live use")
  700. (description
  701. "The infamous plugins are a collection of LV2 audio plugins for live
  702. performances. The plugins include a cellular automaton synthesizer, an
  703. envelope follower, distortion effects, tape effects and more.")
  704. (license license:gpl2+)))
  705. (define-public swh-plugins-lv2
  706. (package
  707. (name "swh-plugins-lv2")
  708. (version "1.0.16")
  709. (source (origin
  710. (method git-fetch)
  711. (uri (git-reference
  712. (url "https://github.com/swh/lv2.git")
  713. (commit (string-append "v" version))))
  714. (file-name (git-file-name name version))
  715. (sha256
  716. (base32
  717. "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
  718. (build-system gnu-build-system)
  719. (arguments
  720. `(#:tests? #f ; no check target
  721. #:make-flags (list "CC=gcc"
  722. (string-append "PREFIX="
  723. (assoc-ref %outputs "out")))
  724. #:phases
  725. (modify-phases %standard-phases
  726. ;; no configure script
  727. (delete 'configure)
  728. (add-after 'unpack 'patch-makefile-and-enter-directory
  729. ;; The default install target doesn't install, but the
  730. ;; "install-system" target does.
  731. (lambda _
  732. (substitute* "Makefile"
  733. (("install:") "install: install-system"))
  734. #t)))))
  735. (inputs
  736. `(("lv2" ,lv2)
  737. ("fftwf" ,fftwf)))
  738. (native-inputs
  739. `(("libxslt" ,libxslt)
  740. ("pkg-config" ,pkg-config)))
  741. (home-page "http://plugin.org.uk")
  742. (synopsis "SWH plugins in LV2 format")
  743. (description
  744. "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin
  745. classes include: dynamics (compressor, limiter), time (delay, chorus,
  746. flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
  747. emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
  748. (license license:gpl3+)))
  749. (define-public csound
  750. (package
  751. (name "csound")
  752. (version "6.12.0")
  753. (source (origin
  754. (method git-fetch)
  755. (uri (git-reference
  756. (url "https://github.com/csound/csound.git")
  757. (commit version)))
  758. (file-name (git-file-name name version))
  759. (sha256
  760. (base32
  761. "0pv4s54cayvavdp6y30n3r1l5x83x9whyyd2v24y0dh224v3hbxi"))))
  762. (build-system cmake-build-system)
  763. (inputs
  764. `(("alsa-lib" ,alsa-lib)
  765. ("boost" ,boost)
  766. ("pulseaudio" ,pulseaudio)
  767. ("libsndfile" ,libsndfile)
  768. ("liblo" ,liblo)
  769. ("ladspa" ,ladspa)
  770. ("jack" ,jack-1)
  771. ("gettext" ,gettext-minimal)))
  772. (native-inputs
  773. `(("bison" ,bison)
  774. ("flex" ,flex)
  775. ("zlib" ,zlib)))
  776. (home-page "https://csound.com/")
  777. (synopsis "Sound and music computing system")
  778. (description
  779. "Csound is a user-programmable and user-extensible sound processing
  780. language and software synthesizer.")
  781. (license license:lgpl2.1+)))
  782. (define-public clalsadrv
  783. (package
  784. (name "clalsadrv")
  785. (version "2.0.0")
  786. (source (origin
  787. (method url-fetch)
  788. (uri (string-append
  789. "http://kokkinizita.linuxaudio.org"
  790. "/linuxaudio/downloads/clalsadrv-"
  791. version ".tar.bz2"))
  792. (sha256
  793. (base32
  794. "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
  795. (build-system gnu-build-system)
  796. (arguments
  797. `(#:tests? #f ; no "check" target
  798. #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  799. #:phases
  800. (modify-phases %standard-phases
  801. (add-after 'unpack 'patch-makefile-and-enter-directory
  802. (lambda _
  803. (substitute* "libs/Makefile"
  804. (("/sbin/ldconfig") "true")
  805. (("^LIBDIR =.*") "LIBDIR = lib\n"))
  806. (chdir "libs")
  807. #t))
  808. (add-after 'install 'install-symlink
  809. (lambda _
  810. (symlink "libclalsadrv.so"
  811. (string-append (assoc-ref %outputs "out")
  812. "/lib/libclalsadrv.so.2"))
  813. #t))
  814. ;; no configure script
  815. (delete 'configure))))
  816. (inputs
  817. `(("alsa-lib" ,alsa-lib)
  818. ("fftw" ,fftw)))
  819. (home-page "https://kokkinizita.linuxaudio.org")
  820. (synopsis "C++ wrapper around the ALSA API")
  821. (description
  822. "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
  823. ALSA PCM devices.")
  824. (license license:gpl2+)))
  825. (define-public amb-plugins
  826. (package
  827. (name "amb-plugins")
  828. (version "0.8.1")
  829. (source (origin
  830. (method url-fetch)
  831. (uri (string-append
  832. "http://kokkinizita.linuxaudio.org"
  833. "/linuxaudio/downloads/AMB-plugins-"
  834. version ".tar.bz2"))
  835. (sha256
  836. (base32
  837. "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
  838. (build-system gnu-build-system)
  839. (arguments
  840. `(#:tests? #f ; no "check" target
  841. #:phases
  842. (modify-phases %standard-phases
  843. ;; no configure script
  844. (delete 'configure)
  845. (add-before 'install 'prepare-target-directory
  846. (lambda* (#:key outputs #:allow-other-keys)
  847. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  848. #t))
  849. (add-after 'unpack 'override-target-directory-and-tool-paths
  850. (lambda* (#:key outputs #:allow-other-keys)
  851. (substitute* "Makefile"
  852. (("/usr/lib/ladspa")
  853. (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  854. (("/usr/bin/install") (which "install"))
  855. (("/bin/rm") "#"))
  856. #t)))))
  857. (home-page "https://kokkinizita.linuxaudio.org")
  858. (synopsis "LADSPA ambisonics plugins")
  859. (description
  860. "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
  861. used within Ardour. Features include: mono and stereo to B-format panning,
  862. horizontal rotator, square, hexagon and cube decoders.")
  863. (license license:gpl2+)))
  864. (define-public mcp-plugins
  865. (package
  866. (name "mcp-plugins")
  867. (version "0.4.0")
  868. (source (origin
  869. (method url-fetch)
  870. (uri (string-append
  871. "http://kokkinizita.linuxaudio.org"
  872. "/linuxaudio/downloads/MCP-plugins-"
  873. version ".tar.bz2"))
  874. (sha256
  875. (base32
  876. "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
  877. (build-system gnu-build-system)
  878. (arguments
  879. `(#:tests? #f ; no "check" target
  880. #:phases
  881. (modify-phases %standard-phases
  882. ;; no configure script
  883. (delete 'configure)
  884. (add-before 'install 'prepare-target-directory
  885. (lambda* (#:key outputs #:allow-other-keys)
  886. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  887. #t))
  888. (add-after 'unpack 'override-target-directory
  889. (lambda* (#:key outputs #:allow-other-keys)
  890. (substitute* "Makefile"
  891. (("/usr") (assoc-ref outputs "out")))
  892. #t)))))
  893. (home-page "https://kokkinizita.linuxaudio.org")
  894. (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
  895. (description
  896. "This package provides various LADSPA plugins. @code{cs_chorus} and
  897. @code{cs_phaser} provide chorus and phaser effects, respectively;
  898. @code{mvclpf24} provides four implementations of the low-pass filter used in
  899. vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
  900. high-pass filter by Robert Moog. The filters attempt to accurately emulate
  901. the non-linear circuit elements of their original analog counterparts.")
  902. (license license:gpl2+)))
  903. (define-public rev-plugins
  904. (package
  905. (name "rev-plugins")
  906. (version "0.7.1")
  907. (source (origin
  908. (method url-fetch)
  909. (uri (string-append
  910. "http://kokkinizita.linuxaudio.org"
  911. "/linuxaudio/downloads/REV-plugins-"
  912. version ".tar.bz2"))
  913. (sha256
  914. (base32
  915. "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
  916. (build-system gnu-build-system)
  917. (arguments
  918. `(#:tests? #f ; no "check" target
  919. #:phases
  920. (modify-phases %standard-phases
  921. ;; no configure script
  922. (delete 'configure)
  923. (add-before 'install 'prepare-target-directory
  924. (lambda* (#:key outputs #:allow-other-keys)
  925. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  926. #t))
  927. (add-after 'unpack 'override-target-directory
  928. (lambda* (#:key outputs #:allow-other-keys)
  929. (substitute* "Makefile"
  930. (("/usr") (assoc-ref outputs "out")))
  931. #t)))))
  932. (home-page "https://kokkinizita.linuxaudio.org")
  933. (synopsis "LADSPA reverb plugin")
  934. (description
  935. "This package provides a stereo reverb LADSPA plugin based on the
  936. well-known greverb.")
  937. (license license:gpl2+)))
  938. (define-public fil-plugins
  939. (package
  940. (name "fil-plugins")
  941. (version "0.3.0")
  942. (source (origin
  943. (method url-fetch)
  944. (uri (string-append
  945. "http://kokkinizita.linuxaudio.org"
  946. "/linuxaudio/downloads/FIL-plugins-"
  947. version ".tar.bz2"))
  948. (sha256
  949. (base32
  950. "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
  951. (build-system gnu-build-system)
  952. (arguments
  953. `(#:tests? #f ; no "check" target
  954. #:phases
  955. (modify-phases %standard-phases
  956. ;; no configure script
  957. (delete 'configure)
  958. (add-before 'install 'prepare-target-directory
  959. (lambda* (#:key outputs #:allow-other-keys)
  960. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  961. #t))
  962. (add-after 'unpack 'override-target-directory
  963. (lambda* (#:key outputs #:allow-other-keys)
  964. (substitute* "Makefile"
  965. (("/usr") (assoc-ref outputs "out")))
  966. #t)))))
  967. (home-page "https://kokkinizita.linuxaudio.org")
  968. (synopsis "LADSPA four-band parametric equalizer plugin")
  969. (description
  970. "This package provides a LADSPA plugin for a four-band parametric
  971. equalizer. Each section has an active/bypass switch, frequency, bandwidth and
  972. gain controls. There is also a global bypass switch and gain control.
  973. The 2nd order resonant filters are implemented using a Mitra-Regalia style
  974. lattice filter, which is stable even while parameters are being changed.
  975. All switches and controls are internally smoothed, so they can be used 'live'
  976. without any clicks or zipper noises. This makes this plugin suitable for use
  977. in systems that allow automation of plugin control ports, such as Ardour, or
  978. for stage use.")
  979. (license license:gpl2+)))
  980. (define-public ste-plugins
  981. (package
  982. (name "ste-plugins")
  983. (version "0.0.2")
  984. (source (origin
  985. (method url-fetch)
  986. (uri (string-append
  987. "http://kokkinizita.linuxaudio.org"
  988. "/linuxaudio/downloads/STE-plugins-"
  989. version ".tar.bz2"))
  990. (sha256
  991. (base32
  992. "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
  993. (build-system gnu-build-system)
  994. (arguments
  995. `(#:tests? #f ; no "check" target
  996. #:phases
  997. (modify-phases %standard-phases
  998. ;; no configure script
  999. (delete 'configure)
  1000. (add-before 'install 'prepare-target-directory
  1001. (lambda* (#:key outputs #:allow-other-keys)
  1002. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1003. #t))
  1004. (add-after 'unpack 'override-target-directory
  1005. (lambda* (#:key outputs #:allow-other-keys)
  1006. (substitute* "Makefile"
  1007. (("/usr") (assoc-ref outputs "out")))
  1008. #t)))))
  1009. (home-page "https://kokkinizita.linuxaudio.org")
  1010. (synopsis "LADSPA stereo width plugin")
  1011. (description
  1012. "This package provides a LADSPA plugin to manipulate the stereo width of
  1013. audio signals.")
  1014. (license license:gpl2+)))
  1015. (define-public vco-plugins
  1016. (package
  1017. (name "vco-plugins")
  1018. (version "0.3.0")
  1019. (source (origin
  1020. (method url-fetch)
  1021. (uri (string-append
  1022. "http://kokkinizita.linuxaudio.org"
  1023. "/linuxaudio/downloads/VCO-plugins-"
  1024. version ".tar.bz2"))
  1025. (sha256
  1026. (base32
  1027. "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
  1028. (build-system gnu-build-system)
  1029. (arguments
  1030. `(#:tests? #f ; no "check" target
  1031. #:phases
  1032. (modify-phases %standard-phases
  1033. ;; no configure script
  1034. (delete 'configure)
  1035. (add-before 'install 'prepare-target-directory
  1036. (lambda* (#:key outputs #:allow-other-keys)
  1037. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1038. #t))
  1039. (add-after 'unpack 'override-target-directory
  1040. (lambda* (#:key outputs #:allow-other-keys)
  1041. (substitute* "Makefile"
  1042. (("/usr") (assoc-ref outputs "out"))
  1043. (("/bin/cp") (which "cp")))
  1044. #t)))))
  1045. (home-page "https://kokkinizita.linuxaudio.org")
  1046. (synopsis "LADSPA plugin for synthesizer oscillators")
  1047. (description
  1048. "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
  1049. @enumerate
  1050. @item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
  1051. @item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
  1052. @item Rec-VCO, a square / rectange oscillator
  1053. @end enumerate\n
  1054. All oscillators are low-pass filtered to provide waveforms similar to the
  1055. output of analog synthesizers such as the Moog Voyager.")
  1056. (license license:gpl2+)))
  1057. (define-public wah-plugins
  1058. (package
  1059. (name "wah-plugins")
  1060. (version "0.1.0")
  1061. (source (origin
  1062. (method url-fetch)
  1063. (uri (string-append
  1064. "http://kokkinizita.linuxaudio.org"
  1065. "/linuxaudio/downloads/WAH-plugins-"
  1066. version ".tar.bz2"))
  1067. (sha256
  1068. (base32
  1069. "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
  1070. (build-system gnu-build-system)
  1071. (arguments
  1072. `(#:tests? #f ; no "check" target
  1073. #:phases
  1074. (modify-phases %standard-phases
  1075. ;; no configure script
  1076. (delete 'configure)
  1077. (add-before 'install 'prepare-target-directory
  1078. (lambda* (#:key outputs #:allow-other-keys)
  1079. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1080. #t))
  1081. (add-after 'unpack 'override-target-directory
  1082. (lambda* (#:key outputs #:allow-other-keys)
  1083. (substitute* "Makefile"
  1084. (("/usr") (assoc-ref outputs "out")))
  1085. #t)))))
  1086. (home-page "https://kokkinizita.linuxaudio.org")
  1087. (synopsis "LADSPA Autowah effect plugin")
  1088. (description
  1089. "This package provides a LADSPA plugin for a Wah effect with envelope
  1090. follower.")
  1091. (license license:gpl2+)))
  1092. (define-public g2reverb
  1093. (package
  1094. (name "g2reverb")
  1095. (version "0.7.1")
  1096. (source (origin
  1097. (method url-fetch)
  1098. (uri (string-append
  1099. "http://kokkinizita.linuxaudio.org"
  1100. "/linuxaudio/downloads/g2reverb-"
  1101. version ".tar.bz2"))
  1102. (sha256
  1103. (base32
  1104. "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
  1105. (build-system gnu-build-system)
  1106. (arguments
  1107. `(#:tests? #f ; no "check" target
  1108. #:phases
  1109. (modify-phases %standard-phases
  1110. ;; no configure script
  1111. (delete 'configure)
  1112. (add-before 'install 'prepare-target-directory
  1113. (lambda* (#:key outputs #:allow-other-keys)
  1114. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1115. #t))
  1116. (add-after 'unpack 'override-target-directory
  1117. (lambda* (#:key outputs #:allow-other-keys)
  1118. (substitute* "Makefile"
  1119. (("/usr") (assoc-ref outputs "out")))
  1120. #t)))))
  1121. (home-page "https://kokkinizita.linuxaudio.org")
  1122. (synopsis "LADSPA stereo reverb plugin")
  1123. (description
  1124. "This package provides a LADSPA plugin for a stereo reverb effect.")
  1125. (license license:gpl2+)))
  1126. (define-public fluidsynth
  1127. (package
  1128. (name "fluidsynth")
  1129. (version "2.0.4")
  1130. (source (origin
  1131. (method git-fetch)
  1132. (uri (git-reference
  1133. (url "https://github.com/FluidSynth/fluidsynth.git")
  1134. (commit (string-append "v" version))))
  1135. (file-name (string-append name "-" version "-checkout"))
  1136. (sha256
  1137. (base32
  1138. "1v2vji02fbrjgypwb4fw2r90hnfwfbfh3d24j8vjwlbqxhxp16s0"))))
  1139. (build-system cmake-build-system)
  1140. (arguments
  1141. '(#:tests? #f ; no check target
  1142. #:phases
  1143. (modify-phases %standard-phases
  1144. (add-after 'unpack 'fix-libdir
  1145. (lambda _
  1146. ;; Install libraries to /lib, not /lib64.
  1147. (substitute* "CMakeLists.txt"
  1148. (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
  1149. "LIB_SUFFIX \"\""))
  1150. #t)))))
  1151. (inputs
  1152. `(("libsndfile" ,libsndfile)
  1153. ("alsa-lib" ,alsa-lib)
  1154. ("jack" ,jack-1)
  1155. ("ladspa" ,ladspa)
  1156. ("lash" ,lash)
  1157. ("readline" ,readline)
  1158. ("glib" ,glib)))
  1159. (native-inputs
  1160. `(("pkg-config" ,pkg-config)))
  1161. (home-page "http://www.fluidsynth.org/")
  1162. (synopsis "SoundFont synthesizer")
  1163. (description
  1164. "FluidSynth is a real-time software synthesizer based on the SoundFont 2
  1165. specifications. FluidSynth reads and handles MIDI events from the MIDI input
  1166. device. It is the software analogue of a MIDI synthesizer. FluidSynth can
  1167. also play midifiles using a Soundfont.")
  1168. (license license:lgpl2.1+)))
  1169. ;; gzdoom@3.3.0 and lmms@1.1.3 requires this version. Remove once no longer
  1170. ;; needed.
  1171. (define-public fluidsynth-1
  1172. (package
  1173. (inherit fluidsynth)
  1174. (version "1.1.11")
  1175. (source (origin
  1176. (inherit (package-source fluidsynth))
  1177. (uri (git-reference
  1178. (url "https://github.com/FluidSynth/fluidsynth")
  1179. (commit (string-append "v" version))))
  1180. (file-name (git-file-name "fluidsynth" version))
  1181. (sha256
  1182. (base32
  1183. "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh"))))))
  1184. (define-public faad2
  1185. (package
  1186. (name "faad2")
  1187. (version "2.7")
  1188. (source (origin
  1189. (method url-fetch)
  1190. (uri (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
  1191. version "/faad2-" version ".zip"))
  1192. (sha256
  1193. (base32
  1194. "16f3l16c00sg0wkrkm3vzv0gy3g97x309vw788igs0cap2x1ak3z"))))
  1195. (build-system gnu-build-system)
  1196. (native-inputs
  1197. `(("autoconf" ,autoconf)
  1198. ("automake" ,automake)
  1199. ("libtool" ,libtool)
  1200. ("unzip" ,unzip)))
  1201. (arguments
  1202. '(#:phases
  1203. (modify-phases %standard-phases
  1204. (replace 'bootstrap
  1205. (lambda _
  1206. (substitute* "bootstrap" (("\r\n") "\n"))
  1207. (invoke "sh" "bootstrap"))))))
  1208. (home-page "http://www.audiocoding.com/faad2.html")
  1209. (synopsis "MPEG-4 and MPEG-2 AAC decoder")
  1210. (description
  1211. "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,
  1212. PS, and DAB+.")
  1213. (license license:gpl2)))
  1214. (define-public faust
  1215. (package
  1216. (name "faust")
  1217. (version "0.9.90")
  1218. (source (origin
  1219. (method git-fetch)
  1220. (uri (git-reference
  1221. (url "https://github.com/grame-cncm/faust.git")
  1222. (commit (string-append "v"
  1223. (string-map (lambda (c)
  1224. (if (char=? c #\.) #\- c))
  1225. version)))))
  1226. (file-name (string-append "faust-" version "-checkout"))
  1227. (sha256
  1228. (base32
  1229. "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
  1230. (build-system gnu-build-system)
  1231. (arguments
  1232. `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
  1233. #:tests? #f
  1234. #:phases
  1235. (modify-phases %standard-phases
  1236. ;; no "configure" script
  1237. (delete 'configure)
  1238. ;; Files appear under $out/share/faust that are read-only. The
  1239. ;; install phase tries to overwrite them and fails, so we change
  1240. ;; the permissions first.
  1241. (add-before 'install 'fix-permissions
  1242. (lambda _
  1243. (for-each (lambda (file)
  1244. (chmod file #o644))
  1245. (find-files "architecture/max-msp" ".*"))
  1246. #t)))))
  1247. (native-inputs
  1248. `(("unzip" ,unzip)))
  1249. (home-page "http://faust.grame.fr/")
  1250. (synopsis "Signal processing language")
  1251. (description
  1252. "Faust is a programming language for realtime audio signal processing.")
  1253. (license license:gpl2+)))
  1254. (define-public faust-2
  1255. (package
  1256. (inherit faust)
  1257. (version "2.5.23")
  1258. (source (origin
  1259. (method url-fetch)
  1260. (uri (string-append "https://github.com/grame-cncm/faust/"
  1261. "releases/download/" version
  1262. "/faust-" version ".tar.gz"))
  1263. (sha256
  1264. (base32
  1265. "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
  1266. (build-system gnu-build-system)
  1267. (arguments
  1268. (substitute-keyword-arguments (package-arguments faust)
  1269. ((#:make-flags flags)
  1270. `(list (string-append "prefix=" (assoc-ref %outputs "out"))
  1271. "world"))))
  1272. (native-inputs
  1273. `(("llvm" ,llvm-3.8)
  1274. ("which" ,which)
  1275. ("xxd" ,xxd)
  1276. ("ctags" ,emacs-minimal) ; for ctags
  1277. ("pkg-config" ,pkg-config)))
  1278. (inputs
  1279. `(("libsndfile" ,libsndfile)
  1280. ("libmicrohttpd" ,libmicrohttpd)
  1281. ("ncurses" ,ncurses)
  1282. ("openssl" ,openssl)
  1283. ("zlib" ,zlib)))))
  1284. (define-public freepats
  1285. (package
  1286. (name "freepats")
  1287. (version "20060219")
  1288. (source (origin
  1289. (method url-fetch)
  1290. (uri (string-append "http://freepats.zenvoid.org/freepats-"
  1291. version ".tar.bz2"))
  1292. (sha256
  1293. (base32
  1294. "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
  1295. (build-system trivial-build-system)
  1296. (arguments
  1297. `(#:modules ((guix build utils))
  1298. #:builder (begin
  1299. (use-modules (guix build utils))
  1300. (let ((out (string-append %output "/share/freepats")))
  1301. (setenv "PATH" (string-append
  1302. (assoc-ref %build-inputs "bzip2") "/bin:"
  1303. (assoc-ref %build-inputs "tar") "/bin"))
  1304. (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
  1305. (chdir "freepats")
  1306. ;; Use absolute pattern references
  1307. (substitute* "freepats.cfg"
  1308. (("Tone_000") (string-append out "/Tone_000"))
  1309. (("Drum_000") (string-append out "/Drum_000")))
  1310. (mkdir-p out)
  1311. (copy-recursively "." out)
  1312. #t))))
  1313. (native-inputs
  1314. `(("tar" ,tar)
  1315. ("bzip2" ,bzip2)))
  1316. (home-page "http://freepats.zenvoid.org")
  1317. (synopsis "GUS compatible patches for MIDI players")
  1318. (description
  1319. "FreePats is a project to create a free and open set of GUS compatible
  1320. patches that can be used with softsynths such as Timidity and WildMidi.")
  1321. ;; GPLv2+ with exception for compositions using these patches.
  1322. (license license:gpl2+)))
  1323. (define-public guitarix
  1324. (package
  1325. (name "guitarix")
  1326. (version "0.37.3")
  1327. (source (origin
  1328. (method url-fetch)
  1329. (uri (string-append
  1330. "mirror://sourceforge/guitarix/guitarix/guitarix2-"
  1331. version ".tar.xz"))
  1332. (sha256
  1333. (base32
  1334. "1wfm8wrwrnqpb4ihy75n7l9i6vml536jlq9pdx2pblbc4ba3paac"))))
  1335. (build-system waf-build-system)
  1336. (arguments
  1337. `(#:tests? #f ; no "check" target
  1338. #:python ,python-2
  1339. #:configure-flags
  1340. (list
  1341. ;; Add the output lib directory to the RUNPATH.
  1342. (string-append "--ldflags=-Wl,-rpath=" %output "/lib")
  1343. "--cxxflags=-std=c++11")
  1344. #:phases
  1345. (modify-phases %standard-phases
  1346. (add-after 'unpack 'fix-boost-includes
  1347. (lambda _
  1348. (substitute* "src/headers/gx_internal_plugins.h"
  1349. (("namespace gx_jack" m)
  1350. (string-append "#include <boost/noncopyable.hpp>\n" m)))
  1351. (substitute* '("src/headers/gx_system.h"
  1352. "src/headers/gx_parameter.h"
  1353. "src/headers/gx_json.h")
  1354. (("namespace gx_system" m)
  1355. (string-append "#include <boost/noncopyable.hpp>\n" m)))
  1356. #t)))))
  1357. (inputs
  1358. `(("libsndfile" ,libsndfile)
  1359. ("boost" ,boost)
  1360. ("curl" ,curl)
  1361. ("avahi" ,avahi)
  1362. ("eigen" ,eigen)
  1363. ("lv2" ,lv2)
  1364. ("lilv" ,lilv)
  1365. ("ladspa" ,ladspa)
  1366. ("jack" ,jack-1)
  1367. ("gtkmm" ,gtkmm-2)
  1368. ("gtk+" ,gtk+-2)
  1369. ("fftwf" ,fftwf)
  1370. ("lrdf" ,lrdf)
  1371. ("zita-resampler" ,zita-resampler)
  1372. ("zita-convolver" ,zita-convolver)))
  1373. (native-inputs
  1374. `(("gperf" ,gperf)
  1375. ("faust" ,faust)
  1376. ("intltool" ,intltool)
  1377. ("gettext" ,gettext-minimal)
  1378. ("pkg-config" ,pkg-config)))
  1379. (native-search-paths
  1380. (list (search-path-specification
  1381. (variable "LV2_PATH")
  1382. (files '("lib/lv2")))))
  1383. (home-page "http://guitarix.org/")
  1384. (synopsis "Virtual guitar amplifier")
  1385. (description "Guitarix is a virtual guitar amplifier running JACK.
  1386. Guitarix takes the signal from your guitar as a mono-signal from your sound
  1387. card. The input is processed by a main amp and a rack-section. Both can be
  1388. routed separately and deliver a processed stereo-signal via JACK. You may
  1389. fill the rack with effects from more than 25 built-in modules including stuff
  1390. from a simple noise gate to modulation effects like flanger, phaser or
  1391. auto-wah.")
  1392. (license license:gpl2+)))
  1393. (define-public guitarix-lv2
  1394. (package (inherit guitarix)
  1395. (name "guitarix-lv2")
  1396. (arguments
  1397. (substitute-keyword-arguments (package-arguments guitarix)
  1398. ((#:configure-flags flags)
  1399. `(cons "--no-standalone" ,flags))))))
  1400. (define-public rakarrack
  1401. (package
  1402. (name "rakarrack")
  1403. (version "0.6.1")
  1404. (source (origin
  1405. (method url-fetch)
  1406. (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
  1407. "rakarrack-" version "/rakarrack-"
  1408. version ".tar.bz2"))
  1409. (sha256
  1410. (base32
  1411. "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
  1412. (modules '((guix build utils)))
  1413. (snippet
  1414. '(begin
  1415. (substitute* '("src/process.C"
  1416. "src/global.h")
  1417. (("#include <Fl/") "#include <FL/"))
  1418. #t))))
  1419. (build-system gnu-build-system)
  1420. (inputs
  1421. `(("alsa-utils" ,alsa-utils)
  1422. ("fltk" ,fltk)
  1423. ("libx11" ,libx11)
  1424. ("libxext" ,libxext)
  1425. ("libxfixes" ,libxfixes)
  1426. ("libxft" ,libxft)
  1427. ("libxrender" ,libxrender)
  1428. ("libxpm" ,libxpm)
  1429. ("fontconfig" ,fontconfig)
  1430. ("freetype" ,freetype)
  1431. ("jack" ,jack-1)
  1432. ("alsa-lib" ,alsa-lib)
  1433. ("libsndfile" ,libsndfile)
  1434. ("libsamplerate" ,libsamplerate)
  1435. ("zlib" ,zlib)))
  1436. (home-page "http://rakarrack.sourceforge.net/")
  1437. (synopsis "Audio effects processor")
  1438. (description
  1439. "Rakarrack is a richly featured multi-effects processor emulating a
  1440. guitar effects pedalboard. Effects include compressor, expander, noise gate,
  1441. equalizers, exciter, flangers, chorus, various delay and reverb effects,
  1442. distortion modules and many more. Most of the effects engine is built from
  1443. modules found in the excellent software synthesizer ZynAddSubFX. Presets and
  1444. user interface are optimized for guitar, but Rakarrack processes signals in
  1445. stereo while it does not apply internal band-limiting filtering, and thus is
  1446. well suited to all musical instruments and vocals.")
  1447. ;; The code is explicitly licensed under the GPL version 2 only.
  1448. (license license:gpl2)))
  1449. (define-public ir
  1450. (package
  1451. (name "ir")
  1452. (version "1.3.2")
  1453. (source (origin
  1454. (method url-fetch)
  1455. ;; The original home-page is gone. Download the tarball from an
  1456. ;; archive mirror instead.
  1457. (uri (list (string-append
  1458. "https://web.archive.org/web/20150803095032/"
  1459. "http://factorial.hu/system/files/ir.lv2-"
  1460. version ".tar.gz")
  1461. (string-append
  1462. "https://mirrors.kernel.org/gentoo/distfiles/ir.lv2-"
  1463. version ".tar.gz")))
  1464. (sha256
  1465. (base32
  1466. "1jh2z01l9m4ar7yz0n911df07dygc7n4cl59p7qdjbh0nvkm747g"))))
  1467. (build-system gnu-build-system)
  1468. (arguments
  1469. `(#:tests? #f ; no tests
  1470. #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  1471. #:phases (modify-phases %standard-phases
  1472. (delete 'configure)))) ; no configure script
  1473. (inputs
  1474. `(("libsndfile" ,libsndfile)
  1475. ("libsamplerate" ,libsamplerate)
  1476. ("lv2" ,lv2)
  1477. ("glib" ,glib)
  1478. ("gtk+" ,gtk+-2)
  1479. ("zita-convolver" ,zita-convolver)))
  1480. (native-inputs
  1481. `(("pkg-config" ,pkg-config)))
  1482. (native-search-paths
  1483. (list (search-path-specification
  1484. (variable "LV2_PATH")
  1485. (files '("lib/lv2")))))
  1486. ;; Link to an archived copy of the home-page since the original is gone.
  1487. (home-page (string-append "https://web.archive.org/web/20150803095032/"
  1488. "http://factorial.hu/plugins/lv2/ir"))
  1489. (synopsis "LV2 convolution reverb")
  1490. (description
  1491. "IR is a low-latency, real-time, high performance signal convolver
  1492. especially for creating reverb effects. It supports impulse responses with 1,
  1493. 2 or 4 channels, in any soundfile format supported by libsndfile.")
  1494. (license license:gpl2+)))
  1495. (define-public jack-1
  1496. (package
  1497. (name "jack")
  1498. (version "0.125.0")
  1499. (source (origin
  1500. (method url-fetch)
  1501. (uri (string-append
  1502. "http://jackaudio.org/downloads/jack-audio-connection-kit-"
  1503. version
  1504. ".tar.gz"))
  1505. (sha256
  1506. (base32
  1507. "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
  1508. (build-system gnu-build-system)
  1509. (arguments
  1510. `(#:phases (modify-phases %standard-phases
  1511. (add-after 'unpack 'patch-configure
  1512. (lambda _
  1513. (substitute* "configure"
  1514. ;; Install to <out/lib> regardless of platform.
  1515. (("libnn=lib64") "libnn=lib"))
  1516. #t)))))
  1517. (inputs
  1518. `(("alsa-lib" ,alsa-lib)
  1519. ("readline" ,readline)))
  1520. ;; uuid.h is included in the JACK type headers
  1521. ;; db.h is included in the libjack metadata headers
  1522. (propagated-inputs
  1523. `(("libuuid" ,util-linux)
  1524. ("bdb" ,bdb)))
  1525. (native-inputs
  1526. `(("pkg-config" ,pkg-config)))
  1527. (home-page "http://jackaudio.org/")
  1528. (synopsis "JACK audio connection kit")
  1529. (description
  1530. "JACK is a low-latency audio server. It can connect a number of
  1531. different applications to an audio device, as well as allowing them to share
  1532. audio between themselves. JACK is different from other audio server efforts
  1533. in that it has been designed from the ground up to be suitable for
  1534. professional audio work. This means that it focuses on two key areas:
  1535. synchronous execution of all clients, and low latency operation.")
  1536. ;; Most files are licensed under the GPL. However, the libjack/ tree is
  1537. ;; licensed under the LGPL in order to allow for proprietary usage.
  1538. (license (list license:gpl2+ license:lgpl2.1+))))
  1539. ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
  1540. ;; jack-2 implement the same API. JACK2 is provided primarily as a client
  1541. ;; program for users who might benefit from the D-BUS features.
  1542. (define-public jack-2
  1543. (package (inherit jack-1)
  1544. (name "jack2")
  1545. (version "1.9.12")
  1546. (source (origin
  1547. (method url-fetch)
  1548. (uri (string-append "https://github.com/jackaudio/jack2/releases/"
  1549. "download/v" version "/jack2-"
  1550. version ".tar.gz"))
  1551. (file-name (string-append name "-" version ".tar.gz"))
  1552. (sha256
  1553. (base32
  1554. "0crf4y9a5j9miw8r5ji4l3w5w0y2frrf7xyfsfdgacnw6vwy5vyy"))))
  1555. (build-system waf-build-system)
  1556. (arguments
  1557. `(#:python ,python-2
  1558. #:tests? #f ; no check target
  1559. #:configure-flags '("--dbus"
  1560. "--alsa")
  1561. #:phases
  1562. (modify-phases %standard-phases
  1563. (add-before
  1564. 'configure 'set-linkflags
  1565. (lambda _
  1566. ;; Add $libdir to the RUNPATH of all the binaries.
  1567. (substitute* "wscript"
  1568. ((".*CFLAGS.*-Wall.*" m)
  1569. (string-append m
  1570. " conf.env.append_unique('LINKFLAGS',"
  1571. "'-Wl,-rpath=" %output "/lib')\n")))
  1572. #t))
  1573. (add-after 'install 'wrap-python-scripts
  1574. (lambda* (#:key inputs outputs #:allow-other-keys)
  1575. ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
  1576. (let* ((out (assoc-ref outputs "out"))
  1577. (path (getenv "PYTHONPATH")))
  1578. (wrap-program (string-append out "/bin/jack_control")
  1579. `("PYTHONPATH" ":" prefix (,path))))
  1580. #t)))))
  1581. (inputs
  1582. `(("alsa-lib" ,alsa-lib)
  1583. ("dbus" ,dbus)
  1584. ("expat" ,expat)
  1585. ("libsamplerate" ,libsamplerate)
  1586. ("opus" ,opus)
  1587. ("python2-dbus" ,python2-dbus)
  1588. ("readline" ,readline)))
  1589. (native-inputs
  1590. `(("pkg-config" ,pkg-config)))
  1591. ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
  1592. (license (list license:gpl2+ license:lgpl2.1+))))
  1593. (define-public jalv
  1594. (package
  1595. (name "jalv")
  1596. (version "1.6.0")
  1597. (source (origin
  1598. (method url-fetch)
  1599. (uri (string-append "https://download.drobilla.net/jalv-"
  1600. version ".tar.bz2"))
  1601. (sha256
  1602. (base32
  1603. "1x2wpzzx2cgvz3dgdcgsj8dr0w3zsasy62mvl199bsdj5fbjaili"))))
  1604. (build-system waf-build-system)
  1605. (arguments
  1606. `(#:tests? #f ; no check target
  1607. #:python ,python-2
  1608. #:phases
  1609. (modify-phases %standard-phases
  1610. (add-before
  1611. 'configure 'set-flags
  1612. (lambda _
  1613. ;; Compile with C++11, required by gtkmm.
  1614. (setenv "CXXFLAGS" "-std=c++11")
  1615. #t)))))
  1616. (inputs
  1617. `(("lv2" ,lv2)
  1618. ("lilv" ,lilv)
  1619. ("suil" ,suil)
  1620. ("gtk" ,gtk+)
  1621. ("gtkmm" ,gtkmm)
  1622. ("jack" ,jack-1)))
  1623. (native-inputs
  1624. `(("pkg-config" ,pkg-config)))
  1625. (home-page "https://drobilla.net/software/jalv/")
  1626. (synopsis "Simple LV2 host for JACK")
  1627. (description
  1628. "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
  1629. plugins and exposes their ports as JACK ports, essentially making any LV2
  1630. plugin function as a JACK application.")
  1631. (license license:isc)))
  1632. (define-public ladspa
  1633. (package
  1634. (name "ladspa")
  1635. (version "1.13")
  1636. (source
  1637. (origin
  1638. (method url-fetch)
  1639. ;; Since the official link is dead,
  1640. ;; we download the tarball from Debian or Internet Archive.
  1641. (uri (list (string-append "http://http.debian.net"
  1642. "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
  1643. version ".orig.tar.gz")
  1644. (string-append "https://web.archive.org/web/20140717172251/"
  1645. "http://www.ladspa.org/download/ladspa_sdk_"
  1646. version ".tgz")))
  1647. (sha256
  1648. (base32
  1649. "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
  1650. (build-system gnu-build-system)
  1651. (arguments
  1652. `(#:tests? #f ; the "test" target is a listening test only
  1653. #:phases
  1654. (modify-phases %standard-phases
  1655. (replace 'configure
  1656. (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
  1657. (chdir "src")
  1658. (let ((out (assoc-ref outputs "out")))
  1659. (substitute* "makefile"
  1660. (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
  1661. (("/usr/include/") (string-append out "/include/"))
  1662. (("/usr/bin/") (string-append out "/bin/"))
  1663. (("-mkdirhier") "mkdir -p")
  1664. (("^CC.*") "CC = gcc\n")
  1665. (("^CPP.*") "CPP = g++\n")))
  1666. #t))
  1667. (delete 'build))))
  1668. ;; Since the home page is gone, we provide a link to the archived version.
  1669. (home-page
  1670. "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
  1671. (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
  1672. (description
  1673. "LADSPA is a standard that allows software audio processors and effects
  1674. to be plugged into a wide range of audio synthesis and recording packages.")
  1675. (license license:lgpl2.1+)))
  1676. (define-public lash
  1677. (package
  1678. (name "lash")
  1679. (version "0.6.0-rc2")
  1680. (source (origin
  1681. (method url-fetch)
  1682. ;; The tilde is not permitted in the builder name, but is used
  1683. ;; in the tarball.
  1684. (uri (string-append
  1685. "mirror://savannah/lash/lash-"
  1686. (string-join (string-split version #\-) "~")
  1687. ".tar.bz2"))
  1688. (file-name (string-append name "-" version ".tar.bz2"))
  1689. (sha256
  1690. (base32
  1691. "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
  1692. (build-system gnu-build-system)
  1693. (arguments
  1694. '(#:phases
  1695. (modify-phases %standard-phases
  1696. ;; lashd embeds an ancient version of sigsegv so we just skip it
  1697. (add-after 'unpack 'skip-lashd
  1698. (lambda _
  1699. (substitute* '("Makefile.am" "Makefile.in")
  1700. (("lashd ") ""))
  1701. #t)))
  1702. #:configure-flags '("--disable-static")))
  1703. (inputs
  1704. `(("bdb" ,bdb)
  1705. ("gtk" ,gtk+-2)
  1706. ("jack" ,jack-1)
  1707. ("readline" ,readline)
  1708. ("python" ,python-2)))
  1709. ;; According to pkg-config, packages depending on lash also need to have
  1710. ;; at least the following packages declared as inputs.
  1711. (propagated-inputs
  1712. `(("alsa-lib" ,alsa-lib)
  1713. ("dbus" ,dbus)
  1714. ("libxml2" ,libxml2)))
  1715. (native-inputs
  1716. `(("pkg-config" ,pkg-config)))
  1717. (home-page "https://www.nongnu.org/lash/")
  1718. (synopsis "Audio application session manager")
  1719. (description
  1720. "LASH is a session management system for audio applications. It allows
  1721. you to save and restore audio sessions consisting of multiple interconneced
  1722. applications, restoring program state (i.e. loaded patches) and the
  1723. connections between them.")
  1724. (license license:gpl2+)))
  1725. (define-public libbs2b
  1726. (package
  1727. (name "libbs2b")
  1728. (version "3.1.0")
  1729. (source (origin
  1730. (method url-fetch)
  1731. (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
  1732. "/libbs2b-" version ".tar.lzma"))
  1733. (sha256
  1734. (base32
  1735. "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
  1736. (build-system gnu-build-system)
  1737. (native-inputs `(("pkg-config" ,pkg-config)))
  1738. (inputs `(("libsndfile" ,libsndfile)))
  1739. (home-page "https://sourceforge.net/projects/bs2b/")
  1740. (synopsis "Bauer stereophonic-to-binaural DSP")
  1741. (description
  1742. "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
  1743. designed to improve headphone listening of stereo audio records. Recommended
  1744. for headphone prolonged listening to disable superstereo fatigue without
  1745. essential distortions.")
  1746. (license license:expat)))
  1747. (define-public liblo
  1748. (package
  1749. (name "liblo")
  1750. (version "0.29")
  1751. (source (origin
  1752. (method url-fetch)
  1753. (uri (string-append "mirror://sourceforge/liblo/liblo/" version
  1754. "/liblo-" version ".tar.gz"))
  1755. (sha256
  1756. (base32
  1757. "0sn0ckc1d0845mhsaa62wf7f9v0c0ykiq796a30ja5096kib9qdc"))))
  1758. (build-system gnu-build-system)
  1759. (arguments
  1760. `(;; liblo test FAILED
  1761. ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
  1762. #:tests? #f))
  1763. (home-page "http://liblo.sourceforge.net")
  1764. (synopsis "Implementation of the Open Sound Control protocol")
  1765. (description
  1766. "liblo is a lightweight library that provides an easy to use
  1767. implementation of the Open Sound Control (@dfn{OSC}) protocol.")
  1768. (license license:lgpl2.1+)))
  1769. (define-public python-pyaudio
  1770. (package
  1771. (name "python-pyaudio")
  1772. (version "0.2.11")
  1773. (source
  1774. (origin
  1775. (method url-fetch)
  1776. (uri (pypi-uri "PyAudio" version))
  1777. (sha256
  1778. (base32
  1779. "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
  1780. (build-system python-build-system)
  1781. (inputs
  1782. `(("portaudio" ,portaudio)))
  1783. (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
  1784. (synopsis "Bindings for PortAudio v19")
  1785. (description "This package provides bindings for PortAudio v19, the
  1786. cross-platform audio input/output stream library.")
  1787. (license license:expat)))
  1788. (define-public python2-pyaudio
  1789. (package-with-python2 python-pyaudio))
  1790. (define-public python-pyliblo
  1791. (package
  1792. (name "python-pyliblo")
  1793. (version "0.10.0")
  1794. (source (origin
  1795. (method url-fetch)
  1796. (uri (string-append "http://das.nasophon.de/download/pyliblo-"
  1797. version ".tar.gz"))
  1798. (sha256
  1799. (base32
  1800. "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
  1801. (build-system python-build-system)
  1802. (arguments `(#:tests? #f)) ;no tests
  1803. (native-inputs
  1804. `(("python-cython" ,python-cython)))
  1805. (inputs
  1806. `(("liblo" ,liblo)))
  1807. (home-page "http://das.nasophon.de/pyliblo/")
  1808. (synopsis "Python bindings for liblo")
  1809. (description
  1810. "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
  1811. library. It supports almost the complete functionality of liblo, allowing you
  1812. to send and receive OSC messages using a nice and simple Python API. Also
  1813. included are the command line utilities @code{send_osc} and @code{dump_osc}.")
  1814. (license license:lgpl2.1+)))
  1815. (define-public python2-pyliblo
  1816. (package-with-python2 python-pyliblo))
  1817. (define-public lilv
  1818. (package
  1819. (name "lilv")
  1820. (version "0.24.4")
  1821. (source (origin
  1822. (method url-fetch)
  1823. (uri (string-append "https://download.drobilla.net/lilv-"
  1824. version ".tar.bz2"))
  1825. (sha256
  1826. (base32
  1827. "0f24cd7wkk5l969857g2ydz2kjjrkvvddg1g87xzzs78lsvq8fy3"))))
  1828. (build-system waf-build-system)
  1829. (arguments
  1830. `(#:tests? #f ; no check target
  1831. #:phases
  1832. (modify-phases %standard-phases
  1833. (add-before
  1834. 'configure 'set-ldflags
  1835. (lambda* (#:key outputs #:allow-other-keys)
  1836. (setenv "LDFLAGS"
  1837. (string-append "-Wl,-rpath="
  1838. (assoc-ref outputs "out") "/lib"))
  1839. #t)))))
  1840. ;; Required by lilv-0.pc.
  1841. (propagated-inputs
  1842. `(("lv2" ,lv2)
  1843. ("serd" ,serd)
  1844. ("sord" ,sord)
  1845. ("sratom" ,sratom)))
  1846. (native-inputs
  1847. `(("pkg-config" ,pkg-config)))
  1848. (home-page "https://drobilla.net/software/lilv/")
  1849. (synopsis "Library to simplify use of LV2 plugins in applications")
  1850. (description
  1851. "Lilv is a C library to make the use of LV2 plugins as simple as possible
  1852. for applications. Lilv is the successor to SLV2, rewritten to be
  1853. significantly faster and have minimal dependencies.")
  1854. (license license:isc)))
  1855. (define-public lv2
  1856. (package
  1857. (name "lv2")
  1858. (version "1.16.0")
  1859. (source (origin
  1860. (method url-fetch)
  1861. (uri (string-append "http://lv2plug.in/spec/lv2-"
  1862. version ".tar.bz2"))
  1863. (sha256
  1864. (base32
  1865. "1ppippbpdpv13ibs06b0bixnazwfhiw0d0ja6hx42jnkgdyp5hyy"))))
  1866. (build-system waf-build-system)
  1867. (arguments
  1868. `(#:tests? #f ; no check target
  1869. #:configure-flags '("--no-plugins")))
  1870. (inputs
  1871. ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
  1872. `(("libsndfile" ,libsndfile)))
  1873. (native-inputs
  1874. `(("pkg-config" ,pkg-config)))
  1875. (home-page "http://lv2plug.in/")
  1876. (synopsis "LV2 audio plugin specification")
  1877. (description
  1878. "LV2 is an open specification for audio plugins and host applications.
  1879. At its core, LV2 is a simple stable interface, accompanied by extensions which
  1880. add functionality to support the needs of increasingly powerful audio
  1881. software.")
  1882. (license license:isc)))
  1883. (define-public lv2-mda-piano
  1884. (package
  1885. (name "lv2-mda-piano")
  1886. (version "0.0.2")
  1887. (source (origin
  1888. (method git-fetch)
  1889. (uri (git-reference
  1890. (url "http://git.elephly.net/software/lv2-mdametapiano.git")
  1891. (commit version)))
  1892. (file-name (git-file-name name version))
  1893. (sha256
  1894. (base32
  1895. "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
  1896. (build-system gnu-build-system)
  1897. (arguments
  1898. `(#:make-flags (list
  1899. "TYPE=mdaPiano"
  1900. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  1901. #:tests? #f ; no check target
  1902. #:phases (modify-phases %standard-phases (delete 'configure))))
  1903. (inputs
  1904. `(("lv2" ,lv2)
  1905. ("lvtk" ,lvtk)))
  1906. (native-inputs
  1907. `(("pkg-config" ,pkg-config)))
  1908. (native-search-paths
  1909. (list (search-path-specification
  1910. (variable "LV2_PATH")
  1911. (files '("lib/lv2")))))
  1912. (home-page "http://elephly.net/lv2/mdapiano.html")
  1913. (synopsis "LV2 port of the mda Piano plugin")
  1914. (description "An LV2 port of the mda Piano VSTi.")
  1915. (license license:gpl3+)))
  1916. (define-public lv2-mda-epiano
  1917. (package (inherit lv2-mda-piano)
  1918. (name "lv2-mda-epiano")
  1919. (arguments
  1920. `(#:make-flags (list
  1921. "TYPE=mdaEPiano"
  1922. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  1923. #:tests? #f ; no check target
  1924. #:phases (modify-phases %standard-phases (delete 'configure))))
  1925. (home-page "http://elephly.net/lv2/mdaepiano.html")
  1926. (synopsis "LV2 port of the mda EPiano plugin")
  1927. (description "An LV2 port of the mda EPiano VSTi.")))
  1928. (define-public lvtk
  1929. (package
  1930. (name "lvtk")
  1931. (version "1.2.0")
  1932. (source (origin
  1933. (method git-fetch)
  1934. (uri (git-reference
  1935. (url "https://github.com/lvtk/lvtk.git")
  1936. (commit version)))
  1937. (file-name (git-file-name name version))
  1938. (sha256
  1939. (base32
  1940. "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
  1941. (build-system waf-build-system)
  1942. (arguments
  1943. `(#:tests? #f ; no check target
  1944. #:python ,python-2
  1945. #:configure-flags
  1946. (list (string-append "--boost-includes="
  1947. (assoc-ref %build-inputs "boost")
  1948. "/include"))
  1949. #:phases (modify-phases %standard-phases
  1950. (add-before
  1951. 'configure 'set-flags
  1952. (lambda* (#:key inputs #:allow-other-keys)
  1953. ;; See e.g. https://github.com/lvtk/lvtk/issues/21
  1954. (setenv "LDFLAGS"
  1955. (string-append
  1956. "-L" (assoc-ref inputs "boost") "/lib "
  1957. "-lboost_system"))
  1958. ;; Needed for gtkmm
  1959. (substitute* '("src/wscript_build"
  1960. "examples/wscript_build")
  1961. (("cxxflags.*= \\[" line)
  1962. (string-append line "\"-std=c++11\", ")))
  1963. #t)))))
  1964. (inputs
  1965. `(("boost" ,boost)
  1966. ("gtkmm" ,gtkmm-2)
  1967. ("lv2" ,lv2)))
  1968. (native-inputs
  1969. `(("pkg-config" ,pkg-config)))
  1970. (home-page "https://github.com/lvtk/lvtk")
  1971. (synopsis "C++ libraries for LV2 plugins")
  1972. (description
  1973. "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
  1974. extensions into easy to use C++ classes. It is the successor of
  1975. lv2-c++-tools.")
  1976. (license license:gpl3+)))
  1977. (define-public openal
  1978. (package
  1979. (name "openal")
  1980. (version "1.19.1")
  1981. (source (origin
  1982. (method url-fetch)
  1983. (uri (string-append
  1984. "http://openal-soft.org/openal-releases/openal-soft-"
  1985. version ".tar.bz2"))
  1986. (sha256
  1987. (base32
  1988. "1sdjhkz2gd6lbnwphi1b6aw3br4wv2lik5vnqh6mxfc8a7zqfbsw"))))
  1989. (build-system cmake-build-system)
  1990. (arguments
  1991. `(#:tests? #f ; no check target
  1992. #:phases
  1993. (modify-phases %standard-phases
  1994. (add-after
  1995. 'unpack 'use-full-library-paths
  1996. (lambda* (#:key inputs #:allow-other-keys)
  1997. (substitute* "Alc/backends/pulseaudio.c"
  1998. (("#define PALIB \"libpulse\\.so\\.0\"")
  1999. (string-append "#define PALIB \""
  2000. (assoc-ref inputs "pulseaudio")
  2001. "/lib/libpulse.so.0"
  2002. "\"")))
  2003. (substitute* "Alc/backends/alsa.c"
  2004. (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
  2005. (string-append "LoadLib(\""
  2006. (assoc-ref inputs "alsa-lib")
  2007. "/lib/libasound.so.2"
  2008. "\")")))
  2009. #t)))))
  2010. (inputs
  2011. `(("alsa-lib" ,alsa-lib)
  2012. ("pulseaudio" ,pulseaudio)))
  2013. (synopsis "3D audio API")
  2014. (description
  2015. "OpenAL provides capabilities for playing audio in a virtual 3D
  2016. environment. Distance attenuation, doppler shift, and directional sound
  2017. emitters are among the features handled by the API. More advanced effects,
  2018. including air absorption, occlusion, and environmental reverb, are available
  2019. through the EFX extension. It also facilitates streaming audio, multi-channel
  2020. buffers, and audio capture.")
  2021. (home-page "http://openal-soft.org/")
  2022. (license license:lgpl2.0+)))
  2023. (define-public freealut
  2024. (package
  2025. (name "freealut")
  2026. (version "1.1.0")
  2027. (source (origin
  2028. (method url-fetch)
  2029. ;; Upstream url is unclear, many systems use Fedora, there is also
  2030. ;; https://github.com/vancegroup/freealut though the status of it
  2031. ;; (official? unofficial?) is not clear.
  2032. (uri (string-append
  2033. "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
  2034. version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
  2035. "-" version ".tar.gz"))
  2036. (sha256
  2037. (base32
  2038. "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
  2039. (build-system cmake-build-system)
  2040. (arguments
  2041. `(#:tests? #f)) ; no check target
  2042. (inputs
  2043. `(("openal" ,openal)))
  2044. (synopsis "Free implementation of OpenAL's ALUT standard")
  2045. (description "freealut is the OpenAL Utility Toolkit.")
  2046. (home-page "http://kcat.strangesoft.net/openal.html")
  2047. (license license:lgpl2.0)))
  2048. (define-public patchage
  2049. (package
  2050. (name "patchage")
  2051. (version "1.0.0")
  2052. (source (origin
  2053. (method url-fetch)
  2054. (uri (string-append "https://download.drobilla.net/patchage-"
  2055. version
  2056. ".tar.bz2"))
  2057. (sha256
  2058. (base32
  2059. "1agdpwwi42176l4mxj0c4fsvdiv1ig56bfnnx0msckxmy57df8bb"))))
  2060. (build-system waf-build-system)
  2061. (arguments
  2062. `(#:tests? #f ; no check target
  2063. #:python ,python-2))
  2064. (inputs
  2065. `(("alsa-lib" ,alsa-lib)
  2066. ("boost" ,boost)
  2067. ("jack" ,jack-1)
  2068. ("ganv" ,ganv)
  2069. ("glibmm" ,glibmm)
  2070. ("gtkmm" ,gtkmm-2)
  2071. ("dbus-glib" ,dbus-glib)))
  2072. (native-inputs
  2073. `(("pkg-config" ,pkg-config)))
  2074. (home-page "https://drobilla.net/software/patchage/")
  2075. (synopsis "Modular patch bay for audio and MIDI systems")
  2076. (description
  2077. "Patchage is a modular patch bay for audio and MIDI systems based on JACK
  2078. and ALSA.")
  2079. (license license:gpl3+)))
  2080. (define-public qjackctl
  2081. (package
  2082. (name "qjackctl")
  2083. (version "0.5.5")
  2084. (source (origin
  2085. (method url-fetch)
  2086. (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
  2087. version "/qjackctl-" version ".tar.gz"))
  2088. (sha256
  2089. (base32
  2090. "1rzzqa39a6llr52vjkjr0a86nc776kmr5xs52qqga8ms9697psz5"))))
  2091. (build-system gnu-build-system)
  2092. (arguments
  2093. '(#:tests? #f ;; no check target
  2094. ;; Disable xunique to prevent X hanging when starting qjackctl in
  2095. ;; tiling window managers such as StumpWM or i3
  2096. ;; (see https://github.com/rncbc/qjackctl/issues/13).
  2097. #:configure-flags '("--disable-xunique")))
  2098. (inputs
  2099. `(("jack" ,jack-1)
  2100. ("alsa-lib" ,alsa-lib)
  2101. ("qtbase" ,qtbase)
  2102. ("qtx11extras" ,qtx11extras)))
  2103. (native-inputs
  2104. `(("pkg-config" ,pkg-config)
  2105. ("qttools" ,qttools)))
  2106. (home-page "https://qjackctl.sourceforge.io/")
  2107. (synopsis "Jack server control application")
  2108. (description "Control a Jack server. Allows you to plug various sources
  2109. into various outputs and to start, stop and configure jackd")
  2110. (license license:gpl2+)))
  2111. (define-public qjackrcd
  2112. (package
  2113. (name "qjackrcd")
  2114. (version "1.2.2")
  2115. (source (origin
  2116. (method git-fetch)
  2117. (uri (git-reference
  2118. (url "https://github.com/orouits/qjackrcd.git")
  2119. (commit (string-append "v" version))))
  2120. (file-name (git-file-name name version))
  2121. (sha256
  2122. (base32
  2123. "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
  2124. (build-system gnu-build-system)
  2125. (arguments
  2126. `(#:phases
  2127. (modify-phases %standard-phases
  2128. (replace 'configure
  2129. (lambda* (#:key outputs #:allow-other-keys)
  2130. (invoke "qmake"
  2131. (string-append "PREFIX="
  2132. (assoc-ref outputs "out"))))))))
  2133. (native-inputs
  2134. `(("qtbase" ,qtbase))) ; for qmake
  2135. (inputs
  2136. `(("jack" ,jack-1)
  2137. ("libsndfile" ,libsndfile)
  2138. ("qtbase" ,qtbase)))
  2139. (home-page "https://sourceforge.net/projects/qjackrcd/")
  2140. (synopsis "Stereo audio recorder for JACK")
  2141. (description "QJackRcd is a simple graphical stereo recorder for JACK
  2142. supporting silence processing for automatic pause, file splitting, and
  2143. background file post-processing.")
  2144. (license license:gpl2+)))
  2145. (define-public supercollider
  2146. (package
  2147. (name "supercollider")
  2148. (version "3.10.1")
  2149. (source (origin
  2150. (method url-fetch)
  2151. (uri (string-append
  2152. "https://github.com/supercollider/supercollider"
  2153. "/releases/download/Version-" version
  2154. "/SuperCollider-" version "-Source-linux.tar.bz2"))
  2155. (sha256
  2156. (base32
  2157. "1yszs9j3sjk8hb8xxz30z3nd4j899ymb9mw9y1v26ikd603d1iig"))))
  2158. (build-system cmake-build-system)
  2159. (arguments
  2160. `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
  2161. "-DSC_QT=off"
  2162. "-DSC_EL=off") ;scel is packaged individually as
  2163. ;emacs-scel.
  2164. #:modules ((guix build utils)
  2165. (guix build cmake-build-system)
  2166. (ice-9 ftw))
  2167. #:phases
  2168. (modify-phases %standard-phases
  2169. (add-after 'unpack 'fix-build-with-boost-1.68
  2170. (lambda _
  2171. (substitute* "server/supernova/utilities/time_tag.hpp"
  2172. (("(time_duration offset = .+ microseconds\\().*" _ m)
  2173. (string-append m "static_cast<long>(get_nanoseconds()/1000));\n")))
  2174. #t))
  2175. (add-after 'unpack 'rm-bundled-libs
  2176. (lambda _
  2177. ;; The build system doesn't allow us to unbundle the following
  2178. ;; libraries. hidapi is also heavily patched and upstream not
  2179. ;; actively maintained.
  2180. (let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" "TLSF-2.4.6"
  2181. "oscpack_1_1_0" "." "..")))
  2182. (with-directory-excursion "./external_libraries"
  2183. (for-each
  2184. delete-file-recursively
  2185. (scandir "."
  2186. (lambda (x)
  2187. (and (eq? (stat:type (stat x)) 'directory)
  2188. (not (member (basename x) keep-dirs))))))))
  2189. #t))
  2190. ;; Some tests are broken (see:
  2191. ;; https://github.com/supercollider/supercollider/issues/3555 and
  2192. ;; https://github.com/supercollider/supercollider/issues/1736
  2193. (add-after 'rm-bundled-libs 'disable-broken-tests
  2194. (lambda _
  2195. (substitute* "testsuite/server/supernova/CMakeLists.txt"
  2196. (("server_test.cpp")
  2197. "")
  2198. (("perf_counter_test.cpp")
  2199. ""))
  2200. (delete-file "testsuite/server/supernova/server_test.cpp")
  2201. (delete-file "testsuite/server/supernova/perf_counter_test.cpp")
  2202. (substitute* "testsuite/CMakeLists.txt"
  2203. (("add_subdirectory\\(sclang\\)")
  2204. ""))
  2205. (delete-file "testsuite/sclang/CMakeLists.txt")
  2206. #t))
  2207. ;; TODO: Remove after version 3.9.2 is released
  2208. ;; (see: https://github.com/supercollider/supercollider/pull/3558).
  2209. (add-after 'disable-broken-tests 'apply-system-yaml-cpp-fix
  2210. (lambda _
  2211. ;; cmake: correctly include yaml-cpp (commit f82cec5ae).
  2212. (substitute* "editors/sc-ide/CMakeLists.txt"
  2213. (("external_libraries/boost\\)$")
  2214. "external_libraries/boost)
  2215. include_directories(${YAMLCPP_INCLUDE_DIR})")
  2216. ((" yaml")
  2217. " ${YAMLCPP_LIBRARY}"))
  2218. ;; set YAMLCPP_LIBRARY and YAMLCPP_INCLUDE_DIR if not using
  2219. ;; system (commit 031922987).
  2220. (substitute* "external_libraries/CMakeLists.txt"
  2221. (("set_property\\( TARGET yaml PROPERTY FOLDER 3rdparty \\)")
  2222. "set_property( TARGET yaml PROPERTY FOLDER 3rdparty )
  2223. set(YAMLCPP_LIBRARY yaml)
  2224. set(YAMLCPP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/\
  2225. external_libraries/yaml-cpp/include)"))
  2226. #t)))))
  2227. (native-inputs
  2228. `(("pkg-config" ,pkg-config)))
  2229. (inputs
  2230. `(("jack" ,jack-1)
  2231. ("libsndfile" ,libsndfile)
  2232. ("fftw" ,fftw)
  2233. ("libxt" ,libxt)
  2234. ("readline" ,readline) ;readline support for sclang's CLI
  2235. ("alsa" ,alsa-lib) ;for sclang's MIDI interface
  2236. ("eudev" ,eudev) ;for user interactions with devices
  2237. ("avahi" ,avahi) ;zeroconf service discovery support
  2238. ("icu4c" ,icu4c)
  2239. ("boost" ,boost)
  2240. ("boost-sync" ,boost-sync)
  2241. ("yaml-cpp" ,yaml-cpp)))
  2242. (home-page "https://github.com/supercollider/supercollider")
  2243. (synopsis "Synthesis engine and programming language")
  2244. (description "SuperCollider is a synthesis engine (@code{scsynth} or
  2245. @code{supernova}) and programming language (@code{sclang}). It can be used
  2246. for experimenting with sound synthesis and algorithmic composition.
  2247. SuperCollider requires jackd to be installed in your user profile and your
  2248. user must be allowed to access the realtime features of the kernel. Search
  2249. for \"realtime\" in the index of the Guix manual to learn how to achieve this
  2250. using GuixSD.")
  2251. (license license:gpl2+)))
  2252. (define-public raul
  2253. (package
  2254. (name "raul")
  2255. (version "0.8.0")
  2256. (source (origin
  2257. (method url-fetch)
  2258. (uri (string-append "https://download.drobilla.net/raul-"
  2259. version ".tar.bz2"))
  2260. (sha256
  2261. (base32
  2262. "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
  2263. (build-system waf-build-system)
  2264. (arguments
  2265. `(#:python ,python-2
  2266. #:tests? #f)) ; no check target
  2267. (inputs
  2268. `(("glib" ,glib)
  2269. ("boost" ,boost)))
  2270. (native-inputs
  2271. `(("pkg-config" ,pkg-config)))
  2272. (home-page "https://drobilla.net/software/raul/")
  2273. (synopsis "Real-time audio utility library")
  2274. (description
  2275. "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
  2276. aimed at audio/musical applications.")
  2277. (license license:gpl2+)))
  2278. (define-public raul-devel
  2279. (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
  2280. (revision "1"))
  2281. (package (inherit raul)
  2282. (name "raul")
  2283. (version (string-append "0.8.9-" revision "."
  2284. (string-take commit 9)))
  2285. (source (origin
  2286. (method git-fetch)
  2287. (uri (git-reference
  2288. (url "https://git.drobilla.net/raul.git")
  2289. (commit commit)))
  2290. (file-name (string-append name "-" version "-checkout"))
  2291. (sha256
  2292. (base32
  2293. "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
  2294. (define-public rubberband
  2295. (package
  2296. (name "rubberband")
  2297. (version "1.8.1")
  2298. (source (origin
  2299. (method url-fetch)
  2300. (uri
  2301. (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
  2302. version
  2303. ".tar.bz2"))
  2304. (file-name (string-append name "-" version ".tar.bz2"))
  2305. (sha256
  2306. (base32
  2307. "05amrbrxx0da3w7m237q51799r8xgs4ffqabi2qv06hq8dpcj386"))))
  2308. (build-system gnu-build-system)
  2309. (arguments `(#:tests? #f)) ; no check target
  2310. (inputs
  2311. `(("ladspa" ,ladspa)
  2312. ("libsamplerate" ,libsamplerate)
  2313. ("vamp" ,vamp)))
  2314. (native-inputs
  2315. `(("pkg-config" ,pkg-config)))
  2316. (home-page "https://breakfastquay.com/rubberband/")
  2317. (synopsis "Audio time-stretching and pitch-shifting library")
  2318. (description
  2319. "Rubber Band is a library and utility program that permits changing the
  2320. tempo and pitch of an audio recording independently of one another.")
  2321. (license license:gpl2+)))
  2322. (define-public rtmidi
  2323. (package
  2324. (name "rtmidi")
  2325. (version "2.1.0")
  2326. (source (origin
  2327. (method git-fetch)
  2328. (uri (git-reference
  2329. (url "https://github.com/powertab/rtmidi.git")
  2330. (commit version)))
  2331. (file-name (git-file-name name version))
  2332. (sha256
  2333. (base32
  2334. "106v177y3nrjv2l1yskch4phpqd8h97b67zj0jiq9pc3c69jr1ay"))))
  2335. (build-system gnu-build-system)
  2336. (arguments
  2337. `(#:tests? #f ;no "check" target
  2338. #:phases
  2339. (modify-phases %standard-phases
  2340. (add-before 'build 'fix-makefile
  2341. (lambda _
  2342. (substitute* "Makefile"
  2343. (("/bin/ln") "ln")
  2344. (("RtMidi.h RtError.h") "RtMidi.h"))
  2345. #t))
  2346. (add-before 'install 'make-target-dirs
  2347. (lambda _
  2348. (let ((out (assoc-ref %outputs "out")))
  2349. (mkdir-p (string-append out "/bin"))
  2350. (mkdir (string-append out "/lib"))
  2351. (mkdir (string-append out "/include")))
  2352. #t)))))
  2353. (inputs
  2354. `(("jack" ,jack-1)
  2355. ("alsa-lib" ,alsa-lib)))
  2356. (native-inputs
  2357. `(("autoconf" ,autoconf)
  2358. ("automake" ,automake)
  2359. ("libtool" ,libtool)
  2360. ("pkg-config" ,pkg-config)))
  2361. (home-page "https://github.com/powertab/rtmidi")
  2362. (synopsis "Cross-platform MIDI library for C++")
  2363. (description
  2364. "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
  2365. classes) that provide a common cross-platform API for realtime MIDI
  2366. input/output.")
  2367. (license license:expat)))
  2368. (define-public sratom
  2369. (package
  2370. (name "sratom")
  2371. (version "0.6.2")
  2372. (source (origin
  2373. (method url-fetch)
  2374. (uri (string-append "https://download.drobilla.net/sratom-"
  2375. version ".tar.bz2"))
  2376. (sha256
  2377. (base32
  2378. "0lz883ravxjf7r9wwbx2gx9m8vhyiavxrl9jdxfppjxnsralll8a"))))
  2379. (build-system waf-build-system)
  2380. (arguments `(#:tests? #f)) ; no check target
  2381. (inputs
  2382. `(("lv2" ,lv2)
  2383. ("serd" ,serd)
  2384. ("sord" ,sord)))
  2385. (native-inputs
  2386. `(("pkg-config" ,pkg-config)))
  2387. (home-page "https://drobilla.net/software/sratom/")
  2388. (synopsis "Library for serialising LV2 atoms to/from RDF")
  2389. (description
  2390. "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
  2391. the Turtle syntax.")
  2392. (license license:isc)))
  2393. (define-public suil
  2394. (package
  2395. (name "suil")
  2396. (version "0.10.2")
  2397. (source (origin
  2398. (method url-fetch)
  2399. (uri (string-append "https://download.drobilla.net/suil-"
  2400. version ".tar.bz2"))
  2401. (sha256
  2402. (base32
  2403. "00d43m0nai63ajb7rkm9v084jcih206y17ib3160zcvzc885ji4z"))))
  2404. (build-system waf-build-system)
  2405. (arguments
  2406. `(#:tests? #f ; no check target
  2407. #:configure-flags
  2408. '("CXXFLAGS=-std=gnu++11")))
  2409. (inputs
  2410. `(("lv2" ,lv2)
  2411. ("gtk+" ,gtk+-2)
  2412. ("gtk+" ,gtk+)
  2413. ("qt" ,qtbase)))
  2414. (native-inputs
  2415. `(("pkg-config" ,pkg-config)))
  2416. (home-page "https://drobilla.net/software/suil/")
  2417. (synopsis "Library for loading and wrapping LV2 plugin UIs")
  2418. (description
  2419. "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
  2420. Suil makes it possible to load a UI of a toolkit in a host using another
  2421. toolkit. The API is designed such that hosts do not need to explicitly
  2422. support specific toolkits – if Suil supports a particular toolkit, then UIs in
  2423. that toolkit will work in all hosts that use Suil automatically.
  2424. Suil currently supports every combination of Gtk, Qt, and X11.")
  2425. (license license:isc)))
  2426. (define-public timidity++
  2427. (package
  2428. (name "timidity++")
  2429. (version "2.14.0")
  2430. (source (origin
  2431. (method url-fetch)
  2432. (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
  2433. "/TiMidity++-" version
  2434. "/TiMidity++-" version ".tar.bz2"))
  2435. (sha256
  2436. (base32
  2437. "0xk41w4qbk23z1fvqdyfblbz10mmxsllw0svxzjw5sa9y11vczzr"))))
  2438. (build-system gnu-build-system)
  2439. (arguments
  2440. '(#:configure-flags
  2441. (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
  2442. "--enable-ncurses"
  2443. "--enable-server"
  2444. "--enable-alsaseq"
  2445. (string-append "--with-default-path="
  2446. (assoc-ref %outputs "out") "/etc/timidity"))
  2447. #:phases
  2448. (modify-phases %standard-phases
  2449. (add-after 'install 'install-config
  2450. (lambda _
  2451. (let ((out (string-append (assoc-ref %outputs "out")
  2452. "/etc/timidity")))
  2453. (mkdir-p out)
  2454. (call-with-output-file
  2455. (string-append out "/timidity.cfg")
  2456. (lambda (port)
  2457. (format port (string-append "source "
  2458. (assoc-ref %build-inputs "freepats")
  2459. "/share/freepats/freepats.cfg")))))
  2460. #t)))))
  2461. (inputs
  2462. `(("alsa-lib" ,alsa-lib)
  2463. ("ao" ,ao)
  2464. ("flac" ,flac)
  2465. ("jack" ,jack-1)
  2466. ("libogg" ,libogg)
  2467. ("speex" ,speex)
  2468. ("ncurses" ,ncurses)
  2469. ("freepats" ,freepats)))
  2470. (native-inputs
  2471. `(("pkg-config" ,pkg-config)))
  2472. (home-page "http://timidity.sourceforge.net/")
  2473. (synopsis "Software synthesizer for playing MIDI files")
  2474. (description
  2475. "TiMidity++ is a software synthesizer. It can play MIDI files by
  2476. converting them into PCM waveform data; give it a MIDI data along with digital
  2477. instrument data files, then it synthesizes them in real-time, and plays. It
  2478. can not only play sounds, but also can save the generated waveforms into hard
  2479. disks as various audio file formats.")
  2480. (license license:gpl2+)))
  2481. (define-public vamp
  2482. (package
  2483. (name "vamp")
  2484. (version "2.6")
  2485. (source (origin
  2486. (method url-fetch)
  2487. (uri (string-append
  2488. "https://code.soundsoftware.ac.uk"
  2489. "/attachments/download/1520/vamp-plugin-sdk-"
  2490. version ".tar.gz"))
  2491. (sha256
  2492. (base32
  2493. "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
  2494. (build-system gnu-build-system)
  2495. (arguments
  2496. `(#:tests? #f ; no check target
  2497. #:phases
  2498. (modify-phases %standard-phases
  2499. (add-after 'install 'remove-libvamp-hostsdk.la
  2500. (lambda* (#:key outputs #:allow-other-keys)
  2501. ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
  2502. (for-each delete-file
  2503. (let ((out (assoc-ref outputs "out")))
  2504. (list (string-append out "/lib/libvamp-sdk.la")
  2505. (string-append out "/lib/libvamp-hostsdk.la"))))
  2506. #t)))))
  2507. (inputs
  2508. `(("libsndfile" ,libsndfile)))
  2509. (native-inputs
  2510. `(("pkg-config" ,pkg-config)))
  2511. (home-page "http://vamp-plugins.org")
  2512. (synopsis "Modular and extensible audio processing system")
  2513. (description
  2514. "Vamp is an audio processing plugin system for plugins that extract
  2515. descriptive information from audio data — typically referred to as audio
  2516. analysis plugins or audio feature extraction plugins.")
  2517. (license
  2518. (license:x11-style
  2519. "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
  2520. (define-public libsbsms
  2521. (package
  2522. (name "libsbsms")
  2523. (version "2.0.2")
  2524. (source
  2525. (origin
  2526. (method url-fetch)
  2527. (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
  2528. "/libsbsms-" version ".tar.gz"))
  2529. (sha256
  2530. (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
  2531. (build-system gnu-build-system)
  2532. (native-inputs `(("automake" ,automake)))
  2533. (arguments
  2534. `(#:configure-flags
  2535. ;; Disable the use of SSE unless on x86_64.
  2536. ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
  2537. (%current-system))))
  2538. ''("--disable-sse")
  2539. ''())
  2540. #:phases
  2541. (modify-phases %standard-phases
  2542. (add-after
  2543. 'unpack 'fix-ar-lib-path
  2544. (lambda* (#:key inputs #:allow-other-keys)
  2545. ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
  2546. (delete-file "ar-lib")
  2547. (symlink
  2548. (string-append (assoc-ref inputs "automake") "/share/automake-"
  2549. ,(package-version automake) "/ar-lib")
  2550. "ar-lib")
  2551. #t)))))
  2552. (home-page "http://sbsms.sourceforge.net/")
  2553. (synopsis "Library for time stretching and pitch scaling of audio")
  2554. (description
  2555. "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
  2556. stretching and pitch scaling of audio. This package contains the library.")
  2557. ;; There is no explicit declaration of a license, but a COPYING file
  2558. ;; containing gpl2.
  2559. (license license:gpl2)))
  2560. (define-public wavpack
  2561. (package
  2562. (name "wavpack")
  2563. (version "5.1.0")
  2564. (source (origin
  2565. (method url-fetch)
  2566. (uri (string-append "http://www.wavpack.com/"
  2567. name "-" version ".tar.bz2"))
  2568. (patches (search-patches "wavpack-CVE-2018-6767.patch"
  2569. "wavpack-CVE-2018-7253.patch"
  2570. "wavpack-CVE-2018-7254.patch"))
  2571. (sha256
  2572. (base32
  2573. "0i19c6krc0p9krwrqy9s5xahaafigqzxcn31piidmlaqadyn4f8r"))))
  2574. (build-system gnu-build-system)
  2575. (home-page "http://www.wavpack.com/")
  2576. (synopsis "Hybrid lossless audio codec")
  2577. (description
  2578. "WavPack is an audio compression format with lossless, lossy and hybrid
  2579. compression modes. This package contains command-line programs and library to
  2580. encode and decode wavpack files.")
  2581. (license license:bsd-3)))
  2582. (define-public libmodplug
  2583. (package
  2584. (name "libmodplug")
  2585. (version "0.8.9.0")
  2586. (source (origin
  2587. (method url-fetch)
  2588. (uri (string-append
  2589. "mirror://sourceforge/modplug-xmms/"
  2590. name "/" version "/" name "-" version ".tar.gz"))
  2591. (sha256
  2592. (base32
  2593. "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
  2594. (build-system gnu-build-system)
  2595. (home-page "http://modplug-xmms.sourceforge.net/")
  2596. (synopsis "Mod file playing library")
  2597. (description
  2598. "Libmodplug renders mod music files as raw audio data, for playing or
  2599. conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
  2600. supported. Optional features include high-quality resampling, bass expansion,
  2601. surround and reverb.")
  2602. (license license:public-domain)))
  2603. (define-public libxmp
  2604. (package
  2605. (name "libxmp")
  2606. (version "4.4.1")
  2607. (source (origin
  2608. (method url-fetch)
  2609. (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
  2610. name "-" version ".tar.gz"))
  2611. (sha256
  2612. (base32
  2613. "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
  2614. (build-system gnu-build-system)
  2615. (home-page "http://xmp.sourceforge.net/")
  2616. (synopsis "Module player library")
  2617. (description
  2618. "Libxmp is a library that renders module files to PCM data. It supports
  2619. over 90 mainstream and obscure module formats including Protracker (MOD),
  2620. Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
  2621. (license license:lgpl2.1+)))
  2622. (define-public xmp
  2623. (package
  2624. (name "xmp")
  2625. (version "4.1.0")
  2626. (source (origin
  2627. (method url-fetch)
  2628. (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
  2629. name "-" version ".tar.gz"))
  2630. (sha256
  2631. (base32
  2632. "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
  2633. (build-system gnu-build-system)
  2634. (native-inputs
  2635. `(("pkg-config" ,pkg-config)))
  2636. (inputs
  2637. `(("libxmp" ,libxmp)
  2638. ("pulseaudio" ,pulseaudio)))
  2639. (home-page "http://xmp.sourceforge.net/")
  2640. (synopsis "Extended module player")
  2641. (description
  2642. "Xmp is a portable module player that plays over 90 mainstream and
  2643. obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
  2644. Tracker 3 S3M and Impulse Tracker IT files.")
  2645. (license license:gpl2+)))
  2646. (define-public soundtouch
  2647. (package
  2648. (name "soundtouch")
  2649. (version "2.0.0")
  2650. (source
  2651. (origin
  2652. (method url-fetch)
  2653. (uri
  2654. (string-append
  2655. "http://www.surina.net/soundtouch/soundtouch-" version ".tar.gz"))
  2656. (patches (search-patches "soundtouch-CVE-2018-14044-14045.patch"
  2657. "soundtouch-CVE-2018-1000223.patch"))
  2658. (sha256
  2659. (base32
  2660. "09cxr02mfyj2bg731bj0i9hh565x8l9p91aclxs8wpqv8b8zf96j"))))
  2661. (build-system gnu-build-system)
  2662. (native-inputs
  2663. `(("autoconf" ,autoconf)
  2664. ("automake" ,automake)
  2665. ("libtool" ,libtool)
  2666. ("file" ,file)))
  2667. (home-page "http://www.surina.net/soundtouch/")
  2668. (synopsis
  2669. "Audio processing library for changing tempo, pitch and playback rate")
  2670. (description
  2671. "SoundTouch is an audio processing library for changing the tempo, pitch
  2672. and playback rates of audio streams or audio files. It is intended for
  2673. application developers writing sound processing tools that require tempo/pitch
  2674. control functionality, or just for playing around with the sound effects.")
  2675. (license license:lgpl2.1+)))
  2676. (define-public sox
  2677. (package
  2678. (name "sox")
  2679. (version "14.4.2")
  2680. (source (origin
  2681. (method url-fetch)
  2682. (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
  2683. name "-" version ".tar.bz2"))
  2684. (sha256
  2685. (base32
  2686. "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
  2687. (build-system gnu-build-system)
  2688. (arguments
  2689. '(#:configure-flags
  2690. ;; The upstream asks to identify the distribution to diagnose SoX
  2691. ;; bug reports.
  2692. '("--with-distro=Guix System Distribution")))
  2693. (native-inputs
  2694. `(("pkg-config" ,pkg-config)))
  2695. (inputs
  2696. `(("alsa-lib" ,alsa-lib)
  2697. ("ao" ,ao)
  2698. ("flac" ,flac)
  2699. ("lame" ,lame)
  2700. ("libid3tag" ,libid3tag)
  2701. ("libltdl" ,libltdl)
  2702. ("libmad" ,libmad)
  2703. ("libpng" ,libpng)
  2704. ("libvorbis" ,libvorbis)
  2705. ("pulseaudio" ,pulseaudio)))
  2706. (home-page "http://sox.sourceforge.net")
  2707. (synopsis "Sound processing utility")
  2708. (description
  2709. "SoX (Sound eXchange) is a command line utility that can convert
  2710. various formats of computer audio files to other formats. It can also
  2711. apply various effects to these sound files, and, as an added bonus, SoX
  2712. can play and record audio files.")
  2713. ;; sox.c is distributed under GPL, while the files that make up
  2714. ;; libsox are licensed under LGPL.
  2715. (license (list license:gpl2+ license:lgpl2.1+))))
  2716. (define-public soxr
  2717. (package
  2718. (name "soxr")
  2719. (version "0.1.3")
  2720. (source
  2721. (origin
  2722. (method url-fetch)
  2723. (uri
  2724. (string-append "mirror://sourceforge/soxr/soxr-" version
  2725. "-Source.tar.xz"))
  2726. (sha256
  2727. (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
  2728. (build-system cmake-build-system)
  2729. (arguments '(#:tests? #f)) ;no 'check' target
  2730. (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
  2731. (synopsis "One-dimensional sample-rate conversion library")
  2732. (description
  2733. "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
  2734. conversion. It may be used, for example, to resample PCM-encoded audio.")
  2735. (license license:lgpl2.1+)))
  2736. (define-public twolame
  2737. (package
  2738. (name "twolame")
  2739. (version "0.3.13")
  2740. (source
  2741. (origin
  2742. (method url-fetch)
  2743. (uri (string-append "mirror://sourceforge/twolame/twolame/" version
  2744. "/twolame-" version ".tar.gz"))
  2745. (sha256
  2746. (base32 "0ahiqqng5pidwhj1wzph4vxxgxxgcfa3gl0gywipzx2ii7s35wwq"))
  2747. (modules '((guix build utils)))
  2748. ;; The tests break with Perl 5.24:
  2749. ;; https://github.com/njh/twolame/issues/21
  2750. ;; TODO: Remove this snippet when upgrading twolame.
  2751. (snippet
  2752. '(begin
  2753. (substitute* "tests/test.pl" (("\\(@_\\)") "($_[0])"))
  2754. #t))))
  2755. (build-system gnu-build-system)
  2756. (inputs
  2757. `(("libsndfile" ,libsndfile)))
  2758. (native-inputs
  2759. `(("perl" ,perl)
  2760. ("which" ,which))) ;used in tests/test.pl
  2761. (home-page "http://www.twolame.org/")
  2762. (synopsis "MPEG Audio Layer 2 (MP2) encoder")
  2763. (description
  2764. "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
  2765. tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
  2766. portions of LAME.")
  2767. (license license:lgpl2.1+)))
  2768. (define-public portaudio
  2769. (package
  2770. (name "portaudio")
  2771. (version "190600.20161030")
  2772. (source
  2773. (origin
  2774. (method url-fetch)
  2775. (uri (string-append
  2776. "http://www.portaudio.com/archives/pa_stable_v"
  2777. (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
  2778. ".tgz"))
  2779. (sha256
  2780. (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
  2781. (patches (search-patches "portaudio-audacity-compat.patch"))))
  2782. (build-system gnu-build-system)
  2783. (inputs
  2784. ;; TODO: Add ASIHPI.
  2785. `(("alsa-lib" ,alsa-lib)
  2786. ("jack" ,jack-1)))
  2787. ;; Autoreconf is necessary because the audacity-compat patch modifies .in
  2788. ;; files.
  2789. (native-inputs
  2790. `(("autoconf" ,autoconf)
  2791. ("automake" ,automake)
  2792. ("libtool" ,libtool)
  2793. ("pkg-config" ,pkg-config)))
  2794. (arguments '(#:tests? #f)) ;no 'check' target
  2795. (home-page "http://www.portaudio.com/")
  2796. (synopsis "Audio I/O library")
  2797. (description
  2798. "PortAudio is a portable C/C++ audio I/O library providing a simple API
  2799. to record and/or play sound using a callback function or a blocking read/write
  2800. interface.")
  2801. (license license:expat)))
  2802. (define-public qsynth
  2803. (package
  2804. (name "qsynth")
  2805. (version "0.5.4")
  2806. (source
  2807. (origin
  2808. (method url-fetch)
  2809. (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
  2810. "/qsynth-" version ".tar.gz"))
  2811. (sha256
  2812. (base32
  2813. "0kpq5fxr96wnii18ax780w1ivq8ksk892ac0bprn92iz0asfysrd"))))
  2814. (build-system gnu-build-system)
  2815. (arguments
  2816. `(#:tests? #f ; no "check" phase
  2817. #:configure-flags
  2818. '("CXXFLAGS=-std=gnu++11")))
  2819. (native-inputs
  2820. `(("qttools" ,qttools)
  2821. ("pkg-config" ,pkg-config)))
  2822. (inputs
  2823. `(("fluidsynth" ,fluidsynth)
  2824. ("qtbase" ,qtbase)
  2825. ("qtx11extras" ,qtx11extras)))
  2826. (home-page "http://qsynth.sourceforge.net")
  2827. (synopsis "Graphical user interface for FluidSynth")
  2828. (description
  2829. "Qsynth is a GUI front-end application for the FluidSynth SoundFont
  2830. synthesizer written in C++.")
  2831. (license license:gpl2+)))
  2832. (define-public rsound
  2833. (package
  2834. (name "rsound")
  2835. (version "1.1")
  2836. (source
  2837. (origin
  2838. (method git-fetch)
  2839. (uri (git-reference
  2840. (url "https://github.com/Themaister/RSound.git")
  2841. (commit (string-append "v" version))))
  2842. (file-name (git-file-name name version))
  2843. (sha256
  2844. (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
  2845. (build-system gnu-build-system)
  2846. (inputs
  2847. `(("alsa-lib" ,alsa-lib)
  2848. ("jack" ,jack-1)
  2849. ("ao" ,ao)
  2850. ("libsamplerate" ,libsamplerate)
  2851. ("openal" ,openal)
  2852. ("portaudio" ,portaudio)
  2853. ("pulseaudio" ,pulseaudio)))
  2854. (arguments
  2855. '(#:phases
  2856. (modify-phases %standard-phases
  2857. (replace 'configure
  2858. (lambda* (#:key outputs #:allow-other-keys)
  2859. (setenv "CC" "gcc")
  2860. (invoke "./configure"
  2861. (string-append "--prefix=" (assoc-ref outputs "out"))))))
  2862. ;; No 'check' target.
  2863. #:tests? #f))
  2864. (home-page "http://themaister.net/rsound.html")
  2865. (synopsis "Networked audio system")
  2866. (description
  2867. "RSound allows you to send audio from an application and transfer it
  2868. directly to a different computer on your LAN network. It is an audio daemon
  2869. with a much different focus than most other audio daemons.")
  2870. (license license:gpl3+)))
  2871. (define-public xjackfreak
  2872. (package
  2873. (name "xjackfreak")
  2874. (version "1.0")
  2875. (source (origin
  2876. (method git-fetch)
  2877. (uri (git-reference
  2878. (url "https://github.com/johnhldavis/xjackfreak.git")
  2879. (commit (string-append "v" version))))
  2880. (file-name (git-file-name name version))
  2881. (sha256
  2882. (base32
  2883. "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
  2884. (build-system gnu-build-system)
  2885. (arguments
  2886. `(#:make-flags
  2887. (list (string-append "docdir=" (assoc-ref %outputs "out")
  2888. "/share/doc/xjackfreak"))))
  2889. (inputs
  2890. `(("jack" ,jack-1)
  2891. ("libx11" ,libx11)
  2892. ("libxt" ,libxt)
  2893. ("libxext" ,libxext)))
  2894. (native-inputs
  2895. `(("pkg-config" ,pkg-config)))
  2896. (home-page "https://github.com/johnhldavis/xjackfreak")
  2897. (synopsis "JACK audio frequency analyzer and display")
  2898. (description
  2899. "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
  2900. Connection Kit. It can display the FFT of any input, modify it and output the
  2901. result.")
  2902. (license license:gpl3+)))
  2903. (define-public zita-convolver
  2904. (package
  2905. (name "zita-convolver")
  2906. (version "3.1.0")
  2907. (source (origin
  2908. (method url-fetch)
  2909. (uri (string-append
  2910. "http://kokkinizita.linuxaudio.org"
  2911. "/linuxaudio/downloads/zita-convolver-"
  2912. version ".tar.bz2"))
  2913. (snippet
  2914. ;; Don't optimize for a specific processor architecture.
  2915. '(begin
  2916. (substitute* "libs/Makefile"
  2917. (("^CXXFLAGS \\+= -march=native") ""))
  2918. #t))
  2919. (modules '((guix build utils)))
  2920. (sha256
  2921. (base32
  2922. "14qrnczhp5mbwhky64il7kxc4hl1mmh495v60va7i2qnhasr6zmz"))))
  2923. (build-system gnu-build-system)
  2924. (arguments
  2925. `(#:tests? #f ; no "check" target
  2926. #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  2927. #:phases
  2928. (modify-phases %standard-phases
  2929. (add-after 'unpack 'patch-makefile-and-enter-directory
  2930. (lambda _
  2931. (substitute* "libs/Makefile"
  2932. (("ldconfig") "true")
  2933. (("^LIBDIR =.*") "LIBDIR = lib\n"))
  2934. (chdir "libs")
  2935. #t))
  2936. (add-after 'install 'install-symlink
  2937. (lambda _
  2938. (symlink "libzita-convolver.so"
  2939. (string-append (assoc-ref %outputs "out")
  2940. "/lib/libzita-convolver.so.3"))
  2941. #t))
  2942. ;; no configure script
  2943. (delete 'configure))))
  2944. (inputs `(("fftwf" ,fftwf)))
  2945. (home-page "https://kokkinizita.linuxaudio.org")
  2946. (synopsis "Fast, partitioned convolution engine library")
  2947. (description
  2948. "Zita convolver is a C++ library providing a real-time convolution
  2949. engine.")
  2950. (license license:gpl3+)))
  2951. (define-public zita-resampler
  2952. (package
  2953. (name "zita-resampler")
  2954. (version "1.3.0")
  2955. (source (origin
  2956. (method url-fetch)
  2957. (uri (string-append
  2958. "http://kokkinizita.linuxaudio.org"
  2959. "/linuxaudio/downloads/zita-resampler-"
  2960. version ".tar.bz2"))
  2961. (snippet
  2962. ;; Don't optimize for a specific processor architecture.
  2963. '(begin
  2964. (substitute* '("apps/Makefile" "libs/Makefile")
  2965. (("^CXXFLAGS \\+= -march=native") ""))
  2966. #t))
  2967. (modules '((guix build utils)))
  2968. (sha256
  2969. (base32
  2970. "0r9ary5sc3y8vba5pad581ha7mgsrlyai83w7w4x2fmhfy64q0wq"))))
  2971. (build-system gnu-build-system)
  2972. (arguments
  2973. `(#:tests? #f ; no "check" target
  2974. #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  2975. #:phases
  2976. (modify-phases %standard-phases
  2977. (add-after
  2978. 'unpack 'patch-makefile-and-enter-directory
  2979. (lambda _
  2980. (substitute* "libs/Makefile"
  2981. (("ldconfig") "true")
  2982. (("^LIBDIR =.*") "LIBDIR = lib\n"))
  2983. (chdir "libs")
  2984. #t))
  2985. (add-after
  2986. 'install 'install-symlink
  2987. (lambda _
  2988. (symlink "libzita-resampler.so"
  2989. (string-append (assoc-ref %outputs "out")
  2990. "/lib/libzita-resampler.so.1"))
  2991. #t))
  2992. ;; no configure script
  2993. (delete 'configure))))
  2994. (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
  2995. (synopsis "C++ library for resampling audio signals")
  2996. (description
  2997. "Libzita-resampler is a C++ library for resampling audio signals. It is
  2998. designed to be used within a real-time processing context, to be fast, and to
  2999. provide high-quality sample rate conversion.")
  3000. (license license:gpl3+)))
  3001. (define-public zita-alsa-pcmi
  3002. (package
  3003. (name "zita-alsa-pcmi")
  3004. (version "0.2.0")
  3005. (source (origin
  3006. (method url-fetch)
  3007. (uri (string-append
  3008. "http://kokkinizita.linuxaudio.org"
  3009. "/linuxaudio/downloads/zita-alsa-pcmi-"
  3010. version ".tar.bz2"))
  3011. (sha256
  3012. (base32
  3013. "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))))
  3014. (build-system gnu-build-system)
  3015. (arguments
  3016. `(#:tests? #f ; no "check" target
  3017. #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  3018. #:phases
  3019. (modify-phases %standard-phases
  3020. (add-after 'unpack 'patch-makefile-and-enter-directory
  3021. (lambda _
  3022. (substitute* "libs/Makefile"
  3023. (("ldconfig") "true")
  3024. (("^LIBDIR =.*") "LIBDIR = lib\n"))
  3025. (chdir "libs")
  3026. #t))
  3027. (add-after 'install 'install-symlink
  3028. (lambda _
  3029. (symlink "libzita-alsa-pcmi.so"
  3030. (string-append (assoc-ref %outputs "out")
  3031. "/lib/libzita-alsa-pcmi.so.0"))
  3032. #t))
  3033. ;; no configure script
  3034. (delete 'configure))))
  3035. (inputs
  3036. `(("alsa-lib" ,alsa-lib)
  3037. ("fftw" ,fftw)))
  3038. (home-page "https://kokkinizita.linuxaudio.org")
  3039. (synopsis "C++ wrapper around the ALSA API")
  3040. (description
  3041. "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
  3042. access to ALSA PCM devices, taking care of the many functions required to
  3043. open, initialise and use a hw: device in mmap mode, and providing floating
  3044. point audio data.")
  3045. (license license:gpl3+)))
  3046. (define-public cuetools
  3047. (package
  3048. (name "cuetools")
  3049. (version "1.4.1")
  3050. (source (origin
  3051. (method git-fetch)
  3052. (uri (git-reference
  3053. (url "https://github.com/svend/cuetools.git")
  3054. (commit version)))
  3055. (file-name (git-file-name name version))
  3056. (sha256
  3057. (base32
  3058. "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
  3059. (build-system gnu-build-system)
  3060. ;; The source checkout is not bootstrapped.
  3061. (native-inputs
  3062. `(("autoconf" ,autoconf)
  3063. ("automake" ,automake)
  3064. ("flex" ,flex)
  3065. ("bison" ,bison)))
  3066. (synopsis "Cue and toc file parsers and utilities")
  3067. (description "Cuetools is a set of programs that are useful for manipulating
  3068. and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
  3069. files are a way to represent the layout of a data or audio CD in a
  3070. machine-readable ASCII format.")
  3071. (home-page "https://github.com/svend/cuetools")
  3072. (license license:gpl2+)))
  3073. (define-public shntool
  3074. (package
  3075. (name "shntool")
  3076. (version "3.0.10")
  3077. (source (origin
  3078. (method url-fetch)
  3079. (uri (string-append "http://etree.org/shnutils/shntool/dist/src/"
  3080. "shntool-" version ".tar.gz"))
  3081. (sha256
  3082. (base32
  3083. "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
  3084. (build-system gnu-build-system)
  3085. (synopsis "WAVE audio data processing tool")
  3086. (description "shntool is a multi-purpose WAVE data processing and reporting
  3087. utility. File formats are abstracted from its core, so it can process any file
  3088. that contains WAVE data, compressed or not---provided there exists a format
  3089. module to handle that particular file type. It can also generate CUE files, and
  3090. use them split WAVE data into multiple files.")
  3091. (home-page "http://etree.org/shnutils/shntool/")
  3092. ;; 'install-sh' bears the x11 license
  3093. (license (list license:gpl2+ license:x11))))
  3094. (define-public dcadec
  3095. (package
  3096. (name "dcadec")
  3097. (version "0.2.0")
  3098. (source (origin
  3099. (method git-fetch)
  3100. (uri (git-reference
  3101. (url "https://github.com/foo86/dcadec.git")
  3102. (commit (string-append "v" version))))
  3103. (file-name (git-file-name name version))
  3104. (sha256
  3105. (base32
  3106. "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
  3107. (build-system gnu-build-system)
  3108. (arguments
  3109. ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
  3110. '(#:tests? #f
  3111. #:make-flags
  3112. (list "CC=gcc"
  3113. ;; Build shared library.
  3114. "CONFIG_SHARED=1"
  3115. (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3116. ;; Set proper runpath.
  3117. (string-append "LDFLAGS=-Wl,-rpath="
  3118. (assoc-ref %outputs "out")
  3119. "/lib"))
  3120. #:phases
  3121. (modify-phases %standard-phases
  3122. ;; No configure script, just a hand-written Makefile.
  3123. (delete 'configure))))
  3124. (synopsis "DTS Coherent Acoustics decoder")
  3125. (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
  3126. with support for HD extensions.")
  3127. (home-page "https://github.com/foo86/dcadec")
  3128. (license license:lgpl2.1+)))
  3129. (define-public bs1770gain
  3130. (package
  3131. (name "bs1770gain")
  3132. (version "0.5.2")
  3133. (source
  3134. (origin
  3135. (method url-fetch)
  3136. (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
  3137. version "/bs1770gain-" version ".tar.gz"))
  3138. (sha256
  3139. (base32
  3140. "1p6yz5q7czyf9ard65sp4kawdlkg40cfscr3b24znymmhs3p7rbk"))
  3141. (modules '((guix build utils)))
  3142. (snippet
  3143. '(begin
  3144. ;; XXX
  3145. (substitute* "bs1770gain/bs1770gain.c"
  3146. (("\"N.*\"") "\"\""))
  3147. (substitute* "configure"
  3148. (("URL=.*$")
  3149. "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html\n"))))))
  3150. (build-system gnu-build-system)
  3151. (inputs `(("ffmpeg" ,ffmpeg)
  3152. ("sox" ,sox)))
  3153. (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
  3154. (synopsis "Tool to adjust loudness of media files")
  3155. (description
  3156. "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
  3157. flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
  3158. loudness of audio and video files to the same level.")
  3159. (license license:gpl2+)))
  3160. (define-public filteraudio
  3161. (let ((revision "1")
  3162. (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
  3163. (package
  3164. (name "filteraudio")
  3165. (version (string-append "0.0.0-" revision "."
  3166. (string-take commit 7)))
  3167. (source
  3168. (origin
  3169. (method git-fetch)
  3170. (uri (git-reference
  3171. (url "https://github.com/irungentoo/filter_audio.git")
  3172. (commit commit)))
  3173. (file-name (string-append name "-" version "-checkout"))
  3174. (sha256
  3175. (base32
  3176. "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
  3177. (build-system gnu-build-system)
  3178. (arguments
  3179. '(#:make-flags (list (string-append "PREFIX=" %output)
  3180. "CC=gcc")
  3181. #:tests? #f ; No tests
  3182. #:phases
  3183. (modify-phases %standard-phases
  3184. ;; No configure script
  3185. (delete 'configure))))
  3186. (synopsis "Lightweight audio filtering library")
  3187. (description "An easy to use audio filtering library made from webrtc
  3188. code, used in @code{libtoxcore}.")
  3189. (home-page "https://github.com/irungentoo/filter_audio")
  3190. (license license:bsd-3))))
  3191. (define-public gsm
  3192. (package
  3193. (name "gsm")
  3194. (version "1.0.18")
  3195. (source
  3196. (origin
  3197. (method url-fetch)
  3198. (uri
  3199. (string-append "http://www.quut.com/" name "/" name
  3200. "-" version ".tar.gz"))
  3201. (sha256
  3202. (base32
  3203. "041amvpz8cvxykl3pwqldrzxligmmzcg8ncdnxbg32rlqf3q1xh4"))))
  3204. (build-system gnu-build-system)
  3205. (arguments
  3206. `(#:test-target "tst"
  3207. #:phases
  3208. (modify-phases %standard-phases
  3209. (add-before 'install 'pre-install
  3210. (lambda _
  3211. (let ((out (assoc-ref %outputs "out")))
  3212. (substitute* "Makefile"
  3213. (("INSTALL_ROOT\t=")
  3214. (string-append "INSTALL_ROOT\t=\t" out)))
  3215. (mkdir-p (string-append out "/inc"))
  3216. (mkdir-p (string-append out "/man"))
  3217. (mkdir-p (string-append out "/man/man1"))
  3218. (mkdir-p (string-append out "/man/man3"))
  3219. (mkdir-p (string-append out "/bin"))
  3220. (mkdir-p (string-append out "/lib")))
  3221. #t))
  3222. (add-after 'install 'post-install
  3223. (lambda _
  3224. (let ((out (assoc-ref %outputs "out")))
  3225. (rename-file (string-append out "/inc")
  3226. (string-append out "/include"))
  3227. (mkdir-p (string-append out "/include/gsm"))
  3228. (copy-recursively "inc"
  3229. (string-append out "/include/gsm")))
  3230. #t))
  3231. (delete 'configure)))) ; no configure script
  3232. (synopsis "GSM 06.10 lossy speech compression library")
  3233. (description "This C library provides an encoder and a decoder for the GSM
  3234. 06.10 RPE-LTP lossy speech compression algorithm.")
  3235. (home-page "http://quut.com/gsm/")
  3236. (license (license:non-copyleft "file://COPYRIGHT"))))
  3237. (define-public python-pyalsaaudio
  3238. (package
  3239. (name "python-pyalsaaudio")
  3240. (version "0.8.4")
  3241. (source (origin
  3242. (method url-fetch)
  3243. (uri (pypi-uri "pyalsaaudio" version))
  3244. (sha256
  3245. (base32
  3246. "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
  3247. (build-system python-build-system)
  3248. (arguments
  3249. `(#:tests? #f)) ; tests require access to ALSA devices.
  3250. (inputs
  3251. `(("alsa-lib" ,alsa-lib)))
  3252. (home-page "http://larsimmisch.github.io/pyalsaaudio/")
  3253. (synopsis "ALSA wrappers for Python")
  3254. (description
  3255. "This package contains wrappers for accessing the ALSA API from Python.
  3256. It is currently fairly complete for PCM devices, and has some support for
  3257. mixers.")
  3258. (license license:psfl)))
  3259. (define-public python2-pyalsaaudio
  3260. (package-with-python2 python-pyalsaaudio))
  3261. (define-public bluez-alsa
  3262. (package
  3263. (name "bluez-alsa")
  3264. (version "1.2.0")
  3265. (source (origin
  3266. ;; The tarballs are mere snapshots and don't contain a
  3267. ;; bootstrapped build system.
  3268. (method git-fetch)
  3269. (uri (git-reference
  3270. (url "https://github.com/Arkq/bluez-alsa.git")
  3271. (commit (string-append "v" version))))
  3272. (file-name (string-append name "-" version "-checkout"))
  3273. (sha256
  3274. (base32
  3275. "1qinf41wl2ihx54zmmhanycihwjkn7dn1cicq6pp4rqbiv79b95x"))))
  3276. (build-system gnu-build-system)
  3277. (native-inputs
  3278. `(("autoconf" ,autoconf)
  3279. ("automake" ,automake)
  3280. ("libtool" ,libtool)
  3281. ("pkg-config" ,pkg-config)))
  3282. (inputs
  3283. `(("alsa-lib" ,alsa-lib)
  3284. ("bluez" ,bluez)
  3285. ("glib" ,glib)
  3286. ("libbsd" ,libbsd)
  3287. ("ncurses" ,ncurses)
  3288. ("ortp" ,ortp)
  3289. ("sbc" ,sbc)))
  3290. (home-page "https://github.com/Arkq/bluez-alsa")
  3291. (synopsis "Bluetooth ALSA backend")
  3292. (description "This project is a rebirth of a direct integration between
  3293. Bluez and ALSA. Since Bluez >= 5, the build-in integration has been removed
  3294. in favor of 3rd party audio applications. From now on, Bluez acts as a
  3295. middleware between an audio application, which implements Bluetooth audio
  3296. profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
  3297. audio profiles in Bluez, so in theory every Bluetooth device (with audio
  3298. capabilities) can be connected. In order to access the audio stream, one has
  3299. to connect to the ALSA PCM device called @code{bluealsa}. The device is based
  3300. on the ALSA software PCM plugin.")
  3301. (license license:expat)))
  3302. (define-public snd
  3303. (package
  3304. (name "snd")
  3305. (version "17.7")
  3306. (source (origin
  3307. (method url-fetch)
  3308. (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
  3309. "snd-" version ".tar.gz"))
  3310. (sha256
  3311. (base32
  3312. "1vm0dy5qlycqkima7y5ajzvazyjybifa803fabjcpncjz08c26vp"))))
  3313. (build-system glib-or-gtk-build-system)
  3314. (arguments
  3315. `(#:tests? #f ; no tests
  3316. #:out-of-source? #f ; for the 'install-doc' phase
  3317. #:configure-flags
  3318. (let* ((out (assoc-ref %outputs "out"))
  3319. (docdir (string-append out "/share/doc/snd")))
  3320. (list "--with-alsa" "--with-jack" "--with-gmp"
  3321. (string-append "--with-doc-dir=" docdir)))
  3322. #:phases
  3323. (modify-phases %standard-phases
  3324. (add-after 'install 'install-doc
  3325. (lambda* (#:key outputs #:allow-other-keys)
  3326. (let* ((out (assoc-ref outputs "out"))
  3327. (doc (string-append out "/share/doc/"
  3328. ,name "-" ,version)))
  3329. (for-each
  3330. (lambda (f)
  3331. (install-file f doc))
  3332. (find-files "." "\\.html$|COPYING"))
  3333. (copy-recursively "pix" (string-append doc "/pix"))
  3334. #t))))))
  3335. (native-inputs
  3336. `(("pkg-config" ,pkg-config)))
  3337. (inputs
  3338. `(("alsa-lib" ,alsa-lib)
  3339. ("fftw" ,fftw)
  3340. ("flac" ,flac)
  3341. ("gmp" ,gmp)
  3342. ("gsl" ,gsl)
  3343. ("gtk+" ,gtk+)
  3344. ("jack" ,jack-1)
  3345. ("libsamplerate" ,libsamplerate)
  3346. ("mpc" ,mpc)
  3347. ("mpfr" ,mpfr)
  3348. ("mpg123" ,mpg123)
  3349. ("speex" ,speex)
  3350. ("timidity++" ,timidity++)
  3351. ("vorbis-tools" ,vorbis-tools)
  3352. ("wavpack" ,wavpack)))
  3353. (synopsis "Sound editor")
  3354. (home-page "https://ccrma.stanford.edu/software/snd/")
  3355. (description
  3356. "Snd is a sound editor modelled loosely after Emacs. It can be
  3357. customized and extended using either the s7 Scheme implementation (included in
  3358. the Snd sources), Ruby, or Forth.")
  3359. (license (license:non-copyleft "file://COPYING"))))
  3360. (define-public noise-repellent
  3361. (package
  3362. (name "noise-repellent")
  3363. (version "0.1.4")
  3364. (source (origin
  3365. (method git-fetch)
  3366. (uri (git-reference
  3367. (url "https://github.com/lucianodato/noise-repellent.git")
  3368. (commit version)))
  3369. (file-name (string-append name "-" version "-checkout"))
  3370. (sha256
  3371. (base32
  3372. "0rd3dlmk3vivjmcr6x2x860y0j1d49c2j95j6ny50v184mwvn11j"))))
  3373. (build-system gnu-build-system)
  3374. (arguments
  3375. `(#:make-flags
  3376. (list "CC=gcc"
  3377. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  3378. #:tests? #f ; there are none
  3379. #:phases
  3380. (modify-phases %standard-phases
  3381. (delete 'configure))))
  3382. (inputs
  3383. `(("lv2" ,lv2)
  3384. ("fftwf" ,fftwf)))
  3385. (native-inputs
  3386. `(("pkg-config" ,pkg-config)))
  3387. (home-page "https://github.com/lucianodato/noise-repellent")
  3388. (synopsis "LV2 plugin for broadband noise reduction")
  3389. (description "Noise Repellent is an LV2 plugin to reduce noise. It has
  3390. the following features:
  3391. @enumerate
  3392. @item Spectral gating and spectral subtraction suppression rule
  3393. @item Adaptive and manual noise thresholds estimation
  3394. @item Adjustable noise floor
  3395. @item Adjustable offset of thresholds to perform over-subtraction
  3396. @item Time smoothing and a masking estimation to reduce artifacts
  3397. @item Basic onset detector to avoid transients suppression
  3398. @item Whitening of the noise floor to mask artifacts and to recover higher
  3399. frequencies
  3400. @item Option to listen to the residual signal
  3401. @item Soft bypass
  3402. @item Noise profile saved with the session
  3403. @end enumerate
  3404. ")
  3405. (license license:lgpl3+)))
  3406. (define-public cli-visualizer
  3407. (package
  3408. (name "cli-visualizer")
  3409. (version "1.6")
  3410. (source
  3411. (origin
  3412. (method git-fetch)
  3413. (uri (git-reference
  3414. (url "https://github.com/dpayne/cli-visualizer.git")
  3415. (commit version)))
  3416. (file-name (git-file-name name version))
  3417. (sha256
  3418. (base32
  3419. "0mirp8bk398di5xyq95iprmdyvplfghxqmrfj7jdnpy554vx7ppc"))))
  3420. (build-system gnu-build-system)
  3421. (native-inputs
  3422. `(("which" ,which)))
  3423. (inputs
  3424. `(("fftw" ,fftw)
  3425. ("googletest" ,googletest)
  3426. ("ncurses" ,ncurses)
  3427. ("pulseaudio" ,pulseaudio)))
  3428. (arguments
  3429. '(#:test-target "test"
  3430. #:make-flags
  3431. (list (string-append "PREFIX=" %output "/bin/") "ENABLE_PULSE=1")
  3432. #:phases
  3433. (modify-phases %standard-phases
  3434. (add-after 'unpack 'remove-sudo
  3435. (lambda _
  3436. (substitute* "install.sh" (("sudo") ""))
  3437. #t))
  3438. (add-before 'check 'set-check-environment
  3439. (lambda _
  3440. (setenv "CXX" "g++")
  3441. (setenv "CC" "gcc")
  3442. #t))
  3443. (add-before 'install 'make-prefix
  3444. (lambda _
  3445. (mkdir-p (string-append (assoc-ref %outputs "out") "/bin"))
  3446. #t))
  3447. (add-after 'install 'data
  3448. (lambda _
  3449. (for-each (lambda (file)
  3450. (install-file file
  3451. (string-append (assoc-ref %outputs "out")
  3452. "/share/doc")))
  3453. (find-files "examples"))
  3454. #t)))))
  3455. (home-page "https://github.com/dpayne/cli-visualizer/")
  3456. (synopsis "Command-line audio visualizer")
  3457. (description "@code{cli-visualizer} displays fast-Fourier
  3458. transforms (FFTs) of the sound being played, as well as other graphical
  3459. representations.")
  3460. (license license:expat)))
  3461. (define-public cava
  3462. (package
  3463. (name "cava")
  3464. (version "0.6.1")
  3465. (source (origin
  3466. (method git-fetch)
  3467. (uri (git-reference
  3468. (url "https://github.com/karlstav/cava.git")
  3469. (commit version)))
  3470. (file-name (git-file-name name version))
  3471. (sha256
  3472. (base32
  3473. "1kvhqgijs29909w3sq9m0bslx2zxxn4b3i07kdz4hb0dqkppxpjy"))))
  3474. (build-system gnu-build-system)
  3475. (native-inputs
  3476. `(("autoconf" ,autoconf)
  3477. ("automake" ,automake)
  3478. ("libtool" ,libtool)))
  3479. (inputs
  3480. `(("fftw" ,fftw)
  3481. ("ncurses" ,ncurses)
  3482. ("pulseaudio" ,pulseaudio)))
  3483. (arguments
  3484. `(#:configure-flags
  3485. (list (string-append "PREFIX=" %output)
  3486. (string-append "FONT_DIR=" %output "/usr/share/consolefonts"))
  3487. #:make-flags
  3488. (let ((lib (string-append %output "/lib")))
  3489. (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
  3490. #:phases
  3491. (modify-phases %standard-phases
  3492. (replace 'bootstrap
  3493. (lambda* (#:key outputs #:allow-other-keys)
  3494. (setenv "HOME" (getcwd))
  3495. (invoke "sh" "autogen.sh")))
  3496. (add-before 'build 'make-cava-ldflags
  3497. (lambda* (#:key outputs #:allow-other-keys)
  3498. (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
  3499. #t))
  3500. (add-after 'install 'data
  3501. (lambda* (#:key outputs #:allow-other-keys)
  3502. (for-each (lambda (file)
  3503. (install-file file
  3504. (string-append (assoc-ref outputs "out")
  3505. "/share/doc/examples")))
  3506. (find-files "example_files"))
  3507. #t)))))
  3508. (home-page "https://karlstav.github.io/cava/")
  3509. (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
  3510. (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
  3511. using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
  3512. (license license:expat)))
  3513. (define-public fluid-3
  3514. (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
  3515. (package
  3516. (name "fluid-3")
  3517. (version "2.1")
  3518. (source
  3519. (origin
  3520. (method url-fetch)
  3521. ;; Only one file is required, but the release bundles the whole
  3522. ;; software which is 50MiB as tar and 200MiB unpacked. The website
  3523. ;; directly links the soundfont release to the github file download.
  3524. (uri (string-append "https://github.com/musescore/MuseScore/raw/"
  3525. commit "/share/sound/FluidR3Mono_GM.sf3"))
  3526. (file-name (string-append name "-" version ".sf3"))
  3527. (sha256
  3528. (base32
  3529. "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
  3530. (build-system trivial-build-system)
  3531. (arguments
  3532. `(#:modules ((guix build utils))
  3533. #:builder
  3534. (begin
  3535. (use-modules (guix build utils))
  3536. (let ((file (assoc-ref %build-inputs "source"))
  3537. (out (string-append %output "/share/soundfonts")))
  3538. (mkdir-p out)
  3539. (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
  3540. #t))))
  3541. (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
  3542. (synopsis "Pro-quality GM soundfont")
  3543. (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
  3544. (license license:expat))))
  3545. (define-public libfdk
  3546. (let ((commit "2326faaf8f2cdf2c3a9108ccdaf1d7551aec543e")
  3547. (revision "0"))
  3548. (package
  3549. (name "libfdk")
  3550. ;; The latest upstream revision, with many bug fixes.
  3551. (version (git-version "0.1.6" revision commit))
  3552. (source
  3553. (origin
  3554. (method git-fetch)
  3555. (uri (git-reference
  3556. (url "https://github.com/mstorsjo/fdk-aac")
  3557. (commit commit)))
  3558. (file-name (git-file-name name version))
  3559. (sha256
  3560. (base32
  3561. "0yy6ndd9d61bwl283vl1r5kva2a4acc0f4r9g0sza156f2abr9ws"))))
  3562. (build-system gnu-build-system)
  3563. (native-inputs
  3564. `(("autoconf" ,autoconf)
  3565. ("automake" ,automake)
  3566. ("libtool" ,libtool)))
  3567. (home-page "https://github.com/mstorsjo/fdk-aac")
  3568. (synopsis "Fraunhofer FDK AAC library")
  3569. (description "FDK is a library for encoding and decoding Advanced Audio
  3570. Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
  3571. Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
  3572. LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
  3573. and AAC-ELD (enhanced low delay) for real-time communication. The encoding
  3574. library supports sample rates up to 96 kHz and up to eight channels (7.1
  3575. surround).")
  3576. (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
  3577. "https://www.gnu.org/licenses/license-list.html#fdk")))))
  3578. (define-public libopenshot-audio
  3579. (package
  3580. (name "libopenshot-audio")
  3581. (version "0.1.7")
  3582. (source (origin
  3583. (method git-fetch)
  3584. (uri (git-reference
  3585. (url "https://github.com/OpenShot/libopenshot-audio")
  3586. (commit (string-append "v" version))))
  3587. (file-name (git-file-name name version))
  3588. (sha256
  3589. (base32
  3590. "08a8wbi28kwrdz4h0rs1b9vsr28ldfi8g75q54rj676y1vwg3qys"))))
  3591. (build-system cmake-build-system)
  3592. (inputs
  3593. `(("alsa-lib" ,alsa-lib)
  3594. ;; The following are for JUCE GUI components:
  3595. ("libx11" ,libx11)
  3596. ("freetype" ,freetype)
  3597. ("libxrandr" ,libxrandr)
  3598. ("libxinerama" ,libxinerama)
  3599. ("libxcursor" ,libxcursor)))
  3600. (arguments
  3601. `(#:tests? #f ;there are no tests
  3602. #:configure-flags
  3603. (list (string-append "-DCMAKE_CXX_FLAGS=-I"
  3604. (assoc-ref %build-inputs "freetype")
  3605. "/include/freetype2"))))
  3606. (home-page "https://openshot.org")
  3607. (synopsis "Audio editing and playback for OpenShot")
  3608. (description "OpenShot Audio Library (libopenshot-audio) allows
  3609. high-quality editing and playback of audio, and is based on the JUCE
  3610. library.")
  3611. (license license:lgpl3+)))