audio.scm 202 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 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, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
  8. ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
  9. ;;; Copyright © 2016 Nikita <nikita@n0.is>
  10. ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
  11. ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  12. ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
  13. ;;; Copyright © 2018 okapi <okapi@firemail.cc>
  14. ;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
  15. ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
  16. ;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
  17. ;;; Copyright © 2018, 2019 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 <mail@brendan.scot>
  21. ;;; Copyright © 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com>
  22. ;;; Copyright © 2019, 2021 Leo Famulari <leo@famulari.name>
  23. ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
  24. ;;; Copyright © 2019, 2021 Arun Isaac <arunisaac@systemreboot.net>
  25. ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
  26. ;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org>
  27. ;;; Copyright © 2019 Christine Lemmer-Webber <cwebber@dustycloud.org>
  28. ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
  29. ;;; Copyright © 2019 Hartmt Goebel <h.goebel@crazy-compilers.com>
  30. ;;; Copyright © 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
  31. ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
  32. ;;; Copyright © 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
  33. ;;; Copyright © 2020 Jonathan Frederickson <jonathan@terracrypt.net>
  34. ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
  35. ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
  36. ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
  37. ;;;
  38. ;;; This file is part of GNU Guix.
  39. ;;;
  40. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  41. ;;; under the terms of the GNU General Public License as published by
  42. ;;; the Free Software Foundation; either version 3 of the License, or (at
  43. ;;; your option) any later version.
  44. ;;;
  45. ;;; GNU Guix is distributed in the hope that it will be useful, but
  46. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  47. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  48. ;;; GNU General Public License for more details.
  49. ;;;
  50. ;;; You should have received a copy of the GNU General Public License
  51. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  52. (define-module (gnu packages audio)
  53. #:use-module (gnu packages)
  54. #:use-module (gnu packages algebra)
  55. #:use-module (gnu packages autotools)
  56. #:use-module (gnu packages avahi)
  57. #:use-module (gnu packages backup)
  58. #:use-module (gnu packages base)
  59. #:use-module (gnu packages bison)
  60. #:use-module (gnu packages build-tools)
  61. #:use-module (gnu packages boost)
  62. #:use-module (gnu packages check)
  63. #:use-module (gnu packages compression)
  64. #:use-module (gnu packages curl)
  65. #:use-module (gnu packages dbm)
  66. #:use-module (gnu packages documentation)
  67. #:use-module (gnu packages elf)
  68. #:use-module (gnu packages emacs)
  69. #:use-module (gnu packages file)
  70. #:use-module (gnu packages flex)
  71. #:use-module (gnu packages fltk)
  72. #:use-module (gnu packages fontutils)
  73. #:use-module (gnu packages gcc)
  74. #:use-module (gnu packages gettext)
  75. #:use-module (gnu packages gl)
  76. #:use-module (gnu packages glib)
  77. #:use-module (gnu packages gnome)
  78. #:use-module (gnu packages gnunet) ; libmicrohttpd
  79. #:use-module (gnu packages gperf)
  80. #:use-module (gnu packages groff)
  81. #:use-module (gnu packages gstreamer)
  82. #:use-module (gnu packages gtk)
  83. #:use-module (gnu packages guile)
  84. #:use-module (gnu packages icu4c)
  85. #:use-module (gnu packages image)
  86. #:use-module (gnu packages libbsd)
  87. #:use-module (gnu packages libffi)
  88. #:use-module (gnu packages libusb)
  89. #:use-module (gnu packages linux)
  90. #:use-module (gnu packages llvm)
  91. #:use-module (gnu packages man)
  92. #:use-module (gnu packages maths)
  93. #:use-module (gnu packages mp3) ;taglib
  94. #:use-module (gnu packages multiprecision)
  95. #:use-module (gnu packages music)
  96. #:use-module (gnu packages ncurses)
  97. #:use-module (gnu packages networking)
  98. #:use-module (gnu packages onc-rpc)
  99. #:use-module (gnu packages perl)
  100. #:use-module (gnu packages pkg-config)
  101. #:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
  102. #:use-module (gnu packages python)
  103. #:use-module (gnu packages python-xyz)
  104. #:use-module (gnu packages qt)
  105. #:use-module (gnu packages rdf)
  106. #:use-module (gnu packages readline)
  107. #:use-module (gnu packages sdl)
  108. #:use-module (gnu packages serialization)
  109. #:use-module (gnu packages telephony)
  110. #:use-module (gnu packages linphone)
  111. #:use-module (gnu packages linux)
  112. #:use-module (gnu packages tls)
  113. #:use-module (gnu packages valgrind)
  114. #:use-module (gnu packages video)
  115. #:use-module (gnu packages vim) ;xxd
  116. #:use-module (gnu packages web)
  117. #:use-module (gnu packages webkit)
  118. #:use-module (gnu packages wxwidgets)
  119. #:use-module (gnu packages xiph)
  120. #:use-module (gnu packages xml)
  121. #:use-module (gnu packages xorg)
  122. #:use-module (guix build-system cmake)
  123. #:use-module (guix build-system copy)
  124. #:use-module (guix build-system glib-or-gtk)
  125. #:use-module (guix build-system gnu)
  126. #:use-module (guix build-system meson)
  127. #:use-module (guix build-system python)
  128. #:use-module (guix build-system trivial)
  129. #:use-module (guix build-system waf)
  130. #:use-module (guix download)
  131. #:use-module (guix git-download)
  132. #:use-module ((guix licenses) #:prefix license:)
  133. #:use-module (guix packages)
  134. #:use-module (guix utils)
  135. #:use-module (srfi srfi-1)
  136. #:use-module (srfi srfi-26))
  137. (define-public opensles
  138. (package
  139. (name "opensles")
  140. (version "1.1.0")
  141. (source
  142. (origin
  143. (method git-fetch)
  144. (uri
  145. (git-reference
  146. (url "https://github.com/KhronosGroup/OpenSL-ES-Registry")
  147. (commit "ea5104bf37bf525c25e6ae2386586048179d0fda")))
  148. (file-name (git-file-name name version))
  149. (sha256
  150. (base32 "0j5bm7h3ahz66f23i9abwc0y10agfkpksnj6y078x2nichq66h4f"))
  151. (patches
  152. (search-patches "opensles-add-license-file.patch"))))
  153. (build-system copy-build-system)
  154. (arguments
  155. `(#:phases
  156. (modify-phases %standard-phases
  157. (add-after 'install 'clean
  158. (lambda* (#:key outputs #:allow-other-keys)
  159. (let* ((out (assoc-ref outputs "out")))
  160. (mkdir-p (string-append out "/etc"))
  161. (mkdir-p (string-append out "/include"))
  162. (mkdir-p (string-append out "/share"))
  163. (rename-file
  164. (string-append out "/api/1.1/OpenSLES_IID.c")
  165. (string-append out "/etc/OpenSLES_IID.c"))
  166. (rename-file
  167. (string-append out "/api/1.1/OpenSLES.h")
  168. (string-append out "/include/OpenSLES.h"))
  169. (rename-file
  170. (string-append out "/api/1.1/OpenSLES_Platform.h")
  171. (string-append out "/include/OpenSLES_Platform.h"))
  172. (rename-file
  173. (string-append out "/api/1.1/README.txt")
  174. (string-append out "/share/README.txt"))
  175. (rename-file
  176. (string-append out "/LICENSE.txt")
  177. (string-append out "/share/LICENSE.txt"))
  178. (for-each delete-file-recursively
  179. (list
  180. (string-append out "/api")
  181. (string-append out "/specs")))
  182. (for-each delete-file
  183. (list
  184. (string-append out "/CODE_OF_CONDUCT.md")
  185. (string-append out "/index.php")
  186. (string-append out "/README.md"))))
  187. #t)))))
  188. (synopsis "Embedded Audio Acceleration")
  189. (description "OpenSLES is a royalty-free, cross-platform,
  190. hardware-accelerated audio API tuned for embedded systems. It provides a
  191. standardized, high-performance, low-latency method to access audio
  192. functionality for developers of native applications on embedded mobile
  193. multimedia devices, enabling straightforward cross-platform deployment of
  194. hardware and software audio capabilities, reducing implementation effort, and
  195. promoting the market for advanced audio.")
  196. (home-page "https://www.khronos.org/opensles/")
  197. (license (license:non-copyleft "file:///LICENSE.txt"))))
  198. (define-public wildmidi
  199. (package
  200. (name "wildmidi")
  201. (version "0.4.4")
  202. (source
  203. (origin
  204. (method git-fetch)
  205. (uri
  206. (git-reference
  207. (url "https://github.com/Mindwerks/wildmidi")
  208. (commit (string-append name "-" version))))
  209. (file-name (git-file-name name version))
  210. (sha256
  211. (base32 "08fbbsvw6pkwwqarjwcvdp8mq4zn5sgahf025hynwc6rvf4sp167"))))
  212. (build-system cmake-build-system)
  213. (arguments
  214. `(#:tests? #f ; No target
  215. #:configure-flags
  216. (list
  217. "-DWANT_ALSA=ON"
  218. "-DWANT_OSS=ON"
  219. "-DWANT_OPENAL=ON")))
  220. (inputs
  221. `(("alsa" ,alsa-lib)
  222. ("openal" ,openal)))
  223. (synopsis "Software Synthesizer")
  224. (description "WildMIDI is a simple software midi player which has a core
  225. softsynth library that can be use with other applications.")
  226. (home-page "https://www.mindwerks.net/projects/wildmidi/")
  227. (license
  228. (list
  229. ;; Library.
  230. license:lgpl3+
  231. ;; Player.
  232. license:gpl3+))))
  233. (define-public webrtc-audio-processing
  234. (package
  235. (name "webrtc-audio-processing")
  236. (version "0.3.1")
  237. (source
  238. (origin
  239. (method url-fetch)
  240. (uri
  241. (string-append "http://freedesktop.org/software/pulseaudio/"
  242. name "/" name "-" version ".tar.xz"))
  243. (sha256
  244. (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0"))))
  245. (build-system gnu-build-system)
  246. (synopsis "WebRTC's Audio Processing Library")
  247. (description "WebRTC-Audio-Processing library based on Google's
  248. implementation of WebRTC.")
  249. (home-page
  250. "https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/")
  251. (license (license:non-copyleft "file:///COPYING"))))
  252. (define-public vo-aacenc
  253. (package
  254. (name "vo-aacenc")
  255. (version "0.1.3")
  256. (source
  257. (origin
  258. (method url-fetch)
  259. (uri
  260. (string-append "https://sourceforge.net/projects/opencore-amr/files/"
  261. name "/" name "-" version ".tar.gz"))
  262. (sha256
  263. (base32 "0dhghm3c8pqrriwwyj5x9i0yf52fmdfijbgqqkvqvwarldvp86p5"))))
  264. (build-system gnu-build-system)
  265. (synopsis "VisualOn AAC Encoder")
  266. (description "VO-AACENC is the VisualOn implementation of Advanced Audio
  267. Coding (AAC) encoder.")
  268. (home-page "https://sourceforge.net/projects/opencore-amr/")
  269. (license license:asl2.0)))
  270. (define-public tinyalsa
  271. (package
  272. (name "tinyalsa")
  273. (version "1.1.1")
  274. (source
  275. (origin
  276. (method git-fetch)
  277. (uri
  278. (git-reference
  279. (url "https://github.com/tinyalsa/tinyalsa")
  280. (commit version)))
  281. (file-name (git-file-name name version))
  282. (sha256
  283. (base32 "0ajyvml5bnzvhiyyrn42gqwgg23ssxkfh09rvsnywhzxhd0xai4h"))))
  284. (build-system gnu-build-system)
  285. (arguments
  286. `(#:tests? #f ; No target
  287. #:phases
  288. (modify-phases %standard-phases
  289. (delete 'configure))
  290. #:make-flags
  291. (list
  292. (string-append "PREFIX=" (assoc-ref %outputs "out")))))
  293. (synopsis "ALSA interfacing library")
  294. (description "TinyALSA is a small library to interface with ALSA in the
  295. Linux kernel.")
  296. (home-page "https://github.com/tinyalsa/tinyalsa")
  297. (license (license:non-copyleft "file:///NOTICE"))))
  298. (define-public libopenmpt
  299. (package
  300. (name "libopenmpt")
  301. (version "0.5.9")
  302. (source
  303. (origin
  304. (method url-fetch)
  305. (uri
  306. (string-append "https://download.openmpt.org/archive/libopenmpt/src/"
  307. "libopenmpt-" version "+release.autotools.tar.gz"))
  308. (sha256
  309. (base32 "0h86p8mnpm98vc4v6jbvrmm02fch7dnn332i26fg3a2s1738m04d"))))
  310. (build-system gnu-build-system)
  311. (arguments
  312. `(#:configure-flags
  313. (list (string-append "--docdir=" (assoc-ref %outputs "out")
  314. "/share/doc/" ,name "-" ,version))
  315. #:phases
  316. (modify-phases %standard-phases
  317. (add-after 'install 'delete-static-libraries
  318. (lambda* (#:key outputs #:allow-other-keys)
  319. (let* ((out (assoc-ref outputs "out"))
  320. (lib (string-append out "/lib")))
  321. (for-each delete-file (find-files lib "\\.a$"))
  322. #t))))))
  323. (native-inputs
  324. `(("doxygen" ,doxygen)
  325. ("perl" ,perl)
  326. ("pkg-config" ,pkg-config)))
  327. (inputs
  328. `(("alsa" ,alsa-lib)
  329. ("flac" ,flac)
  330. ("mpg123" ,mpg123)
  331. ("portaudio" ,portaudio)
  332. ("pulseaudio" ,pulseaudio)
  333. ("sdl2" ,sdl2)
  334. ("sndfile" ,libsndfile)
  335. ("vorbis" ,libvorbis)
  336. ("zlib" ,zlib)))
  337. (synopsis "Audio tracking library")
  338. (description "LibOpenMPT is a cross-platform C++ and C module playback
  339. library. It is based on the player code of the Open ModPlug Tracker project.")
  340. (home-page "https://openmpt.org/")
  341. (license (license:non-copyleft "file:///LICENSE"))))
  342. (define-public libofa
  343. (package
  344. (name "libofa")
  345. (version "0.9.3")
  346. (source
  347. (origin
  348. (method url-fetch)
  349. (uri
  350. (string-append "https://storage.googleapis.com/"
  351. "google-code-archive-downloads/v2/code.google.com/"
  352. "musicip-libofa/" name "-" version ".tar.gz"))
  353. (sha256
  354. (base32 "184ham039l7lwhfgg0xr2vch2xnw1lwh7sid432mh879adhlc5h2"))
  355. (patches
  356. (search-patches
  357. "libofa-ftbfs-1.diff"
  358. "libofa-curl.diff"
  359. "libofa-ftbfs-2.diff"))))
  360. (build-system gnu-build-system)
  361. (native-inputs
  362. `(("pkg-config" ,pkg-config)))
  363. (inputs
  364. `(("curl" ,curl)
  365. ("expat" ,expat)))
  366. (propagated-inputs
  367. `(("fftw" ,fftw)))
  368. (synopsis "Open Fingerprint Architecture")
  369. (description "LibOFA is an audio fingerprint library, created and provided
  370. by MusicIP.")
  371. (home-page "https://code.google.com/archive/p/musicip-libofa/")
  372. (license license:gpl2+)))
  373. (define-public faac
  374. (package
  375. (name "faac")
  376. (version "1.30")
  377. (source
  378. (origin
  379. (method url-fetch)
  380. (uri
  381. (string-append "mirror://sourceforge/faac/faac-src"
  382. "/faac-" version "/faac-1_30.tar.gz"))
  383. (sha256
  384. (base32 "1lmj0dib3mjp84jhxc5ddvydkzzhb0gfrdh3ikcidjlcb378ghxd"))))
  385. (build-system gnu-build-system)
  386. (native-inputs
  387. `(("autoconf" ,autoconf)
  388. ("automake" ,automake)
  389. ("libtool" ,libtool)
  390. ("pkg-config" ,pkg-config)))
  391. (synopsis "Freeware Advanced Audio Coder")
  392. (description "FAAC is an MPEG-4 and MPEG-2 AAC encoder.")
  393. (home-page "https://www.audiocoding.com/faac.html")
  394. (license
  395. (list
  396. ;; ISO MPEG-4 reference code.
  397. license:gpl2+
  398. ;; Others.
  399. license:lgpl2.0+))))
  400. (define-public libtimidity
  401. (package
  402. (name "libtimidity")
  403. (version "0.2.7")
  404. (source
  405. (origin
  406. (method url-fetch)
  407. (uri
  408. (string-append "https://sourceforge.net/projects/" name "/files/"
  409. name "/" version "/" name "-" version ".tar.gz"))
  410. (sha256
  411. (base32 "0sif6lxa058b1mg19zwjm8rl2sg8cg0443k4dgi65clz0jy7qi16"))))
  412. (build-system gnu-build-system)
  413. (arguments
  414. `(#:tests? #f)) ; XXX: LibTiMidity could not be initialised
  415. (native-inputs
  416. `(("pkg-config" ,pkg-config)))
  417. (inputs
  418. `(("ao" ,ao)))
  419. (synopsis "MIDI to WAVE converter library")
  420. (description "LibTiMidity is a MIDI to WAVE converter library that uses
  421. Gravis Ultrasound-compatible patch files to generate digital audio data from
  422. General MIDI files.")
  423. (home-page "http://libtimidity.sourceforge.net/")
  424. (license
  425. ;; This project is dual-licensed.
  426. ;; Either of the following licenses can be exercised.
  427. (list
  428. license:lgpl2.1+
  429. license:artistic2.0))))
  430. (define-public vo-amrwbenc
  431. (package
  432. (name "vo-amrwbenc")
  433. (version "0.1.3")
  434. (source
  435. (origin
  436. (method url-fetch)
  437. (uri
  438. (string-append "https://sourceforge.net/projects/opencore-amr/files/"
  439. name "/" name "-" version ".tar.gz"))
  440. (sha256
  441. (base32 "0klx3nkidc6b8aawchpk19n3xlrzgnc046w4gd0rdqphw28v6ljn"))))
  442. (build-system gnu-build-system)
  443. (synopsis "Adaptive Multi Rate Codec")
  444. (description "VO-AMR is a library of VisualOn implementation of
  445. Adaptive Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) speech codec.")
  446. (home-page "https://sourceforge.net/projects/opencore-amr/")
  447. (license license:asl2.0)))
  448. (define-public opencore-amr
  449. (package
  450. (name "opencore-amr")
  451. (version "0.1.5")
  452. (source
  453. (origin
  454. (method url-fetch)
  455. (uri
  456. (string-append "https://sourceforge.net/projects/opencore-amr/files/"
  457. name "/" name "-" version ".tar.gz"))
  458. (sha256
  459. (base32 "0hfk9khz3by0119h3jdwgdfd7jgkdbzxnmh1wssvylgnsnwnq01c"))))
  460. (build-system gnu-build-system)
  461. (synopsis "Adaptive Multi Rate Codec")
  462. (description "OpenCore-AMR is a library of OpenCORE Framework
  463. implementation of Adaptive Multi Rate Narrowband and Wideband
  464. (AMR-NB and AMR-WB) speech codec.")
  465. (home-page "https://sourceforge.net/projects/opencore-amr/")
  466. (license license:asl2.0)))
  467. (define-public alsa-modular-synth
  468. (package
  469. (name "alsa-modular-synth")
  470. (version "2.2.0")
  471. (source (origin
  472. (method url-fetch)
  473. (uri (string-append "mirror://sourceforge/alsamodular/alsamodular"
  474. "/" version "/ams-" version ".tar.bz2"))
  475. (sha256
  476. (base32
  477. "056dn6b9c5nsw2jdww7z1kxrjqqfvxjzxhsd5x9gi4wkwyiv21nz"))))
  478. (build-system gnu-build-system)
  479. (inputs
  480. `(("alsa-lib" ,alsa-lib)
  481. ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
  482. ;; license incompatibility.
  483. ("clalsadrv" ,clalsadrv)
  484. ("fftw" ,fftw)
  485. ("jack" ,jack-1)
  486. ("ladspa" ,ladspa)
  487. ("liblo" ,liblo)
  488. ("qtbase" ,qtbase-5)))
  489. (native-inputs
  490. `(("pkg-config" ,pkg-config)
  491. ("qttools" ,qttools)))
  492. (home-page "http://alsamodular.sourceforge.net/")
  493. (synopsis "Realtime modular synthesizer and effect processor")
  494. (description
  495. "AlsaModularSynth is a digital implementation of a classical analog
  496. modular synthesizer system. It uses virtual control voltages to control the
  497. parameters of the modules. The control voltages which control the frequency
  498. e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
  499. Filter) modules follow the convention of 1V / Octave.")
  500. (license license:gpl2)))
  501. (define-public aubio
  502. (package
  503. (name "aubio")
  504. (version "0.4.9")
  505. (source (origin
  506. (method url-fetch)
  507. (uri (string-append
  508. "https://aubio.org/pub/aubio-" version ".tar.bz2"))
  509. (sha256
  510. (base32
  511. "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
  512. (build-system waf-build-system)
  513. (arguments
  514. `(#:tests? #f ; no check target
  515. #:configure-flags
  516. (list
  517. (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
  518. "--enable-fftw3f"
  519. "--enable-jack"
  520. "--enable-sndfile"
  521. "--enable-samplerate"
  522. "--enable-avcodec")
  523. #:python ,python-2))
  524. (inputs
  525. `(("jack" ,jack-1)
  526. ("libsndfile" ,libsndfile)
  527. ("libsamplerate" ,libsamplerate)
  528. ("fftwf" ,fftwf)
  529. ("ffmpeg" ,ffmpeg))) ; for libavcodec
  530. (native-inputs
  531. `(("pkg-config" ,pkg-config)))
  532. (home-page "https://aubio.org/")
  533. (synopsis "Library for audio labelling")
  534. (description
  535. "aubio is a tool designed for the extraction of annotations from audio
  536. signals. Its features include segmenting a sound file before each of its
  537. attacks, performing pitch detection, tapping the beat and producing MIDI
  538. streams from live audio.")
  539. (license license:gpl3+)))
  540. (define (ardour-rpath-phase major-version)
  541. `(lambda* (#:key outputs #:allow-other-keys)
  542. (let ((libdir (string-append (assoc-ref outputs "out")
  543. "/lib/ardour" ,major-version)))
  544. (substitute* "wscript"
  545. (("linker_flags = \\[\\]")
  546. (string-append "linker_flags = [\""
  547. "-Wl,-rpath="
  548. libdir ":"
  549. libdir "/backends" ":"
  550. libdir "/engines" ":"
  551. libdir "/panners" ":"
  552. libdir "/surfaces" ":"
  553. libdir "/vamp" "\"]"))))
  554. #t))
  555. (define-public ardour
  556. (package
  557. (name "ardour")
  558. (version "6.8")
  559. (source (origin
  560. (method git-fetch)
  561. (uri (git-reference
  562. (url "git://git.ardour.org/ardour/ardour.git")
  563. (commit version)))
  564. (snippet
  565. ;; Ardour expects this file to exist at build time. The revision
  566. ;; is the output of
  567. ;; git describe HEAD | sed 's/^[A-Za-z]*+//'
  568. `(call-with-output-file
  569. "libs/ardour/revision.cc"
  570. (lambda (port)
  571. (format port ,(string-append "#include \"ardour/revision.h\"
  572. namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }"))
  573. #t)))
  574. (sha256
  575. (base32
  576. "16x7bkzbrk0rgywq5vrkhf2z3jj08jw1bvaq9vwlf2b4h4sd7i4s"))
  577. (file-name (string-append name "-" version))))
  578. (build-system waf-build-system)
  579. (arguments
  580. `(#:configure-flags '("--cxx11" ; required by gtkmm
  581. "--optimize"
  582. "--no-phone-home" ; don't contact ardour.org
  583. "--freedesktop" ; build .desktop file
  584. "--test") ; build unit tests
  585. #:phases
  586. (modify-phases %standard-phases
  587. (add-after 'unpack 'set-rpath-in-LDFLAGS
  588. ,(ardour-rpath-phase (version-major version)))
  589. (add-after 'install 'install-freedesktop-files
  590. (lambda* (#:key outputs #:allow-other-keys)
  591. (let* ((out (assoc-ref outputs "out"))
  592. (share (string-append out "/share"))
  593. (ver ,(version-major version)))
  594. (for-each
  595. (lambda (size)
  596. (let ((dir (string-append share "/icons/hicolor/"
  597. size "x" size "/apps")))
  598. (mkdir-p dir)
  599. (copy-file
  600. (string-append "gtk2_ardour/resources/Ardour-icon_"
  601. size "px.png")
  602. (string-append dir "/ardour" ver ".png"))))
  603. '("16" "22" "32" "48" "256"))
  604. (install-file (string-append "build/gtk2_ardour/ardour"
  605. ver ".desktop")
  606. (string-append share "/applications/"))
  607. (install-file (string-append "build/gtk2_ardour/ardour"
  608. ver ".appdata.xml")
  609. (string-append share "/appdata/")))
  610. #t)))
  611. #:test-target "test"))
  612. (inputs
  613. `(("alsa-lib" ,alsa-lib)
  614. ("atkmm" ,atkmm)
  615. ("aubio" ,aubio)
  616. ("boost" ,boost)
  617. ("cairomm" ,cairomm)
  618. ("curl" ,curl)
  619. ("dbus" ,dbus)
  620. ("eudev" ,eudev)
  621. ("fftw" ,fftw)
  622. ("fftwf" ,fftwf)
  623. ("flac" ,flac)
  624. ("glibmm" ,glibmm)
  625. ("gtkmm" ,gtkmm-2)
  626. ("jack" ,jack-1)
  627. ("libarchive" ,libarchive)
  628. ("libart-lgpl" ,libart-lgpl)
  629. ("libgnomecanvasmm" ,libgnomecanvasmm)
  630. ("liblo" ,liblo)
  631. ("libogg" ,libogg)
  632. ("libsamplerate" ,libsamplerate)
  633. ("libsndfile" ,libsndfile)
  634. ("libusb" ,libusb)
  635. ("libvorbis" ,libvorbis)
  636. ("libwebsockets" ,libwebsockets)
  637. ("libxml2" ,libxml2)
  638. ("lilv" ,lilv)
  639. ("lrdf" ,lrdf)
  640. ("lv2" ,lv2)
  641. ("openssl" ,openssl) ; Required by libwebsockets.
  642. ("pangomm" ,pangomm)
  643. ("python-rdflib" ,python-rdflib)
  644. ("pulseaudio" ,pulseaudio)
  645. ("readline" ,readline)
  646. ("redland" ,redland)
  647. ("rubberband" ,rubberband)
  648. ("serd" ,serd)
  649. ("sord" ,sord)
  650. ("soundtouch" ,soundtouch)
  651. ("sratom" ,sratom)
  652. ("suil" ,suil)
  653. ("taglib" ,taglib)
  654. ("vamp" ,vamp)))
  655. (native-inputs
  656. `(("cppunit" ,cppunit)
  657. ("gettext" ,gettext-minimal)
  658. ("itstool" ,itstool)
  659. ("perl" ,perl)
  660. ("pkg-config" ,pkg-config)))
  661. (home-page "https://ardour.org")
  662. (synopsis "Digital audio workstation")
  663. (description
  664. "Ardour is a multi-channel digital audio workstation, allowing users to
  665. record, edit, mix and master audio and MIDI projects. It is targeted at audio
  666. engineers, musicians, soundtrack editors and composers.")
  667. (license license:gpl2+)))
  668. (define-public audacity
  669. (package
  670. (name "audacity")
  671. (version "2.4.2")
  672. (source
  673. (origin
  674. (method git-fetch)
  675. (uri (git-reference
  676. (url "https://github.com/audacity/audacity")
  677. (commit (string-append "Audacity-" version))))
  678. (file-name (git-file-name name version))
  679. (sha256
  680. (base32
  681. "0lklcvqkxrr2gkb9gh3422iadzl2rv9v0a8s76rwq43lj2im7546"))
  682. (patches (search-patches "audacity-build-with-system-portaudio.patch"
  683. "audacity-add-include.patch"))
  684. (modules '((guix build utils)))
  685. (snippet
  686. ;; Remove bundled libraries.
  687. '(begin
  688. (for-each
  689. (lambda (dir)
  690. (delete-file-recursively (string-append "lib-src/" dir)))
  691. '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
  692. "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
  693. "portmidi" "soundtouch" "twolame"
  694. ;; FIXME: these libraries have not been packaged yet:
  695. ;; "libnyquist"
  696. ;; "libscorealign"
  697. ;; "libwidgetextra"
  698. ;; "portburn"
  699. ;; "portsmf"
  700. ;; "portmixer"
  701. ;; FIXME: we have this library, but it differs in that the Slide
  702. ;; class does not have a member "getInverseStretchedTime".
  703. ;; "sbsms"
  704. ))
  705. #t))))
  706. (build-system cmake-build-system)
  707. (inputs
  708. `(("wxwidgets" ,wxwidgets)
  709. ("gtk+" ,gtk+)
  710. ("alsa-lib" ,alsa-lib)
  711. ("jack" ,jack-1)
  712. ("expat" ,expat)
  713. ("ffmpeg" ,ffmpeg)
  714. ("lame" ,lame)
  715. ("flac" ,flac)
  716. ("libid3tag" ,libid3tag)
  717. ("libmad" ,libmad)
  718. ;;("libsbsms" ,libsbsms) ;bundled version is modified
  719. ("libsndfile" ,libsndfile)
  720. ("soundtouch" ,soundtouch)
  721. ("soxr" ,soxr) ;replaces libsamplerate
  722. ("twolame" ,twolame)
  723. ("vamp" ,vamp)
  724. ("libvorbis" ,libvorbis)
  725. ("lv2" ,lv2)
  726. ("lilv" ,lilv) ;for lv2
  727. ("suil" ,suil) ;for lv2
  728. ("portmidi" ,portmidi)))
  729. (native-inputs
  730. `(("autoconf" ,autoconf)
  731. ("automake" ,automake)
  732. ("gettext" ,gettext-minimal) ;for msgfmt
  733. ("libtool" ,libtool)
  734. ("pkg-config" ,pkg-config)
  735. ("python" ,python)
  736. ("which" ,which)))
  737. (arguments
  738. `(#:configure-flags
  739. (list
  740. ;; Loading FFmpeg dynamically is problematic.
  741. "-Daudacity_use_ffmpeg=linked"
  742. "-Daudacity_use_lame=system"
  743. "-Daudacity_use_portsmf=system")
  744. #:imported-modules ((guix build glib-or-gtk-build-system)
  745. ,@%cmake-build-system-modules)
  746. #:modules
  747. ((guix build utils)
  748. (guix build cmake-build-system)
  749. ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:))
  750. #:phases
  751. (modify-phases %standard-phases
  752. (add-after 'unpack 'comment-out-revision-ident
  753. (lambda _
  754. (substitute* "src/AboutDialog.cpp"
  755. (("(.*RevisionIdent\\.h.*)" include-line)
  756. (string-append "// " include-line)))))
  757. (add-after 'unpack 'use-upstream-headers
  758. (lambda* (#:key inputs #:allow-other-keys)
  759. (substitute* '("src/NoteTrack.cpp"
  760. "src/AudioIO.cpp"
  761. "src/AudioIO.h"
  762. "src/AudioIOBase.cpp")
  763. (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
  764. (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
  765. (substitute* "src/prefs/MidiIOPrefs.cpp"
  766. (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))))
  767. (add-after 'wrap-program 'glib-or-gtk-wrap
  768. (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
  769. ;; The test suite is not "well exercised" according to the developers,
  770. ;; and fails with various errors. See
  771. ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
  772. #:tests? #f))
  773. (home-page "https://www.audacityteam.org/")
  774. (synopsis "Software for recording and editing sounds")
  775. (description
  776. "Audacity is a multi-track audio editor designed for recording, playing
  777. and editing digital audio. It features digital effects and spectrum analysis
  778. tools.")
  779. (license license:gpl2+)))
  780. (define-public audiofile
  781. (package
  782. (name "audiofile")
  783. (version "0.3.6")
  784. (source
  785. (origin
  786. (method url-fetch)
  787. (uri (string-append
  788. "https://audiofile.68k.org/audiofile-" version ".tar.gz"))
  789. (sha256
  790. (base32 "0rb927zknk9kmhprd8rdr4azql4gn2dp75a36iazx2xhkbqhvind"))
  791. (patches
  792. ;; CVE references according to nixpgs
  793. (search-patches
  794. "audiofile-fix-datatypes-in-tests.patch"
  795. "audiofile-fix-sign-conversion.patch"
  796. "audiofile-hurd.patch"
  797. "audiofile-CVE-2015-7747.patch"
  798. ;; CVE-2017-6829:
  799. "audiofile-Fix-index-overflow-in-IMA.cpp.patch"
  800. ;; CVE-2017-6827, CVE-2017-6828, CVE-2017-6832, CVE-2017-6835,
  801. ;; CVE-2017-6837:
  802. "audiofile-check-number-of-coefficients.patch"
  803. ;; CVE-2017-6839:
  804. "audiofile-overflow-in-MSADPCM.patch"
  805. ;; CVE-2017-6830, CVE-2017-6834, CVE-2017-6836, CVE-2017-6838:
  806. "audiofile-multiply-overflow.patch"
  807. "audiofile-function-signature.patch"
  808. ;; CVE-2017-6831:
  809. "audiofile-Fail-on-error-in-parseFormat.patch"
  810. ;; CVE-2017-6833:
  811. "audiofile-division-by-zero.patch"
  812. "audiofile-CVE-2018-13440.patch"
  813. "audiofile-CVE-2018-17095.patch"))))
  814. (properties `((lint-hidden-cve . ("CVE-2017-6829"
  815. "CVE-2017-6827" "CVE-2017-6828"
  816. "CVE-2017-6832" "CVE-2017-6835"
  817. "CVE-2017-6837"
  818. "CVE-2017-6839"
  819. "CVE-2017-6830" "CVE-2017-6834"
  820. "CVE-2017-6836" "CVE-2017-6838"
  821. "CVE-2017-6831" "CVE-2017-6833"))))
  822. (build-system gnu-build-system)
  823. (inputs
  824. `(("alsa-lib" ,alsa-lib)))
  825. (home-page "https://audiofile.68k.org/")
  826. (synopsis "Library to handle various audio file formats")
  827. (description "This is an open-source version of SGI's audiofile library.
  828. It provides a uniform programming interface for processing of audio data to
  829. and from audio files of many common formats.
  830. Currently supported file formats include AIFF/AIFF-C, WAVE, and NeXT/Sun
  831. .snd/.au, BICS, and raw data. Supported compression formats are currently
  832. G.711 mu-law and A-law.")
  833. (license license:lgpl2.1+)))
  834. (define-public autotalent
  835. (package
  836. (name "autotalent")
  837. (version "0.2")
  838. (source (origin
  839. (method url-fetch)
  840. (uri (string-append "http://tombaran.info/autotalent-"
  841. version ".tar.gz"))
  842. (sha256
  843. (base32
  844. "1n04qm66f14195ly6gsy3ra7v2j7zad5n19d8dwfmh0qs6h9hphh"))))
  845. (build-system gnu-build-system)
  846. (arguments
  847. `(#:tests? #f ; no check target
  848. #:phases
  849. (modify-phases %standard-phases
  850. ;; no configure script
  851. (delete 'configure)
  852. (add-before 'install 'prepare-target-directory
  853. (lambda* (#:key outputs #:allow-other-keys)
  854. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  855. #t))
  856. (add-after 'unpack 'override-target-directory
  857. (lambda* (#:key outputs #:allow-other-keys)
  858. (substitute* "Makefile"
  859. (("/usr/lib64/ladspa")
  860. (string-append (assoc-ref outputs "out") "/lib/ladspa")))
  861. #t)))))
  862. (inputs
  863. `(("ladspa" ,ladspa)))
  864. (home-page "http://tombaran.info/autotalent.html")
  865. (synopsis "Pitch-correction LADSPA audio plugin")
  866. (description
  867. "Autotalent is a LADSPA plugin for real-time pitch-correction. Among its
  868. controls are allowable notes, strength of correction, LFO for vibrato and
  869. formant warp.")
  870. ;; All code except the FFT routine is licensed under GPLv2+.
  871. ;; The FFT routine is under BSD-3.
  872. (license license:gpl2+)))
  873. (define-public azr3
  874. (package
  875. (name "azr3")
  876. (version "1.2.3")
  877. (source (origin
  878. (method url-fetch)
  879. (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
  880. version
  881. ".tar.bz2"))
  882. (sha256
  883. (base32
  884. "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))
  885. (patches (search-patches "azr3.patch"))))
  886. (build-system gnu-build-system)
  887. (arguments
  888. `(#:tests? #f ; no check target
  889. #:make-flags
  890. (list "LV2PEG=ttl2c"
  891. (string-append "prefix=" %output)
  892. (string-append "pkgdatadir=" %output "/share/azr3-jack"))
  893. #:phases
  894. (modify-phases %standard-phases
  895. (add-before 'install 'fix-timestamp
  896. (lambda _
  897. (let ((early-1980 315619200)) ; 1980-01-02 UTC
  898. (utime "azr3.1" early-1980 early-1980))
  899. #t)))))
  900. (inputs
  901. `(("gtkmm" ,gtkmm-2)
  902. ("lvtk" ,lvtk)
  903. ("jack" ,jack-1)
  904. ("lash" ,lash)))
  905. (native-inputs
  906. `(("pkg-config" ,pkg-config)))
  907. (home-page "http://ll-plugins.nongnu.org/azr3/")
  908. (synopsis "Tonewheel organ synthesizer")
  909. (description
  910. "AZR-3 is a port of the free VST plugin AZR-3. It is a tonewheel organ
  911. with drawbars, distortion and rotating speakers. The organ has three
  912. sections, two polyphonic sections with nine drawbars each and one monophonic
  913. bass section with five drawbars. A standalone JACK application and LV2
  914. plugins are provided.")
  915. (license license:gpl2)))
  916. (define-public calf
  917. (package
  918. (name "calf")
  919. (version "0.90.3")
  920. (source (origin
  921. (method url-fetch)
  922. (uri (string-append "https://calf-studio-gear.org/files/calf-"
  923. version ".tar.gz"))
  924. (sha256
  925. (base32
  926. "17x4hylgq4dn9qycsdacfxy64f5cv57n2qgkvsdp524gnqzw4az3"))))
  927. (build-system gnu-build-system)
  928. (inputs
  929. `(("fluidsynth" ,fluidsynth)
  930. ("expat" ,expat)
  931. ("glib" ,glib)
  932. ("gtk" ,gtk+-2)
  933. ("cairo" ,cairo)
  934. ("lash" ,lash)
  935. ("jack" ,jack-1)
  936. ("lv2" ,lv2)
  937. ("ladspa" ,ladspa)
  938. ("fftw" ,fftw)))
  939. (native-inputs
  940. `(("pkg-config" ,pkg-config)))
  941. (native-search-paths
  942. (list (search-path-specification
  943. (variable "LV2_PATH")
  944. (files '("lib/lv2")))))
  945. (home-page "http://calf.sourceforge.net/")
  946. (synopsis "Audio plug-in pack for LV2 and JACK environments")
  947. (description
  948. "Calf Studio Gear is an audio plug-in pack for LV2 and JACK environments.
  949. The suite contains lots of effects (delay, modulation, signal processing,
  950. filters, equalizers, dynamics, distortion and mastering effects),
  951. instruments (SF2 player, organ simulator and a monophonic synthesizer) and
  952. tools (analyzer, mono/stereo tools, crossovers).")
  953. ;; calfjackhost is released under GPLv2+
  954. ;; The plugins are released under LGPLv2.1+
  955. (license (list license:lgpl2.1+ license:gpl2+))))
  956. (define-public caps-plugins-lv2
  957. (package
  958. (name "caps-plugins-lv2")
  959. (version "0.9.26")
  960. (source
  961. (origin
  962. ;; The Github project hasn't tagged a release.
  963. (method git-fetch)
  964. (uri (git-reference
  965. (url "https://github.com/moddevices/caps-lv2.git")
  966. (commit "5d52a0c6e8863c058c2aab2dea9f901a90d96eb9")))
  967. (file-name (git-file-name name version))
  968. (sha256
  969. (base32
  970. "0hdl7n3ra5gqgwkdfqkw8dj9gb1cgb76bn1v91w06d2w4lj9s8xa"))))
  971. (build-system gnu-build-system)
  972. (arguments
  973. `(#:tests? #f ; no check target
  974. #:phases
  975. (modify-phases %standard-phases
  976. ;; no configure script
  977. (delete 'configure)
  978. (add-after 'unpack 'override-target-directory
  979. (lambda* (#:key outputs #:allow-other-keys)
  980. (substitute* (find-files "plugins" "Makefile")
  981. (("/usr/local")(assoc-ref outputs "out")))
  982. #t)))))
  983. (inputs
  984. `(("lv2" ,lv2)))
  985. ;; home-page of the original LADSPA version: http://quitte.de/dsp/caps.html
  986. (home-page "https://github.com/moddevices/caps-lv2")
  987. (synopsis "LV2 port of the CAPS audio plugin collection")
  988. (description
  989. "LV2 port of CAPS, a collection of audio plugins comprising basic virtual
  990. guitar amplification and a small range of classic effects, signal processors and
  991. generators of mostly elementary and occasionally exotic nature.")
  992. (license license:gpl3+)))
  993. (define-public infamous-plugins
  994. (package
  995. (name "infamous-plugins")
  996. (version "0.3.0")
  997. (source (origin
  998. (method git-fetch)
  999. (uri (git-reference
  1000. (url "https://github.com/ssj71/infamousPlugins")
  1001. (commit (string-append "v" version))))
  1002. (file-name (git-file-name name version))
  1003. (sha256
  1004. (base32
  1005. "1r72agk5nxf5k0mghcc2j90z43j5d9i7rqjmf49jfyqnd443isip"))))
  1006. (build-system cmake-build-system)
  1007. (arguments
  1008. `(#:tests? #f ; there are no tests
  1009. #:phases
  1010. (modify-phases %standard-phases
  1011. (add-after 'unpack 'remove-compiler-flags
  1012. (lambda _
  1013. (substitute* (find-files "." "CMakeLists.txt")
  1014. (("-msse2 -mfpmath=sse") ""))
  1015. #t))
  1016. (add-after 'unpack 'fix-build-with-newer-lv2
  1017. (lambda _
  1018. ;; https://github.com/ssj71/infamousPlugins/commit/4c7275b1fa8ea3296446421cbd29ec2df66588c0
  1019. (substitute* (find-files "src" ".*\\.cxx")
  1020. (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
  1021. #t)))))
  1022. (inputs
  1023. `(("cairo" ,cairo)
  1024. ("fftwf" ,fftwf)
  1025. ("lv2" ,lv2)
  1026. ("ntk" ,ntk)
  1027. ("zita-resampler" ,zita-resampler)))
  1028. (native-inputs
  1029. `(("pkg-config" ,pkg-config)))
  1030. (home-page "https://ssj71.github.io/infamousPlugins")
  1031. (synopsis "LV2 plugins for live use")
  1032. (description
  1033. "The infamous plugins are a collection of LV2 audio plugins for live
  1034. performances. The plugins include a cellular automaton synthesizer, an
  1035. envelope follower, distortion effects, tape effects and more.")
  1036. (license license:gpl2+)))
  1037. (define-public snapcast
  1038. (package
  1039. (name "snapcast")
  1040. (version "0.24.0")
  1041. (source (origin
  1042. (method git-fetch)
  1043. (uri (git-reference
  1044. (url "https://github.com/badaix/snapcast")
  1045. (commit (string-append "v" version))))
  1046. (file-name (git-file-name name version))
  1047. (sha256
  1048. (base32
  1049. "13yz8alplnqwkcns3mcli01qbyy6l3h62xx0v71ygcrz371l4g9g"))))
  1050. (build-system cmake-build-system)
  1051. (arguments
  1052. '(#:tests? #f)) ; no included tests
  1053. (inputs
  1054. `(("boost" ,boost)
  1055. ("libvorbis" ,libvorbis)
  1056. ("soxr" ,soxr)
  1057. ("alsa-lib" ,alsa-lib)
  1058. ("avahi" ,avahi)
  1059. ("pulseaudio" ,pulseaudio)
  1060. ("flac" ,flac)
  1061. ("opus" ,opus)))
  1062. (native-inputs
  1063. `(("pkg-config" ,pkg-config)))
  1064. (home-page "https://github.com/badaix/snapcast")
  1065. (synopsis "Synchronous multiroom audio player")
  1066. (description
  1067. "Snapcast is a multi-room client-server audio player. Clients are time
  1068. synchronized with the server to play synced audio.")
  1069. (license license:gpl3+)))
  1070. (define-public swh-plugins
  1071. (package
  1072. (name "swh-plugins")
  1073. (version "0.4.17")
  1074. (source (origin
  1075. (method git-fetch)
  1076. (uri (git-reference
  1077. (url "https://github.com/swh/ladspa")
  1078. (commit (string-append "v" version))))
  1079. (file-name (git-file-name name version))
  1080. (sha256
  1081. (base32
  1082. "1c98z2xxz9pgcb4dg99gz8qrylh5cnag0j18a52d88ifsy24isvq"))))
  1083. (native-inputs
  1084. `(("autoconf" ,autoconf)
  1085. ("automake" ,automake)
  1086. ("gettext" ,gettext-minimal) ;for autopoint
  1087. ("libtool" ,libtool)
  1088. ("perl" ,perl)
  1089. ("pkg-config" ,pkg-config)
  1090. ("which" ,which)))
  1091. (inputs
  1092. `(("fftwf" ,fftwf)
  1093. ("perl-xml-parser" ,perl-xml-parser)))
  1094. (build-system gnu-build-system)
  1095. (home-page "http://plugin.org.uk")
  1096. (synopsis "The SWH Plugins package for the LADSPA plugin system")
  1097. (description "This package provides Steve Harris's LADSPA plugins.")
  1098. (license license:gpl2+)))
  1099. (define-public swh-plugins-lv2
  1100. (package
  1101. (name "swh-plugins-lv2")
  1102. (version "1.0.16")
  1103. (source (origin
  1104. (method git-fetch)
  1105. (uri (git-reference
  1106. (url "https://github.com/swh/lv2")
  1107. (commit (string-append "v" version))))
  1108. (file-name (git-file-name name version))
  1109. (sha256
  1110. (base32
  1111. "0y7nnww864mm4k6ayy2lhcws3wlbhb2gkyjbrwk921fvc18qk9mz"))))
  1112. (build-system gnu-build-system)
  1113. (arguments
  1114. `(#:tests? #f ; no check target
  1115. #:make-flags (list "CC=gcc"
  1116. (string-append "PREFIX="
  1117. (assoc-ref %outputs "out")))
  1118. #:phases
  1119. (modify-phases %standard-phases
  1120. ;; no configure script
  1121. (delete 'configure)
  1122. (add-after 'unpack 'patch-makefile-and-enter-directory
  1123. ;; The default install target doesn't install, but the
  1124. ;; "install-system" target does.
  1125. (lambda _
  1126. (substitute* "Makefile"
  1127. (("install:") "install: install-system"))
  1128. #t)))))
  1129. (inputs
  1130. `(("lv2" ,lv2)
  1131. ("fftwf" ,fftwf)))
  1132. (native-inputs
  1133. `(("libxslt" ,libxslt)
  1134. ("pkg-config" ,pkg-config)))
  1135. (home-page "http://plugin.org.uk")
  1136. (synopsis "SWH plugins in LV2 format")
  1137. (description
  1138. "Swh-plugins-lv2 is a collection of audio plugins in LV2 format. Plugin
  1139. classes include: dynamics (compressor, limiter), time (delay, chorus,
  1140. flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
  1141. emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
  1142. (license license:gpl3+)))
  1143. (define-public tao
  1144. (package
  1145. (name "tao")
  1146. (version "1.0-beta-10May2006")
  1147. (source (origin
  1148. (method url-fetch)
  1149. (uri (string-append "mirror://sourceforge/taopm/Tao/"
  1150. "tao-" version "/"
  1151. "tao-" version ".tar.gz"))
  1152. (sha256
  1153. (base32
  1154. "156py3g6mmglldfd0j76bn7n242hdwf49diaprjpj7crp8vgf2pz"))
  1155. (patches
  1156. (search-patches "tao-add-missing-headers.patch"
  1157. "tao-fix-parser-types.patch"))
  1158. (modules '((guix build utils)))
  1159. (snippet
  1160. '(begin
  1161. (substitute* "configure"
  1162. (("SHELL=/bin/sh") ""))
  1163. #t))))
  1164. (build-system gnu-build-system)
  1165. (arguments
  1166. '(#:configure-flags '("TAO_RELEASE=-beta")
  1167. #:phases
  1168. (modify-phases %standard-phases
  1169. (add-after 'unpack 'fix-references
  1170. (lambda* (#:key outputs #:allow-other-keys)
  1171. (substitute* "user-scripts/tao.in"
  1172. (("taoparse")
  1173. (string-append (assoc-ref outputs "out") "/bin/taoparse"))
  1174. (("grep") (which "grep"))
  1175. (("sed -f \\$distdir/user-scripts/")
  1176. (string-append (which "sed") " -f $distdir/"))
  1177. (("distdir=.*")
  1178. (string-append "distdir="
  1179. (assoc-ref outputs "out") "/share/tao")))
  1180. #t))
  1181. (add-after 'install 'install-extra-files
  1182. (lambda* (#:key outputs #:allow-other-keys)
  1183. (let* ((out (assoc-ref outputs "out"))
  1184. (share (string-append out "/share/tao/"))
  1185. (inc (string-append out "/include/tao/")))
  1186. (mkdir-p share)
  1187. (mkdir-p inc)
  1188. (install-file "user-scripts/error.parse" share)
  1189. (copy-recursively "examples" (string-append share "examples"))
  1190. (for-each (lambda (file) (install-file file inc))
  1191. (find-files "include" "\\.h"))
  1192. #t))))))
  1193. (inputs
  1194. `(("audiofile" ,audiofile)
  1195. ("libxi" ,libxi)
  1196. ("libxmu" ,libxmu)
  1197. ("mesa" ,mesa)
  1198. ("glut" ,freeglut)
  1199. ("flex" ,flex)
  1200. ("bison" ,bison)
  1201. ("sed" ,sed)
  1202. ("grep" ,grep)))
  1203. (home-page "http://taopm.sourceforge.net/")
  1204. (synopsis "Sound Synthesis with Physical Models")
  1205. (description "Tao is a software package for sound synthesis using physical
  1206. models. It provides a virtual acoustic material constructed from masses and
  1207. springs which can be used as the basis for building quite complex virtual
  1208. musical instruments. Tao comes with a synthesis language for creating and
  1209. playing instruments and a C++ API for those who would like to use it as an
  1210. object library.")
  1211. (license license:gpl2+)))
  1212. (define-public csound
  1213. (package
  1214. (name "csound")
  1215. (version "6.14.0")
  1216. (source
  1217. (origin
  1218. (method git-fetch)
  1219. (uri (git-reference
  1220. (url "https://github.com/csound/csound")
  1221. (commit version)))
  1222. (file-name (git-file-name name version))
  1223. (sha256
  1224. (base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j"))))
  1225. (build-system cmake-build-system)
  1226. (native-inputs
  1227. `(("bison" ,bison)
  1228. ("flex" ,flex)
  1229. ("gettext" ,gettext-minimal)
  1230. ("zlib" ,zlib)))
  1231. (inputs
  1232. `(("alsa-lib" ,alsa-lib)
  1233. ("boost" ,boost)
  1234. ("jack" ,jack-1)
  1235. ("ladspa" ,ladspa)
  1236. ("liblo" ,liblo)
  1237. ("libsndfile" ,libsndfile)
  1238. ("pulseaudio" ,pulseaudio)))
  1239. (home-page "https://csound.com/")
  1240. (synopsis "Sound and music computing system")
  1241. (description
  1242. "Csound is a user-programmable and user-extensible sound processing
  1243. language and software synthesizer.")
  1244. (license license:lgpl2.1+)))
  1245. (define-public midicomp
  1246. ;; The latest tagged release is 9 years old and there have been
  1247. ;; unreleased fixes, so we take the last commit.
  1248. (let ((commit "70f76963cb0cdb3cbe03ec6e7246b1fb885d3c68")
  1249. (revision "1"))
  1250. (package
  1251. (name "midicomp")
  1252. (version (git-version "0.0.8" revision commit))
  1253. (source
  1254. (origin
  1255. (method git-fetch)
  1256. (uri (git-reference
  1257. (url "https://github.com/markc/midicomp")
  1258. (commit commit)))
  1259. (file-name (git-file-name name version))
  1260. (sha256
  1261. (base32
  1262. "12zh247c6v88ssy4l8v7yirh4bl2jcc1ch7f4gdry79a82kai1gf"))))
  1263. (build-system cmake-build-system)
  1264. (arguments
  1265. `(#:tests? #f)) ; no "check" target
  1266. (synopsis "Convert SMF MIDI files to and from plain text")
  1267. (description
  1268. "midicomp can manipulate SMF (Standard MIDI File) files. It can both
  1269. read and write SMF files in 0 or format 1 and also read and write its own
  1270. plain text format. This means a SMF file can be turned into easily
  1271. parseable text, edited with any text editor or filtered through any script
  1272. language, and recompiled back into a binary SMF file.")
  1273. (home-page "https://github.com/markc/midicomp")
  1274. (license license:agpl3))))
  1275. (define-public clalsadrv
  1276. (package
  1277. (name "clalsadrv")
  1278. (version "2.0.0")
  1279. (source (origin
  1280. (method url-fetch)
  1281. (uri (string-append
  1282. "http://kokkinizita.linuxaudio.org"
  1283. "/linuxaudio/downloads/clalsadrv-"
  1284. version ".tar.bz2"))
  1285. (sha256
  1286. (base32
  1287. "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
  1288. (build-system gnu-build-system)
  1289. (arguments
  1290. `(#:tests? #f ; no "check" target
  1291. #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  1292. #:phases
  1293. (modify-phases %standard-phases
  1294. (add-after 'unpack 'patch-makefile-and-enter-directory
  1295. (lambda _
  1296. (substitute* "libs/Makefile"
  1297. (("/sbin/ldconfig") "true")
  1298. (("^LIBDIR =.*") "LIBDIR = lib\n"))
  1299. (chdir "libs")
  1300. #t))
  1301. (add-after 'install 'install-symlink
  1302. (lambda _
  1303. (symlink "libclalsadrv.so"
  1304. (string-append (assoc-ref %outputs "out")
  1305. "/lib/libclalsadrv.so.2"))
  1306. #t))
  1307. ;; no configure script
  1308. (delete 'configure))))
  1309. (inputs
  1310. `(("alsa-lib" ,alsa-lib)
  1311. ("fftw" ,fftw)))
  1312. (home-page "https://kokkinizita.linuxaudio.org")
  1313. (synopsis "C++ wrapper around the ALSA API")
  1314. (description
  1315. "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
  1316. ALSA PCM devices.")
  1317. (license license:gpl2+)))
  1318. (define-public amb-plugins
  1319. (package
  1320. (name "amb-plugins")
  1321. (version "0.8.1")
  1322. (source (origin
  1323. (method url-fetch)
  1324. (uri (string-append
  1325. "http://kokkinizita.linuxaudio.org"
  1326. "/linuxaudio/downloads/AMB-plugins-"
  1327. version ".tar.bz2"))
  1328. (sha256
  1329. (base32
  1330. "0x4blm4visjqj0ndqr0cg776v3b7lvplpc8cgi9n51llhavn0jpl"))))
  1331. (build-system gnu-build-system)
  1332. (arguments
  1333. `(#:tests? #f ; no "check" target
  1334. #:phases
  1335. (modify-phases %standard-phases
  1336. ;; no configure script
  1337. (delete 'configure)
  1338. (add-before 'install 'prepare-target-directory
  1339. (lambda* (#:key outputs #:allow-other-keys)
  1340. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1341. #t))
  1342. (add-after 'unpack 'override-target-directory-and-tool-paths
  1343. (lambda* (#:key outputs #:allow-other-keys)
  1344. (substitute* "Makefile"
  1345. (("/usr/lib/ladspa")
  1346. (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1347. (("/usr/bin/install") (which "install"))
  1348. (("/bin/rm") "#"))
  1349. #t)))))
  1350. (home-page "https://kokkinizita.linuxaudio.org")
  1351. (synopsis "LADSPA ambisonics plugins")
  1352. (description
  1353. "The AMB plugins are a set of LADSPA ambisonics plugins, mainly to be
  1354. used within Ardour. Features include: mono and stereo to B-format panning,
  1355. horizontal rotator, square, hexagon and cube decoders.")
  1356. (license license:gpl2+)))
  1357. (define-public mcp-plugins
  1358. (package
  1359. (name "mcp-plugins")
  1360. (version "0.4.0")
  1361. (source (origin
  1362. (method url-fetch)
  1363. (uri (string-append
  1364. "http://kokkinizita.linuxaudio.org"
  1365. "/linuxaudio/downloads/MCP-plugins-"
  1366. version ".tar.bz2"))
  1367. (sha256
  1368. (base32
  1369. "06a9r1l85jmg7l1cvc3788mk8ra0xagjfy1rmhw3b80y4n0vlnvc"))))
  1370. (build-system gnu-build-system)
  1371. (arguments
  1372. `(#:tests? #f ; no "check" target
  1373. #:phases
  1374. (modify-phases %standard-phases
  1375. ;; no configure script
  1376. (delete 'configure)
  1377. (add-before 'install 'prepare-target-directory
  1378. (lambda* (#:key outputs #:allow-other-keys)
  1379. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1380. #t))
  1381. (add-after 'unpack 'override-target-directory
  1382. (lambda* (#:key outputs #:allow-other-keys)
  1383. (substitute* "Makefile"
  1384. (("/usr") (assoc-ref outputs "out")))
  1385. #t)))))
  1386. (home-page "https://kokkinizita.linuxaudio.org")
  1387. (synopsis "Chorus, phaser, and vintage high-pass and low-pass filters")
  1388. (description
  1389. "This package provides various LADSPA plugins. @code{cs_chorus} and
  1390. @code{cs_phaser} provide chorus and phaser effects, respectively;
  1391. @code{mvclpf24} provides four implementations of the low-pass filter used in
  1392. vintage Moog synthesizers; @code{mvchpf24} is based on the voltage-controlled
  1393. high-pass filter by Robert Moog. The filters attempt to accurately emulate
  1394. the non-linear circuit elements of their original analog counterparts.")
  1395. (license license:gpl2+)))
  1396. (define-public rev-plugins
  1397. (package
  1398. (name "rev-plugins")
  1399. (version "0.7.1")
  1400. (source (origin
  1401. (method url-fetch)
  1402. (uri (string-append
  1403. "http://kokkinizita.linuxaudio.org"
  1404. "/linuxaudio/downloads/REV-plugins-"
  1405. version ".tar.bz2"))
  1406. (sha256
  1407. (base32
  1408. "1ikpinxm00pkfi259bnkzhsy3miagrjgdihaaf5x4v7zac29j3g7"))))
  1409. (build-system gnu-build-system)
  1410. (arguments
  1411. `(#:tests? #f ; no "check" target
  1412. #:phases
  1413. (modify-phases %standard-phases
  1414. ;; no configure script
  1415. (delete 'configure)
  1416. (add-before 'install 'prepare-target-directory
  1417. (lambda* (#:key outputs #:allow-other-keys)
  1418. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1419. #t))
  1420. (add-after 'unpack 'override-target-directory
  1421. (lambda* (#:key outputs #:allow-other-keys)
  1422. (substitute* "Makefile"
  1423. (("/usr") (assoc-ref outputs "out")))
  1424. #t)))))
  1425. (home-page "https://kokkinizita.linuxaudio.org")
  1426. (synopsis "LADSPA reverb plugin")
  1427. (description
  1428. "This package provides a stereo reverb LADSPA plugin based on the
  1429. well-known greverb.")
  1430. (license license:gpl2+)))
  1431. (define-public fil-plugins
  1432. (package
  1433. (name "fil-plugins")
  1434. (version "0.3.0")
  1435. (source (origin
  1436. (method url-fetch)
  1437. (uri (string-append
  1438. "http://kokkinizita.linuxaudio.org"
  1439. "/linuxaudio/downloads/FIL-plugins-"
  1440. version ".tar.bz2"))
  1441. (sha256
  1442. (base32
  1443. "1scfv9j7jrp50r565haa4rvxn1vk2ss86xssl5qgcr8r45qz42qw"))))
  1444. (build-system gnu-build-system)
  1445. (arguments
  1446. `(#:tests? #f ; no "check" target
  1447. #:phases
  1448. (modify-phases %standard-phases
  1449. ;; no configure script
  1450. (delete 'configure)
  1451. (add-before 'install 'prepare-target-directory
  1452. (lambda* (#:key outputs #:allow-other-keys)
  1453. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1454. #t))
  1455. (add-after 'unpack 'override-target-directory
  1456. (lambda* (#:key outputs #:allow-other-keys)
  1457. (substitute* "Makefile"
  1458. (("/usr") (assoc-ref outputs "out")))
  1459. #t)))))
  1460. (home-page "https://kokkinizita.linuxaudio.org")
  1461. (synopsis "LADSPA four-band parametric equalizer plugin")
  1462. (description
  1463. "This package provides a LADSPA plugin for a four-band parametric
  1464. equalizer. Each section has an active/bypass switch, frequency, bandwidth and
  1465. gain controls. There is also a global bypass switch and gain control.
  1466. The 2nd order resonant filters are implemented using a Mitra-Regalia style
  1467. lattice filter, which is stable even while parameters are being changed.
  1468. All switches and controls are internally smoothed, so they can be used @code{live}
  1469. without any clicks or zipper noises. This makes this plugin suitable for use
  1470. in systems that allow automation of plugin control ports, such as Ardour, or
  1471. for stage use.")
  1472. (license license:gpl2+)))
  1473. (define-public ste-plugins
  1474. (package
  1475. (name "ste-plugins")
  1476. (version "0.0.2")
  1477. (source (origin
  1478. (method url-fetch)
  1479. (uri (string-append
  1480. "http://kokkinizita.linuxaudio.org"
  1481. "/linuxaudio/downloads/STE-plugins-"
  1482. version ".tar.bz2"))
  1483. (sha256
  1484. (base32
  1485. "0s3c9w5xihs87cnd1lh9xgj3maabjdyh6bl766qp5lhkg3ax8zy6"))))
  1486. (build-system gnu-build-system)
  1487. (arguments
  1488. `(#:tests? #f ; no "check" target
  1489. #:phases
  1490. (modify-phases %standard-phases
  1491. ;; no configure script
  1492. (delete 'configure)
  1493. (add-before 'install 'prepare-target-directory
  1494. (lambda* (#:key outputs #:allow-other-keys)
  1495. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1496. #t))
  1497. (add-after 'unpack 'override-target-directory
  1498. (lambda* (#:key outputs #:allow-other-keys)
  1499. (substitute* "Makefile"
  1500. (("/usr") (assoc-ref outputs "out")))
  1501. #t)))))
  1502. (home-page "https://kokkinizita.linuxaudio.org")
  1503. (synopsis "LADSPA stereo width plugin")
  1504. (description
  1505. "This package provides a LADSPA plugin to manipulate the stereo width of
  1506. audio signals.")
  1507. (license license:gpl2+)))
  1508. (define-public vco-plugins
  1509. (package
  1510. (name "vco-plugins")
  1511. (version "0.3.0")
  1512. (source (origin
  1513. (method url-fetch)
  1514. (uri (string-append
  1515. "http://kokkinizita.linuxaudio.org"
  1516. "/linuxaudio/downloads/VCO-plugins-"
  1517. version ".tar.bz2"))
  1518. (sha256
  1519. (base32
  1520. "1xzqdg3b07r7zww05y9bb737l9dxvfkv28m3fyak1aazaci3rsgl"))))
  1521. (build-system gnu-build-system)
  1522. (arguments
  1523. `(#:tests? #f ; no "check" target
  1524. #:phases
  1525. (modify-phases %standard-phases
  1526. ;; no configure script
  1527. (delete 'configure)
  1528. (add-before 'install 'prepare-target-directory
  1529. (lambda* (#:key outputs #:allow-other-keys)
  1530. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1531. #t))
  1532. (add-after 'unpack 'override-target-directory
  1533. (lambda* (#:key outputs #:allow-other-keys)
  1534. (substitute* "Makefile"
  1535. (("/usr") (assoc-ref outputs "out"))
  1536. (("/bin/cp") (which "cp")))
  1537. #t)))))
  1538. (home-page "https://kokkinizita.linuxaudio.org")
  1539. (synopsis "LADSPA plugin for synthesizer oscillators")
  1540. (description
  1541. "The @code{blvco} LADSPA plugin provides three anti-aliased oscillators:
  1542. @enumerate
  1543. @item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
  1544. @item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
  1545. @item Rec-VCO, a square / rectangle oscillator
  1546. @end enumerate\n
  1547. All oscillators are low-pass filtered to provide waveforms similar to the
  1548. output of analog synthesizers such as the Moog Voyager.")
  1549. (license license:gpl2+)))
  1550. (define-public wah-plugins
  1551. (package
  1552. (name "wah-plugins")
  1553. (version "0.1.0")
  1554. (source (origin
  1555. (method url-fetch)
  1556. (uri (string-append
  1557. "http://kokkinizita.linuxaudio.org"
  1558. "/linuxaudio/downloads/WAH-plugins-"
  1559. version ".tar.bz2"))
  1560. (sha256
  1561. (base32
  1562. "1wkbjarxdhjixkh7d5abralj11dj2xxg644fz3ycd7qyfgfvjfgd"))))
  1563. (build-system gnu-build-system)
  1564. (arguments
  1565. `(#:tests? #f ; no "check" target
  1566. #:phases
  1567. (modify-phases %standard-phases
  1568. ;; no configure script
  1569. (delete 'configure)
  1570. (add-before 'install 'prepare-target-directory
  1571. (lambda* (#:key outputs #:allow-other-keys)
  1572. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1573. #t))
  1574. (add-after 'unpack 'override-target-directory
  1575. (lambda* (#:key outputs #:allow-other-keys)
  1576. (substitute* "Makefile"
  1577. (("/usr") (assoc-ref outputs "out")))
  1578. #t)))))
  1579. (home-page "https://kokkinizita.linuxaudio.org")
  1580. (synopsis "LADSPA Autowah effect plugin")
  1581. (description
  1582. "This package provides a LADSPA plugin for a Wah effect with envelope
  1583. follower.")
  1584. (license license:gpl2+)))
  1585. (define-public g2reverb
  1586. (package
  1587. (name "g2reverb")
  1588. (version "0.7.1")
  1589. (source (origin
  1590. (method url-fetch)
  1591. (uri (string-append
  1592. "http://kokkinizita.linuxaudio.org"
  1593. "/linuxaudio/downloads/g2reverb-"
  1594. version ".tar.bz2"))
  1595. (sha256
  1596. (base32
  1597. "18wb8vj1kky5glr76s34awbi8qzplsmf3wjbd7a12hfv4j0bkwrj"))))
  1598. (build-system gnu-build-system)
  1599. (arguments
  1600. `(#:tests? #f ; no "check" target
  1601. #:phases
  1602. (modify-phases %standard-phases
  1603. ;; no configure script
  1604. (delete 'configure)
  1605. (add-before 'install 'prepare-target-directory
  1606. (lambda* (#:key outputs #:allow-other-keys)
  1607. (mkdir-p (string-append (assoc-ref outputs "out") "/lib/ladspa"))
  1608. #t))
  1609. (add-after 'unpack 'override-target-directory
  1610. (lambda* (#:key outputs #:allow-other-keys)
  1611. (substitute* "Makefile"
  1612. (("/usr") (assoc-ref outputs "out")))
  1613. #t)))))
  1614. (home-page "https://kokkinizita.linuxaudio.org")
  1615. (synopsis "LADSPA stereo reverb plugin")
  1616. (description
  1617. "This package provides a LADSPA plugin for a stereo reverb effect.")
  1618. (license license:gpl2+)))
  1619. (define-public fluidsynth
  1620. (package
  1621. (name "fluidsynth")
  1622. (version "2.1.8")
  1623. (source (origin
  1624. (method git-fetch)
  1625. (uri (git-reference
  1626. (url "https://github.com/FluidSynth/fluidsynth")
  1627. (commit (string-append "v" version))))
  1628. (file-name (git-file-name name version))
  1629. (sha256
  1630. (base32
  1631. "0r944ndn138ak9s3ivgd1wgkwkh6zp7jjnxd30hryczc6kbhkpmr"))))
  1632. (build-system cmake-build-system)
  1633. (arguments
  1634. '(#:tests? #f ; no check target
  1635. #:phases
  1636. (modify-phases %standard-phases
  1637. (add-after 'unpack 'fix-libdir
  1638. (lambda _
  1639. ;; Install libraries to /lib, not /lib64.
  1640. (substitute* "CMakeLists.txt"
  1641. (("LIB_SUFFIX \\$\\{_init_lib_suffix\\}")
  1642. "LIB_SUFFIX \"\""))
  1643. #t)))))
  1644. (inputs
  1645. `(("libsndfile" ,libsndfile)
  1646. ("alsa-lib" ,alsa-lib)
  1647. ("jack" ,jack-1)
  1648. ("ladspa" ,ladspa)
  1649. ("lash" ,lash)
  1650. ("readline" ,readline)
  1651. ("glib" ,glib)))
  1652. (native-inputs
  1653. `(("pkg-config" ,pkg-config)))
  1654. (home-page "https://www.fluidsynth.org/")
  1655. (synopsis "SoundFont synthesizer")
  1656. (description
  1657. "FluidSynth is a real-time software synthesizer based on the SoundFont 2
  1658. specifications. FluidSynth reads and handles MIDI events from the MIDI input
  1659. device. It is the software analogue of a MIDI synthesizer. FluidSynth can
  1660. also play midifiles using a Soundfont.")
  1661. (license license:lgpl2.1+)))
  1662. ;; gzdoom@3.3.0 and lmms@1.1.3 requires this version. Remove once no longer
  1663. ;; needed.
  1664. (define-public fluidsynth-1
  1665. (package
  1666. (inherit fluidsynth)
  1667. (version "1.1.11")
  1668. (source (origin
  1669. (inherit (package-source fluidsynth))
  1670. (uri (git-reference
  1671. (url "https://github.com/FluidSynth/fluidsynth")
  1672. (commit (string-append "v" version))))
  1673. (file-name (git-file-name "fluidsynth" version))
  1674. (sha256
  1675. (base32
  1676. "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh"))))))
  1677. (define-public faad2
  1678. (package
  1679. (name "faad2")
  1680. (version "2.8.8")
  1681. (source
  1682. (origin
  1683. (method url-fetch)
  1684. (uri
  1685. (string-append "mirror://sourceforge/faac/faad2-src/faad2-"
  1686. (version-major+minor version) ".0/"
  1687. "faad2-" version ".tar.gz"))
  1688. (sha256
  1689. (base32 "0va284hndhn0ynm4lyn219qw4y8wa4agfkqgwlaji7bqp6nkyp4q"))))
  1690. (build-system gnu-build-system)
  1691. (home-page "https://www.audiocoding.com/faad2.html")
  1692. (synopsis "MPEG-4 and MPEG-2 AAC decoder")
  1693. (description
  1694. "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR, -PS, and DAB+.")
  1695. (license license:gpl2+)))
  1696. (define-public faust
  1697. (package
  1698. (name "faust")
  1699. (version "0.9.90")
  1700. (source (origin
  1701. (method git-fetch)
  1702. (uri (git-reference
  1703. (url "https://github.com/grame-cncm/faust")
  1704. (commit (string-append "v"
  1705. (string-map (lambda (c)
  1706. (if (char=? c #\.) #\- c))
  1707. version)))))
  1708. (file-name (string-append "faust-" version "-checkout"))
  1709. (sha256
  1710. (base32
  1711. "0qc6iwjd3i80jdyjc186c6ywipmjzl8wlsp4050pbr56q4rlkd4z"))))
  1712. (build-system gnu-build-system)
  1713. (arguments
  1714. `(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
  1715. #:tests? #f
  1716. #:phases
  1717. (modify-phases %standard-phases
  1718. ;; no "configure" script
  1719. (delete 'configure)
  1720. ;; Files appear under $out/share/faust that are read-only. The
  1721. ;; install phase tries to overwrite them and fails, so we change
  1722. ;; the permissions first.
  1723. (add-before 'install 'fix-permissions
  1724. (lambda _
  1725. (for-each (lambda (file)
  1726. (chmod file #o644))
  1727. (find-files "architecture/max-msp" ".*"))
  1728. #t)))))
  1729. (native-inputs
  1730. `(("unzip" ,unzip)))
  1731. (home-page "https://faust.grame.fr/")
  1732. (synopsis "Signal processing language")
  1733. (description
  1734. "Faust is a programming language for realtime audio signal processing.")
  1735. (license license:gpl2+)))
  1736. (define-public faust-2
  1737. (package
  1738. (inherit faust)
  1739. (version "2.5.23")
  1740. (source (origin
  1741. (method url-fetch)
  1742. (uri (string-append "https://github.com/grame-cncm/faust/"
  1743. "releases/download/" version
  1744. "/faust-" version ".tar.gz"))
  1745. (sha256
  1746. (base32
  1747. "1yz5jnr76hh7rmxkpdi7gyrw1wp4gyqfpq8zyl97qdi5ga5gjznq"))))
  1748. (build-system gnu-build-system)
  1749. (arguments
  1750. (substitute-keyword-arguments (package-arguments faust)
  1751. ((#:make-flags flags)
  1752. `(list (string-append "prefix=" (assoc-ref %outputs "out"))
  1753. "world"))))
  1754. (native-inputs
  1755. `(("llvm" ,llvm-3.8)
  1756. ("which" ,which)
  1757. ("xxd" ,xxd)
  1758. ("ctags" ,emacs-minimal) ; for ctags
  1759. ("pkg-config" ,pkg-config)))
  1760. (inputs
  1761. `(("libsndfile" ,libsndfile)
  1762. ("libmicrohttpd" ,libmicrohttpd)
  1763. ("ncurses" ,ncurses)
  1764. ("openssl" ,openssl)
  1765. ("zlib" ,zlib)))))
  1766. (define-public freepats
  1767. (package
  1768. (name "freepats")
  1769. (version "20060219")
  1770. (source (origin
  1771. (method url-fetch)
  1772. (uri (string-append "http://freepats.zenvoid.org/freepats-"
  1773. version ".tar.bz2"))
  1774. (sha256
  1775. (base32
  1776. "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
  1777. (build-system trivial-build-system)
  1778. (arguments
  1779. `(#:modules ((guix build utils))
  1780. #:builder (begin
  1781. (use-modules (guix build utils))
  1782. (let ((out (string-append %output "/share/freepats")))
  1783. (setenv "PATH" (string-append
  1784. (assoc-ref %build-inputs "bzip2") "/bin:"
  1785. (assoc-ref %build-inputs "tar") "/bin"))
  1786. (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
  1787. (chdir "freepats")
  1788. ;; Use absolute pattern references
  1789. (substitute* "freepats.cfg"
  1790. (("Tone_000") (string-append out "/Tone_000"))
  1791. (("Drum_000") (string-append out "/Drum_000")))
  1792. (mkdir-p out)
  1793. (copy-recursively "." out)
  1794. #t))))
  1795. (native-inputs
  1796. `(("tar" ,tar)
  1797. ("bzip2" ,bzip2)))
  1798. (home-page "http://freepats.zenvoid.org")
  1799. (synopsis "GUS compatible patches for MIDI players")
  1800. (description
  1801. "FreePats is a project to create a free and open set of GUS compatible
  1802. patches that can be used with softsynths such as Timidity and WildMidi.")
  1803. ;; GPLv2+ with exception for compositions using these patches.
  1804. (license license:gpl2+)))
  1805. (define-public guitarix
  1806. (package
  1807. (name "guitarix")
  1808. (version "0.41.0")
  1809. (source (origin
  1810. (method url-fetch)
  1811. (uri (string-append
  1812. "mirror://sourceforge/guitarix/guitarix/guitarix2-"
  1813. version ".tar.xz"))
  1814. (sha256
  1815. (base32
  1816. "0qsfbyrrpb3bbdyq68k28mjql7kglxh8nqcw9jvja28x6x9ik5a0"))))
  1817. (build-system waf-build-system)
  1818. (arguments
  1819. `(#:tests? #f ; no "check" target
  1820. #:configure-flags
  1821. (list
  1822. ;; Add the output lib directory to the RUNPATH.
  1823. (string-append "--ldflags=-Wl,-rpath=" %output "/lib"))))
  1824. (inputs
  1825. `(("libsndfile" ,libsndfile)
  1826. ("boost" ,boost)
  1827. ("curl" ,curl)
  1828. ("avahi" ,avahi)
  1829. ("eigen" ,eigen)
  1830. ("lv2" ,lv2)
  1831. ("lilv" ,lilv)
  1832. ("ladspa" ,ladspa)
  1833. ("jack" ,jack-1)
  1834. ("gtkmm" ,gtkmm-3)
  1835. ("gtk+" ,gtk+)
  1836. ("fftwf" ,fftwf)
  1837. ("lrdf" ,lrdf)
  1838. ("zita-resampler" ,zita-resampler)
  1839. ("zita-convolver" ,zita-convolver)))
  1840. (native-inputs
  1841. `(("gperf" ,gperf)
  1842. ("faust" ,faust)
  1843. ("intltool" ,intltool)
  1844. ("gettext" ,gettext-minimal)
  1845. ("pkg-config" ,pkg-config)
  1846. ("sassc" ,sassc)))
  1847. (native-search-paths
  1848. (list (search-path-specification
  1849. (variable "LV2_PATH")
  1850. (files '("lib/lv2")))))
  1851. (home-page "https://guitarix.org/")
  1852. (synopsis "Virtual guitar amplifier")
  1853. (description "Guitarix is a virtual guitar amplifier running JACK.
  1854. Guitarix takes the signal from your guitar as a mono-signal from your sound
  1855. card. The input is processed by a main amp and a rack-section. Both can be
  1856. routed separately and deliver a processed stereo-signal via JACK. You may
  1857. fill the rack with effects from more than 25 built-in modules including stuff
  1858. from a simple noise gate to modulation effects like flanger, phaser or
  1859. auto-wah.")
  1860. (license license:gpl2+)))
  1861. (define-public guitarix-lv2
  1862. (package (inherit guitarix)
  1863. (name "guitarix-lv2")
  1864. (arguments
  1865. (substitute-keyword-arguments (package-arguments guitarix)
  1866. ((#:configure-flags flags)
  1867. `(cons "--no-standalone" ,flags))))))
  1868. (define-public rakarrack
  1869. (package
  1870. (name "rakarrack")
  1871. (version "0.6.1")
  1872. (source (origin
  1873. (method url-fetch)
  1874. (uri (string-append "mirror://sourceforge/rakarrack/rakarrack/"
  1875. "rakarrack-" version "/rakarrack-"
  1876. version ".tar.bz2"))
  1877. (sha256
  1878. (base32
  1879. "1rpf63pdn54c4yg13k7cb1w1c7zsvl97c4qxcpz41c8l91xd55kn"))
  1880. (modules '((guix build utils)))
  1881. (snippet
  1882. '(begin
  1883. (substitute* '("src/process.C"
  1884. "src/global.h")
  1885. (("#include <Fl/") "#include <FL/"))
  1886. #t))))
  1887. (build-system gnu-build-system)
  1888. (inputs
  1889. `(("alsa-utils" ,alsa-utils)
  1890. ("fltk" ,fltk)
  1891. ("libx11" ,libx11)
  1892. ("libxext" ,libxext)
  1893. ("libxfixes" ,libxfixes)
  1894. ("libxft" ,libxft)
  1895. ("libxrender" ,libxrender)
  1896. ("libxpm" ,libxpm)
  1897. ("fontconfig" ,fontconfig)
  1898. ("freetype" ,freetype)
  1899. ("jack" ,jack-1)
  1900. ("alsa-lib" ,alsa-lib)
  1901. ("libsndfile" ,libsndfile)
  1902. ("libsamplerate" ,libsamplerate)
  1903. ("zlib" ,zlib)))
  1904. (home-page "http://rakarrack.sourceforge.net/")
  1905. (synopsis "Audio effects processor")
  1906. (description
  1907. "Rakarrack is a richly featured multi-effects processor emulating a
  1908. guitar effects pedalboard. Effects include compressor, expander, noise gate,
  1909. equalizers, exciter, flangers, chorus, various delay and reverb effects,
  1910. distortion modules and many more. Most of the effects engine is built from
  1911. modules found in the excellent software synthesizer ZynAddSubFX. Presets and
  1912. user interface are optimized for guitar, but Rakarrack processes signals in
  1913. stereo while it does not apply internal band-limiting filtering, and thus is
  1914. well suited to all musical instruments and vocals.")
  1915. ;; The code is explicitly licensed under the GPL version 2 only.
  1916. (license license:gpl2)))
  1917. (define-public ir
  1918. (package
  1919. (name "ir")
  1920. (version "1.3.4")
  1921. (source (origin
  1922. (method git-fetch)
  1923. (uri (git-reference
  1924. (url "https://github.com/tomszilagyi/ir.lv2")
  1925. (commit version)))
  1926. (file-name (git-file-name name version))
  1927. (sha256
  1928. (base32
  1929. "0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
  1930. (build-system gnu-build-system)
  1931. (arguments
  1932. `(#:tests? #f ; no tests
  1933. #:make-flags
  1934. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  1935. (string-append "INSTDIR="
  1936. (assoc-ref %outputs "out") "/lib/lv2"))
  1937. #:phases
  1938. (modify-phases %standard-phases
  1939. (delete 'configure) ; no configure script
  1940. ;; See https://github.com/tomszilagyi/ir.lv2/pull/20
  1941. (add-after 'unpack 'fix-type
  1942. (lambda _
  1943. (substitute* '("ir_gui.cc" "lv2_ui.h")
  1944. (("_LV2UI_Descriptor") "LV2UI_Descriptor"))
  1945. #t)))))
  1946. (inputs
  1947. `(("libsndfile" ,libsndfile)
  1948. ("libsamplerate" ,libsamplerate)
  1949. ("lv2" ,lv2)
  1950. ("glib" ,glib)
  1951. ("gtk+" ,gtk+-2)
  1952. ("zita-convolver" ,zita-convolver)))
  1953. (native-inputs
  1954. `(("pkg-config" ,pkg-config)))
  1955. (native-search-paths
  1956. (list (search-path-specification
  1957. (variable "LV2_PATH")
  1958. (files '("lib/lv2")))))
  1959. (home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
  1960. (synopsis "LV2 convolution reverb")
  1961. (description
  1962. "IR is a low-latency, real-time, high performance signal convolver
  1963. especially for creating reverb effects. It supports impulse responses with 1,
  1964. 2 or 4 channels, in any soundfile format supported by libsndfile.")
  1965. (license license:gpl2+)))
  1966. (define-public jack-1
  1967. (package
  1968. (name "jack")
  1969. (version "0.125.0")
  1970. (source
  1971. (origin
  1972. (method url-fetch)
  1973. ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz
  1974. ;; no longer exists (404). Use an unofficial mirror.
  1975. (uri (string-append "https://crux.ster.zone/downloads/"
  1976. "jack-audio-connection-kit/"
  1977. "jack-audio-connection-kit-" version ".tar.gz"))
  1978. (sha256
  1979. (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
  1980. (build-system gnu-build-system)
  1981. (arguments
  1982. `(#:phases (modify-phases %standard-phases
  1983. (add-after 'unpack 'patch-configure
  1984. (lambda _
  1985. (substitute* "configure"
  1986. ;; Install to <out/lib> regardless of platform.
  1987. (("libnn=lib64") "libnn=lib"))
  1988. #t)))))
  1989. (inputs
  1990. `(("alsa-lib" ,alsa-lib)
  1991. ("readline" ,readline)))
  1992. ;; uuid.h is included in the JACK type headers
  1993. ;; db.h is included in the libjack metadata headers
  1994. (propagated-inputs
  1995. `(("libuuid" ,util-linux "lib")
  1996. ("bdb" ,bdb)))
  1997. (native-inputs
  1998. `(("pkg-config" ,pkg-config)))
  1999. (home-page "https://jackaudio.org/")
  2000. (synopsis "JACK audio connection kit")
  2001. (description
  2002. "JACK is a low-latency audio server. It can connect a number of
  2003. different applications to an audio device, as well as allowing them to share
  2004. audio between themselves. JACK is different from other audio server efforts
  2005. in that it has been designed from the ground up to be suitable for
  2006. professional audio work. This means that it focuses on two key areas:
  2007. synchronous execution of all clients, and low latency operation.")
  2008. ;; Most files are licensed under the GPL. However, the libjack/ tree is
  2009. ;; licensed under the LGPL in order to allow for proprietary usage.
  2010. (license (list license:gpl2+ license:lgpl2.1+))))
  2011. ;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
  2012. ;; jack-2 implement the same API. JACK2 is provided primarily as a client
  2013. ;; program for users who might benefit from the D-BUS features.
  2014. (define-public jack-2
  2015. (package (inherit jack-1)
  2016. (name "jack2")
  2017. (version "1.9.14")
  2018. (source (origin
  2019. (method url-fetch)
  2020. (uri (string-append "https://github.com/jackaudio/jack2/releases/"
  2021. "download/v" version "/jack2-"
  2022. version ".tar.gz"))
  2023. (file-name (string-append name "-" version ".tar.gz"))
  2024. (sha256
  2025. (base32
  2026. "0z11hf55a6mi8h50hfz5wry9pshlwl4mzfwgslghdh40cwv342m2"))))
  2027. (build-system waf-build-system)
  2028. (arguments
  2029. `(#:tests? #f ; no check target
  2030. #:configure-flags '("--dbus"
  2031. "--alsa")
  2032. #:phases
  2033. (modify-phases %standard-phases
  2034. (add-before 'configure 'set-linkflags
  2035. (lambda _
  2036. ;; Ensure -lstdc++ is the tail of LDFLAGS or the simdtests.cpp
  2037. ;; will not link with undefined reference to symbol
  2038. ;; '__gxx_personality_v0@@CXXABI_1.3'
  2039. (setenv "LDFLAGS" "-lstdc++")
  2040. ;; Add $libdir to the RUNPATH of all the binaries.
  2041. (substitute* "wscript"
  2042. ((".*CFLAGS.*-Wall.*" m)
  2043. (string-append m
  2044. " conf.env.append_unique('LINKFLAGS',"
  2045. "'-Wl,-rpath=" %output "/lib')\n")))
  2046. #t))
  2047. (add-after 'install 'wrap-python-scripts
  2048. (lambda* (#:key inputs outputs #:allow-other-keys)
  2049. ;; Make sure 'jack_control' runs with the correct PYTHONPATH.
  2050. (let* ((out (assoc-ref outputs "out"))
  2051. (path (getenv "GUIX_PYTHONPATH")))
  2052. (wrap-program (string-append out "/bin/jack_control")
  2053. `("GUIX_PYTHONPATH" ":" prefix (,path))))
  2054. #t)))))
  2055. (inputs
  2056. `(("alsa-lib" ,alsa-lib)
  2057. ("dbus" ,dbus)
  2058. ("expat" ,expat)
  2059. ("libsamplerate" ,libsamplerate)
  2060. ("opus" ,opus)
  2061. ("python-dbus" ,python-dbus)
  2062. ("readline" ,readline)))
  2063. (native-inputs
  2064. `(("pkg-config" ,pkg-config)))
  2065. ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
  2066. (license (list license:gpl2+ license:lgpl2.1+))))
  2067. (define-public jalv
  2068. (package
  2069. (name "jalv")
  2070. (version "1.6.4")
  2071. (source (origin
  2072. (method url-fetch)
  2073. (uri (string-append "https://download.drobilla.net/jalv-"
  2074. version ".tar.bz2"))
  2075. (sha256
  2076. (base32
  2077. "1wwfn7yzbs37s2rdlfjgks63svd5g14yyzd2gdl7h0z12qncwsy2"))))
  2078. (build-system waf-build-system)
  2079. (arguments
  2080. `(#:tests? #f ; no check target
  2081. #:python ,python-2))
  2082. (inputs
  2083. `(("lv2" ,lv2)
  2084. ("lilv" ,lilv)
  2085. ("suil" ,suil)
  2086. ("gtk2" ,gtk+-2)
  2087. ("gtk3" ,gtk+)
  2088. ("gtkmm" ,gtkmm-2)
  2089. ("qtbase" ,qtbase-5)
  2090. ("jack" ,jack-1)))
  2091. (native-inputs
  2092. `(("pkg-config" ,pkg-config)))
  2093. (home-page "https://drobilla.net/software/jalv/")
  2094. (synopsis "Simple LV2 host for JACK")
  2095. (description
  2096. "Jalv is a simple but fully featured LV2 host for JACK. It runs LV2
  2097. plugins and exposes their ports as JACK ports, essentially making any LV2
  2098. plugin function as a JACK application.")
  2099. (license license:isc)))
  2100. (define-public ladspa
  2101. (package
  2102. (name "ladspa")
  2103. (version "1.13")
  2104. (source
  2105. (origin
  2106. (method url-fetch)
  2107. ;; Since the official link is dead,
  2108. ;; we download the tarball from Debian or Internet Archive.
  2109. (uri (list (string-append "http://http.debian.net"
  2110. "/debian/pool/main/l/ladspa-sdk/ladspa-sdk_"
  2111. version ".orig.tar.gz")
  2112. (string-append "https://web.archive.org/web/20140717172251/"
  2113. "http://www.ladspa.org/download/ladspa_sdk_"
  2114. version ".tgz")))
  2115. (sha256
  2116. (base32
  2117. "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
  2118. (build-system gnu-build-system)
  2119. (arguments
  2120. `(#:tests? #f ; the "test" target is a listening test only
  2121. #:phases
  2122. (modify-phases %standard-phases
  2123. (replace 'configure
  2124. (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
  2125. (chdir "src")
  2126. (let ((out (assoc-ref outputs "out")))
  2127. (substitute* "makefile"
  2128. (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
  2129. (("/usr/include/") (string-append out "/include/"))
  2130. (("/usr/bin/") (string-append out "/bin/"))
  2131. (("-mkdirhier") "mkdir -p")
  2132. (("^CC.*") "CC = gcc\n")
  2133. (("^CPP.*") "CPP = g++\n")))
  2134. #t))
  2135. (delete 'build))))
  2136. ;; Since the home page is gone, we provide a link to the archived version.
  2137. (home-page
  2138. "https://web.archive.org/web/20140729190945/http://www.ladspa.org/")
  2139. (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
  2140. (description
  2141. "LADSPA is a standard that allows software audio processors and effects
  2142. to be plugged into a wide range of audio synthesis and recording packages.")
  2143. (license license:lgpl2.1+)))
  2144. (define-public lash
  2145. (package
  2146. (name "lash")
  2147. (version "0.6.0-rc2")
  2148. (source (origin
  2149. (method url-fetch)
  2150. ;; The tilde is not permitted in the builder name, but is used
  2151. ;; in the tarball.
  2152. (uri (string-append
  2153. "mirror://savannah/lash/lash-"
  2154. (string-join (string-split version #\-) "~")
  2155. ".tar.bz2"))
  2156. (file-name (string-append name "-" version ".tar.bz2"))
  2157. (sha256
  2158. (base32
  2159. "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
  2160. (build-system gnu-build-system)
  2161. (arguments
  2162. '(;; Glibc no longer includes Sun RPC support, so tell the build system
  2163. ;; to use libtirpc instead.
  2164. #:make-flags (list (string-append "CFLAGS=-I"
  2165. (assoc-ref %build-inputs "libtirpc")
  2166. "/include/tirpc -ltirpc"))
  2167. #:phases
  2168. (modify-phases %standard-phases
  2169. ;; lashd embeds an ancient version of sigsegv so we just skip it
  2170. (add-after 'unpack 'skip-lashd
  2171. (lambda _
  2172. (substitute* '("Makefile.am" "Makefile.in")
  2173. (("lashd ") ""))
  2174. #t)))
  2175. #:configure-flags '("--disable-static")))
  2176. (inputs
  2177. `(("bdb" ,bdb)
  2178. ("gtk" ,gtk+-2)
  2179. ("jack" ,jack-1)
  2180. ("libtirpc" ,libtirpc)
  2181. ("readline" ,readline)
  2182. ("python" ,python-2)))
  2183. ;; According to pkg-config, packages depending on lash also need to have
  2184. ;; at least the following packages declared as inputs.
  2185. (propagated-inputs
  2186. `(("alsa-lib" ,alsa-lib)
  2187. ("dbus" ,dbus)
  2188. ("libxml2" ,libxml2)))
  2189. (native-inputs
  2190. `(("pkg-config" ,pkg-config)))
  2191. (home-page "https://www.nongnu.org/lash/")
  2192. (synopsis "Audio application session manager")
  2193. (description
  2194. "LASH is a session management system for audio applications. It allows
  2195. you to save and restore audio sessions consisting of multiple interconneced
  2196. applications, restoring program state (i.e. loaded patches) and the
  2197. connections between them.")
  2198. (license license:gpl2+)))
  2199. (define-public libbs2b
  2200. (package
  2201. (name "libbs2b")
  2202. (version "3.1.0")
  2203. (source (origin
  2204. (method url-fetch)
  2205. (uri (string-append "mirror://sourceforge/bs2b/libbs2b/" version
  2206. "/libbs2b-" version ".tar.lzma"))
  2207. (sha256
  2208. (base32
  2209. "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
  2210. (build-system gnu-build-system)
  2211. (native-inputs `(("pkg-config" ,pkg-config)))
  2212. (inputs `(("libsndfile" ,libsndfile)))
  2213. (home-page "https://sourceforge.net/projects/bs2b/")
  2214. (synopsis "Bauer stereophonic-to-binaural DSP")
  2215. (description
  2216. "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
  2217. designed to improve headphone listening of stereo audio records. Recommended
  2218. for headphone prolonged listening to disable superstereo fatigue without
  2219. essential distortions.")
  2220. (license license:expat)))
  2221. (define-public ladspa-bs2b
  2222. (package
  2223. (name "ladspa-bs2b")
  2224. (version "0.9.1")
  2225. (source (origin
  2226. (method url-fetch)
  2227. (uri (string-append
  2228. "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/"
  2229. version "/" name "-" version ".tar.gz"))
  2230. (sha256
  2231. (base32
  2232. "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2"))))
  2233. (build-system gnu-build-system)
  2234. (native-inputs `(("pkg-config" ,pkg-config)))
  2235. (inputs `(("ladspa" ,ladspa)
  2236. ("libbs2b" ,libbs2b)))
  2237. (home-page "https://sourceforge.net/projects/bs2b/")
  2238. (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin")
  2239. (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and
  2240. plugins is designed to improve headphone listening of stereo audio records.
  2241. Recommended for headphone prolonged listening to disable superstereo fatigue
  2242. without essential distortions. This package contains a LADSPA plugin for use
  2243. with applications that support them (e.g. PulseAudio).")
  2244. (license license:gpl2+)))
  2245. (define-public liblo
  2246. (package
  2247. (name "liblo")
  2248. (version "0.31")
  2249. (source (origin
  2250. (method url-fetch)
  2251. (uri (string-append "mirror://sourceforge/liblo/liblo/" version
  2252. "/liblo-" version ".tar.gz"))
  2253. (sha256
  2254. (base32
  2255. "0l67rkdhfa8cffa0nynql3lh2xlbn1454h6qxhjddp1029p48krb"))))
  2256. (build-system gnu-build-system)
  2257. (arguments
  2258. `(;; liblo test FAILED
  2259. ;; liblo server error 19 in setsockopt(IP_ADD_MEMBERSHIP): No such device
  2260. #:tests? #f))
  2261. (home-page "http://liblo.sourceforge.net")
  2262. (synopsis "Implementation of the Open Sound Control protocol")
  2263. (description
  2264. "liblo is a lightweight library that provides an easy to use
  2265. implementation of the Open Sound Control (@dfn{OSC}) protocol.")
  2266. (license license:lgpl2.1+)))
  2267. (define-public rtaudio
  2268. (package
  2269. (name "rtaudio")
  2270. (version "5.1.0")
  2271. (source
  2272. (origin
  2273. (method git-fetch)
  2274. (uri (git-reference
  2275. (url "https://github.com/thestk/rtaudio")
  2276. (commit version)))
  2277. (file-name (git-file-name name version))
  2278. (sha256
  2279. (base32 "156c2dgh6jrsyfn1y89nslvaxm4yifmxridsb708yvkaym02w2l8"))))
  2280. (build-system cmake-build-system)
  2281. (arguments
  2282. `(#:phases
  2283. (modify-phases %standard-phases
  2284. ;; The header that pkg-config expects is include/rtaudio/RtAudio.h,
  2285. ;; but this package installs it as include/RtAudio.h by default.
  2286. (add-after 'install 'fix-inc-path
  2287. (lambda* (#:key outputs #:allow-other-keys)
  2288. (let* ((out (assoc-ref outputs "out"))
  2289. (inc (string-append out "/include")))
  2290. (mkdir-p (string-append inc "/rtaudio"))
  2291. (rename-file (string-append inc "/RtAudio.h")
  2292. (string-append inc "/rtaudio/RtAudio.h"))))))))
  2293. (native-inputs
  2294. `(("pkg-config" ,pkg-config)))
  2295. (inputs
  2296. `(("alsa-lib" ,alsa-lib)
  2297. ("jack" ,jack-1)
  2298. ("pulseaudio" ,pulseaudio)))
  2299. (synopsis "Common API for real-time audio I/O")
  2300. (description
  2301. "RtAudio is a set of C++ classes that provides a common API for real-time
  2302. audio input/output. It was designed with the following objectives:
  2303. @itemize
  2304. @item object-oriented C++ design
  2305. @item simple, common API across all supported platforms
  2306. @item only one source and one header file for easy inclusion in programming
  2307. projects
  2308. @item allow simultaneous multi-api support
  2309. @item support dynamic connection of devices
  2310. @item provide extensive audio device parameter control
  2311. @item allow audio device capability probing
  2312. @item automatic internal conversion for data format, channel number
  2313. compensation, (de)interleaving, and byte-swapping
  2314. @end itemize")
  2315. (home-page "https://www.music.mcgill.ca/~gary/rtaudio/")
  2316. ;; License is expat with a non-binding request to send modifications to
  2317. ;; original developer.
  2318. (license license:expat)))
  2319. (define-public python-pyaudio
  2320. (package
  2321. (name "python-pyaudio")
  2322. (version "0.2.11")
  2323. (source
  2324. (origin
  2325. (method url-fetch)
  2326. (uri (pypi-uri "PyAudio" version))
  2327. (sha256
  2328. (base32
  2329. "0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
  2330. (build-system python-build-system)
  2331. (inputs
  2332. `(("portaudio" ,portaudio)))
  2333. (home-page "https://people.csail.mit.edu/hubert/pyaudio/")
  2334. (synopsis "Bindings for PortAudio v19")
  2335. (description "This package provides bindings for PortAudio v19, the
  2336. cross-platform audio input/output stream library.")
  2337. (license license:expat)))
  2338. (define-public python2-pyaudio
  2339. (package-with-python2 python-pyaudio))
  2340. (define-public python-pyliblo
  2341. (package
  2342. (name "python-pyliblo")
  2343. (version "0.10.0")
  2344. (source (origin
  2345. (method url-fetch)
  2346. (uri (string-append "http://das.nasophon.de/download/pyliblo-"
  2347. version ".tar.gz"))
  2348. (sha256
  2349. (base32
  2350. "13vry6xhxm7adnbyj28w1kpwrh0kf7nw83cz1yq74wl21faz2rzw"))))
  2351. (build-system python-build-system)
  2352. (arguments `(#:tests? #f)) ;no tests
  2353. (native-inputs
  2354. `(("python-cython" ,python-cython)))
  2355. (inputs
  2356. `(("liblo" ,liblo)))
  2357. (home-page "http://das.nasophon.de/pyliblo/")
  2358. (synopsis "Python bindings for liblo")
  2359. (description
  2360. "Pyliblo is a Python wrapper for the liblo Open Sound Control (OSC)
  2361. library. It supports almost the complete functionality of liblo, allowing you
  2362. to send and receive OSC messages using a nice and simple Python API. Also
  2363. included are the command line utilities @code{send_osc} and @code{dump_osc}.")
  2364. (license license:lgpl2.1+)))
  2365. (define-public python2-pyliblo
  2366. (package-with-python2 python-pyliblo))
  2367. (define-public python-soundfile
  2368. (package
  2369. (name "python-soundfile")
  2370. (version "0.10.3.post1")
  2371. (source
  2372. (origin
  2373. (method url-fetch)
  2374. (uri (pypi-uri "SoundFile" version))
  2375. (sha256
  2376. (base32
  2377. "0yqhrfz7xkvqrwdxdx2ydy4h467sk7z3gf984y1x2cq7cm1gy329"))))
  2378. (build-system python-build-system)
  2379. (propagated-inputs
  2380. `(("python-cffi" ,python-cffi)
  2381. ("python-numpy" ,python-numpy)
  2382. ("libsndfile" ,libsndfile)))
  2383. (native-inputs
  2384. `(("python-pytest" ,python-pytest)))
  2385. (arguments
  2386. `(#:tests? #f ; missing OGG support
  2387. #:phases
  2388. (modify-phases %standard-phases
  2389. (add-after 'unpack 'patch
  2390. (lambda* (#:key inputs #:allow-other-keys)
  2391. (substitute* "soundfile.py"
  2392. (("_find_library\\('sndfile'\\)")
  2393. (string-append "\"" (assoc-ref inputs "libsndfile")
  2394. "/lib/libsndfile.so\""))))))))
  2395. (home-page "https://github.com/bastibe/SoundFile")
  2396. (synopsis "Python bindings for libsndfile")
  2397. (description "This package provides python bindings for libsndfile based on
  2398. CFFI and NumPy.")
  2399. (license license:expat)))
  2400. (define-public python-python3-midi
  2401. (package
  2402. (name "python-python3-midi")
  2403. (version "0.2.5")
  2404. (source
  2405. (origin
  2406. (method url-fetch)
  2407. (uri (pypi-uri "python3_midi" version))
  2408. (sha256
  2409. (base32
  2410. "1z9j1w7mpn3xhkcpxmqm5rvmj6nffb5rf14bv7n3sdh07nf6n7sf"))))
  2411. (build-system python-build-system)
  2412. (home-page "https://github.com/NFJones/python3-midi")
  2413. (synopsis "Python MIDI API")
  2414. (description "This package provides a python API to read and write MIDI
  2415. files.")
  2416. (license license:expat)))
  2417. (define-public audio-to-midi
  2418. (package
  2419. (name "audio-to-midi")
  2420. (version "2020.7")
  2421. (source
  2422. (origin
  2423. (method git-fetch)
  2424. (uri (git-reference
  2425. (url "https://github.com/NFJones/audio-to-midi")
  2426. (commit (string-append "v" version))))
  2427. (file-name (git-file-name name version))
  2428. (sha256
  2429. (base32
  2430. "12wf17abn3psbsg2r2lk0xdnk8n5cd5rrvjlpxjnjfhd09n7qqgm"))))
  2431. (build-system python-build-system)
  2432. (propagated-inputs
  2433. `(("python-cffi" ,python-cffi)
  2434. ("python-cython" ,python-cython)
  2435. ("python-numpy" ,python-numpy)
  2436. ("python-progressbar2" ,python-progressbar2)
  2437. ("python-pycparser" ,python-pycparser)
  2438. ("python-python3-midi" ,python-python3-midi)
  2439. ("python-soundfile" ,python-soundfile)))
  2440. (native-inputs
  2441. `(("libsndfile" ,libsndfile)))
  2442. (arguments
  2443. `(#:phases
  2444. (modify-phases %standard-phases
  2445. (add-after 'unpack 'fix-versions
  2446. (lambda _
  2447. (substitute* "requirements.txt" (("==") ">=")))))))
  2448. (home-page "https://github.com/NFJones/audio-to-midi")
  2449. (synopsis "Convert audio to multichannel MIDI.")
  2450. (description "@command{audio-to-midi} converts audio files to multichannel
  2451. MIDI files. It accomplishes this by performing FFTs on all channels of the
  2452. audio data at user-specified time steps. It then separates the resulting
  2453. frequency analysis into equivalence classes which correspond to the twelve tone
  2454. scale; the volume of each class being the average volume of its constituent
  2455. frequencies. This data is then formatted to MIDI and written to disk.")
  2456. (license license:expat)))
  2457. (define-public lilv
  2458. (package
  2459. (name "lilv")
  2460. (version "0.24.10")
  2461. (source (origin
  2462. (method url-fetch)
  2463. (uri (string-append "https://download.drobilla.net/lilv-"
  2464. version ".tar.bz2"))
  2465. (sha256
  2466. (base32
  2467. "1565zy0yz46cf2f25pi46msdnzkj6bbhml9gfigdpjnsdlyskfyi"))))
  2468. (build-system waf-build-system)
  2469. (arguments
  2470. `(#:tests? #f ; no check target
  2471. #:phases
  2472. (modify-phases %standard-phases
  2473. (add-before 'configure 'set-ldflags
  2474. (lambda* (#:key outputs #:allow-other-keys)
  2475. (setenv "LDFLAGS"
  2476. (string-append "-Wl,-rpath="
  2477. (assoc-ref outputs "out") "/lib"))
  2478. #t))
  2479. (add-after 'unpack 'full-store-path-to-shared-library
  2480. (lambda* (#:key outputs #:allow-other-keys)
  2481. (with-directory-excursion "bindings/python"
  2482. (substitute* "lilv.py"
  2483. (("liblilv-0.so") (string-append (assoc-ref outputs "out")
  2484. "/lib/liblilv-0.so"))))
  2485. #t)))))
  2486. ;; Required by lilv-0.pc.
  2487. (propagated-inputs
  2488. `(("lv2" ,lv2)
  2489. ("serd" ,serd)
  2490. ("sord" ,sord)
  2491. ("sratom" ,sratom)))
  2492. (native-inputs
  2493. `(("python" ,python)
  2494. ("pkg-config" ,pkg-config)))
  2495. (home-page "https://drobilla.net/software/lilv")
  2496. (synopsis "Library to simplify use of LV2 plugins in applications")
  2497. (description
  2498. "Lilv is a C library to make the use of LV2 plugins as simple as possible
  2499. for applications. Lilv is the successor to SLV2, rewritten to be
  2500. significantly faster and have minimal dependencies.")
  2501. (license license:isc)))
  2502. (define-public lv2
  2503. (package
  2504. (name "lv2")
  2505. (version "1.18.0")
  2506. (source (origin
  2507. (method url-fetch)
  2508. (uri (string-append "https://lv2plug.in/spec/lv2-"
  2509. version ".tar.bz2"))
  2510. (sha256
  2511. (base32
  2512. "0gs7401xz23q9vajqr31aa2db8dvssgyh5zrvr4ipa6wig7yb8wh"))))
  2513. (build-system waf-build-system)
  2514. (arguments
  2515. `(#:tests? #f ; no check target
  2516. #:configure-flags '("--no-plugins")))
  2517. (inputs
  2518. ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
  2519. `(("libsndfile" ,libsndfile)))
  2520. (native-inputs
  2521. `(("pkg-config" ,pkg-config)))
  2522. (home-page "https://lv2plug.in/")
  2523. (synopsis "LV2 audio plugin specification")
  2524. (description
  2525. "LV2 is an open specification for audio plugins and host applications.
  2526. At its core, LV2 is a simple stable interface, accompanied by extensions which
  2527. add functionality to support the needs of increasingly powerful audio
  2528. software.")
  2529. (license license:isc)))
  2530. (define-public lv2-mda-piano
  2531. (package
  2532. (name "lv2-mda-piano")
  2533. (version "0.0.2")
  2534. (source (origin
  2535. (method git-fetch)
  2536. (uri (git-reference
  2537. (url "http://git.elephly.net/software/lv2-mdametapiano.git")
  2538. (commit version)))
  2539. (file-name (git-file-name name version))
  2540. (sha256
  2541. (base32
  2542. "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
  2543. (build-system gnu-build-system)
  2544. (arguments
  2545. `(#:make-flags (list
  2546. "TYPE=mdaPiano"
  2547. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  2548. #:tests? #f ; no check target
  2549. #:phases (modify-phases %standard-phases (delete 'configure))))
  2550. (inputs
  2551. `(("lv2" ,lv2)
  2552. ("lvtk" ,lvtk)))
  2553. (native-inputs
  2554. `(("pkg-config" ,pkg-config)))
  2555. (native-search-paths
  2556. (list (search-path-specification
  2557. (variable "LV2_PATH")
  2558. (files '("lib/lv2")))))
  2559. (home-page "https://elephly.net/lv2/mdapiano.html")
  2560. (synopsis "LV2 port of the mda Piano plugin")
  2561. (description "An LV2 port of the mda Piano VSTi.")
  2562. (license license:gpl3+)))
  2563. (define-public lv2-mda-epiano
  2564. (package (inherit lv2-mda-piano)
  2565. (name "lv2-mda-epiano")
  2566. (arguments
  2567. `(#:make-flags (list
  2568. "TYPE=mdaEPiano"
  2569. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  2570. #:tests? #f ; no check target
  2571. #:phases (modify-phases %standard-phases (delete 'configure))))
  2572. (home-page "https://elephly.net/lv2/mdaepiano.html")
  2573. (synopsis "LV2 port of the mda EPiano plugin")
  2574. (description "An LV2 port of the mda EPiano VSTi.")))
  2575. (define-public lvtk
  2576. (package
  2577. (name "lvtk")
  2578. (version "1.2.0")
  2579. (source (origin
  2580. (method git-fetch)
  2581. (uri (git-reference
  2582. (url "https://github.com/lvtk/lvtk")
  2583. (commit version)))
  2584. (file-name (git-file-name name version))
  2585. (sha256
  2586. (base32
  2587. "1b01zvzl70ana6l1kn8fgyr7msnn3c7x61cgw7fdpp50322352p8"))))
  2588. (build-system waf-build-system)
  2589. (arguments
  2590. `(#:tests? #f ; no check target
  2591. #:python ,python-2
  2592. #:configure-flags
  2593. (list (string-append "--boost-includes="
  2594. (assoc-ref %build-inputs "boost")
  2595. "/include"))))
  2596. (inputs
  2597. `(("boost" ,boost)
  2598. ("gtkmm" ,gtkmm-2)
  2599. ("lv2" ,lv2)))
  2600. (native-inputs
  2601. `(("pkg-config" ,pkg-config)))
  2602. (home-page "https://github.com/lvtk/lvtk")
  2603. (synopsis "C++ libraries for LV2 plugins")
  2604. (description
  2605. "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
  2606. extensions into easy to use C++ classes. It is the successor of
  2607. lv2-c++-tools.")
  2608. (license license:gpl3+)))
  2609. (define-public openal
  2610. (package
  2611. (name "openal")
  2612. (version "1.20.1")
  2613. (source (origin
  2614. (method url-fetch)
  2615. (uri (string-append
  2616. "https://openal-soft.org/openal-releases/openal-soft-"
  2617. version ".tar.bz2"))
  2618. (sha256
  2619. (base32
  2620. "0vax0b1lgd4212bpxa1rciz52d4mv3dkfvcbbhzw4cjp698v1kmn"))))
  2621. (build-system cmake-build-system)
  2622. (arguments
  2623. `(#:tests? #f ; no check target
  2624. #:phases
  2625. (modify-phases %standard-phases
  2626. (add-after
  2627. 'unpack 'use-full-library-paths
  2628. (lambda* (#:key inputs #:allow-other-keys)
  2629. (substitute* "alc/backends/pulseaudio.cpp"
  2630. (("#define PALIB \"libpulse\\.so\\.0\"")
  2631. (string-append "#define PALIB \""
  2632. (assoc-ref inputs "pulseaudio")
  2633. "/lib/libpulse.so.0"
  2634. "\"")))
  2635. (substitute* "alc/backends/alsa.cpp"
  2636. (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
  2637. (string-append "LoadLib(\""
  2638. (assoc-ref inputs "alsa-lib")
  2639. "/lib/libasound.so.2"
  2640. "\")")))
  2641. #t)))))
  2642. (inputs
  2643. `(("alsa-lib" ,alsa-lib)
  2644. ("pulseaudio" ,pulseaudio)))
  2645. (synopsis "3D audio API")
  2646. (description
  2647. "OpenAL provides capabilities for playing audio in a virtual 3D
  2648. environment. Distance attenuation, doppler shift, and directional sound
  2649. emitters are among the features handled by the API. More advanced effects,
  2650. including air absorption, occlusion, and environmental reverb, are available
  2651. through the EFX extension. It also facilitates streaming audio, multi-channel
  2652. buffers, and audio capture.")
  2653. (home-page "https://openal-soft.org/")
  2654. (license license:lgpl2.0+)))
  2655. (define-public freealut
  2656. (package
  2657. (name "freealut")
  2658. (version "1.1.0")
  2659. (source (origin
  2660. (method url-fetch)
  2661. ;; Upstream url is unclear, many systems use Fedora, there is also
  2662. ;; https://github.com/vancegroup/freealut though the status of it
  2663. ;; (official? unofficial?) is not clear.
  2664. (uri (string-append
  2665. "https://pkgs.fedoraproject.org/repo/pkgs/" name "/" name "-"
  2666. version ".tar.gz" "/e089b28a0267faabdb6c079ee173664a/" name
  2667. "-" version ".tar.gz"))
  2668. (sha256
  2669. (base32
  2670. "0kzlil6112x2429nw6mycmif8y6bxr2cwjcvp18vh6s7g63ymlb0"))))
  2671. (build-system cmake-build-system)
  2672. (arguments
  2673. `(#:tests? #f)) ; no check target
  2674. (inputs
  2675. `(("openal" ,openal)))
  2676. (synopsis "Free implementation of OpenAL's ALUT standard")
  2677. (description "freealut is the OpenAL Utility Toolkit.")
  2678. (home-page "https://kcat.strangesoft.net/openal.html")
  2679. (license license:lgpl2.0)))
  2680. (define-public patchage
  2681. (package
  2682. (name "patchage")
  2683. (version "1.0.2")
  2684. (source (origin
  2685. (method url-fetch)
  2686. (uri (string-append "https://download.drobilla.net/patchage-"
  2687. version
  2688. ".tar.bz2"))
  2689. (sha256
  2690. (base32
  2691. "0dk3fiac10m83mwss3026yz7ygc47c2iw924cwwnh2fyydc9bsy6"))))
  2692. (build-system waf-build-system)
  2693. (arguments
  2694. `(#:tests? #f ; no check target
  2695. #:python ,python-2))
  2696. (inputs
  2697. `(("alsa-lib" ,alsa-lib)
  2698. ("boost" ,boost)
  2699. ("jack" ,jack-1)
  2700. ("ganv" ,ganv)
  2701. ("glibmm" ,glibmm)
  2702. ("gtkmm" ,gtkmm-2)
  2703. ("dbus-glib" ,dbus-glib)))
  2704. (native-inputs
  2705. `(("pkg-config" ,pkg-config)))
  2706. (home-page "https://drobilla.net/software/patchage/")
  2707. (synopsis "Modular patch bay for audio and MIDI systems")
  2708. (description
  2709. "Patchage is a modular patch bay for audio and MIDI systems based on JACK
  2710. and ALSA.")
  2711. (license license:gpl3+)))
  2712. (define-public pcaudiolib
  2713. (package
  2714. (name "pcaudiolib")
  2715. (version "1.1")
  2716. (home-page "https://github.com/espeak-ng/pcaudiolib")
  2717. (source (origin
  2718. (method git-fetch)
  2719. (uri (git-reference (url home-page) (commit version)))
  2720. (file-name (git-file-name name version))
  2721. (sha256
  2722. (base32
  2723. "0c55hlqqh0m7bcb3nlgv1s4a22s5bgczr1cakjh3767rjb10khi0"))))
  2724. (build-system gnu-build-system)
  2725. (arguments
  2726. `(#:configure-flags '("--disable-static")))
  2727. (native-inputs
  2728. `(("autoconf" ,autoconf)
  2729. ("automake" ,automake)
  2730. ("libtool" ,libtool)
  2731. ("pkg-config" ,pkg-config)
  2732. ("which" ,which)))
  2733. (inputs
  2734. `(("alsa-lib" ,alsa-lib)
  2735. ("pulseaudio" ,pulseaudio)))
  2736. (synopsis "Portable C audio library")
  2737. (description
  2738. "The Portable C Audio Library (pcaudiolib) provides a C@tie{}API to
  2739. different audio devices such as ALSA or PulseAudio.")
  2740. (license (list license:gpl3+
  2741. ;; The bundled TPCircularBuffer uses a custom license.
  2742. (license:non-copyleft
  2743. "file://src/TPCircularBuffer/README.markdown")))))
  2744. (define-public qjackctl
  2745. (package
  2746. (name "qjackctl")
  2747. (version "0.9.4")
  2748. (source (origin
  2749. (method url-fetch)
  2750. (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
  2751. version "/qjackctl-" version ".tar.gz"))
  2752. (sha256
  2753. (base32
  2754. "186rg3j67rac9ds1r7gnrib2d0smgv15cmr5gwb7v83mywcp1gzy"))))
  2755. (build-system cmake-build-system)
  2756. (arguments
  2757. '(#:tests? #f)) ; no check target
  2758. (inputs
  2759. `(("jack" ,jack-1)
  2760. ("alsa-lib" ,alsa-lib)
  2761. ("portaudio" ,portaudio)
  2762. ("qtbase" ,qtbase-5)
  2763. ("qtx11extras" ,qtx11extras)))
  2764. (native-inputs
  2765. `(("pkg-config" ,pkg-config)
  2766. ("qttools" ,qttools)))
  2767. (home-page "https://qjackctl.sourceforge.io/")
  2768. (synopsis "Jack server control application")
  2769. (description "Control a Jack server. Allows you to plug various sources
  2770. into various outputs and to start, stop and configure jackd")
  2771. (license license:gpl2+)))
  2772. (define-public qjackrcd
  2773. (package
  2774. (name "qjackrcd")
  2775. (version "1.2.2")
  2776. (source (origin
  2777. (method git-fetch)
  2778. (uri (git-reference
  2779. (url "https://github.com/orouits/qjackrcd")
  2780. (commit (string-append "v" version))))
  2781. (file-name (git-file-name name version))
  2782. (sha256
  2783. (base32
  2784. "1l5iq2mkqd4gn9yr8xbh9qlpp1clcflazychl4vhdbz0bzq4c6al"))))
  2785. (build-system gnu-build-system)
  2786. (arguments
  2787. `(#:phases
  2788. (modify-phases %standard-phases
  2789. (replace 'configure
  2790. (lambda* (#:key outputs #:allow-other-keys)
  2791. (invoke "qmake"
  2792. (string-append "PREFIX="
  2793. (assoc-ref outputs "out"))))))))
  2794. (native-inputs
  2795. `(("qtbase" ,qtbase-5))) ; for qmake
  2796. (inputs
  2797. `(("jack" ,jack-1)
  2798. ("libsndfile" ,libsndfile)
  2799. ("qtbase" ,qtbase-5)))
  2800. (home-page "https://sourceforge.net/projects/qjackrcd/")
  2801. (synopsis "Stereo audio recorder for JACK")
  2802. (description "QJackRcd is a simple graphical stereo recorder for JACK
  2803. supporting silence processing for automatic pause, file splitting, and
  2804. background file post-processing.")
  2805. (license license:gpl2+)))
  2806. (define-public supercollider
  2807. (package
  2808. (name "supercollider")
  2809. (version "3.11.2")
  2810. (source (origin
  2811. (method git-fetch)
  2812. (uri (git-reference
  2813. (url "https://github.com/supercollider/supercollider")
  2814. (commit (string-append "Version-" version))
  2815. ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
  2816. (recursive? #t)))
  2817. (file-name (git-file-name name version))
  2818. (sha256
  2819. (base32
  2820. "1gi7nrmjmbnjndqkmhfrkk0jchrzvnhl3f6gp6n5wgdd4mxbgxgw"))
  2821. (modules '((guix build utils)
  2822. (ice-9 ftw)))
  2823. (snippet
  2824. ;; The build system doesn't allow us to unbundle the following
  2825. ;; libraries. hidapi is also heavily patched and upstream not
  2826. ;; actively maintained.
  2827. '(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi"
  2828. "TLSF-2.4.6" "oscpack_1_1_0" "." "..")))
  2829. (with-directory-excursion "./external_libraries"
  2830. (for-each
  2831. delete-file-recursively
  2832. (scandir "."
  2833. (lambda (x)
  2834. (and (eq? (stat:type (stat x)) 'directory)
  2835. (not (member (basename x) keep-dirs)))))))
  2836. ;; To find the Guix provided ableton-link library.
  2837. (substitute* "lang/CMakeLists.txt"
  2838. (("include\\(\\.\\./external_libraries/link/\
  2839. AbletonLinkConfig\\.cmake\\)")
  2840. "find_package(AbletonLink NAMES AbletonLink ableton-link \
  2841. link REQUIRED)"))
  2842. #t))))
  2843. (build-system cmake-build-system)
  2844. (outputs
  2845. '("out" ;core language
  2846. "ide")) ;qt ide
  2847. (arguments
  2848. `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
  2849. "-DSC_QT=ON" "-DCMAKE_BUILD_TYPE=Release"
  2850. "-DFORTIFY=ON"
  2851. ;"-DLIBSCSYNTH=ON" ; TODO: Re-enable?
  2852. "-DSC_EL=off") ;scel is packaged individually as
  2853. ;emacs-scel
  2854. #:phases
  2855. (modify-phases %standard-phases
  2856. ;; HOME must be defined otherwise supercollider throws a "ERROR:
  2857. ;; Primitive '_FileMkDir' failed." error when generating the doc.
  2858. ;; The graphical tests also hang without it.
  2859. (add-after 'unpack 'set-home-directory
  2860. (lambda _
  2861. (setenv "HOME" (getcwd))
  2862. #t))
  2863. (add-after 'unpack 'patch-scclass-dir
  2864. (lambda* (#:key outputs #:allow-other-keys)
  2865. (let* ((out (assoc-ref outputs "out"))
  2866. (scclass-dir
  2867. (string-append out
  2868. "/share/SuperCollider/SCClassLibrary")))
  2869. (substitute* "lang/LangSource/SC_LanguageConfig.cpp"
  2870. (((string-append
  2871. "SC_Filesystem::instance\\(\\)\\.getDirectory"
  2872. "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
  2873. (string-append "Path(\"" scclass-dir "\")")))
  2874. #t)))
  2875. (add-before 'build 'prepare-x
  2876. (lambda _
  2877. (system "Xvfb &")
  2878. (setenv "DISPLAY" ":0")
  2879. #t))
  2880. (add-before 'install 'install-ide
  2881. (lambda* (#:key outputs #:allow-other-keys)
  2882. (let* ((out (assoc-ref outputs "out"))
  2883. (ide (assoc-ref outputs "ide"))
  2884. (scide "editors/sc-ide/scide"))
  2885. (install-file scide
  2886. (string-append ide "/bin"))
  2887. (delete-file scide)
  2888. #t))))))
  2889. (native-inputs
  2890. `(("ableton-link" ,ableton-link)
  2891. ("pkg-config" ,pkg-config)
  2892. ("qttools" ,qttools)
  2893. ("xorg-server" ,xorg-server-for-tests)))
  2894. (inputs
  2895. `(("jack" ,jack-1)
  2896. ("libsndfile" ,libsndfile)
  2897. ("fftw" ,fftw)
  2898. ("libxt" ,libxt)
  2899. ("readline" ,readline) ;readline support for sclang's CLI
  2900. ("alsa" ,alsa-lib) ;for sclang's MIDI interface
  2901. ("eudev" ,eudev) ;for user interactions with devices
  2902. ("avahi" ,avahi) ;zeroconf service discovery support
  2903. ("icu4c" ,icu4c)
  2904. ("boost" ,boost)
  2905. ("boost-sync" ,boost-sync)
  2906. ("yaml-cpp" ,yaml-cpp)
  2907. ("qtbase" ,qtbase-5)
  2908. ("qtdeclarative" ,qtdeclarative)
  2909. ("qtsvg" ,qtsvg)
  2910. ("qtwebchannel" ,qtwebchannel)
  2911. ("qtwebsockets" ,qtwebsockets)))
  2912. (propagated-inputs ;to get native-search-path
  2913. `(("qtwebengine" ,qtwebengine)))
  2914. (home-page "https://github.com/supercollider/supercollider")
  2915. (synopsis "Synthesis engine and programming language")
  2916. (description "SuperCollider is a synthesis engine (@code{scsynth} or
  2917. @code{supernova}) and programming language (@code{sclang}). It can be used
  2918. for experimenting with sound synthesis and algorithmic composition.
  2919. SuperCollider requires jackd to be installed in your user profile and your
  2920. user must be allowed to access the realtime features of the kernel. Search
  2921. for \"realtime\" in the index of the Guix manual to learn how to achieve this
  2922. using Guix System.")
  2923. (license license:gpl2+)))
  2924. (define-public raul
  2925. (package
  2926. (name "raul")
  2927. (version "0.8.0")
  2928. (source (origin
  2929. (method url-fetch)
  2930. (uri (string-append "https://download.drobilla.net/raul-"
  2931. version ".tar.bz2"))
  2932. (sha256
  2933. (base32
  2934. "09ms40xc1x6qli6lxkwn5ibqh62nl9w7dq0b6jh1q2zvnrxwsd8b"))))
  2935. (build-system waf-build-system)
  2936. (arguments
  2937. `(#:python ,python-2
  2938. #:tests? #f)) ; no check target
  2939. (inputs
  2940. `(("glib" ,glib)
  2941. ("boost" ,boost)))
  2942. (native-inputs
  2943. `(("pkg-config" ,pkg-config)))
  2944. (home-page "https://drobilla.net/software/raul/")
  2945. (synopsis "Real-time audio utility library")
  2946. (description
  2947. "Raul (Real-time Audio Utility Library) is a C++ utility library primarily
  2948. aimed at audio/musical applications.")
  2949. (license license:gpl2+)))
  2950. (define-public raul-devel
  2951. (let ((commit "4db870b2b20b0a608ec0283139056b836c5b1624")
  2952. (revision "1"))
  2953. (package (inherit raul)
  2954. (name "raul")
  2955. (version (string-append "0.8.9-" revision "."
  2956. (string-take commit 9)))
  2957. (source (origin
  2958. (method git-fetch)
  2959. (uri (git-reference
  2960. (url "https://git.drobilla.net/raul.git")
  2961. (commit commit)))
  2962. (file-name (string-append name "-" version "-checkout"))
  2963. (sha256
  2964. (base32
  2965. "04fajrass3ymr72flx5js5vxc601ccrmx8ny8scp0rw7j0igyjdr")))))))
  2966. (define-public resample
  2967. (package
  2968. (name "resample")
  2969. (version "1.8.1")
  2970. (source (origin
  2971. (method url-fetch)
  2972. (uri (string-append "https://ccrma.stanford.edu/~jos/gz/resample-"
  2973. version
  2974. ".tar.gz"))
  2975. (sha256 (base32
  2976. "074zj8ydp05yy1hjcglfv3hkvj4cm50f9nralka1992pm6yf8yvy"))))
  2977. (build-system gnu-build-system)
  2978. (native-inputs
  2979. `(("autoconf" ,autoconf)
  2980. ("automake" ,automake)
  2981. ("pkg-config" ,pkg-config)
  2982. ("libtool" ,libtool)))
  2983. (synopsis "Sampling rate conversion and filter design utilities")
  2984. (description "This package contains the @command{resample} and
  2985. @command{windowfilter} command line utilities. The @command{resample} command
  2986. allows changing the sampling rate of a sound file, while the
  2987. @command{windowfilter} command allows designing Finite Impulse Response (FIR)
  2988. filters using the so-called @emph{window method}.")
  2989. (home-page "https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html")
  2990. (license license:lgpl2.1+)))
  2991. (define-public rubberband
  2992. (package
  2993. (name "rubberband")
  2994. (version "1.8.2")
  2995. (source (origin
  2996. (method url-fetch)
  2997. (uri
  2998. (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
  2999. version
  3000. ".tar.bz2"))
  3001. (file-name (string-append name "-" version ".tar.bz2"))
  3002. (sha256
  3003. (base32
  3004. "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
  3005. (build-system gnu-build-system)
  3006. (arguments
  3007. `(#:tests? #f ; no check target
  3008. #:phases
  3009. (modify-phases %standard-phases
  3010. (add-after 'unpack 'skip-jni-installation
  3011. ;; ‘make install’ unconditionally installs librubberband-jni.so,
  3012. ;; which is never built by ‘make all’. Skip it.
  3013. (lambda _
  3014. (substitute* "Makefile.in"
  3015. ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
  3016. #t)))))
  3017. (inputs
  3018. `(("ladspa" ,ladspa)
  3019. ("libsamplerate" ,libsamplerate)
  3020. ("vamp" ,vamp)))
  3021. (native-inputs
  3022. `(("pkg-config" ,pkg-config)))
  3023. (home-page "https://breakfastquay.com/rubberband/")
  3024. (synopsis "Audio time-stretching and pitch-shifting library")
  3025. (description
  3026. "Rubber Band is a library and utility program that permits changing the
  3027. tempo and pitch of an audio recording independently of one another.")
  3028. (license license:gpl2+)))
  3029. (define-public rtmidi
  3030. (package
  3031. (name "rtmidi")
  3032. (version "4.0.0")
  3033. (source (origin
  3034. (method url-fetch)
  3035. (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
  3036. "/release/rtmidi-" version ".tar.gz"))
  3037. (file-name (string-append "rtmidi-" version ".tar.gz"))
  3038. (sha256
  3039. (base32
  3040. "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))
  3041. (build-system gnu-build-system)
  3042. (inputs
  3043. `(("jack" ,jack-1)
  3044. ("alsa-lib" ,alsa-lib)))
  3045. (native-inputs
  3046. `(("autoconf" ,autoconf)
  3047. ("automake" ,automake)
  3048. ("libtool" ,libtool)
  3049. ("pkg-config" ,pkg-config)))
  3050. (home-page "https://www.music.mcgill.ca/~gary/rtmidi")
  3051. (synopsis "Cross-platform MIDI library for C++")
  3052. (description
  3053. "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
  3054. classes) that provide a common cross-platform API for realtime MIDI
  3055. input/output.")
  3056. (license license:expat)))
  3057. (define-public sratom
  3058. (package
  3059. (name "sratom")
  3060. (version "0.6.6")
  3061. (source (origin
  3062. (method url-fetch)
  3063. (uri (string-append "https://download.drobilla.net/sratom-"
  3064. version ".tar.bz2"))
  3065. (sha256
  3066. (base32
  3067. "178v90qvsp6lw4sqdmdz0bzyjkgwhv9m75ph1d1z8say5bv0p4gv"))))
  3068. (build-system waf-build-system)
  3069. (arguments `(#:tests? #f)) ;no check target
  3070. (propagated-inputs
  3071. ;; In Requires of sratom-0.pc.
  3072. `(("lv2" ,lv2)
  3073. ("serd" ,serd)
  3074. ("sord" ,sord)))
  3075. (native-inputs
  3076. `(("pkg-config" ,pkg-config)))
  3077. (home-page "https://drobilla.net/software/sratom/")
  3078. (synopsis "Library for serialising LV2 atoms to/from RDF")
  3079. (description
  3080. "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
  3081. the Turtle syntax.")
  3082. (license license:isc)))
  3083. (define-public suil
  3084. (package
  3085. (name "suil")
  3086. (version "0.10.8")
  3087. (source (origin
  3088. (method url-fetch)
  3089. (uri (string-append "https://download.drobilla.net/suil-"
  3090. version ".tar.bz2"))
  3091. (sha256
  3092. (base32
  3093. "0h0ghk1s0lrj4gh12r7390b0ybaw7awnj0vhchyy9ll0gvhqgkci"))))
  3094. (build-system waf-build-system)
  3095. (arguments
  3096. `(#:tests? #f)) ;no check target
  3097. (inputs
  3098. `(("lv2" ,lv2)
  3099. ("gtk+" ,gtk+-2)
  3100. ("gtk+" ,gtk+)
  3101. ("qt" ,qtbase-5)))
  3102. (native-inputs
  3103. `(("pkg-config" ,pkg-config)))
  3104. (home-page "https://drobilla.net/software/suil/")
  3105. (synopsis "Library for loading and wrapping LV2 plugin UIs")
  3106. (description
  3107. "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
  3108. Suil makes it possible to load a UI of a toolkit in a host using another
  3109. toolkit. The API is designed such that hosts do not need to explicitly
  3110. support specific toolkits – if Suil supports a particular toolkit, then UIs in
  3111. that toolkit will work in all hosts that use Suil automatically.
  3112. Suil currently supports every combination of Gtk, Qt, and X11.")
  3113. (license license:isc)))
  3114. (define-public libebur128
  3115. (package
  3116. (name "libebur128")
  3117. (version "1.2.4")
  3118. (source
  3119. (origin
  3120. (method git-fetch)
  3121. (uri (git-reference
  3122. (url "https://github.com/jiixyj/libebur128")
  3123. (commit (string-append "v" version))))
  3124. (file-name (git-file-name name version))
  3125. (sha256
  3126. (base32 "0n81rnm8dm1zmibkr2v3q79rsd609y0dbbsrbay18njcjva88p0g"))))
  3127. (build-system cmake-build-system)
  3128. (arguments
  3129. `(;; Tests require proprietary .wav files. See
  3130. ;; https://github.com/jiixyj/libebur128/issues/82.
  3131. #:tests? #f
  3132. #:configure-flags '("-DBUILD_STATIC_LIBS=OFF")))
  3133. (home-page "https://github.com/jiixyj/libebur128")
  3134. (synopsis "Library implementing the EBU R 128 loudness standard")
  3135. (description
  3136. "@code{libebur128} is a C library that implements the EBU R 128 standard
  3137. for loudness normalisation.")
  3138. (license license:expat)))
  3139. (define-public timidity++
  3140. (package
  3141. (name "timidity++")
  3142. (version "2.15.0")
  3143. (source (origin
  3144. (method url-fetch)
  3145. (uri (string-append "mirror://sourceforge/timidity/TiMidity++"
  3146. "/TiMidity++-" version
  3147. "/TiMidity++-" version ".tar.bz2"))
  3148. (sha256
  3149. (base32
  3150. "1xf8n6dqzvi6nr2asags12ijbj1lwk1hgl3s27vm2szib8ww07qn"))))
  3151. (build-system gnu-build-system)
  3152. (arguments
  3153. '(#:configure-flags
  3154. (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
  3155. "--enable-ncurses"
  3156. "--enable-server"
  3157. "--enable-alsaseq"
  3158. (string-append "--with-default-path="
  3159. (assoc-ref %outputs "out") "/etc/timidity"))
  3160. #:phases
  3161. (modify-phases %standard-phases
  3162. (add-after 'install 'install-config
  3163. (lambda _
  3164. (let ((out (string-append (assoc-ref %outputs "out")
  3165. "/etc/timidity")))
  3166. (mkdir-p out)
  3167. (call-with-output-file
  3168. (string-append out "/timidity.cfg")
  3169. (lambda (port)
  3170. (format port (string-append "source "
  3171. (assoc-ref %build-inputs "freepats")
  3172. "/share/freepats/freepats.cfg")))))
  3173. #t)))))
  3174. (inputs
  3175. `(("alsa-lib" ,alsa-lib)
  3176. ("ao" ,ao)
  3177. ("flac" ,flac)
  3178. ("jack" ,jack-1)
  3179. ("libogg" ,libogg)
  3180. ("libvorbis" ,libvorbis)
  3181. ("speex" ,speex)
  3182. ("ncurses" ,ncurses)
  3183. ("freepats" ,freepats)))
  3184. (native-inputs
  3185. `(("pkg-config" ,pkg-config)))
  3186. (home-page "http://timidity.sourceforge.net/")
  3187. (synopsis "Software synthesizer for playing MIDI files")
  3188. (description
  3189. "TiMidity++ is a software synthesizer. It can play MIDI files by
  3190. converting them into PCM waveform data; give it a MIDI data along with digital
  3191. instrument data files, then it synthesizes them in real-time, and plays. It
  3192. can not only play sounds, but also can save the generated waveforms into hard
  3193. disks as various audio file formats.")
  3194. (license license:gpl2+)))
  3195. (define-public vamp
  3196. (package
  3197. (name "vamp")
  3198. (version "2.6")
  3199. (source (origin
  3200. (method url-fetch)
  3201. (uri (string-append
  3202. "https://code.soundsoftware.ac.uk"
  3203. "/attachments/download/1520/vamp-plugin-sdk-"
  3204. version ".tar.gz"))
  3205. (sha256
  3206. (base32
  3207. "0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
  3208. (build-system gnu-build-system)
  3209. (arguments
  3210. `(#:tests? #f ; no check target
  3211. #:phases
  3212. (modify-phases %standard-phases
  3213. (add-after 'install 'remove-libvamp-hostsdk.la
  3214. (lambda* (#:key outputs #:allow-other-keys)
  3215. ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
  3216. (for-each delete-file
  3217. (let ((out (assoc-ref outputs "out")))
  3218. (list (string-append out "/lib/libvamp-sdk.la")
  3219. (string-append out "/lib/libvamp-hostsdk.la"))))
  3220. #t)))))
  3221. (inputs
  3222. `(("libsndfile" ,libsndfile)))
  3223. (native-inputs
  3224. `(("pkg-config" ,pkg-config)))
  3225. (home-page "https://vamp-plugins.org")
  3226. (synopsis "Modular and extensible audio processing system")
  3227. (description
  3228. "Vamp is an audio processing plugin system for plugins that extract
  3229. descriptive information from audio data — typically referred to as audio
  3230. analysis plugins or audio feature extraction plugins.")
  3231. (license
  3232. (license:x11-style
  3233. "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
  3234. (define-public libsbsms
  3235. (package
  3236. (name "libsbsms")
  3237. (version "2.0.2")
  3238. (source
  3239. (origin
  3240. (method url-fetch)
  3241. (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
  3242. "/libsbsms-" version ".tar.gz"))
  3243. (sha256
  3244. (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
  3245. (build-system gnu-build-system)
  3246. (native-inputs `(("automake" ,automake)))
  3247. (arguments
  3248. `(#:configure-flags
  3249. ;; Disable the use of SSE unless on x86_64.
  3250. ,(if (not (string-prefix? "x86_64" (or (%current-target-system)
  3251. (%current-system))))
  3252. ''("--disable-sse")
  3253. ''())
  3254. #:phases
  3255. (modify-phases %standard-phases
  3256. (add-after
  3257. 'unpack 'fix-ar-lib-path
  3258. (lambda* (#:key inputs #:allow-other-keys)
  3259. ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
  3260. (delete-file "ar-lib")
  3261. (symlink
  3262. (search-input-file inputs
  3263. (string-append "/share/automake-"
  3264. ,(package-version automake)
  3265. "/ar-lib"))
  3266. "ar-lib")
  3267. #t)))))
  3268. (home-page "http://sbsms.sourceforge.net/")
  3269. (synopsis "Library for time stretching and pitch scaling of audio")
  3270. (description
  3271. "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
  3272. stretching and pitch scaling of audio. This package contains the library.")
  3273. ;; There is no explicit declaration of a license, but a COPYING file
  3274. ;; containing gpl2.
  3275. (license license:gpl2)))
  3276. (define-public wavpack
  3277. (package
  3278. (name "wavpack")
  3279. (version "5.4.0")
  3280. (source
  3281. (origin
  3282. (method url-fetch)
  3283. (uri (string-append "https://github.com/dbry/WavPack/releases/download/"
  3284. version "/wavpack-" version ".tar.xz"))
  3285. (sha256
  3286. (base32 "0ycbqarw25x7208jilh86vwwiqklr7f617jps9mllqc659mnmpjb"))))
  3287. (build-system gnu-build-system)
  3288. (arguments
  3289. '(#:configure-flags
  3290. (list "--disable-static"
  3291. "--enable-tests")
  3292. #:phases
  3293. (modify-phases %standard-phases
  3294. (replace 'check
  3295. (lambda* (#:key tests? #:allow-other-keys)
  3296. (when tests?
  3297. (invoke "./cli/wvtest" "--default" "--short"))
  3298. #t)))))
  3299. (home-page "https://www.wavpack.com/")
  3300. (synopsis "Hybrid lossless audio codec")
  3301. (description
  3302. "WavPack is an audio compression format with lossless, lossy and hybrid
  3303. compression modes. This package contains command-line programs and library to
  3304. encode and decode wavpack files.")
  3305. (license license:bsd-3)))
  3306. (define-public libmodplug
  3307. (package
  3308. (name "libmodplug")
  3309. (version "0.8.9.0")
  3310. (source (origin
  3311. (method url-fetch)
  3312. (uri (string-append
  3313. "mirror://sourceforge/modplug-xmms/"
  3314. name "/" version "/" name "-" version ".tar.gz"))
  3315. (sha256
  3316. (base32
  3317. "1pnri98a603xk47smnxr551svbmgbzcw018mq1k6srbrq6kaaz25"))))
  3318. (build-system gnu-build-system)
  3319. (home-page "http://modplug-xmms.sourceforge.net/")
  3320. (synopsis "Mod file playing library")
  3321. (description
  3322. "Libmodplug renders mod music files as raw audio data, for playing or
  3323. conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are
  3324. supported. Optional features include high-quality resampling, bass expansion,
  3325. surround and reverb.")
  3326. (license license:public-domain)))
  3327. (define-public libxmp
  3328. (package
  3329. (name "libxmp")
  3330. (version "4.4.1")
  3331. (source (origin
  3332. (method url-fetch)
  3333. (uri (string-append "mirror://sourceforge/xmp/libxmp/" version "/"
  3334. name "-" version ".tar.gz"))
  3335. (sha256
  3336. (base32
  3337. "1kycz4jsyvmf7ny9227b497wc7y5ligydi6fvvldmkf8hk63ad9m"))))
  3338. (build-system gnu-build-system)
  3339. (home-page "http://xmp.sourceforge.net/")
  3340. (synopsis "Module player library")
  3341. (description
  3342. "Libxmp is a library that renders module files to PCM data. It supports
  3343. over 90 mainstream and obscure module formats including Protracker (MOD),
  3344. Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).")
  3345. (license license:lgpl2.1+)))
  3346. (define-public xmp
  3347. (package
  3348. (name "xmp")
  3349. (version "4.1.0")
  3350. (source (origin
  3351. (method url-fetch)
  3352. (uri (string-append "mirror://sourceforge/xmp/xmp/" version "/"
  3353. name "-" version ".tar.gz"))
  3354. (sha256
  3355. (base32
  3356. "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x"))))
  3357. (build-system gnu-build-system)
  3358. (native-inputs
  3359. `(("pkg-config" ,pkg-config)))
  3360. (inputs
  3361. `(("libxmp" ,libxmp)
  3362. ("pulseaudio" ,pulseaudio)))
  3363. (home-page "http://xmp.sourceforge.net/")
  3364. (synopsis "Extended module player")
  3365. (description
  3366. "Xmp is a portable module player that plays over 90 mainstream and
  3367. obscure module formats, including Protracker MOD, Fasttracker II XM, Scream
  3368. Tracker 3 S3M and Impulse Tracker IT files.")
  3369. (license license:gpl2+)))
  3370. (define-public soundtouch
  3371. (package
  3372. (name "soundtouch")
  3373. (version "2.2")
  3374. (source
  3375. (origin
  3376. (method git-fetch)
  3377. (uri (git-reference
  3378. (url "https://gitlab.com/soundtouch/soundtouch.git")
  3379. (commit version)))
  3380. (file-name (git-file-name name version))
  3381. (sha256
  3382. (base32 "12i6yg8vvqwyk412lxl2krbfby6hnxld8qxy0k4m5xp4g94jiq4p"))))
  3383. (build-system gnu-build-system)
  3384. (native-inputs
  3385. `(("autoconf" ,autoconf)
  3386. ("automake" ,automake)
  3387. ("libtool" ,libtool)
  3388. ("file" ,file)))
  3389. (home-page "https://www.surina.net/soundtouch/")
  3390. (synopsis
  3391. "Audio processing library for changing tempo, pitch and playback rate")
  3392. (description
  3393. "SoundTouch is an audio processing library for changing the tempo, pitch
  3394. and playback rates of audio streams or audio files. It is intended for
  3395. application developers writing sound processing tools that require tempo/pitch
  3396. control functionality, or just for playing around with the sound effects.")
  3397. (license license:lgpl2.1+)))
  3398. (define-public sox
  3399. (package
  3400. (name "sox")
  3401. (version "14.4.2")
  3402. (source (origin
  3403. (method url-fetch)
  3404. (uri (string-append "mirror://sourceforge/sox/sox/" version "/"
  3405. name "-" version ".tar.bz2"))
  3406. (sha256
  3407. (base32
  3408. "170lx90r1nlnb2j6lg00524iwvqy72p48vii4xc5prrh8dnrb9l1"))))
  3409. (build-system gnu-build-system)
  3410. (arguments
  3411. '(#:configure-flags
  3412. ;; The upstream asks to identify the distribution to diagnose SoX
  3413. ;; bug reports.
  3414. '("--with-distro=Guix System Distribution")))
  3415. (native-inputs
  3416. `(("pkg-config" ,pkg-config)))
  3417. (inputs
  3418. `(("alsa-lib" ,alsa-lib)
  3419. ("ao" ,ao)
  3420. ("flac" ,flac)
  3421. ("lame" ,lame)
  3422. ("libid3tag" ,libid3tag)
  3423. ("libltdl" ,libltdl)
  3424. ("libmad" ,libmad)
  3425. ("libpng" ,libpng)
  3426. ("libvorbis" ,libvorbis)
  3427. ("pulseaudio" ,pulseaudio)))
  3428. (home-page "http://sox.sourceforge.net")
  3429. (synopsis "Sound processing utility")
  3430. (description
  3431. "SoX (Sound eXchange) is a command line utility that can convert
  3432. various formats of computer audio files to other formats. It can also
  3433. apply various effects to these sound files, and, as an added bonus, SoX
  3434. can play and record audio files.")
  3435. ;; sox.c is distributed under GPL, while the files that make up
  3436. ;; libsox are licensed under LGPL.
  3437. (license (list license:gpl2+ license:lgpl2.1+))))
  3438. (define-public soxr
  3439. (package
  3440. (name "soxr")
  3441. (version "0.1.3")
  3442. (source
  3443. (origin
  3444. (method url-fetch)
  3445. (uri
  3446. (string-append "mirror://sourceforge/soxr/soxr-" version
  3447. "-Source.tar.xz"))
  3448. (sha256
  3449. (base32 "12aql6svkplxq5fjycar18863hcq84c5kx8g6f4rj0lcvigw24di"))))
  3450. (build-system cmake-build-system)
  3451. (arguments '(#:tests? #f)) ;no 'check' target
  3452. (home-page "https://sourceforge.net/p/soxr/wiki/Home/")
  3453. (synopsis "One-dimensional sample-rate conversion library")
  3454. (description
  3455. "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
  3456. conversion. It may be used, for example, to resample PCM-encoded audio.")
  3457. (license license:lgpl2.1+)))
  3458. (define-public twolame
  3459. (package
  3460. (name "twolame")
  3461. (version "0.4.0")
  3462. (source
  3463. (origin
  3464. (method url-fetch)
  3465. (uri (string-append "mirror://sourceforge/twolame/twolame/" version
  3466. "/twolame-" version ".tar.gz"))
  3467. (sha256
  3468. (base32 "0zf8sxqb02w07ah55b1y7ab643zmpbhn62spa9pqra0rc17l4dfc"))))
  3469. (build-system gnu-build-system)
  3470. (inputs
  3471. `(("libsndfile" ,libsndfile)))
  3472. (native-inputs
  3473. `(("perl" ,perl)
  3474. ("which" ,which))) ;used in tests/test.pl
  3475. (home-page "https://www.twolame.org/")
  3476. (synopsis "MPEG Audio Layer 2 (MP2) encoder")
  3477. (description
  3478. "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
  3479. tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
  3480. portions of LAME.")
  3481. (license license:lgpl2.1+)))
  3482. (define-public portaudio
  3483. (package
  3484. (name "portaudio")
  3485. (version "190600.20161030")
  3486. (source
  3487. (origin
  3488. (method url-fetch)
  3489. (uri (string-append
  3490. "http://www.portaudio.com/archives/pa_stable_v"
  3491. (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
  3492. ".tgz"))
  3493. (sha256
  3494. (base32 "04qmin6nj144b8qb9kkd9a52xfvm0qdgm8bg8jbl7s3frmyiv8pm"))
  3495. (patches (search-patches "portaudio-audacity-compat.patch"))))
  3496. (build-system gnu-build-system)
  3497. (inputs
  3498. ;; TODO: Add ASIHPI.
  3499. `(("alsa-lib" ,alsa-lib)
  3500. ("jack" ,jack-1)))
  3501. ;; Autoreconf is necessary because the audacity-compat patch modifies .in
  3502. ;; files.
  3503. (native-inputs
  3504. `(("autoconf" ,autoconf)
  3505. ("automake" ,automake)
  3506. ("libtool" ,libtool)
  3507. ("pkg-config" ,pkg-config)))
  3508. (arguments
  3509. '(#:tests? #f ;no 'check' target
  3510. #:parallel-build? #f ;fails on some systems
  3511. #:configure-flags '("--with-pic"
  3512. "--enable-cxx"
  3513. ;; XXX: The following prevents a build error
  3514. ;; because of missing depcomp when C++ bindings are
  3515. ;; requested.
  3516. "--disable-dependency-tracking")
  3517. #:phases
  3518. (modify-phases %standard-phases
  3519. ;; This is needed for linking the static libraries
  3520. (add-after 'unpack 'build-only-position-independent-code
  3521. (lambda _
  3522. (substitute* "configure.in"
  3523. (("AC_PROG_LIBTOOL" m)
  3524. (string-append m "\nAM_PROG_AR\nLT_INIT([pic-only])")))
  3525. (delete-file "configure")
  3526. #t))
  3527. ;; Some headers are not installed by default, but are needed by
  3528. ;; packages like Kaldi.
  3529. (add-after 'install 'install-missing-headers
  3530. (lambda* (#:key outputs #:allow-other-keys)
  3531. (install-file "src/common/pa_ringbuffer.h"
  3532. (string-append (assoc-ref outputs "out") "/include"))
  3533. #t)))))
  3534. (home-page "http://www.portaudio.com/")
  3535. (synopsis "Audio I/O library")
  3536. (description
  3537. "PortAudio is a portable C/C++ audio I/O library providing a simple API
  3538. to record and/or play sound using a callback function or a blocking read/write
  3539. interface.")
  3540. (license license:expat)))
  3541. (define-public qsynth
  3542. (package
  3543. (name "qsynth")
  3544. (version "0.5.7")
  3545. (source
  3546. (origin
  3547. (method url-fetch)
  3548. (uri (list
  3549. (string-append "mirror://sourceforge/qsynth/qsynth/" version
  3550. "/qsynth-" version ".tar.gz")
  3551. (string-append "mirror://sourceforge/qsynth/qsynth (attic)"
  3552. "/qsynth-" version ".tar.gz")))
  3553. (sha256
  3554. (base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
  3555. (build-system gnu-build-system)
  3556. (arguments
  3557. `(#:tests? #f)) ; no "check" phase
  3558. (native-inputs
  3559. `(("qttools" ,qttools)
  3560. ("pkg-config" ,pkg-config)))
  3561. (inputs
  3562. `(("fluidsynth" ,fluidsynth)
  3563. ("qtbase" ,qtbase-5)
  3564. ("qtx11extras" ,qtx11extras)))
  3565. (home-page "https://qsynth.sourceforge.io")
  3566. (synopsis "Graphical user interface for FluidSynth")
  3567. (description
  3568. "Qsynth is a GUI front-end application for the FluidSynth SoundFont
  3569. synthesizer written in C++.")
  3570. (license license:gpl2+)))
  3571. (define-public rsound
  3572. (package
  3573. (name "rsound")
  3574. (version "1.1")
  3575. (source
  3576. (origin
  3577. (method git-fetch)
  3578. (uri (git-reference
  3579. (url "https://github.com/Themaister/RSound")
  3580. (commit (string-append "v" version))))
  3581. (file-name (git-file-name name version))
  3582. (sha256
  3583. (base32 "0gspmr3klwnq98h17p5hc6ifygya4p80g4g8r7a1qavm3mv19waf"))))
  3584. (build-system gnu-build-system)
  3585. (inputs
  3586. `(("alsa-lib" ,alsa-lib)
  3587. ("jack" ,jack-1)
  3588. ("ao" ,ao)
  3589. ("libsamplerate" ,libsamplerate)
  3590. ("openal" ,openal)
  3591. ("portaudio" ,portaudio)
  3592. ("pulseaudio" ,pulseaudio)))
  3593. (arguments
  3594. '(#:phases
  3595. (modify-phases %standard-phases
  3596. (replace 'configure
  3597. (lambda* (#:key outputs #:allow-other-keys)
  3598. (setenv "CC" "gcc")
  3599. (invoke "./configure"
  3600. (string-append "--prefix=" (assoc-ref outputs "out"))))))
  3601. ;; No 'check' target.
  3602. #:tests? #f))
  3603. (home-page "https://themaister.net/rsound.html")
  3604. (synopsis "Networked audio system")
  3605. (description
  3606. "RSound allows you to send audio from an application and transfer it
  3607. directly to a different computer on your LAN network. It is an audio daemon
  3608. with a much different focus than most other audio daemons.")
  3609. (license license:gpl3+)))
  3610. (define-public xjackfreak
  3611. (package
  3612. (name "xjackfreak")
  3613. (version "1.0")
  3614. (source (origin
  3615. (method git-fetch)
  3616. (uri (git-reference
  3617. (url "https://github.com/johnhldavis/xjackfreak")
  3618. (commit (string-append "v" version))))
  3619. (file-name (git-file-name name version))
  3620. (sha256
  3621. (base32
  3622. "18c546qidbrj0f5wfiq5llii2192xpln0ab3r4vpr7i3wybxqjfz"))))
  3623. (build-system gnu-build-system)
  3624. (arguments
  3625. `(#:make-flags
  3626. (list (string-append "docdir=" (assoc-ref %outputs "out")
  3627. "/share/doc/xjackfreak"))))
  3628. (inputs
  3629. `(("jack" ,jack-1)
  3630. ("libx11" ,libx11)
  3631. ("libxt" ,libxt)
  3632. ("libxext" ,libxext)))
  3633. (native-inputs
  3634. `(("pkg-config" ,pkg-config)))
  3635. (home-page "https://github.com/johnhldavis/xjackfreak")
  3636. (synopsis "JACK audio frequency analyzer and display")
  3637. (description
  3638. "XJackFreak is an audio analysis and equalizing tool for the Jack Audio
  3639. Connection Kit. It can display the FFT of any input, modify it and output the
  3640. result.")
  3641. (license license:gpl3+)))
  3642. (define-public zita-convolver
  3643. (package
  3644. (name "zita-convolver")
  3645. (version "4.0.3")
  3646. (source (origin
  3647. (method url-fetch)
  3648. (uri (string-append
  3649. "http://kokkinizita.linuxaudio.org"
  3650. "/linuxaudio/downloads/zita-convolver-"
  3651. version ".tar.bz2"))
  3652. (snippet
  3653. ;; Don't optimize for a specific processor architecture.
  3654. '(begin
  3655. (substitute* "source/Makefile"
  3656. (("^CXXFLAGS \\+= -march=native") ""))
  3657. #t))
  3658. (modules '((guix build utils)))
  3659. (sha256
  3660. (base32
  3661. "0prji66p86z2bzminywkwchr5bfgxcg2i8y803pydd1hzf2198cs"))))
  3662. (build-system gnu-build-system)
  3663. (arguments
  3664. `(#:tests? #f ; no "check" target
  3665. #:make-flags
  3666. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3667. (string-append "SUFFIX="))
  3668. #:phases
  3669. (modify-phases %standard-phases
  3670. (add-after 'unpack 'patch-makefile-and-enter-directory
  3671. (lambda _
  3672. (substitute* "source/Makefile"
  3673. (("ldconfig") "true")
  3674. (("^LIBDIR =.*") "LIBDIR = lib\n"))
  3675. (chdir "source")
  3676. #t))
  3677. (add-after 'install 'install-symlink
  3678. (lambda _
  3679. (symlink "libzita-convolver.so"
  3680. (string-append (assoc-ref %outputs "out")
  3681. "/lib/libzita-convolver.so.4"))
  3682. #t))
  3683. ;; no configure script
  3684. (delete 'configure))))
  3685. (inputs `(("fftwf" ,fftwf)))
  3686. (home-page "https://kokkinizita.linuxaudio.org")
  3687. (synopsis "Fast, partitioned convolution engine library")
  3688. (description
  3689. "Zita convolver is a C++ library providing a real-time convolution
  3690. engine.")
  3691. (license license:gpl3+)))
  3692. (define-public zita-resampler
  3693. (package
  3694. (name "zita-resampler")
  3695. (version "1.6.2")
  3696. (source (origin
  3697. (method url-fetch)
  3698. (uri (string-append
  3699. "http://kokkinizita.linuxaudio.org"
  3700. "/linuxaudio/downloads/zita-resampler-"
  3701. version ".tar.bz2"))
  3702. (snippet
  3703. ;; Don't optimize for a specific processor architecture.
  3704. '(begin
  3705. (substitute* '("apps/Makefile" "source/Makefile")
  3706. (("^CXXFLAGS \\+= -march=native") ""))
  3707. #t))
  3708. (modules '((guix build utils)))
  3709. (sha256
  3710. (base32
  3711. "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3"))))
  3712. (build-system gnu-build-system)
  3713. (arguments
  3714. `(#:tests? #f ; no "check" target
  3715. #:make-flags
  3716. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3717. (string-append "SUFFIX="))
  3718. #:phases
  3719. (modify-phases %standard-phases
  3720. (add-after
  3721. 'unpack 'patch-makefile-and-enter-directory
  3722. (lambda _
  3723. (substitute* "source/Makefile"
  3724. (("ldconfig") "true")
  3725. (("^LIBDIR =.*") "LIBDIR = lib\n"))
  3726. (chdir "source")
  3727. #t))
  3728. (add-after
  3729. 'install 'install-symlink
  3730. (lambda _
  3731. (symlink "libzita-resampler.so"
  3732. (string-append (assoc-ref %outputs "out")
  3733. "/lib/libzita-resampler.so.1"))
  3734. #t))
  3735. ;; no configure script
  3736. (delete 'configure))))
  3737. (home-page "https://kokkinizita.linuxaudio.org/linuxaudio/zita-resampler/resampler.html")
  3738. (synopsis "C++ library for resampling audio signals")
  3739. (description
  3740. "Libzita-resampler is a C++ library for resampling audio signals. It is
  3741. designed to be used within a real-time processing context, to be fast, and to
  3742. provide high-quality sample rate conversion.")
  3743. (license license:gpl3+)))
  3744. (define-public zita-alsa-pcmi
  3745. (package
  3746. (name "zita-alsa-pcmi")
  3747. (version "0.3.2")
  3748. (source (origin
  3749. (method url-fetch)
  3750. (uri (string-append
  3751. "http://kokkinizita.linuxaudio.org"
  3752. "/linuxaudio/downloads/zita-alsa-pcmi-"
  3753. version ".tar.bz2"))
  3754. (sha256
  3755. (base32
  3756. "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
  3757. (build-system gnu-build-system)
  3758. (arguments
  3759. `(#:tests? #f ; no "check" target
  3760. #:make-flags
  3761. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3762. (string-append "SUFFIX="))
  3763. #:phases
  3764. (modify-phases %standard-phases
  3765. (add-after 'unpack 'patch-makefile-and-enter-directory
  3766. (lambda _
  3767. (substitute* "source/Makefile"
  3768. (("ldconfig") "true")
  3769. (("^LIBDIR =.*") "LIBDIR = lib\n"))
  3770. (chdir "source")
  3771. #t))
  3772. (add-after 'install 'install-symlink
  3773. (lambda _
  3774. (symlink "libzita-alsa-pcmi.so"
  3775. (string-append (assoc-ref %outputs "out")
  3776. "/lib/libzita-alsa-pcmi.so.0"))
  3777. #t))
  3778. ;; no configure script
  3779. (delete 'configure))))
  3780. (inputs
  3781. `(("alsa-lib" ,alsa-lib)
  3782. ("fftw" ,fftw)))
  3783. (home-page "https://kokkinizita.linuxaudio.org")
  3784. (synopsis "C++ wrapper around the ALSA API")
  3785. (description
  3786. "Zita-alsa-pcmi is a C++ wrapper around the ALSA API. It provides easy
  3787. access to ALSA PCM devices, taking care of the many functions required to
  3788. open, initialise and use a hw: device in mmap mode, and providing floating
  3789. point audio data.")
  3790. (license license:gpl3+)))
  3791. (define-public cuetools
  3792. (package
  3793. (name "cuetools")
  3794. (version "1.4.1")
  3795. (source (origin
  3796. (method git-fetch)
  3797. (uri (git-reference
  3798. (url "https://github.com/svend/cuetools")
  3799. (commit version)))
  3800. (file-name (git-file-name name version))
  3801. (sha256
  3802. (base32
  3803. "02ksv1ahf1v4cr2xbclsfv5x17m9ivzbssb5r8xjm97yh8a7spa3"))))
  3804. (build-system gnu-build-system)
  3805. ;; The source checkout is not bootstrapped.
  3806. (native-inputs
  3807. `(("autoconf" ,autoconf)
  3808. ("automake" ,automake)
  3809. ("flex" ,flex)
  3810. ("bison" ,bison)))
  3811. (synopsis "Cue and toc file parsers and utilities")
  3812. (description "Cuetools is a set of programs that are useful for manipulating
  3813. and using CUE sheet (cue) files and Table of Contents (toc) files. CUE and TOC
  3814. files are a way to represent the layout of a data or audio CD in a
  3815. machine-readable ASCII format.")
  3816. (home-page "https://github.com/svend/cuetools")
  3817. (license license:gpl2+)))
  3818. (define-public shntool
  3819. (package
  3820. (name "shntool")
  3821. (version "3.0.10")
  3822. (source (origin
  3823. (method url-fetch)
  3824. (uri (list
  3825. (string-append "http://etree.org/shnutils/shntool/dist/src/"
  3826. "shntool-" version ".tar.gz")
  3827. (string-append "mirror://debian/pool/main/s/shntool/shntool_"
  3828. version ".orig.tar.gz")))
  3829. (sha256
  3830. (base32
  3831. "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"))))
  3832. (build-system gnu-build-system)
  3833. (synopsis "WAVE audio data processing tool")
  3834. (description "shntool is a multi-purpose WAVE data processing and reporting
  3835. utility. File formats are abstracted from its core, so it can process any file
  3836. that contains WAVE data, compressed or not---provided there exists a format
  3837. module to handle that particular file type. It can also generate CUE files, and
  3838. use them split WAVE data into multiple files.")
  3839. (home-page "http://etree.org/shnutils/shntool/")
  3840. ;; 'install-sh' bears the x11 license
  3841. (license (list license:gpl2+ license:x11))))
  3842. (define-public dcadec
  3843. (package
  3844. (name "dcadec")
  3845. (version "0.2.0")
  3846. (source (origin
  3847. (method git-fetch)
  3848. (uri (git-reference
  3849. (url "https://github.com/foo86/dcadec")
  3850. (commit (string-append "v" version))))
  3851. (file-name (git-file-name name version))
  3852. (sha256
  3853. (base32
  3854. "07nd0ajizrp1w02bsyfcv18431r8m8rq8gjfmz9wmckpg7cxj2hs"))))
  3855. (build-system gnu-build-system)
  3856. (arguments
  3857. ;; Test files are missing: https://github.com/foo86/dcadec/issues/53
  3858. `(#:tests? #f
  3859. #:make-flags
  3860. (list (string-append "CC=" ,(cc-for-target))
  3861. ;; Build shared library.
  3862. "CONFIG_SHARED=1"
  3863. (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3864. ;; Set proper runpath.
  3865. (string-append "LDFLAGS=-Wl,-rpath="
  3866. (assoc-ref %outputs "out")
  3867. "/lib"))
  3868. #:phases
  3869. (modify-phases %standard-phases
  3870. ;; No configure script, just a hand-written Makefile.
  3871. (delete 'configure))))
  3872. (synopsis "DTS Coherent Acoustics decoder")
  3873. (description "Dcadec is a DTS Coherent Acoustics surround sound decoder
  3874. with support for HD extensions.")
  3875. (home-page "https://github.com/foo86/dcadec")
  3876. (license license:lgpl2.1+)))
  3877. (define-public bs1770gain
  3878. (package
  3879. (name "bs1770gain")
  3880. (version "0.7.0")
  3881. (home-page "https://manpages.debian.org/sid/bs1770gain/bs1770gain.1.en.html")
  3882. (source
  3883. (origin
  3884. (method url-fetch)
  3885. (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
  3886. version "/bs1770gain-" version ".tar.gz"))
  3887. (sha256
  3888. (base32 "0a2dcaxvxy5m3a5sb1lhplsymvz3ypaiidc5xn9qy01h53zvyvkp"))
  3889. (modules '((guix build utils)))
  3890. (snippet
  3891. `(begin
  3892. ;; XXX
  3893. (substitute* (find-files "." "\\.[ch]$")
  3894. (("^ \\* N..o.*") ""))
  3895. (substitute* "libbg/bgx.c"
  3896. (("#define BG.* ") "#define BS ")
  3897. (("BG.*NO?.*N.*S.*E.*N.*SE?") "NO")
  3898. (("\"( #|N).*\"") "\"\""))
  3899. (substitute* (list "config.h"
  3900. "configure.ac"
  3901. "configure")
  3902. (("https?://bs1770gain[^/]*/")
  3903. ,home-page))
  3904. #t))))
  3905. (build-system gnu-build-system)
  3906. (inputs `(("ffmpeg" ,ffmpeg)
  3907. ("sox" ,sox)))
  3908. (synopsis "Tool to adjust loudness of media files")
  3909. (description
  3910. "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
  3911. flavors EBU R128, ATSC A/85, and ReplayGain 2.0. It helps normalizing the
  3912. loudness of audio and video files to the same level.")
  3913. (license license:gpl2+)))
  3914. (define-public filteraudio
  3915. (let ((revision "1")
  3916. (commit "2fc669581e2a0ff87fba8de85861b49133306094"))
  3917. (package
  3918. (name "filteraudio")
  3919. (version (string-append "0.0.0-" revision "."
  3920. (string-take commit 7)))
  3921. (source
  3922. (origin
  3923. (method git-fetch)
  3924. (uri (git-reference
  3925. (url "https://github.com/irungentoo/filter_audio")
  3926. (commit commit)))
  3927. (file-name (string-append name "-" version "-checkout"))
  3928. (sha256
  3929. (base32
  3930. "0hbb290n3wb23f2k692a6bhc23nnqmxqi9sc9j15pnya8wifw64g"))))
  3931. (build-system gnu-build-system)
  3932. (arguments
  3933. `(#:make-flags (list (string-append "PREFIX=" %output)
  3934. (string-append "CC=" ,(cc-for-target)))
  3935. #:tests? #f ; No tests
  3936. #:phases
  3937. (modify-phases %standard-phases
  3938. ;; No configure script
  3939. (delete 'configure))))
  3940. (synopsis "Lightweight audio filtering library")
  3941. (description "An easy to use audio filtering library made from webrtc
  3942. code, used in @code{libtoxcore}.")
  3943. (home-page "https://github.com/irungentoo/filter_audio")
  3944. (license license:bsd-3))))
  3945. (define-public gsm
  3946. (package
  3947. (name "gsm")
  3948. (version "1.0.19")
  3949. (source
  3950. (origin
  3951. (method url-fetch)
  3952. (uri
  3953. (string-append "http://www.quut.com/" name "/" name
  3954. "-" version ".tar.gz"))
  3955. (sha256
  3956. (base32
  3957. "1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9"))))
  3958. (build-system gnu-build-system)
  3959. (arguments
  3960. `(#:test-target "tst"
  3961. #:make-flags (list (string-append "INSTALL_ROOT=" %output))
  3962. #:phases
  3963. (modify-phases %standard-phases
  3964. (add-after 'unpack 'add-fpic-ccflag
  3965. (lambda _
  3966. ;; The -fPIC compiler option is needed when building
  3967. ;; mediastreamer.
  3968. (substitute* "Makefile"
  3969. (("^CCFLAGS.*" all)
  3970. (string-append all "CCFLAGS += -fPIC\n")))
  3971. #t))
  3972. (add-before 'install 'pre-install
  3973. (lambda _
  3974. (let ((out (assoc-ref %outputs "out")))
  3975. (mkdir-p (string-append out "/inc"))
  3976. (mkdir-p (string-append out "/man"))
  3977. (mkdir-p (string-append out "/man/man1"))
  3978. (mkdir-p (string-append out "/man/man3"))
  3979. (mkdir-p (string-append out "/bin"))
  3980. (mkdir-p (string-append out "/lib")))
  3981. #t))
  3982. (add-after 'install 'post-install
  3983. (lambda _
  3984. (let ((out (assoc-ref %outputs "out")))
  3985. (rename-file (string-append out "/inc")
  3986. (string-append out "/include"))
  3987. (mkdir-p (string-append out "/include/gsm"))
  3988. (copy-recursively "inc"
  3989. (string-append out "/include/gsm")))
  3990. #t))
  3991. (delete 'configure)))) ; no configure script
  3992. (synopsis "GSM 06.10 lossy speech compression library")
  3993. (description "This C library provides an encoder and a decoder for the GSM
  3994. 06.10 RPE-LTP lossy speech compression algorithm.")
  3995. (home-page "http://quut.com/gsm/")
  3996. (license (license:non-copyleft "file://COPYRIGHT"))))
  3997. (define-public python-pyalsaaudio
  3998. (package
  3999. (name "python-pyalsaaudio")
  4000. (version "0.8.4")
  4001. (source (origin
  4002. (method url-fetch)
  4003. (uri (pypi-uri "pyalsaaudio" version))
  4004. (sha256
  4005. (base32
  4006. "1180ypn9596rq4b7y7dyv627j1q0fqilmkkrckclnzsdakdgis44"))))
  4007. (build-system python-build-system)
  4008. (arguments
  4009. `(#:tests? #f)) ; tests require access to ALSA devices.
  4010. (inputs
  4011. `(("alsa-lib" ,alsa-lib)))
  4012. (home-page "https://larsimmisch.github.io/pyalsaaudio/")
  4013. (synopsis "ALSA wrappers for Python")
  4014. (description
  4015. "This package contains wrappers for accessing the ALSA API from Python.
  4016. It is currently fairly complete for PCM devices, and has some support for
  4017. mixers.")
  4018. (license license:psfl)))
  4019. (define-public python2-pyalsaaudio
  4020. (package-with-python2 python-pyalsaaudio))
  4021. (define-public ldacbt
  4022. (package
  4023. (name "ldacbt")
  4024. (version "2.0.2.3")
  4025. (source (origin
  4026. (method url-fetch)
  4027. (uri (string-append "https://github.com/EHfive/ldacBT"
  4028. "/releases/download/v" version
  4029. "/ldacBT-" version ".tar.gz"))
  4030. (sha256
  4031. (base32
  4032. "1d65dms4klzql29abi15i90f41h523kl6mxrz9hi6p5vg37fxn2b"))))
  4033. (build-system cmake-build-system)
  4034. (arguments `(#:tests? #f)) ; no check target
  4035. (home-page "https://github.com/EHfive/ldacBT/")
  4036. (synopsis "LDAC Bluetooth encoder and ABR library")
  4037. (description "This package provides an encoder for the LDAC
  4038. high-resolution Bluetooth audio streaming codec for streaming at up to 990
  4039. kbps at 24 bit/96 kHz.")
  4040. (license license:asl2.0)))
  4041. (define-public bluez-alsa
  4042. (package
  4043. (name "bluez-alsa")
  4044. (version "3.0.0")
  4045. (source (origin
  4046. ;; The tarballs are mere snapshots and don't contain a
  4047. ;; bootstrapped build system.
  4048. (method git-fetch)
  4049. (uri (git-reference
  4050. (url "https://github.com/Arkq/bluez-alsa")
  4051. (commit (string-append "v" version))))
  4052. (file-name (git-file-name name version))
  4053. (sha256
  4054. (base32
  4055. "1jlsgxyqfhncfhx1sy3ry0dp6p95kd4agh7g2b7g51h0c4cv74h8"))))
  4056. (build-system gnu-build-system)
  4057. (arguments
  4058. `(#:configure-flags
  4059. (list "--enable-ldac"
  4060. (string-append "--with-alsaplugindir="
  4061. (assoc-ref %outputs "out")
  4062. "/lib/alsa-lib")
  4063. (string-append "--with-dbusconfdir="
  4064. (assoc-ref %outputs "out")
  4065. "/etc/dbus-1/system.d"))))
  4066. (native-inputs
  4067. `(("autoconf" ,autoconf)
  4068. ("automake" ,automake)
  4069. ("libtool" ,libtool)
  4070. ("pkg-config" ,pkg-config)))
  4071. (inputs
  4072. `(("alsa-lib" ,alsa-lib)
  4073. ("bluez" ,bluez)
  4074. ("dbus" ,dbus)
  4075. ("glib" ,glib)
  4076. ("ldacbt" ,ldacbt)
  4077. ("libbsd" ,libbsd)
  4078. ("ncurses" ,ncurses)
  4079. ("ortp" ,ortp)
  4080. ("sbc" ,sbc)))
  4081. (home-page "https://github.com/Arkq/bluez-alsa")
  4082. (synopsis "Bluetooth ALSA backend")
  4083. (description "This project is a rebirth of a direct integration between
  4084. Bluez and ALSA. Since Bluez >= 5, the built-in integration has been removed
  4085. in favor of 3rd party audio applications. From now on, Bluez acts as a
  4086. middleware between an audio application, which implements Bluetooth audio
  4087. profile, and a Bluetooth audio device. BlueALSA registers all known Bluetooth
  4088. audio profiles in Bluez, so in theory every Bluetooth device (with audio
  4089. capabilities) can be connected. In order to access the audio stream, one has
  4090. to connect to the ALSA PCM device called @code{bluealsa}. The device is based
  4091. on the ALSA software PCM plugin.")
  4092. (license license:expat)))
  4093. (define-public snd
  4094. (package
  4095. (name "snd")
  4096. (version "20.9")
  4097. (source (origin
  4098. (method url-fetch)
  4099. (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
  4100. "snd-" version ".tar.gz"))
  4101. (sha256
  4102. (base32
  4103. "0jxkycxn6jcbs4gklk9sk3gfr0y26dz1m71nxah9rnx80wnzj6hr"))))
  4104. (build-system glib-or-gtk-build-system)
  4105. (arguments
  4106. `(#:tests? #f ; no tests
  4107. #:out-of-source? #f ; for the 'install-doc' phase
  4108. #:configure-flags
  4109. (let* ((out (assoc-ref %outputs "out"))
  4110. (docdir (string-append out "/share/doc/"
  4111. ,name "-" ,version)))
  4112. (list "--with-alsa" "--with-jack" "--with-gmp"
  4113. (string-append "--with-doc-dir=" docdir)))
  4114. #:phases
  4115. (modify-phases %standard-phases
  4116. (add-after 'install 'install-doc
  4117. (lambda* (#:key outputs #:allow-other-keys)
  4118. (let* ((out (assoc-ref outputs "out"))
  4119. (doc (string-append out "/share/doc/"
  4120. ,name "-" ,version)))
  4121. (for-each
  4122. (lambda (f)
  4123. (install-file f doc))
  4124. (find-files "." "\\.html$"))
  4125. (copy-recursively "pix" (string-append doc "/pix"))
  4126. #t))))))
  4127. (native-inputs
  4128. `(("pkg-config" ,pkg-config)))
  4129. (inputs
  4130. `(("alsa-lib" ,alsa-lib)
  4131. ("fftw" ,fftw)
  4132. ("flac" ,flac)
  4133. ("gmp" ,gmp)
  4134. ("gsl" ,gsl)
  4135. ("gtk+" ,gtk+)
  4136. ("jack" ,jack-1)
  4137. ("libsamplerate" ,libsamplerate)
  4138. ("mpc" ,mpc)
  4139. ("mpfr" ,mpfr)
  4140. ("mpg123" ,mpg123)
  4141. ("speex" ,speex)
  4142. ("timidity++" ,timidity++)
  4143. ("vorbis-tools" ,vorbis-tools)
  4144. ("wavpack" ,wavpack)))
  4145. (synopsis "Sound editor")
  4146. (home-page "https://ccrma.stanford.edu/software/snd/")
  4147. (description
  4148. "Snd is a sound editor modelled loosely after Emacs. It can be
  4149. customized and extended using either the s7 Scheme implementation (included in
  4150. the Snd sources), Ruby, or Forth.")
  4151. (license (license:non-copyleft "file://COPYING"))))
  4152. (define-public noise-repellent
  4153. (package
  4154. (name "noise-repellent")
  4155. (version "0.1.5")
  4156. (source (origin
  4157. (method git-fetch)
  4158. (uri (git-reference
  4159. (url "https://github.com/lucianodato/noise-repellent")
  4160. (commit version)))
  4161. (file-name (string-append name "-" version "-checkout"))
  4162. (sha256
  4163. (base32
  4164. "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
  4165. (build-system meson-build-system)
  4166. (arguments
  4167. `(#:configure-flags
  4168. (list (string-append "--prefix=" (assoc-ref %outputs "out")
  4169. "/lib/lv2"))))
  4170. (inputs
  4171. `(("lv2" ,lv2)
  4172. ("fftwf" ,fftwf)))
  4173. (native-inputs
  4174. `(("pkg-config" ,pkg-config)))
  4175. (home-page "https://github.com/lucianodato/noise-repellent")
  4176. (synopsis "LV2 plugin for broadband noise reduction")
  4177. (description "Noise Repellent is an LV2 plugin to reduce noise. It has
  4178. the following features:
  4179. @enumerate
  4180. @item Spectral gating and spectral subtraction suppression rule
  4181. @item Adaptive and manual noise thresholds estimation
  4182. @item Adjustable noise floor
  4183. @item Adjustable offset of thresholds to perform over-subtraction
  4184. @item Time smoothing and a masking estimation to reduce artifacts
  4185. @item Basic onset detector to avoid transients suppression
  4186. @item Whitening of the noise floor to mask artifacts and to recover higher
  4187. frequencies
  4188. @item Option to listen to the residual signal
  4189. @item Soft bypass
  4190. @item Noise profile saved with the session
  4191. @end enumerate
  4192. ")
  4193. (license license:lgpl3+)))
  4194. (define-public lv2-speech-denoiser
  4195. (let ((commit "04cfba929630404f8d4f4ca5bac8d9b09a99152f")
  4196. (revision "1"))
  4197. (package
  4198. (name "lv2-speech-denoiser")
  4199. (version (git-version "0" revision commit))
  4200. (source
  4201. (origin
  4202. (method git-fetch)
  4203. (uri (git-reference
  4204. (url "https://github.com/lucianodato/speech-denoiser/")
  4205. (commit commit)))
  4206. (file-name (git-file-name name version))
  4207. (sha256
  4208. (base32 "189l6lz8sz5vr6bjyzgcsrvksl1w6crqsg0q65r94b5yjsmjnpr4"))))
  4209. (build-system meson-build-system)
  4210. (arguments
  4211. `(;; Using a "release" build is recommended for performance
  4212. #:build-type "release"
  4213. #:phases
  4214. (modify-phases %standard-phases
  4215. (add-after 'unpack 'patch-meson-build
  4216. (lambda _
  4217. (substitute* "meson.build"
  4218. (("install_folder = 'sdenoise.lv2'")
  4219. "install_folder = 'lib/lv2/sdenoise.lv2'")
  4220. (("build/manifest.ttl") "../build/manifest.ttl"))
  4221. #t))
  4222. (add-after 'unpack 'build-rnnoise
  4223. (lambda _
  4224. (with-directory-excursion "rnnoise"
  4225. (let ((old-CFLAGS (getenv "CFLAGS")))
  4226. (setenv "CFLAGS" "-fvisibility=hidden -fPIC -Wl,--exclude-libs,ALL")
  4227. (setenv "CONFIG_SHELL" (which "bash"))
  4228. (invoke "autoreconf" "-vif")
  4229. (invoke "sh" "configure"
  4230. "--disable-examples"
  4231. "--disable-doc"
  4232. "--disable-shared"
  4233. "--enable-static")
  4234. (invoke "make")
  4235. (setenv "CFLAGS" old-CFLAGS))))))))
  4236. (inputs
  4237. `(("lv2" ,lv2)))
  4238. (native-inputs
  4239. `(("autoconf" ,autoconf)
  4240. ("automake" ,automake)
  4241. ("libtool" ,libtool)
  4242. ("pkg-config" ,pkg-config)))
  4243. (home-page "https://github.com/werman/noise-suppression-for-voice")
  4244. (synopsis "Speech denoise LV2 plugin based on Xiph's RNNoise library")
  4245. (description "RNNoise is a library that uses deep learning to apply
  4246. noise suppression to audio sources with voice presence. This package provides
  4247. an LV2 audio plugin.")
  4248. (license license:lgpl3+))))
  4249. (define-public cli-visualizer
  4250. (package
  4251. (name "cli-visualizer")
  4252. (version "1.8")
  4253. (source
  4254. (origin
  4255. (method git-fetch)
  4256. (uri (git-reference
  4257. (url "https://github.com/dpayne/cli-visualizer")
  4258. (commit (string-append "v" version))))
  4259. (file-name (git-file-name name version))
  4260. (sha256
  4261. (base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
  4262. (build-system cmake-build-system)
  4263. (native-inputs
  4264. ;; TODO: Try using the latest googletest for versions > 1.8.
  4265. `( ;; ("googletest" ,googletest-1.8)
  4266. ("which" ,which)))
  4267. (inputs
  4268. `(("fftw" ,fftw)
  4269. ("ncurses" ,ncurses)
  4270. ("pulseaudio" ,pulseaudio)))
  4271. (arguments
  4272. '(#:tests? #f
  4273. ;; XXX Enable tests after patching them to use the system googletest.
  4274. ;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
  4275. #:phases
  4276. (modify-phases %standard-phases
  4277. (add-after 'install 'install-examples
  4278. (lambda* (#:key outputs #:allow-other-keys)
  4279. (with-directory-excursion "../source/examples"
  4280. (delete-file "mac_osx_config")
  4281. (for-each (lambda (file)
  4282. (install-file file
  4283. (string-append
  4284. (assoc-ref outputs "out")
  4285. "/share/doc")))
  4286. (find-files ".")))
  4287. #t)))))
  4288. (home-page "https://github.com/dpayne/cli-visualizer/")
  4289. (synopsis "Command-line audio visualizer")
  4290. (description "@code{cli-visualizer} displays fast-Fourier
  4291. transforms (FFTs) of the sound being played, as well as other graphical
  4292. representations.")
  4293. (license license:expat)))
  4294. (define-public cava
  4295. (package
  4296. (name "cava")
  4297. (version "0.7.4")
  4298. (source (origin
  4299. (method git-fetch)
  4300. (uri (git-reference
  4301. (url "https://github.com/karlstav/cava")
  4302. (commit version)))
  4303. (file-name (git-file-name name version))
  4304. (sha256
  4305. (base32
  4306. "1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))))
  4307. (build-system gnu-build-system)
  4308. (native-inputs
  4309. `(("autoconf" ,autoconf)
  4310. ("automake" ,automake)
  4311. ("libtool" ,libtool)))
  4312. (inputs
  4313. `(("fftw" ,fftw)
  4314. ("ncurses" ,ncurses)
  4315. ("pulseaudio" ,pulseaudio)))
  4316. (arguments
  4317. `(#:configure-flags
  4318. (list (string-append "PREFIX=" %output)
  4319. (string-append "FONT_DIR=" %output "/share/consolefonts"))
  4320. #:make-flags
  4321. (let ((lib (string-append %output "/lib")))
  4322. (list (string-append "cava_LDFLAGS = -L" lib " -Wl,-rpath " lib)))
  4323. #:phases
  4324. (modify-phases %standard-phases
  4325. (replace 'bootstrap
  4326. (lambda* (#:key outputs #:allow-other-keys)
  4327. (setenv "HOME" (getcwd))
  4328. (invoke "sh" "autogen.sh")))
  4329. (add-before 'build 'make-cava-ldflags
  4330. (lambda* (#:key outputs #:allow-other-keys)
  4331. (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
  4332. #t))
  4333. (add-after 'install 'data
  4334. (lambda* (#:key outputs #:allow-other-keys)
  4335. (for-each (lambda (file)
  4336. (install-file file
  4337. (string-append (assoc-ref outputs "out")
  4338. "/share/doc/examples")))
  4339. (find-files "example_files"))
  4340. #t)))))
  4341. (home-page "https://karlstav.github.io/cava/")
  4342. (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
  4343. (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
  4344. using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
  4345. (license license:expat)))
  4346. (define-public fluid-3
  4347. (let ((commit "871c8ce2002e8b3c198f532fdb4fbcce7914f951"))
  4348. (package
  4349. (name "fluid-3")
  4350. (version "2.1")
  4351. (source
  4352. (origin
  4353. (method url-fetch)
  4354. ;; Only one file is required, but the release bundles the whole
  4355. ;; software which is 50MiB as tar and 200MiB unpacked. The website
  4356. ;; directly links the soundfont release to the github file download.
  4357. (uri (string-append "https://github.com/musescore/MuseScore/raw/"
  4358. commit "/share/sound/FluidR3Mono_GM.sf3"))
  4359. (file-name (string-append name "-" version ".sf3"))
  4360. (sha256
  4361. (base32
  4362. "1hjfg5i15bw9279007xs92zsggjgn4s4k9pc00s851l3kvc6dkfg"))))
  4363. (build-system trivial-build-system)
  4364. (arguments
  4365. `(#:modules ((guix build utils))
  4366. #:builder
  4367. (begin
  4368. (use-modules (guix build utils))
  4369. (let ((file (assoc-ref %build-inputs "source"))
  4370. (out (string-append %output "/share/soundfonts")))
  4371. (mkdir-p out)
  4372. (copy-file file (string-append out "/FluidR3Mono_GM.sf3"))
  4373. #t))))
  4374. (home-page "https://github.com/musescore/MuseScore/tree/master/share/sound")
  4375. (synopsis "Pro-quality GM soundfont")
  4376. (description "Fluid-3 is Frank Wen's pro-quality GM soundfont.")
  4377. (license license:expat))))
  4378. (define-public libfdk
  4379. (package
  4380. (name "libfdk")
  4381. (version "2.0.1")
  4382. (source
  4383. (origin
  4384. (method git-fetch)
  4385. (uri (git-reference
  4386. (url "https://github.com/mstorsjo/fdk-aac")
  4387. (commit (string-append "v" version))))
  4388. (file-name (git-file-name name version))
  4389. (sha256
  4390. (base32
  4391. "1fkrnzs78fmj11n9z3l0w53i2fl16jcfiyavwidck9bzmkmsf486"))))
  4392. (build-system gnu-build-system)
  4393. (native-inputs
  4394. `(("autoconf" ,autoconf)
  4395. ("automake" ,automake)
  4396. ("libtool" ,libtool)))
  4397. (home-page "https://github.com/mstorsjo/fdk-aac")
  4398. (synopsis "Fraunhofer FDK AAC library")
  4399. (description "FDK is a library for encoding and decoding Advanced Audio
  4400. Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
  4401. Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
  4402. LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
  4403. and AAC-ELD (enhanced low delay) for real-time communication. The encoding
  4404. library supports sample rates up to 96 kHz and up to eight channels (7.1
  4405. surround).")
  4406. (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
  4407. "https://www.gnu.org/licenses/license-list.html#fdk"))))
  4408. (define-public libopenshot-audio
  4409. (package
  4410. (name "libopenshot-audio")
  4411. (version "0.2.0")
  4412. (source (origin
  4413. (method git-fetch)
  4414. (uri (git-reference
  4415. (url "https://github.com/OpenShot/libopenshot-audio")
  4416. (commit (string-append "v" version))))
  4417. (file-name (git-file-name name version))
  4418. (sha256
  4419. (base32
  4420. "13if0m5mvlqly8gmbhschzb9papkgp3yqivklhb949dhy16m8zgf"))))
  4421. (build-system cmake-build-system)
  4422. (inputs
  4423. `(("alsa-lib" ,alsa-lib)
  4424. ;; The following are for JUCE GUI components:
  4425. ("libx11" ,libx11)
  4426. ("freetype" ,freetype)
  4427. ("libxrandr" ,libxrandr)
  4428. ("libxinerama" ,libxinerama)
  4429. ("libxcursor" ,libxcursor)))
  4430. (arguments
  4431. `(#:tests? #f ;there are no tests
  4432. #:configure-flags
  4433. (list (string-append "-DCMAKE_CXX_FLAGS=-I"
  4434. (assoc-ref %build-inputs "freetype")
  4435. "/include/freetype2"))))
  4436. (home-page "https://openshot.org")
  4437. (synopsis "Audio editing and playback for OpenShot")
  4438. (description "OpenShot Audio Library (libopenshot-audio) allows
  4439. high-quality editing and playback of audio, and is based on the JUCE
  4440. library.")
  4441. (license license:lgpl3+)))
  4442. (define-public faudio
  4443. (package
  4444. (name "faudio")
  4445. (version "21.07")
  4446. (source
  4447. (origin
  4448. (method git-fetch)
  4449. (uri (git-reference
  4450. (url "https://github.com/FNA-XNA/FAudio")
  4451. (commit version)))
  4452. (file-name (git-file-name name version))
  4453. (sha256
  4454. (base32 "0v76pvsna7dx8nb53s7x2vfpws27wi3p34l7af5niqvyh0gl4mzr"))))
  4455. (arguments
  4456. '(#:tests? #f ; No tests.
  4457. #:configure-flags '("-DGSTREAMER=ON")))
  4458. (build-system cmake-build-system)
  4459. (native-inputs `(("pkg-config" ,pkg-config)))
  4460. (inputs `(("gstreamer" ,gstreamer)
  4461. ("gst-plugins-base" ,gst-plugins-base)
  4462. ("sdl2" ,sdl2)))
  4463. (home-page "https://github.com/FNA-XNA/FAudio")
  4464. (synopsis "XAudio reimplementation")
  4465. (description "FAudio is an XAudio reimplementation that focuses solely on
  4466. developing fully accurate DirectX Audio runtime libraries.")
  4467. (license
  4468. (list license:zlib
  4469. ;; stb & utils/{ui,wav}common are dual-licenced under either of:
  4470. license:expat
  4471. license:public-domain))))
  4472. (define-public gnaural
  4473. (package
  4474. (name "gnaural")
  4475. (version "20110606")
  4476. (source
  4477. (origin
  4478. (method url-fetch)
  4479. (uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
  4480. version ".tar.xz"))
  4481. (sha256
  4482. (base32
  4483. "1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
  4484. (build-system gnu-build-system)
  4485. (inputs
  4486. `(("alsa-lib" ,alsa-lib)
  4487. ("gtk+" ,gtk+-2)
  4488. ("libsndfile" ,libsndfile)
  4489. ("portaudio" ,portaudio)))
  4490. (native-inputs
  4491. `(("pkg-config" ,pkg-config)))
  4492. (home-page "http://gnaural.sourceforge.net/")
  4493. (synopsis "Binaural beat synthesizer")
  4494. (description "Gnaural is a programmable auditory binaural beat synthesizer
  4495. intended to be used for brainwave entrainment. Gnaural supports creation of
  4496. binaural beat tracks of different frequencies and exporting of tracks into
  4497. different audio formats. Gnaural can also be linked over the internet with
  4498. other Gnaural instances, allowing synchronous sessions between many users.")
  4499. (license license:gpl2+)))
  4500. (define-public darkice
  4501. (package
  4502. (name "darkice")
  4503. (version "1.4")
  4504. (source (origin
  4505. (method url-fetch)
  4506. (uri (string-append "https://github.com/rafael2k/darkice/releases/"
  4507. "download/v" version "/darkice-"
  4508. version ".tar.gz"))
  4509. (sha256
  4510. (base32
  4511. "05yq7lggxygrkd76yiqby3msrgdn082p0qlvmzzv9xbw8hmyra76"))))
  4512. (build-system gnu-build-system)
  4513. (native-inputs `(("pkg-config" ,pkg-config)))
  4514. (inputs `(("lame" ,lame)
  4515. ("libvorbis" ,libvorbis)
  4516. ("opus" ,opus)
  4517. ("twolame" ,twolame)
  4518. ("alsa-lib" ,alsa-lib)
  4519. ("pulseaudio" ,pulseaudio)
  4520. ("jack" ,jack-1)
  4521. ("libsamplerate" ,libsamplerate)))
  4522. (arguments
  4523. `(#:configure-flags
  4524. (list (string-append "--with-lame-prefix="
  4525. (assoc-ref %build-inputs "lame")))))
  4526. (home-page "http://www.darkice.org/")
  4527. (synopsis "Live audio streamer")
  4528. (description "DarkIce is a live audio streamer. It takes audio input from
  4529. a sound card, encodes it into Ogg Vorbis and/or mp3, and sends the audio
  4530. stream to one or more IceCast and/or ShoutCast servers.")
  4531. (license license:gpl3+)))
  4532. (define-public libltc
  4533. (package
  4534. (name "libltc")
  4535. (version "1.3.1")
  4536. (source
  4537. (origin
  4538. (method url-fetch)
  4539. (uri
  4540. (string-append "https://github.com/x42/libltc/releases/download/v"
  4541. version "/libltc-" version ".tar.gz"))
  4542. (sha256
  4543. (base32
  4544. "173h9dgmain3nyrwk6q2d7yl4fnh4vacag4s2p01n5b7nyrkxrjh"))))
  4545. (build-system gnu-build-system)
  4546. (arguments
  4547. `(#:parallel-tests? #f)) ;tests fail otherwise
  4548. (native-inputs
  4549. `(("doxygen" ,doxygen)
  4550. ("pkg-config" ,pkg-config)))
  4551. (synopsis "Encode or decode Linear/Longitudinal Time Code (LTC) audio")
  4552. (description "Libltc is a POSIX-C Library for handling
  4553. @dfn{Linear/Longitudinal Time Code} (LTC) data.")
  4554. (home-page "https://x42.github.io/libltc/")
  4555. (license license:lgpl3+)))
  4556. (define-public ttaenc
  4557. (package
  4558. (name "ttaenc")
  4559. (version "3.4.1")
  4560. (source
  4561. (origin
  4562. (method url-fetch)
  4563. (uri (string-append "mirror://sourceforge/tta/"
  4564. "tta/ttaenc-src"
  4565. "/ttaenc-" version "-src.tgz"))
  4566. (sha256
  4567. (base32
  4568. "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj"))))
  4569. (build-system gnu-build-system)
  4570. (arguments
  4571. `(#:tests? #f ;no tests
  4572. #:make-flags
  4573. (list (string-append "CC=" ,(cc-for-target))
  4574. (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin"))
  4575. #:phases
  4576. (modify-phases %standard-phases
  4577. (delete 'configure) ; no configure
  4578. (add-before 'install 'make-bindir
  4579. (lambda* (#:key outputs #:allow-other-keys)
  4580. (let* ((out (assoc-ref outputs "out")))
  4581. (mkdir-p (string-append out "/bin"))
  4582. #t))))))
  4583. (synopsis "TTA lossless audio encoder")
  4584. (description
  4585. "TTA performs lossless compression on multichannel 8,16 and 24 bits
  4586. data of the Wav audio files. Being lossless means that no data-
  4587. quality is lost in the compression - when uncompressed, the data will
  4588. be identical to the original. The compression ratios of TTA depend on
  4589. the type of music file being compressed, but the compression size
  4590. will generally range between 30% - 70% of the original. TTA format
  4591. supports both of ID3v1/v2 and APEv2 tags.")
  4592. (home-page "http://tausoft.org/")
  4593. (license license:gpl2+)))
  4594. (define-public libsoundio
  4595. (package
  4596. (name "libsoundio")
  4597. (version "2.0.0")
  4598. (source
  4599. (origin
  4600. (method git-fetch)
  4601. (uri (git-reference
  4602. (url "https://github.com/andrewrk/libsoundio")
  4603. (commit version)))
  4604. (file-name (git-file-name name version))
  4605. (sha256
  4606. (base32
  4607. "12l4rvaypv87vigdrmjz48d4d6sq4gfxf5asvnc4adyabxb73i4x"))))
  4608. (build-system cmake-build-system)
  4609. (arguments
  4610. `(#:tests? #f)) ;no tests included
  4611. (inputs
  4612. `(("alsa-lib" ,alsa-lib)
  4613. ("jack" ,jack-1)
  4614. ("pulseaudio" ,pulseaudio)))
  4615. (native-inputs
  4616. `(("pkg-config" ,pkg-config)))
  4617. (home-page "http://libsound.io")
  4618. (synopsis "C library for real-time audio input and output")
  4619. (description "@code{libsoundio} is a C library providing audio input and
  4620. output. The API is suitable for real-time software such as digital audio
  4621. workstations as well as consumer software such as music players.")
  4622. (license license:expat)))
  4623. (define-public redkite
  4624. (package
  4625. (name "redkite")
  4626. (version "1.3.0")
  4627. (source
  4628. (origin
  4629. (method git-fetch)
  4630. (uri (git-reference
  4631. (url "https://gitlab.com/iurie-sw/redkite")
  4632. (commit (string-append "v" version))))
  4633. (file-name (git-file-name name version))
  4634. (sha256
  4635. (base32 "16j9zp5i7svq3g38rfb6h257qfgnd2brrxi7cjd2pdax9xxwj40y"))))
  4636. (build-system cmake-build-system)
  4637. (arguments
  4638. `(#:tests? #f)) ;no tests included
  4639. (propagated-inputs
  4640. `(("cairo" ,cairo)))
  4641. (native-inputs
  4642. `(("pkg-config" ,pkg-config)))
  4643. (synopsis "Small GUI toolkit")
  4644. (description "Redkite is a small GUI toolkit developed in C++17 and
  4645. inspired from other well known GUI toolkits such as Qt and GTK. It is
  4646. minimal on purpose and is intended to be statically linked to applications,
  4647. therefore satisfying any requirements they may have to be self contained,
  4648. as is the case with audio plugins.")
  4649. (home-page "https://gitlab.com/geontime/redkite")
  4650. (license license:gpl3+)))
  4651. (define-public carla
  4652. (package
  4653. (name "carla")
  4654. (version "2.1.1")
  4655. (source
  4656. (origin
  4657. (method git-fetch)
  4658. (uri
  4659. (git-reference
  4660. (url "https://github.com/falkTX/Carla")
  4661. (commit (string-append "v" version))))
  4662. (file-name (git-file-name name version))
  4663. (sha256
  4664. (base32
  4665. "0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g"))))
  4666. (build-system gnu-build-system)
  4667. (arguments
  4668. `(#:tests? #f ; no "check" target
  4669. #:make-flags
  4670. (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  4671. #:phases
  4672. (modify-phases %standard-phases
  4673. (delete 'configure) ; no configure script
  4674. (add-before 'build 'set-CC-variable-and-show-features
  4675. (lambda _
  4676. (setenv "CC" "gcc")
  4677. (invoke "make" "features")))
  4678. (add-after 'install 'make-carla-executable
  4679. (lambda* (#:key outputs #:allow-other-keys)
  4680. (let ((out (assoc-ref outputs "out")))
  4681. (chmod (string-append out "/share/carla/carla") #o555)
  4682. #t)))
  4683. (add-after 'install 'wrap-executables
  4684. (lambda* (#:key inputs outputs #:allow-other-keys)
  4685. (let ((out (assoc-ref outputs "out")))
  4686. (wrap-script (string-append out "/bin/carla")
  4687. #:guile (search-input-file inputs "bin/guile")
  4688. `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
  4689. #t))))))
  4690. (inputs
  4691. `(("alsa-lib" ,alsa-lib)
  4692. ("ffmpeg" ,ffmpeg)
  4693. ("fluidsynth" ,fluidsynth)
  4694. ("file" ,file)
  4695. ("liblo" ,liblo)
  4696. ("libsndfile" ,libsndfile)
  4697. ("gtk2" ,gtk+-2) ;needed for bridging GTK2 plugins in GTK3 hosts
  4698. ("gtk+" ,gtk+)
  4699. ("python-pyliblo" ,python-pyliblo)
  4700. ("python-pyqt" ,python-pyqt)
  4701. ("python-rdflib" ,python-rdflib)
  4702. ;; python-pyqt shows the following error without python-wrapper:
  4703. ;; Error while finding module specification for 'PyQt5.uic.pyuic'
  4704. ;; (ModuleNotFoundError: No module named 'PyQt5')
  4705. ("python-wrapper" ,python-wrapper)
  4706. ("libx11" ,libx11)
  4707. ("qtbase" ,qtbase-5)
  4708. ("zlib" ,zlib)
  4709. ;; For WRAP-SCRIPT above.
  4710. ("guile" ,guile-2.2)))
  4711. (native-inputs
  4712. `(("pkg-config" ,pkg-config)))
  4713. (home-page "https://kx.studio/Applications:Carla")
  4714. (synopsis "Audio plugin host")
  4715. (description "Carla is a modular audio plugin host, with features like
  4716. transport control, automation of parameters via MIDI CC and remote control
  4717. over OSC. Carla currently supports LADSPA (including LRDF), DSSI, LV2, VST2,
  4718. and VST3 plugin formats, plus SF2 and SFZ file support. It uses JACK as the
  4719. default and preferred audio driver but also supports native drivers like ALSA.")
  4720. (license license:gpl2+)))
  4721. (define-public ecasound
  4722. (package
  4723. (name "ecasound")
  4724. (version "2.9.3")
  4725. (source (origin
  4726. (method url-fetch)
  4727. (uri (string-append "https://nosignal.fi/download/ecasound-"
  4728. version ".tar.gz"))
  4729. (sha256
  4730. (base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
  4731. (build-system gnu-build-system)
  4732. (native-inputs `(("pkg-config" ,pkg-config)))
  4733. ;; It would be nice to add mikmod to inputs if that gets packaged
  4734. ;; eventually.
  4735. (inputs `(("alsa-lib" ,alsa-lib)
  4736. ("jack" ,jack-1)
  4737. ("mpg123" ,mpg123)
  4738. ("lame" ,lame)
  4739. ("vorbis-tools" ,vorbis-tools)
  4740. ("faad2" ,faad2)
  4741. ("flac" ,flac)
  4742. ("timidity++" ,timidity++)
  4743. ("libsndfile" ,libsndfile)
  4744. ("libsamplerate" ,libsamplerate)
  4745. ("ncurses" ,ncurses)
  4746. ("ladspa" ,ladspa)
  4747. ("lilv" ,lilv)))
  4748. (home-page "https://nosignal.fi/ecasound/index.php")
  4749. (synopsis "Multitrack audio processing")
  4750. (description "Ecasound is a software package designed for multitrack audio
  4751. processing. It can be used for simple tasks like audio playback, recording and
  4752. format conversions, as well as for multitrack effect processing, mixing,
  4753. recording and signal recycling. Ecasound supports a wide range of audio inputs,
  4754. outputs and effect algorithms. Effects and audio objects can be combined in
  4755. various ways, and their parameters can be controlled by operator objects like
  4756. oscillators and MIDI-CCs. A versatile console mode user-interface is included
  4757. in the package.")
  4758. ;; As an exception to the above, the C, C++ and python implementations
  4759. ;; of the Ecasound Control Interface (ECI) are licensed under the LGPL
  4760. ;; (see the file 'COPYING.LGPL'). This allows writing ECI applications
  4761. ;; that are not licensed under GPL.
  4762. (license (list license:gpl2 license:lgpl2.1))))
  4763. (define-public libaudec
  4764. (package
  4765. (name "libaudec")
  4766. (version "0.2.4")
  4767. (source
  4768. (origin
  4769. (method git-fetch)
  4770. (uri (git-reference
  4771. (url "https://git.zrythm.org/zrythm/libaudec")
  4772. (commit (string-append "v" version))))
  4773. (file-name (git-file-name name version))
  4774. (sha256
  4775. (base32
  4776. "1570m2dfia17dbkhd2qhx8jjihrpm7g8nnyg6n4wif4vv229s7dz"))))
  4777. (build-system meson-build-system)
  4778. (arguments
  4779. `(#:configure-flags
  4780. ;; Build the tests.
  4781. `("-Dtests=true")))
  4782. (inputs
  4783. `(("libsamplerate" ,libsamplerate)
  4784. ("libsndfile" ,libsndfile)))
  4785. (native-inputs
  4786. `(("pkg-config" ,pkg-config)))
  4787. (synopsis "Library for reading and resampling audio files")
  4788. (description "libaudec is a wrapper library over ffmpeg, sndfile and
  4789. libsamplerate for reading and resampling audio files, based on Robin Gareus'
  4790. @code{audio_decoder} code.")
  4791. (home-page "https://git.zrythm.org/zrythm/libaudec")
  4792. (license license:agpl3+)))
  4793. (define-public lv2lint
  4794. (package
  4795. (name "lv2lint")
  4796. (version "0.8.0")
  4797. (source
  4798. (origin
  4799. (method git-fetch)
  4800. (uri (git-reference
  4801. (url "https://git.open-music-kontrollers.ch/lv2/lv2lint")
  4802. (commit version)))
  4803. (file-name (git-file-name name version))
  4804. (sha256
  4805. (base32
  4806. "1jrka0hsn4n1clri7zfkcl3c2vi52144lkpjm81l51ff8rqy8ks1"))))
  4807. (build-system meson-build-system)
  4808. (arguments
  4809. `(#:configure-flags
  4810. `("-Delf-tests=true" ; for checking symbol visibility
  4811. "-Donline-tests=true"))) ; for checking URI existence
  4812. (inputs
  4813. `(("curl" ,curl)
  4814. ("libelf" ,libelf)
  4815. ("lilv" ,lilv)))
  4816. (native-inputs
  4817. `(("pkg-config" ,pkg-config)))
  4818. (synopsis "LV2 plugin lint tool")
  4819. (description "lv2lint is an LV2 lint-like tool that checks whether a
  4820. given plugin and its UI(s) match up with the provided metadata and adhere
  4821. to well-known best practices.")
  4822. (home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
  4823. (license license:artistic2.0)))
  4824. (define-public lv2toweb
  4825. (package
  4826. (name "lv2toweb")
  4827. (version "0.4")
  4828. (source
  4829. (origin
  4830. (method git-fetch)
  4831. (uri (git-reference
  4832. (url "https://github.com/x42/lv2toweb")
  4833. (commit (string-append "v" version))))
  4834. (file-name (git-file-name name version))
  4835. (sha256
  4836. (base32
  4837. "007aysqvgkf25za8nkmyd5g9kp1zla460dcpidlj5xg1zc3fcdfi"))))
  4838. (build-system gnu-build-system)
  4839. (arguments
  4840. `(#:tests? #f ; no "check" target
  4841. #:make-flags (list "CC=gcc"
  4842. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  4843. #:phases
  4844. (modify-phases %standard-phases
  4845. (delete 'configure))))
  4846. (inputs
  4847. `(("jalv" ,jalv)
  4848. ("lilv" ,lilv)))
  4849. (native-inputs
  4850. `(("help2man" ,help2man)
  4851. ("pkg-config" ,pkg-config)))
  4852. (synopsis "Documentation generator for LV2 plugins")
  4853. (description
  4854. "lv2toweb allows the user to create an xhtml page with information
  4855. about the given LV2 plugin, provided that the plugin and its UI(s) match up
  4856. with the provided metadata and adhere to well-known best practices.")
  4857. (home-page "https://github.com/x42/lv2toweb")
  4858. (license (list license:isc license:gpl2))))
  4859. (define-public ztoolkit
  4860. (package
  4861. (name "ztoolkit")
  4862. (version "0.1.1")
  4863. (source
  4864. (origin
  4865. (method git-fetch)
  4866. (uri (git-reference
  4867. (url "https://git.zrythm.org/zrythm/ztoolkit")
  4868. (commit (string-append "v" version))))
  4869. (file-name (git-file-name name version))
  4870. (sha256
  4871. (base32
  4872. "07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
  4873. (build-system meson-build-system)
  4874. (native-inputs
  4875. `(("pkg-config" ,pkg-config)))
  4876. ;; These are listed as propagated inputs because they are dependencies
  4877. ;; in pkgconfig.
  4878. (propagated-inputs
  4879. `(("cairo" ,cairo)
  4880. ("libx11" ,libx11)))
  4881. (synopsis "GUI toolkit for LV2 plugins")
  4882. (description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
  4883. inspired by GTK. It handles events and low level drawing on behalf of
  4884. the user and provides a high-level API for managing the UI and custom
  4885. widgets. ZToolkit is written in C and was created to be used for building
  4886. audio plugin UIs, where the dependencies often need to be kept to a
  4887. minimum.")
  4888. (home-page "https://git.zrythm.org/zrythm/ztoolkit")
  4889. (license license:agpl3+)))
  4890. (define-public libinstpatch
  4891. (package
  4892. (name "libinstpatch")
  4893. (version "1.1.6")
  4894. (source
  4895. (origin
  4896. (method git-fetch)
  4897. (uri (git-reference
  4898. (url "https://github.com/swami/libinstpatch")
  4899. (commit (string-append "v" version))))
  4900. (file-name (git-file-name name version))
  4901. (sha256
  4902. (base32 "1w3nk0vvd1cxic70n45zjip0bdsrja969myvyvkhq3ngbarbykir"))))
  4903. (build-system cmake-build-system)
  4904. (arguments
  4905. `(#:tests? #f)) ;there are no tests
  4906. (native-inputs
  4907. `(("glib:bin" ,glib "bin")
  4908. ("pkg-config" ,pkg-config)))
  4909. (inputs
  4910. `(("glib" ,glib)
  4911. ("libsndfile" ,libsndfile)))
  4912. (home-page "http://www.swamiproject.org/")
  4913. (synopsis "Instrument file software library")
  4914. (description
  4915. "libInstPatch is a library for processing digital sample based MIDI
  4916. instrument \"patch\" files. The types of files libInstPatch supports are used
  4917. for creating instrument sounds for wavetable synthesis. libInstPatch provides
  4918. an object framework (based on GObject) to load patch files, which can then be
  4919. edited, converted, compressed and saved.")
  4920. (license license:lgpl2.1)))
  4921. (define-public ztoolkit-rsvg
  4922. (package/inherit ztoolkit
  4923. (name "ztoolkit-rsvg")
  4924. (arguments
  4925. `(#:configure-flags `("-Denable_rsvg=true")))
  4926. (propagated-inputs
  4927. `(("librsvg" ,librsvg)
  4928. ,@(package-propagated-inputs ztoolkit)))
  4929. (synopsis "ZToolkit with SVG support")))
  4930. (define-public lsp-dsp-lib
  4931. (package
  4932. (name "lsp-dsp-lib")
  4933. (version "0.5.11")
  4934. (source
  4935. (origin
  4936. (method url-fetch)
  4937. (uri (string-append "https://github.com/sadko4u/lsp-dsp-lib/"
  4938. "releases/download/" version
  4939. "/lsp-dsp-lib-" version "-src.tar.gz"))
  4940. (sha256
  4941. (base32 "0lkar6r9jfrrqswi8nnndlm5a9kfwqjn92d81gp2yhc3p46xsswz"))))
  4942. (build-system gnu-build-system)
  4943. (arguments
  4944. `(#:tests? #f ; no tests
  4945. #:make-flags
  4946. (list (string-append "CC=" ,(cc-for-target)))
  4947. #:phases
  4948. (modify-phases %standard-phases
  4949. (add-after 'unpack 'omit-static-library
  4950. (lambda _
  4951. (substitute* "src/Makefile"
  4952. ((".*@.*ARTIFACT_SLIB.*") "") ; don't install it
  4953. ((" \\$\\(ARTIFACT_SLIB\\)") "")))) ; don't build it
  4954. (replace 'configure
  4955. (lambda* (#:key outputs #:allow-other-keys)
  4956. (invoke "make" "config"
  4957. (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
  4958. (home-page "https://github.com/sadko4u/lsp-dsp-lib")
  4959. (synopsis "Digital signal processing library")
  4960. (description "The LSP DSP library provides a set of functions that perform
  4961. SIMD-optimized computing on several hardware architectures. All functions
  4962. currently operate on IEEE-754 single-precision floating-point numbers.")
  4963. (license license:lgpl3+)))
  4964. (define-public codec2
  4965. (package
  4966. (name "codec2")
  4967. (version "0.9.2")
  4968. (source
  4969. (origin
  4970. (method git-fetch)
  4971. (uri (git-reference
  4972. (url "https://github.com/drowe67/codec2")
  4973. (commit (string-append "v" version))))
  4974. (file-name (git-file-name name version))
  4975. (sha256
  4976. (base32 "1jpvr7bra8srz8jvnlbmhf8andbaavq5v01qjnp2f61za93rzwba"))))
  4977. (build-system cmake-build-system)
  4978. (native-inputs
  4979. `(("bc" ,bc)
  4980. ("octave" ,octave)
  4981. ("valgrind" ,valgrind)))
  4982. (arguments
  4983. `(#:tests? #f ; TODO: Fix tests (paths, graphic toolkit, octave modules).
  4984. #:phases
  4985. (modify-phases %standard-phases
  4986. (add-before 'check 'set-test-environment
  4987. (lambda _
  4988. (setenv "HOME" "/tmp")
  4989. #t)))))
  4990. (synopsis "Speech codec")
  4991. (description
  4992. "Codec 2 is a speech codec designed for communications quality speech
  4993. between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF
  4994. digital radio.")
  4995. (home-page "https://www.rowetel.com/?page_id=452")
  4996. (license license:lgpl2.1)))
  4997. (define-public mbelib
  4998. ;; No release since 2016, use commit directly.
  4999. (let ((commit "9a04ed5c78176a9965f3d43f7aa1b1f5330e771f")
  5000. (revision "1"))
  5001. (package
  5002. (name "mbelib")
  5003. (version (git-version "1.3.0" revision commit))
  5004. (source
  5005. (origin
  5006. (method git-fetch)
  5007. (uri (git-reference
  5008. (url "https://github.com/szechyjs/mbelib")
  5009. (commit commit)))
  5010. (file-name (git-file-name name version))
  5011. (sha256
  5012. (base32 "0a7xmf87xnjzm5b437j2vnwv39x0ascja1j04c5wj6xs1529gw8h"))))
  5013. (build-system cmake-build-system)
  5014. (home-page "https://github.com/szechyjs/mbelib")
  5015. (synopsis "P25 Phase 1 and ProVoice vocoder")
  5016. (description
  5017. "The mbelib library provides support for the 7200x4400 bit/s codec used
  5018. in P25 Phase 1, the 7100x4400 bit/s codec used in ProVoice and the @emph{Half
  5019. Rate} 3600x2250 bit/s vocoder used in various radio systems.")
  5020. (license (list license:bsd-3 ; test/ framework
  5021. license:isc))))) ; the rest
  5022. (define-public ableton-link
  5023. (package
  5024. (name "ableton-link")
  5025. (version "3.0.2")
  5026. (source (origin
  5027. (method git-fetch)
  5028. (uri (git-reference
  5029. (url "https://github.com/Ableton/link")
  5030. (commit (string-append "Link-" version))))
  5031. (file-name (git-file-name name version))
  5032. (sha256
  5033. (base32
  5034. "0262vm0v7hmqjhqx5xikh529p3c065p1yld6ymaiz74yq1dnnjir"))
  5035. (modules '((guix build utils)))
  5036. (patches
  5037. (search-patches "ableton-link-system-libraries-debian.patch"))
  5038. (snippet
  5039. '(begin
  5040. ;; Tests assume that CMake's "build" directory is a
  5041. ;; sub-directory of the source tree, so we fix it.
  5042. (substitute* "ci/run-tests.py"
  5043. (("root_dir,") "root_dir, os.pardir,"))
  5044. ;; Unbundle dependencies.
  5045. (delete-file-recursively "third_party")
  5046. (delete-file-recursively "modules")
  5047. #t))))
  5048. (build-system cmake-build-system)
  5049. (native-inputs
  5050. `(("catch" ,catch-framework)
  5051. ("python" ,python) ;for running tests
  5052. ("portaudio" ,portaudio) ;for portaudio examples
  5053. ("qtbase" ,qtbase-5) ;for Qt examples
  5054. ("qtdeclarative" ,qtdeclarative)
  5055. ("qttools" ,qttools)))
  5056. (inputs
  5057. `(("jack" ,jack-1) ;for JACK examples
  5058. ("qtquickcontrols" ,qtquickcontrols))) ;for Qt examples
  5059. (propagated-inputs
  5060. ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp
  5061. ;; contains '#include <asio.hpp>'.
  5062. `(("asio" ,asio)))
  5063. (arguments
  5064. `(#:configure-flags
  5065. '("-DLINK_BUILD_QT_EXAMPLES=ON"
  5066. "-DLINK_BUILD_JACK=ON")
  5067. #:phases
  5068. (modify-phases %standard-phases
  5069. (replace 'check
  5070. (lambda* (#:key inputs #:allow-other-keys)
  5071. (let* ((python (search-input-file inputs "/bin/python3"))
  5072. (run-tests (string-append "../ableton-link-"
  5073. ,version
  5074. "-checkout/ci/run-tests.py")))
  5075. (invoke python run-tests "--target" "LinkCoreTest")
  5076. (invoke python run-tests "--target" "LinkDiscoveryTest"))))
  5077. (add-before 'install 'patch-cmake
  5078. (lambda* (#:key inputs #:allow-other-keys)
  5079. (let* ((source (string-append "../ableton-link-"
  5080. ,version
  5081. "-checkout/")))
  5082. (substitute* (string-append source
  5083. "cmake_include/AsioStandaloneConfig.cmake")
  5084. (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./"
  5085. "modules/asio-standalone/asio/include"))
  5086. (string-append (assoc-ref inputs "asio")
  5087. "/include")))
  5088. (substitute* (string-append source "AbletonLinkConfig.cmake")
  5089. (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include")
  5090. "${CMAKE_CURRENT_LIST_DIR}/../../../include")
  5091. (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp")
  5092. "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp"))
  5093. #t)))
  5094. (replace 'install
  5095. (lambda* (#:key outputs #:allow-other-keys)
  5096. (let* ((out (assoc-ref outputs "out"))
  5097. (bin (string-append out "/bin"))
  5098. (lib-cmake (string-append out "/lib/cmake/ableton-link"))
  5099. (source (string-append "../ableton-link-" ,version "-checkout")))
  5100. (for-each (lambda (test-file)
  5101. (delete-file test-file))
  5102. '("bin/LinkDiscoveryTest" "bin/LinkCoreTest"))
  5103. (copy-recursively "bin" bin)
  5104. (copy-recursively (string-append source "/include/ableton")
  5105. (string-append out "/include/ableton"))
  5106. (install-file (string-append source "/AbletonLinkConfig.cmake")
  5107. lib-cmake)
  5108. (install-file (string-append source
  5109. "/cmake_include/AsioStandaloneConfig.cmake")
  5110. (string-append lib-cmake "/cmake_include"))
  5111. #t))))))
  5112. (home-page "https://github.com/Ableton/link")
  5113. (synopsis "Synchronize musical beat, tempo, and phase across multiple applications")
  5114. (description
  5115. "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase
  5116. across multiple applications running on one or more devices. Applications on devices
  5117. connected to a local network discover each other automatically and form a musical
  5118. session in which each participant can perform independently: anyone can start or stop
  5119. while still staying in time.")
  5120. (license license:gpl2+)))
  5121. (define-public butt
  5122. (package
  5123. (name "butt")
  5124. (version "0.1.31")
  5125. (source (origin
  5126. (method url-fetch)
  5127. (uri (string-append "mirror://sourceforge/butt/butt/butt-"
  5128. version "/butt-" version ".tar.gz"))
  5129. (sha256
  5130. (base32
  5131. "19zvdi5vr6vqnrpc60jir7550nz9a5x1c61lh13355cdny2zp28z"))
  5132. (modules '((guix build utils)))
  5133. (snippet
  5134. '(substitute* "src/butt.cpp"
  5135. ((".*zica.*") "")))))
  5136. (build-system gnu-build-system)
  5137. (arguments
  5138. `(#:phases
  5139. (modify-phases %standard-phases
  5140. (add-after 'install 'install-documentation
  5141. (lambda* (#:key inputs outputs #:allow-other-keys)
  5142. (let* ((out (assoc-ref outputs "out"))
  5143. (manual (assoc-ref inputs "manual"))
  5144. (doc (string-append out "/share/doc/" ,name "-" ,version)))
  5145. (install-file "README" doc)
  5146. (copy-file manual (string-append doc "/butt-manual.pdf"))))))))
  5147. (inputs
  5148. `(("dbus" ,dbus)
  5149. ("flac" ,flac)
  5150. ("fltk" ,fltk)
  5151. ("lame" ,lame)
  5152. ("libfdk" ,libfdk)
  5153. ("libsamplerate" ,libsamplerate)
  5154. ("libvorbis" ,libvorbis)
  5155. ("libx11" ,libx11)
  5156. ("libxext" ,libxext)
  5157. ("libxfixes" ,libxfixes)
  5158. ("libxft" ,libxft)
  5159. ("libxrender" ,libxrender)
  5160. ("ogg" ,libogg)
  5161. ("openssl" ,openssl)
  5162. ("opus" ,opus)
  5163. ("portaudio" ,portaudio)))
  5164. (native-inputs
  5165. `(("pkg-config" ,pkg-config)
  5166. ("manual" ,(origin
  5167. (method url-fetch)
  5168. (uri (string-append "https://danielnoethen.de/butt/butt-"
  5169. version "_manual.pdf"))
  5170. (sha256
  5171. (base32
  5172. "0a0kgd069whfp1v8xgw6qm67w02n8b7b4h5ay5665wgq947hxanp"))))))
  5173. (home-page "https://danielnoethen.de/butt/")
  5174. (synopsis "Audio streaming tool")
  5175. (description "Butt is a tool to stream audio to a ShoutCast or
  5176. Icecast server.")
  5177. (license license:gpl2+)))
  5178. (define-public siggen
  5179. (package
  5180. (name "siggen")
  5181. (version "2.3.10")
  5182. (source
  5183. (origin
  5184. (method git-fetch)
  5185. (uri (git-reference
  5186. (url "https://github.com/bleskodev/siggen")
  5187. (commit "a407611b59d59c7770bbe62ba9b8e9a948cf3210")))
  5188. (file-name (git-file-name name version))
  5189. (sha256
  5190. (base32
  5191. "0szhgfd9kddr6qsz0imp0x66jjn6ry236f35vjl82ivc1v2bllcb"))))
  5192. (build-system gnu-build-system)
  5193. (arguments
  5194. `(#:make-flags (list (string-append "INSDIR=" %output "/bin")
  5195. (string-append "MANDIR=" %output "/share/man"))
  5196. #:tests? #f ; no tests
  5197. #:phases
  5198. (modify-phases %standard-phases
  5199. ;; Patch misc.c to prevent a segfault.
  5200. (add-after 'unpack 'patch-segfault
  5201. (lambda _
  5202. (substitute* "misc.c"
  5203. (("#include <stdio.h>\n" all)
  5204. (string-append all "#include <string.h>\n")))))
  5205. (delete 'configure)
  5206. (replace 'install
  5207. (lambda* (#:key make-flags outputs #:allow-other-keys)
  5208. (let ((out (assoc-ref outputs "out")))
  5209. (for-each (lambda (dir)
  5210. (mkdir-p (string-append out dir)))
  5211. (list "/bin" "/share/man/man1" "/share/man/man5"))
  5212. (apply invoke "make" "sysinstall" make-flags)))))))
  5213. (inputs
  5214. `(("ncurses" ,ncurses)))
  5215. (native-inputs
  5216. `(("groff" ,groff-minimal) ; for nroff
  5217. ("util-linux" ,util-linux))) ; for col
  5218. (home-page "https://github.com/bleskodev/siggen")
  5219. (synopsis "Signal generation tools")
  5220. (description "siggen is a set of tools for imitating a laboratory signal
  5221. generator, generating audio signals out of Linux's /dev/dsp audio
  5222. device. There is support for mono and/or stereo and 8 or 16 bit samples.")
  5223. (license license:gpl2)))
  5224. (define-public mda-lv2
  5225. (package
  5226. (name "mda-lv2")
  5227. (version "1.2.6")
  5228. (source
  5229. (origin
  5230. (method url-fetch)
  5231. (uri (string-append "http://download.drobilla.net/mda-lv2-"
  5232. version ".tar.bz2"))
  5233. (sha256
  5234. (base32 "1nspk2j11l65m5r9z5isw8j749vh9a89wgx8mkrrq15f4iq12rnd"))))
  5235. (build-system waf-build-system)
  5236. (arguments
  5237. `(#:tests? #f ; There are no tests.
  5238. #:configure-flags
  5239. (list (string-append "--prefix="
  5240. (assoc-ref %outputs "out")))))
  5241. (inputs
  5242. `(("lv2" ,lv2)))
  5243. (native-inputs
  5244. `(("pkg-config" ,pkg-config)))
  5245. (native-search-paths
  5246. (list (search-path-specification
  5247. (variable "LV2_PATH")
  5248. (files '("lib/lv2")))))
  5249. (home-page "https://drobilla.net/software/mda-lv2")
  5250. (synopsis "Audio plug-in pack for LV2")
  5251. (description
  5252. "MDA-LV2 is an LV2 port of the MDA plugins. It includes effects and a few
  5253. instrument plugins.")
  5254. (license license:gpl3+)))