music.scm 265 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2014, 2019 Eric Bavier <bavier@member.fsf.org>
  3. ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
  4. ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
  5. ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
  6. ;;; Copyright © 2016, 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
  7. ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
  8. ;;; Copyright © 2016, 2017, 2019 Kei Kebreau <kkebreau@posteo.net>
  9. ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
  10. ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
  11. ;;; Copyright © 2017 nikita <nikita@n0.is>
  12. ;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org>
  13. ;;; Copyright © 2017, 2018, 2019, 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
  14. ;;; Copyright © 2017, 2018, 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com>
  15. ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
  16. ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  17. ;;; Copyright © 2018 nee <nee.git@hidamari.blue>
  18. ;;; Copyright © 2018, 2021 Stefan Reichör <stefan@xsteve.at>
  19. ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
  20. ;;; Copyright © 2018, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
  21. ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
  22. ;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
  23. ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
  24. ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
  25. ;;; Copyright © 2019 raingloom <raingloom@protonmail.com>
  26. ;;; Copyright © 2019 David Wilson <david@daviwil.com>
  27. ;;; Copyright © 2019, 2020, 2021 Alexandros Theodotou <alex@zrythm.org>
  28. ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
  29. ;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net>
  30. ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
  31. ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
  32. ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
  33. ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
  34. ;;; Copyright © 2019 Riku Viitanen <riku.viitanen0@gmail.com>
  35. ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
  36. ;;; Copyright © 2021 Liliana Marie Prikler <liliana.prikler@gmail.com>
  37. ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
  38. ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
  39. ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
  40. ;;; Copyright © 2021 Frank Pursel <frank.pursel@gmail.com>
  41. ;;; Copyright © 2021 Rovanion Luckey <rovanion.luckey@gmail.com>
  42. ;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li>
  43. ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
  44. ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
  45. ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
  46. ;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org>
  47. ;;;
  48. ;;; This file is part of GNU Guix.
  49. ;;;
  50. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  51. ;;; under the terms of the GNU General Public License as published by
  52. ;;; the Free Software Foundation; either version 3 of the License, or (at
  53. ;;; your option) any later version.
  54. ;;;
  55. ;;; GNU Guix is distributed in the hope that it will be useful, but
  56. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  57. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  58. ;;; GNU General Public License for more details.
  59. ;;;
  60. ;;; You should have received a copy of the GNU General Public License
  61. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  62. (define-module (gnu packages music)
  63. #:use-module (guix utils)
  64. #:use-module (guix packages)
  65. #:use-module (guix download)
  66. #:use-module (guix git-download)
  67. #:use-module ((guix licenses) #:prefix license:)
  68. #:use-module (guix build-system gnu)
  69. #:use-module (guix build-system ant)
  70. #:use-module (guix build-system cmake)
  71. #:use-module (guix build-system meson)
  72. #:use-module (guix build-system perl)
  73. #:use-module (guix build-system python)
  74. #:use-module (guix build-system qt)
  75. #:use-module (guix build-system scons)
  76. #:use-module (guix build-system glib-or-gtk)
  77. #:use-module (guix build-system qt)
  78. #:use-module (guix build-system waf)
  79. #:use-module (guix build-system trivial)
  80. #:use-module (guix build-system go)
  81. #:use-module (guix build-system qt)
  82. #:use-module (gnu packages)
  83. #:use-module (gnu packages admin)
  84. #:use-module (gnu packages algebra)
  85. #:use-module (gnu packages apr)
  86. #:use-module (gnu packages audio)
  87. #:use-module (gnu packages autotools)
  88. #:use-module (gnu packages assembly)
  89. #:use-module (gnu packages backup)
  90. #:use-module (gnu packages base) ;libbdf
  91. #:use-module (gnu packages bash)
  92. #:use-module (gnu packages benchmark)
  93. #:use-module (gnu packages bison)
  94. #:use-module (gnu packages boost)
  95. #:use-module (gnu packages build-tools)
  96. #:use-module (gnu packages cdrom)
  97. #:use-module (gnu packages code)
  98. #:use-module (gnu packages check)
  99. #:use-module (gnu packages cmake)
  100. #:use-module (gnu packages compression)
  101. #:use-module (gnu packages cpp)
  102. #:use-module (gnu packages crypto)
  103. #:use-module (gnu packages curl)
  104. #:use-module (gnu packages cyrus-sasl)
  105. #:use-module (gnu packages datastructures)
  106. #:use-module (gnu packages docbook)
  107. #:use-module (gnu packages documentation)
  108. #:use-module (gnu packages emacs)
  109. #:use-module (gnu packages file)
  110. #:use-module (gnu packages flex)
  111. #:use-module (gnu packages fltk)
  112. #:use-module (gnu packages fonts)
  113. #:use-module (gnu packages fontutils)
  114. #:use-module (gnu packages freedesktop)
  115. #:use-module (gnu packages game-development)
  116. #:use-module (gnu packages gcc)
  117. #:use-module (gnu packages gnupg)
  118. #:use-module (gnu packages gettext)
  119. #:use-module (gnu packages ghostscript)
  120. #:use-module (gnu packages gl)
  121. #:use-module (gnu packages glib)
  122. #:use-module (gnu packages gnome)
  123. #:use-module (gnu packages gpodder)
  124. #:use-module (gnu packages graphics)
  125. #:use-module (gnu packages graphviz)
  126. #:use-module (gnu packages gstreamer)
  127. #:use-module (gnu packages gtk)
  128. #:use-module (gnu packages guile)
  129. #:use-module (gnu packages haskell)
  130. #:use-module (gnu packages image)
  131. #:use-module (gnu packages imagemagick)
  132. #:use-module (gnu packages java)
  133. #:use-module (gnu packages libffi)
  134. #:use-module (gnu packages libusb)
  135. #:use-module (gnu packages linux) ; for alsa-utils
  136. #:use-module (gnu packages lirc)
  137. #:use-module (gnu packages llvm)
  138. #:use-module (gnu packages man)
  139. #:use-module (gnu packages mp3)
  140. #:use-module (gnu packages mpd)
  141. #:use-module (gnu packages ncurses)
  142. #:use-module (gnu packages netpbm)
  143. #:use-module (gnu packages pcre)
  144. #:use-module (gnu packages pdf)
  145. #:use-module (gnu packages perl)
  146. #:use-module (gnu packages perl-web)
  147. #:use-module (gnu packages pkg-config)
  148. #:use-module (gnu packages protobuf)
  149. #:use-module (gnu packages pulseaudio) ;libsndfile
  150. #:use-module (gnu packages python)
  151. #:use-module (gnu packages python-check)
  152. #:use-module (gnu packages python-compression)
  153. #:use-module (gnu packages python-web)
  154. #:use-module (gnu packages python-xyz)
  155. #:use-module (gnu packages qt)
  156. #:use-module (gnu packages rdf)
  157. #:use-module (gnu packages readline)
  158. #:use-module (gnu packages rsync)
  159. #:use-module (gnu packages sdl)
  160. #:use-module (gnu packages serialization)
  161. #:use-module (gnu packages sphinx)
  162. #:use-module (gnu packages sqlite)
  163. #:use-module (gnu packages stb)
  164. #:use-module (gnu packages tcl)
  165. #:use-module (gnu packages texinfo)
  166. #:use-module (gnu packages tex)
  167. #:use-module (gnu packages time)
  168. #:use-module (gnu packages tls)
  169. #:use-module (gnu packages version-control)
  170. #:use-module (gnu packages video)
  171. #:use-module (gnu packages vim) ;for 'xxd'
  172. #:use-module (gnu packages web)
  173. #:use-module (gnu packages webkit)
  174. #:use-module (gnu packages wxwidgets)
  175. #:use-module (gnu packages xdisorg)
  176. #:use-module (gnu packages xml)
  177. #:use-module (gnu packages xorg)
  178. #:use-module (gnu packages xiph)
  179. #:use-module (gnu packages golang)
  180. #:use-module (gnu packages lua)
  181. #:use-module ((srfi srfi-1) #:select (last)))
  182. (define-public audacious
  183. (package
  184. (name "audacious")
  185. (version "4.1")
  186. (source
  187. (origin
  188. (method url-fetch)
  189. (uri (string-append "https://distfiles.audacious-media-player.org/"
  190. "audacious-" version ".tar.bz2"))
  191. (sha256
  192. (base32 "0p734psjjvjcmla2hg5h6a9v1prvy63jj9xm2g2ngs49jy7qan0z"))))
  193. (build-system gnu-build-system)
  194. (arguments
  195. `(#:configure-flags
  196. (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
  197. "--disable-gtk")
  198. #:tests? #f ; no check target
  199. #:phases
  200. (modify-phases %standard-phases
  201. (add-after 'install 'unpack-plugins
  202. (lambda* (#:key inputs #:allow-other-keys)
  203. (let ((plugins (assoc-ref inputs "audacious-plugins")))
  204. (invoke "tar" "xvf" plugins)
  205. #t)))
  206. (add-after 'unpack-plugins 'configure-plugins
  207. (lambda* (#:key configure-flags outputs #:allow-other-keys)
  208. (let ((out (assoc-ref outputs "out")))
  209. (with-directory-excursion
  210. (string-append "audacious-plugins-" ,version)
  211. (substitute* "configure"
  212. (("/bin/sh") (which "sh")))
  213. (apply invoke "./configure"
  214. (append configure-flags
  215. ;; audacious-plugins requires audacious to build.
  216. (list (string-append "PKG_CONFIG_PATH="
  217. out "/lib/pkgconfig:"
  218. (getenv "PKG_CONFIG_PATH"))
  219. (string-append "--prefix=" out))))))))
  220. (add-after 'configure-plugins 'build-plugins
  221. (lambda _
  222. (with-directory-excursion
  223. (string-append "audacious-plugins-" ,version)
  224. (invoke "make" "-j" (number->string (parallel-job-count))))))
  225. (add-after 'build-plugins 'install-plugins
  226. (lambda _
  227. (with-directory-excursion
  228. (string-append "audacious-plugins-" ,version)
  229. (invoke "make" "install")))))))
  230. (native-inputs
  231. `(("audacious-plugins"
  232. ,(origin
  233. (method url-fetch)
  234. (uri (string-append "https://distfiles.audacious-media-player.org/"
  235. "audacious-plugins-" version ".tar.bz2"))
  236. (sha256
  237. (base32 "0k0xnqmxi5lna034i2cnzvfzrykxmv4fbs1nkrc9sd2ma1igrmns"))))
  238. ("gettext" ,gettext-minimal)
  239. ("glib:bin" ,glib "bin") ; for gdbus-codegen
  240. ("pkg-config" ,pkg-config)))
  241. (inputs
  242. `(("dbus" ,dbus)
  243. ("qtbase" ,qtbase-5)
  244. ("qtmultimedia" ,qtmultimedia)
  245. ;; Plugin dependencies
  246. ("alsa-lib" ,alsa-lib)
  247. ("curl" ,curl)
  248. ("faad2" ,faad2)
  249. ("ffmpeg" ,ffmpeg)
  250. ("flac" ,flac)
  251. ("fluidsynth" ,fluidsynth)
  252. ("lame" ,lame)
  253. ("libbs2b" ,libbs2b)
  254. ("libcddb" ,libcddb)
  255. ("libcdio-paranoia" ,libcdio-paranoia)
  256. ("libcue" ,libcue)
  257. ("libnotify" ,libnotify)
  258. ("libogg" ,libogg)
  259. ("libopenmpt" ,libopenmpt)
  260. ("libsamplerate" ,libsamplerate)
  261. ("libsndfile" ,libsndfile)
  262. ("libvorbis" ,libvorbis)
  263. ("libxcomposite" ,libxcomposite)
  264. ("libxml2" ,libxml2)
  265. ("libxrender" ,libxrender)
  266. ("lirc" ,lirc)
  267. ("jack" ,jack-1)
  268. ("mesa" ,mesa)
  269. ("mpg123" ,mpg123)
  270. ("neon" ,neon)
  271. ("pulseaudio" ,pulseaudio)
  272. ("sdl2" ,sdl2)
  273. ("soxr" ,soxr)
  274. ("wavpack" ,wavpack)))
  275. (home-page "https://audacious-media-player.org")
  276. (synopsis "Modular and skinnable audio player")
  277. (description
  278. "Audacious is an audio player descended from XMMS. Drag and drop
  279. folders and individual song files, search for artists and albums in
  280. your entire music library, or create and edit your own custom
  281. playlists. Listen to CD’s or stream music from the Internet. Tweak
  282. the sound with the graphical equalizer or experiment with LADSPA
  283. effects. Enjoy the modern GTK-themed interface or change things up
  284. with Winamp Classic skins. Use the plugins included with Audacious to
  285. fetch lyrics for your music, to set an alarm in the morning, and
  286. more.")
  287. ;; According to COPYING, Audacious and its plugins are licensed
  288. ;; under the BSD 2-clause license and libguess is licensed under
  289. ;; the BSD 3-clause license.
  290. (license (list license:bsd-2
  291. license:bsd-3
  292. ;; Plugin licenses that aren't BSD 2- or 3-clause.
  293. license:lgpl2.1
  294. license:gpl2
  295. license:gpl3
  296. license:expat
  297. license:isc
  298. license:lgpl2.0))))
  299. (define-public aria-maestosa
  300. (package
  301. (name "aria-maestosa")
  302. (version "1.4.13")
  303. (source (origin
  304. (method url-fetch)
  305. (uri (string-append "mirror://sourceforge/ariamaestosa/ariamaestosa/"
  306. version "/AriaSrc-" version ".tar.bz2"))
  307. (sha256
  308. (base32
  309. "1cs3z6frx2ch7rm5ammx9p0rxcjrbj1vq14hvcbimpaw39rdsn3d"))))
  310. (build-system scons-build-system)
  311. (arguments
  312. `(#:tests? #f ;no tests
  313. #:scons-flags
  314. (list (string-append "prefix=" (assoc-ref %outputs "out")))
  315. #:scons ,scons-python2
  316. #:phases
  317. (modify-phases %standard-phases
  318. (delete 'configure)
  319. (add-after 'unpack 'scons-propagate-environment
  320. (lambda _
  321. ;; By design, SCons does not, by default, propagate
  322. ;; environment variables to subprocesses. See:
  323. ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
  324. ;; Here, we modify the SConstruct file to arrange for
  325. ;; environment variables to be propagated.
  326. (substitute* "SConstruct"
  327. (("env = Environment\\(\\)")
  328. "env = Environment(ENV=os.environ)")
  329. ;; Scons errors out when copying subdirectories from Resources,
  330. ;; so we move them instead.
  331. (("Copy") "Move")
  332. ;; We move the "score" and "Documentation" directories at once,
  333. ;; so we have to ignore files contained therein.
  334. (("if \".svn\" in file" line)
  335. (string-append line
  336. " or \"score/\" in file"
  337. " or \"Documentation/\" in file")))
  338. #t))
  339. (add-after 'install 'fix-directory-permissions
  340. (lambda* (#:key outputs #:allow-other-keys)
  341. (let ((out (assoc-ref outputs "out")))
  342. (chmod (string-append out "/share/Aria/Documentation") #o555)
  343. (chmod (string-append out "/share/Aria/score") #o555)
  344. #t))))))
  345. (inputs
  346. `(("wxwidgets" ,wxwidgets)
  347. ("glib" ,glib)
  348. ("alsa-lib" ,alsa-lib)))
  349. (native-inputs
  350. `(("pkg-config" ,pkg-config)))
  351. (home-page "http://ariamaestosa.sourceforge.net/")
  352. (synopsis "MIDI sequencer and editor")
  353. (description
  354. "Aria Maestosa is a MIDI sequencer and editor. It lets you compose, edit
  355. and play MIDI files with a few clicks in a user-friendly interface offering
  356. score, keyboard, guitar, drum and controller views.")
  357. (license license:gpl3+)))
  358. (define-public clementine
  359. (package
  360. (name "clementine")
  361. (version "1.4.0rc1-450-g2725ef99d")
  362. (source (origin
  363. (method git-fetch)
  364. (uri (git-reference
  365. (url "https://github.com/clementine-player/Clementine")
  366. (commit version)))
  367. (file-name (git-file-name name version))
  368. (sha256
  369. (base32
  370. "1pcwwi9b2qcfjn748577gqx6d1hgg7cisw2dn43npwafdvvkdb90"))
  371. (modules '((guix build utils)
  372. (ice-9 regex)))
  373. (snippet
  374. '(begin
  375. (use-modules ((ice-9 regex)))
  376. (for-each
  377. (lambda (dir)
  378. ;; TODO: The following dependencies are still bundled:
  379. ;; - "qxt": Appears to be unmaintained upstream.
  380. ;; - "qsqlite"
  381. ;; - "qtsingleapplication"
  382. ;; - "qocoa"
  383. ;; - "qtiocompressor"
  384. (let ((bundled '("qsqlite"
  385. "qtsingleapplication"
  386. "qxt"
  387. "qocoa"
  388. "qtiocompressor")))
  389. (if (not
  390. (string-match
  391. (string-append ".?*(" (string-join bundled "|") ")")
  392. dir))
  393. (delete-file-recursively dir))))
  394. (find-files "3rdparty"
  395. (lambda (file stat)
  396. (string-match "^3rdparty/[^/]*$" file))
  397. #:directories? #t))
  398. #t))))
  399. (build-system cmake-build-system)
  400. (arguments
  401. '(#:test-target "clementine_test"
  402. #:configure-flags
  403. (list ;; Requires unpackaged "projectm"
  404. "-DENABLE_VISUALISATIONS=OFF"
  405. ;; Otherwise it may try to download a non-free library at run-time.
  406. ;; TODO In an origin snippet, remove the code that performs the
  407. ;; download.
  408. "-DHAVE_SPOTIFY_DOWNLOADER=FALSE"
  409. ;; Clementine checks that the taglib version is higher than 1.11,
  410. ;; because of https://github.com/taglib/taglib/issues/864. Remove
  411. ;; this flag when 1.12 is released.
  412. "-DUSE_SYSTEM_TAGLIB=TRUE")
  413. #:phases
  414. (modify-phases %standard-phases
  415. (add-after 'install 'wrap-program
  416. (lambda* (#:key inputs outputs #:allow-other-keys)
  417. (let ((out (assoc-ref outputs "out"))
  418. (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
  419. (wrap-program (string-append out "/bin/clementine")
  420. `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
  421. #t))))))
  422. (native-inputs
  423. `(("gettext" ,gettext-minimal)
  424. ("googletest" ,googletest)
  425. ("pkg-config" ,pkg-config)
  426. ("qtlinguist" ,qttools)))
  427. (inputs
  428. `(("boost" ,boost)
  429. ("chromaprint" ,chromaprint)
  430. ("fftw" ,fftw)
  431. ("glib" ,glib)
  432. ("glu" ,glu)
  433. ("gstreamer" ,gstreamer)
  434. ("gst-plugins-base" ,gst-plugins-base)
  435. ("gst-plugins-good" ,gst-plugins-good)
  436. ("gst-libav" ,gst-libav)
  437. ("libcdio" ,libcdio)
  438. ("libmygpo-qt" ,libmygpo-qt)
  439. ;; TODO: Package libgpod.
  440. ("libmtp" ,libmtp)
  441. ("libxml2" ,libxml2)
  442. ("protobuf" ,protobuf)
  443. ("pulseaudio" ,pulseaudio)
  444. ("qtbase" ,qtbase-5)
  445. ("qtx11extras" ,qtx11extras)
  446. ("sqlite" ,sqlite)
  447. ("sparsehash" ,sparsehash)
  448. ("taglib" ,taglib)))
  449. (home-page "https://clementine-player.org")
  450. (synopsis "Music player and library organizer")
  451. (description "Clementine is a multiplatform music player. It is inspired
  452. by Amarok 1.4, focusing on a fast and easy-to-use interface for searching and
  453. playing your music.")
  454. (license (list
  455. ;; clementine and qtiocompressor are under GPLv3.
  456. license:gpl3+
  457. ;; qxt is under CPL1.0.
  458. license:cpl1.0
  459. ;; qsqlite and qtsingleapplication are under LGPL2.1+.
  460. license:lgpl2.1+
  461. ;; qocoa is under MIT and CC by-sa for the icons.
  462. license:cc-by-sa3.0))))
  463. (define-public strawberry
  464. (package
  465. (name "strawberry")
  466. (version "0.9.3")
  467. (source (origin
  468. (method git-fetch)
  469. (uri (git-reference
  470. (url "https://github.com/strawberrymusicplayer/strawberry")
  471. (commit version)))
  472. (file-name (git-file-name name version))
  473. (sha256
  474. (base32
  475. "0lby5zi66i08s0mcygja8l3rbd97inhaxqbhahj8lfxs52r4grrq"))
  476. (modules '((guix build utils)
  477. (ice-9 regex)))
  478. (snippet
  479. '(begin
  480. (use-modules ((ice-9 regex)))
  481. (for-each
  482. (lambda (dir)
  483. ;; TODO: The following dependencies are still bundled:
  484. ;; - "singleapplication"
  485. (let ((bundled '("singleapplication")))
  486. (if (not
  487. (string-match
  488. (string-append ".?*(" (string-join bundled "|") ")")
  489. dir))
  490. (delete-file-recursively dir))))
  491. (find-files "3rdparty"
  492. (lambda (file stat)
  493. (string-match "^3rdparty/[^/]*$" file))
  494. #:directories? #t))
  495. #t))))
  496. (build-system cmake-build-system)
  497. (arguments
  498. `(#:test-target "run_strawberry_tests"
  499. #:phases
  500. (modify-phases %standard-phases
  501. (add-after 'install 'wrap-program
  502. (lambda* (#:key inputs outputs #:allow-other-keys)
  503. (let ((out (assoc-ref outputs "out"))
  504. (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
  505. (wrap-program (string-append out "/bin/strawberry")
  506. `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
  507. #t)))
  508. (add-before 'check 'pre-check
  509. (lambda* (#:key inputs #:allow-other-keys)
  510. (let ((xorg-server (assoc-ref inputs "xorg-server")))
  511. (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
  512. (setenv "DISPLAY" ":1")
  513. (setenv "HOME" (getcwd))
  514. #t))))))
  515. (native-inputs
  516. `(("gettext" ,gettext-minimal)
  517. ("googletest" ,googletest)
  518. ("pkg-config" ,pkg-config)
  519. ("qtlinguist" ,qttools)
  520. ("xorg-server" ,xorg-server-for-tests)))
  521. (inputs
  522. `(("alsa-lib" ,alsa-lib)
  523. ("boost" ,boost)
  524. ("chromaprint" ,chromaprint)
  525. ("dbus" ,dbus)
  526. ("fftw" ,fftw)
  527. ("glib" ,glib)
  528. ("gnutls" ,gnutls)
  529. ("gstreamer" ,gstreamer)
  530. ("gst-plugins-base" ,gst-plugins-base)
  531. ("gst-plugins-good" ,gst-plugins-good)
  532. ("libcdio" ,libcdio)
  533. ("libmtp" ,libmtp)
  534. ("protobuf" ,protobuf)
  535. ("pulseaudio" ,pulseaudio)
  536. ("qtbase" ,qtbase-5)
  537. ("qtx11extras" ,qtx11extras)
  538. ("sqlite" ,sqlite)
  539. ("taglib" ,taglib)))
  540. (home-page "https://www.strawberrymusicplayer.org/")
  541. (synopsis "Music player and library organizer")
  542. (description "Strawberry is a music player and music collection organizer.
  543. It is a fork of Clementine aimed at music collectors and audiophiles.")
  544. (license (list
  545. ;; strawberry.
  546. license:gpl3+
  547. ;; singleapplication
  548. license:expat
  549. ;; icons.
  550. license:cc-by-sa3.0))))
  551. (define-public cmus
  552. (package
  553. (name "cmus")
  554. (version "2.9.1")
  555. (source (origin
  556. (method git-fetch)
  557. (uri (git-reference
  558. (url "https://github.com/cmus/cmus")
  559. (commit (string-append "v" version))))
  560. (file-name (git-file-name name version))
  561. (sha256
  562. (base32
  563. "0zjkimni2fhv4yskrjrgj6b74f33rfj58zgd7khwrz4z8nf88j0w"))))
  564. (build-system gnu-build-system)
  565. (arguments
  566. `(#:tests? #f ; cmus does not include tests
  567. #:phases
  568. (modify-phases %standard-phases
  569. (replace 'configure
  570. (lambda* (#:key outputs #:allow-other-keys)
  571. (let ((out (assoc-ref outputs "out")))
  572. ;; It's an idiosyncratic configure script that doesn't
  573. ;; understand --prefix=..; it wants prefix=.. instead.
  574. (invoke "./configure"
  575. (string-append "prefix=" out))
  576. #t))))))
  577. ;; TODO: cmus optionally supports the following formats, which haven't yet
  578. ;; been added to Guix:
  579. ;;
  580. ;; - Roar, libroar
  581. ;;
  582. ;; - DISCID_LIBS, apparently different from cd-discid which is included in
  583. ;; Guix. See <http://sourceforge.net/projects/discid/>
  584. (native-inputs
  585. `(("pkg-config" ,pkg-config)))
  586. (inputs
  587. `(("alsa-lib" ,alsa-lib)
  588. ("ao" ,ao)
  589. ("faad2" ,faad2)
  590. ("ffmpeg" ,ffmpeg)
  591. ("flac" ,flac)
  592. ("jack" ,jack-1)
  593. ("libcddb" ,libcddb)
  594. ("libcdio-paranoia" ,libcdio-paranoia)
  595. ("libcue" ,libcue)
  596. ("libmad" ,libmad)
  597. ("libmodplug" ,libmodplug)
  598. ("libmpcdec" ,libmpcdec)
  599. ("libsamplerate" ,libsamplerate)
  600. ("libvorbis" ,libvorbis)
  601. ("ncurses" ,ncurses)
  602. ("opusfile" ,opusfile)
  603. ("pulseaudio" ,pulseaudio)
  604. ("wavpack" ,wavpack)))
  605. (home-page "https://cmus.github.io/")
  606. (synopsis "Small console music player")
  607. (description "Cmus is a small and fast console music player. It supports
  608. many input formats and provides a customisable Vi-style user interface.")
  609. (license license:gpl2+)))
  610. (define-public denemo
  611. (package
  612. (name "denemo")
  613. (version "2.5.0")
  614. (source
  615. (origin
  616. (method url-fetch)
  617. (uri (string-append "mirror://gnu/denemo/denemo-" version ".tar.gz"))
  618. (sha256
  619. (base32 "05kwy8894hsxr6123hc854j2qq2sxyjw721zk4g3vzz8pw29p887"))))
  620. (build-system gnu-build-system)
  621. (arguments
  622. `(#:phases
  623. (modify-phases %standard-phases
  624. (replace 'check
  625. (lambda* (#:key inputs #:allow-other-keys)
  626. ;; Tests require to write $HOME.
  627. (setenv "HOME" (getcwd))
  628. ;; Replace hard-coded diff file name.
  629. (substitute* "tests/integration.c"
  630. (("/usr/bin/diff")
  631. (search-input-file inputs "/bin/diff")))
  632. ;; Denemo's documentation says to use this command to run its
  633. ;; test suite.
  634. (invoke "make" "-C" "tests" "check")))
  635. (add-before 'build 'set-lilypond
  636. ;; This phase sets the default path for lilypond to its current
  637. ;; location in the store.
  638. (lambda* (#:key inputs #:allow-other-keys)
  639. (let* ((lilypond (search-input-file inputs "/bin/lilypond")))
  640. (substitute* "src/core/prefops.c"
  641. (("g_string_new \\(\"lilypond\"\\);")
  642. (string-append "g_string_new (\""
  643. lilypond
  644. "\");"))))
  645. #t)))))
  646. (native-inputs
  647. `(("diffutils" ,diffutils)
  648. ("glib:bin" ,glib "bin") ; for gtester
  649. ("gtk-doc" ,gtk-doc)
  650. ("intltool" ,intltool)
  651. ("libtool" ,libtool)
  652. ("pkg-config" ,pkg-config)))
  653. (inputs
  654. `(("alsa-lib" ,alsa-lib)
  655. ("aubio" ,aubio)
  656. ("evince" ,evince)
  657. ("fftw" ,fftw)
  658. ("fluidsynth" ,fluidsynth)
  659. ("glib" ,glib)
  660. ("gtk+" ,gtk+)
  661. ("gtksourceview" ,gtksourceview-3)
  662. ("guile" ,guile-2.0)
  663. ("librsvg" ,librsvg)
  664. ("libsndfile" ,libsndfile)
  665. ("libxml2" ,libxml2)
  666. ("lilypond" ,lilypond)
  667. ("portaudio" ,portaudio)
  668. ("portmidi" ,portmidi)
  669. ("rubberband" ,rubberband)))
  670. (synopsis "Graphical music notation, front-end to GNU Lilypond")
  671. (description
  672. "GNU Denemo is a music notation editor that provides a convenient
  673. interface to the powerful music engraving program Lilypond. Music can be
  674. typed in using the computer keyboard, played in using a MIDI keyboard, or
  675. even input via a microphone connected to the sound card. The final product
  676. is publication-quality music notation that is continuously generated in the
  677. background while you work.")
  678. (home-page "http://www.denemo.org")
  679. (license license:gpl3+)))
  680. (define-public dumb
  681. (package
  682. (name "dumb")
  683. (version "2.0.3")
  684. (source
  685. (origin
  686. (method git-fetch)
  687. (uri (git-reference
  688. (url "https://github.com/kode54/dumb")
  689. (commit version)))
  690. (sha256
  691. (base32 "1cnq6rb14d4yllr0yi32p9jmcig8avs3f43bvdjrx4r1mpawspi6"))
  692. (file-name (git-file-name name version))))
  693. (build-system cmake-build-system)
  694. (arguments
  695. '(#:tests? #f ; no check target
  696. #:configure-flags
  697. (list "-DBUILD_SHARED_LIBS=ON"
  698. "-DBUILD_EXAMPLES=OFF")))
  699. (home-page "https://github.com/kode54/dumb")
  700. (synopsis "Module audio renderer library")
  701. (description
  702. "DUMB is a tracker library with support for IT, XM, S3M and MOD files. It
  703. targets maximum accuracy to the original formats, with low-pass resonant filters
  704. for the IT files, accurate timing and pitching, and three resampling quality
  705. settings (aliasing, linear interpolation and cubic interpolation).")
  706. ;; The DUMB license is a bit peculiar.
  707. ;; Clause 8 states that clauses 4, 5 and 6 are null and void, leaving only
  708. ;; the first three clauses for genuine consideration.
  709. ;; Clauses 1, 2 and 3 are analogous to clauses 1, 2 and 3 of the zlib
  710. ;; license, a known free software license.
  711. ;; Therefore, the DUMB license may be considered a free software license.
  712. (license (license:fsf-free "file://LICENSE"))))
  713. (define-public dumb-allegro4
  714. (package
  715. (inherit dumb)
  716. (name "dumb-allegro4")
  717. (arguments
  718. (substitute-keyword-arguments (package-arguments dumb)
  719. ((#:configure-flags flags)
  720. `(cons "-DBUILD_ALLEGRO4=ON" ,flags))))
  721. (inputs
  722. `(("allegro" ,allegro-4)))))
  723. (define-public hydrogen
  724. (package
  725. (name "hydrogen")
  726. (version "1.0.2")
  727. (source
  728. (origin
  729. (method git-fetch)
  730. (uri (git-reference
  731. (url "https://github.com/hydrogen-music/hydrogen")
  732. (commit version)))
  733. (file-name (git-file-name name version))
  734. (sha256
  735. (base32 "0nhn2njs8yyxcijxv5zgymf3211y6anzm0v9kn4vnd8kai7zwxxp"))))
  736. (build-system cmake-build-system)
  737. (arguments
  738. `(#:test-target "tests"
  739. #:phases
  740. (modify-phases %standard-phases
  741. (add-after 'unpack 'fix-data-directory
  742. (lambda* (#:key outputs #:allow-other-keys)
  743. (substitute* "CMakeLists.txt"
  744. (("/usr/share/pixmaps")
  745. (string-append (assoc-ref outputs "out")
  746. "/share/pixmaps")))
  747. #t)))))
  748. (native-inputs
  749. `(("cppunit" ,cppunit)
  750. ("pkg-config" ,pkg-config)
  751. ("qtlinguist" ,qttools)))
  752. (inputs
  753. `(("alsa-lib" ,alsa-lib)
  754. ("jack" ,jack-1)
  755. ;; ("ladspa" ,ladspa) ; require LADSPA_PATH to be set
  756. ("lash" ,lash)
  757. ("libarchive" ,libarchive)
  758. ("liblo" ,liblo)
  759. ("libsndfile" ,libsndfile)
  760. ("lrdf" ,lrdf)
  761. ("pulseaudio" ,pulseaudio)
  762. ("qtbase" ,qtbase-5)
  763. ("qtxmlpatterns" ,qtxmlpatterns)
  764. ("zlib" ,zlib)))
  765. (home-page "http://www.hydrogen-music.org")
  766. (synopsis "Drum machine")
  767. (description
  768. "Hydrogen is an advanced drum machine for GNU/Linux. Its main goal is to
  769. enable professional yet simple and intuitive pattern-based drum programming.")
  770. (license license:gpl2+)))
  771. (define-public easytag
  772. (package
  773. (name "easytag")
  774. (version "2.4.3")
  775. (source (origin
  776. (method url-fetch)
  777. (uri (string-append "mirror://gnome/sources/easytag/2.4/easytag-"
  778. version ".tar.xz"))
  779. (sha256
  780. (base32
  781. "1mbxnqrw1fwcgraa1bgik25vdzvf97vma5pzknbwbqq5ly9fwlgw"))))
  782. (build-system glib-or-gtk-build-system)
  783. (native-inputs
  784. `(("desktop-file-utils" ,desktop-file-utils)
  785. ("glib" ,glib "bin")
  786. ("intltool" ,intltool)
  787. ("itstool" ,itstool)
  788. ("pkg-config" ,pkg-config)
  789. ("xmllint" ,libxml2)))
  790. (inputs
  791. `(("flac" ,flac)
  792. ("gtk+" ,gtk+)
  793. ("id3lib" ,id3lib)
  794. ("libid3tag" ,libid3tag)
  795. ("libvorbis" ,libvorbis)
  796. ("opusfile" ,opusfile)
  797. ("speex" ,speex)
  798. ("taglib" ,taglib)
  799. ("wavpack" ,wavpack)
  800. ("yelp" ,yelp)))
  801. (arguments
  802. '(#:phases
  803. (modify-phases %standard-phases
  804. (add-before 'configure 'configure-libid3tag
  805. (lambda* (#:key inputs #:allow-other-keys)
  806. ;; libid3tag does not provide a .pc file and EasyTAG's configure
  807. ;; script healivy relies on pkg-config. Providing a temporary
  808. ;; local .pc file is easier than patching the configure script.
  809. (let* ((libid3tag (assoc-ref inputs "libid3tag")))
  810. (mkdir-p "pkgconfig")
  811. (with-output-to-file
  812. "pkgconfig/id3tag.pc"
  813. (lambda _
  814. (format #t
  815. "prefix=~@*~a~@
  816. libdir=${prefix}/lib~@
  817. includedir=${prefix}/include~@
  818. Name: libid3tag~@
  819. Description:~@
  820. Version:~@
  821. Libs: -L${libdir} -lid3tag -lz~@
  822. Cflags: -I${includedir}~%"
  823. libid3tag)))
  824. (setenv "PKG_CONFIG_PATH"
  825. (string-append (getenv "PKG_CONFIG_PATH")
  826. ":" (getcwd) "/pkgconfig"))
  827. #t)))
  828. (add-after 'unpack 'patch-makefile
  829. (lambda _
  830. (substitute* "Makefile.in"
  831. ;; The Makefile generates a test-desktop-file-validate.sh
  832. ;; script with /bin/sh hard-coded.
  833. (("/bin/sh") (which "sh"))
  834. ;; Don't create 'icon-theme.cache'.
  835. (("gtk-update-icon-cache") "true"))
  836. #t)))))
  837. (home-page "https://wiki.gnome.org/Apps/EasyTAG")
  838. (synopsis "Simple application for viewing and editing tags in audio files")
  839. (description
  840. "EasyTAG is an application for viewing and editing tags in audio files.
  841. It supports MP3, MP2, MP4/AAC, FLAC, Ogg Opus, Ogg Speex, Ogg Vorbis,
  842. MusePack, Monkey's Audio, and WavPack files.")
  843. (license license:gpl2+)))
  844. (define-public extempore
  845. (package
  846. (name "extempore")
  847. (version "0.8.9")
  848. (source (origin
  849. (method git-fetch)
  850. (uri (git-reference
  851. (url "https://github.com/digego/extempore")
  852. (commit (string-append "v" version))))
  853. (sha256
  854. (base32
  855. "16i12zl3g1zpx6lhg5pg821xirdf9rxx5m11b68inf83wn6hknhb"))
  856. (file-name (git-file-name name version))
  857. (patches (search-patches
  858. "extempore-unbundle-external-dependencies.patch"))
  859. (modules '((guix build utils)))
  860. (snippet
  861. '(begin
  862. ;; Remove bundled sources.
  863. (map delete-file-recursively
  864. '("src/pcre"))
  865. #t))))
  866. (build-system cmake-build-system)
  867. (arguments
  868. `(#:configure-flags (list "-DJACK=ON"
  869. "-DPACKAGE=ON"
  870. (string-append "-DEXT_SHARE_DIR="
  871. (assoc-ref %outputs "out")
  872. "/share"))
  873. #:modules ((ice-9 match)
  874. (guix build cmake-build-system)
  875. (guix build utils))
  876. #:phases
  877. (modify-phases %standard-phases
  878. (add-after 'build 'build-aot-libs
  879. (lambda _
  880. (for-each (lambda (target)
  881. (invoke "make" target))
  882. '("aot_base"
  883. "aot_math"
  884. "aot_instruments"))
  885. #t))
  886. (add-after 'unpack 'patch-install-locations
  887. (lambda* (#:key outputs #:allow-other-keys)
  888. (substitute* "CMakeLists.txt"
  889. (("EXT_SHARE_DIR=\"\\.\"\\)")
  890. "EXT_SHARE_DIR=\"${EXT_SHARE_DIR}/extempore\")")
  891. (("DESTINATION \"\\.\"\\)") "DESTINATION bin)")
  892. (("DESTINATION \"\\.\"\n") "DESTINATION share/extempore\n"))
  893. #t))
  894. (add-after 'unpack 'patch-directories
  895. (lambda* (#:key outputs #:allow-other-keys)
  896. (substitute* "extras/extempore.el"
  897. (("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)")
  898. (string-append "(runtime-directory \""
  899. (assoc-ref outputs "out")
  900. "/share/extempore/runtime"
  901. "\")")))
  902. #t))
  903. (add-after 'unpack 'link-with-additional-libs
  904. (lambda _
  905. ;; The executable must be linked with libffi and zlib.
  906. (substitute* "CMakeLists.txt"
  907. (("target_link_libraries\\(extempore PRIVATE dl" line)
  908. (string-append line " ffi z")))
  909. #t))
  910. ;; FIXME: All examples that are used as tests segfault for some
  911. ;; unknown reason.
  912. (add-after 'unpack 'disable-broken-tests
  913. (lambda _
  914. (substitute* "CMakeLists.txt"
  915. (("extempore_add_example_as_test\\(.*") ""))
  916. #t))
  917. (add-after 'unpack 'hardcode-external-lib-paths
  918. (lambda* (#:key inputs #:allow-other-keys)
  919. (use-modules (ice-9 match))
  920. (for-each
  921. (match-lambda
  922. ((file-name lib pkg-name)
  923. (substitute* (string-append "libs/external/" file-name ".xtm")
  924. ((lib) (string-append (assoc-ref inputs pkg-name)
  925. "/lib/" lib)))))
  926. '(("assimp" "libassimp.so" "assimp")
  927. ("portmidi" "libportmidi.so" "portmidi")
  928. ("sndfile" "libsndfile.so" "libsndfile")
  929. ("fft" "libkiss_fft.so" "kiss-fft")
  930. ("stb_image" "libstb_image.so" "stb-image")
  931. ("nanovg" "libnanovg.so" "nanovg")
  932. ("glext" "libGL.so" "mesa")
  933. ("glfw3" "libglfw.so" "glfw")
  934. ("gl/glcore-directbind" "libGL.so" "mesa")
  935. ("gl/glcompat-directbind" "libGL.so" "mesa")))
  936. #t))
  937. (add-after 'unpack 'use-own-llvm
  938. (lambda* (#:key inputs #:allow-other-keys)
  939. (setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm"))
  940. ;; Our LLVM builds shared libraries, so Extempore should use
  941. ;; those.
  942. (substitute* "CMakeLists.txt"
  943. (("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY"))
  944. #t))
  945. (add-after 'unpack 'fix-aot-compilation
  946. (lambda* (#:key outputs #:allow-other-keys)
  947. (substitute* "CMakeLists.txt"
  948. ;; Extempore needs to be told where the runtime is to be found.
  949. ;; While we're at it we disable automatic tuning for a specific
  950. ;; CPU to make binary substitution possible.
  951. (("COMMAND extempore" prefix)
  952. (string-append prefix " --sharedir " (getcwd)
  953. " --mcpu=generic --attr=none")))
  954. #t))
  955. (add-after 'unpack 'symlink-assets
  956. (lambda* (#:key inputs #:allow-other-keys)
  957. (let ((assets (assoc-ref inputs "extempore-assets")))
  958. (symlink assets "assets")
  959. #t))))))
  960. (inputs
  961. `(("llvm"
  962. ,(package
  963. (inherit llvm-3.8)
  964. (name "llvm-for-extempore")
  965. (source
  966. (origin
  967. (method url-fetch)
  968. (uri (string-append "http://extempore.moso.com.au/extras/"
  969. "llvm-3.8.0.src-patched-for-extempore.tar.xz"))
  970. (sha256
  971. (base32
  972. "1svdl6fxn8l01ni8mpm0bd5h856ahv3h9sdzgmymr6fayckjvqzs"))))))
  973. ("extempore-assets"
  974. ,(let ((commit "0c9f32c18169b3fbc24bc1ad66283125b54a0c85")
  975. (revision "0")
  976. (version "0.0.0"))
  977. (origin
  978. (method git-fetch)
  979. (uri (git-reference
  980. (url "https://github.com/extemporelang/extempore-assets")
  981. (commit commit)))
  982. (file-name (git-file-name "extempore-assets"
  983. (git-version version revision commit)))
  984. (sha256
  985. (base32 "1pxmcbngd9qx8m71d5rfsmf4h31jnsnd3wjh8vb0rwskif22xz8l")))))
  986. ("libffi" ,libffi)
  987. ("jack" ,jack-1)
  988. ("libsndfile" ,libsndfile)
  989. ("glfw" ,glfw)
  990. ("apr" ,apr)
  991. ("stb-image"
  992. ,(let ((revision "1")
  993. (commit "152a250a702bf28951bb0220d63bc0c99830c498"))
  994. (package
  995. (inherit stb-image)
  996. (name "stb-image-for-extempore")
  997. (version (git-version "0" revision commit))
  998. (source
  999. (origin (method git-fetch)
  1000. (uri (git-reference
  1001. (url "https://github.com/extemporelang/stb")
  1002. (commit commit)))
  1003. (sha256
  1004. (base32
  1005. "0y0aa20pj9311x2ii06zg8xs34idg14hfgldqc5ymizc6cf1qiqv"))
  1006. (file-name (git-file-name name version))))
  1007. (build-system cmake-build-system)
  1008. (arguments `(#:tests? #f)) ;no tests included
  1009. (inputs '()))))
  1010. ("kiss-fft" ,kiss-fft-for-extempore)
  1011. ("nanovg" ,nanovg-for-extempore)
  1012. ("portmidi"
  1013. ,(let ((version "217")
  1014. (revision "0")
  1015. (commit "8602f548f71daf5ef638b2f7d224753400cb2158"))
  1016. (package
  1017. (inherit portmidi)
  1018. (name "portmidi-for-extempore")
  1019. (version (git-version version revision commit))
  1020. (source (origin
  1021. (method git-fetch)
  1022. (uri (git-reference
  1023. (url "https://github.com/extemporelang/portmidi")
  1024. (commit commit)))
  1025. (file-name (git-file-name name version))
  1026. (sha256
  1027. (base32
  1028. "1qidzl1s3kzhczzm96rcd2ppn27a97k2axgfh1zhvyf0s52d7m4w"))))
  1029. (build-system cmake-build-system)
  1030. (arguments `(#:tests? #f)) ;no tests
  1031. (native-inputs '()))))
  1032. ("assimp" ,assimp)
  1033. ("alsa-lib" ,alsa-lib)
  1034. ("portaudio" ,portaudio)
  1035. ("mesa" ,mesa)
  1036. ("pcre" ,pcre)
  1037. ("zlib" ,zlib)))
  1038. (native-inputs
  1039. `(("perl" ,perl)
  1040. ("emacs" ,emacs-no-x)))
  1041. ;; Extempore refuses to build on architectures other than x86_64
  1042. (supported-systems '("x86_64-linux"))
  1043. (home-page "https://github.com/digego/extempore")
  1044. (synopsis "Programming environment for live coding of multimedia")
  1045. (description
  1046. "Extempore is a programming language and runtime environment designed
  1047. with live programming in mind. It supports interactive programming in a REPL
  1048. style, compiling and binding code just-in-time. Although Extempore has its
  1049. roots in 'live coding' of audiovisual media art, it is suitable for any task
  1050. domain where dynamic run-time modifiability and good numerical performance are
  1051. required. Extempore also has strong timing and concurrency semantics, which
  1052. are helpful when working in problem spaces where timing is important (such as
  1053. audio and video).")
  1054. (license license:bsd-2)))
  1055. (define-public fluida-lv2
  1056. (package
  1057. (name "fluida-lv2")
  1058. (version "0.6")
  1059. (source
  1060. (origin
  1061. (method git-fetch)
  1062. (uri
  1063. (git-reference
  1064. (url "https://github.com/brummer10/Fluida.lv2")
  1065. (commit (string-append "v" version))
  1066. (recursive? #t))) ; references specific commit of libxputty
  1067. (file-name (git-file-name name version))
  1068. (sha256
  1069. (base32
  1070. "1v0bh4wcx79y832qigc3my8ixq0r4ica6z5fg2rg946pkh20x1a2"))))
  1071. (build-system gnu-build-system)
  1072. (arguments
  1073. `(#:tests? #f ; no "check" target
  1074. #:make-flags
  1075. (list (string-append "INSTALL_DIR="
  1076. (assoc-ref %outputs "out") "/lib/lv2")
  1077. "CC=gcc")
  1078. #:phases
  1079. (modify-phases %standard-phases
  1080. (delete 'configure))))
  1081. (inputs
  1082. `(("cairo" ,cairo)
  1083. ("libx11" ,libx11)
  1084. ("lv2" ,lv2)
  1085. ("fluidsynth" ,fluidsynth)))
  1086. (native-inputs
  1087. `(("pkg-config" ,pkg-config)))
  1088. (home-page "https://github.com/brummer10/Fluida.lv2")
  1089. (synopsis "Fluidsynth as an LV2 audio plugin")
  1090. (description "Fluida is an audio plugin in the LV2 format that acts as
  1091. a frontend for fluidsynth.")
  1092. (license license:gpl2+)))
  1093. (define-public surge-synth
  1094. (package
  1095. (name "surge-synth")
  1096. (version "1.7.1")
  1097. (source
  1098. (origin
  1099. (method git-fetch)
  1100. (uri (git-reference
  1101. (url "https://github.com/surge-synthesizer/surge")
  1102. (commit (string-append "release_" version))
  1103. (recursive? #t))) ; build system expects modules to be there
  1104. (file-name (git-file-name name version))
  1105. (sha256
  1106. (base32
  1107. "1jhk8iaqh89dnci4446b47315v2lc8gclraygk8m9jl20zpjxl0l"))))
  1108. (build-system cmake-build-system)
  1109. (arguments
  1110. `(#:tests? #f ; no tests included
  1111. #:phases
  1112. (modify-phases %standard-phases
  1113. (add-after 'unpack 'replace-python
  1114. (lambda* (#:key inputs outputs #:allow-other-keys)
  1115. (substitute* "CMakeLists.txt"
  1116. ((" python ")
  1117. (string-append " " (assoc-ref inputs "python")
  1118. "/bin/python3 ")))
  1119. #t))
  1120. (add-after 'unpack 'fix-data-directory-name
  1121. (lambda* (#:key inputs outputs #:allow-other-keys)
  1122. (substitute* "src/common/SurgeStorage.cpp"
  1123. (("/usr") (assoc-ref outputs "out")))
  1124. #t))
  1125. (replace 'install ; no install target
  1126. (lambda* (#:key inputs outputs #:allow-other-keys)
  1127. (let* ((src (assoc-ref inputs "source"))
  1128. (out (assoc-ref outputs "out"))
  1129. (share (string-append out "/share"))
  1130. (lib (string-append out "/lib"))
  1131. (lv2 (string-append lib "/lv2"))
  1132. (vst3 (string-append lib "/vst3")))
  1133. (mkdir-p lv2)
  1134. (mkdir-p vst3)
  1135. ;; Install LV2 plugin.
  1136. (copy-recursively "surge_products/Surge.lv2"
  1137. (string-append lv2 "/Surge.lv2"))
  1138. ;; Install VST3 plugin.
  1139. (copy-recursively "surge_products/Surge.vst3"
  1140. (string-append vst3 "/Surge.vst3"))
  1141. ;; Install data.
  1142. (copy-recursively (string-append src "/resources/data")
  1143. (string-append share "/Surge"))
  1144. #t))))))
  1145. (inputs
  1146. `(("cairo" ,cairo)
  1147. ("libxkbcommon" ,libxkbcommon)
  1148. ("python" ,python)
  1149. ("xcb-util" ,xcb-util)
  1150. ("xcb-util-cursor" ,xcb-util-cursor)
  1151. ("xcb-util-keysyms" ,xcb-util-keysyms)))
  1152. (native-inputs
  1153. `(("pkg-config" ,pkg-config)))
  1154. (home-page "https://surge-synthesizer.github.io/")
  1155. (synopsis "Synthesizer plugin")
  1156. (description
  1157. "Surge is a subtractive hybrid digital synthesizer. Each patch contains
  1158. two @dfn{scenes} which are separate instances of the entire synthesis
  1159. engine (except effects) that can be used for layering or split patches.")
  1160. (license license:gpl3+)))
  1161. (define-public klick
  1162. (package
  1163. (name "klick")
  1164. (version "0.12.2")
  1165. (source (origin
  1166. (method url-fetch)
  1167. (uri (string-append "http://das.nasophon.de/download/klick-"
  1168. version ".tar.gz"))
  1169. (sha256
  1170. (base32
  1171. "0hmcaywnwzjci3pp4xpvbijnnwvibz7gf9xzcdjbdca910y5728j"))))
  1172. (build-system scons-build-system)
  1173. (arguments
  1174. `(#:scons-flags (list (string-append "PREFIX=" %output))
  1175. #:scons ,scons-python2
  1176. #:tests? #f ; no "check" target
  1177. #:phases
  1178. (modify-phases %standard-phases
  1179. (add-after 'unpack 'be-permissive
  1180. (lambda _
  1181. (substitute* "SConstruct"
  1182. (("'-Wall'") "'-Wall', '-fpermissive'"))
  1183. #t))
  1184. (add-after 'unpack 'replace-removed-scons-syntax
  1185. (lambda _
  1186. (substitute* "SConstruct"
  1187. (("BoolOption") "BoolVariable")
  1188. (("PathOption") "PathVariable")
  1189. (("Options") "Variables"))
  1190. #t)))))
  1191. (inputs
  1192. `(("boost" ,boost)
  1193. ("jack" ,jack-1)
  1194. ("libsndfile" ,libsndfile)
  1195. ("libsamplerate" ,libsamplerate)
  1196. ("liblo" ,liblo)
  1197. ("rubberband" ,rubberband)))
  1198. (native-inputs
  1199. `(("pkg-config" ,pkg-config)))
  1200. (home-page "http://das.nasophon.de/klick/")
  1201. (synopsis "Metronome for JACK")
  1202. (description
  1203. "klick is an advanced command-line based metronome for JACK. It allows
  1204. you to define complex tempo maps for entire songs or performances.")
  1205. (license license:gpl2+)))
  1206. (define-public glyr
  1207. (package
  1208. (name "glyr")
  1209. (version "1.0.10")
  1210. (source (origin
  1211. (method git-fetch)
  1212. (uri (git-reference
  1213. (url "https://github.com/sahib/glyr")
  1214. (commit version)))
  1215. (file-name (git-file-name name version))
  1216. (sha256
  1217. (base32
  1218. "1miwbqzkhg0v3zysrwh60pj9sv6ci4lzq2vq2hhc6pc6hdyh8xyr"))))
  1219. (build-system cmake-build-system)
  1220. (arguments
  1221. '(#:configure-flags '("-DTEST=true")
  1222. #:phases
  1223. (modify-phases %standard-phases
  1224. (add-after 'unpack 'patch-tests
  1225. (lambda _
  1226. (substitute* "spec/capi/check_api.c"
  1227. (("fail_unless \\(c != NULL,\"Could not load www.google.de\"\\);")
  1228. ""))
  1229. #t))
  1230. (replace 'check
  1231. (lambda* (#:key tests? #:allow-other-keys)
  1232. (when tests?
  1233. ;; capi tests
  1234. (invoke "bin/check_api")
  1235. ;; (invoke "bin/check_opt") TODO Very dependent on the network
  1236. (invoke "bin/check_dbc"))
  1237. ;; TODO Work out how to run the spec/providers Python tests
  1238. #t)))))
  1239. (inputs
  1240. `(("glib" ,glib)
  1241. ("curl" ,curl)
  1242. ("sqlite" ,sqlite)))
  1243. (native-inputs
  1244. `(("pkg-config" ,pkg-config)
  1245. ("check" ,check)))
  1246. (home-page "https://github.com/sahib/glyr")
  1247. (synopsis "Search engine for music related metadata")
  1248. (description
  1249. "Glyr comes both in a command-line interface tool (@command{glyrc}) and
  1250. as a C library (libglyr).
  1251. The sort of metadata glyr is searching (and downloading) is usually the data
  1252. you see in your musicplayer. And indeed, originally it was written to serve
  1253. as internally library for a musicplayer, but has been extended to work as a
  1254. standalone program which is able to download cover art, lyrics, photos,
  1255. biographies, reviews and more.")
  1256. (license license:lgpl3+)))
  1257. (define-public gtklick
  1258. (package
  1259. (name "gtklick")
  1260. (version "0.6.4")
  1261. (source (origin
  1262. (method url-fetch)
  1263. (uri (string-append "http://das.nasophon.de/download/gtklick-"
  1264. version ".tar.gz"))
  1265. (sha256
  1266. (base32
  1267. "0dq1km6njnzsqdqyf6wzir9g733z0mc9vmxfg2383k3c2a2di6bp"))))
  1268. (build-system python-build-system)
  1269. (arguments
  1270. `(#:tests? #f ; no tests
  1271. #:python ,python-2
  1272. #:phases
  1273. (modify-phases %standard-phases
  1274. (add-before 'build 'add-sitedirs
  1275. ;; .pth files are not automatically interpreted unless the
  1276. ;; directories containing them are added as "sites". The directories
  1277. ;; are then added to those in the PYTHONPATH. This is required for
  1278. ;; the operation of pygtk.
  1279. (lambda _
  1280. (substitute* "gtklick/gtklick.py"
  1281. (("import pygtk")
  1282. "import pygtk, site, sys
  1283. for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))))
  1284. (add-after 'unpack 'inject-store-path-to-klick
  1285. (lambda* (#:key inputs #:allow-other-keys)
  1286. (substitute* "gtklick/klick_backend.py"
  1287. (("KLICK_PATH = 'klick'")
  1288. (string-append "KLICK_PATH = '"
  1289. (assoc-ref inputs "klick")
  1290. "/bin/klick'")))
  1291. #t)))))
  1292. (inputs
  1293. `(("klick" ,klick)
  1294. ("python2-pyliblo" ,python2-pyliblo)
  1295. ("python2-pygtk" ,python2-pygtk)))
  1296. (native-inputs
  1297. `(("gettext" ,gettext-minimal)))
  1298. (home-page "http://das.nasophon.de/gtklick/")
  1299. (synopsis "Simple metronome with an easy-to-use graphical interface")
  1300. (description
  1301. "Gtklick is a simple metronome with an easy-to-use graphical user
  1302. interface. It is implemented as a frontend to @code{klick}.")
  1303. (license license:gpl2+)))
  1304. (define-public lingot
  1305. (package
  1306. (name "lingot")
  1307. (version "1.1.1")
  1308. (source
  1309. (origin
  1310. (method git-fetch)
  1311. (uri (git-reference
  1312. (url "https://github.com/ibancg/lingot")
  1313. (commit (string-append "v" version))))
  1314. (file-name (git-file-name name version))
  1315. (sha256
  1316. (base32 "04lcjzfhddbyskxr2068z609y6x0s2gjx1wl78w0dkxdi459zrn9"))))
  1317. (build-system gnu-build-system)
  1318. (native-inputs
  1319. `(("autoconf" ,autoconf)
  1320. ("automake" ,automake)
  1321. ("cunit" ,cunit)
  1322. ("glib" ,glib "bin") ; for glib-compile-resources
  1323. ("intltool" ,intltool)
  1324. ("libtool" ,libtool)
  1325. ("pkg-config" ,pkg-config)))
  1326. (inputs
  1327. `(("alsa-lib" ,alsa-lib)
  1328. ("fftw" ,fftw)
  1329. ("gtk+" ,gtk+)
  1330. ("jack" ,jack-2)
  1331. ("json-c" ,json-c)
  1332. ("pulseaudio" ,pulseaudio)))
  1333. (home-page "http://lingot.nongnu.org/")
  1334. (synopsis "Accurate & configurable musical instrument tuner")
  1335. (description
  1336. "LINGOT is a musical instrument tuner. It's accurate, easy to use, and
  1337. highly configurable. Originally conceived to tune electric guitars, it can now
  1338. be used to tune other instruments.
  1339. It looks like an analogue tuner, with a gauge indicating the relative shift to a
  1340. certain note, determined automatically as the closest note to the estimated
  1341. frequency.")
  1342. (license license:gpl2+)))
  1343. (define-public ninjas2
  1344. (package
  1345. (name "ninjas2")
  1346. (version "0.2.0")
  1347. (source
  1348. (origin
  1349. (method git-fetch)
  1350. (uri
  1351. (git-reference
  1352. (url "https://github.com/clearly-broken-software/ninjas2")
  1353. (commit (string-append "v" version))
  1354. ;; Bundles a specific commit of the DISTRHO plugin framework.
  1355. (recursive? #t)))
  1356. (file-name (git-file-name name version))
  1357. (sha256
  1358. (base32 "1kwp6pmnfar2ip9693gprfbcfscklgri1k1ycimxzlqr61nkd2k9"))))
  1359. (build-system gnu-build-system)
  1360. (arguments
  1361. `(#:tests? #f ;no tests
  1362. #:make-flags
  1363. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  1364. (string-append "CC=" ,(cc-for-target)))
  1365. #:phases
  1366. (modify-phases %standard-phases
  1367. (delete 'configure) ;no configure target
  1368. (replace 'install ;no install target
  1369. (lambda* (#:key outputs #:allow-other-keys)
  1370. (let* ((out (assoc-ref outputs "out"))
  1371. (bin (string-append out "/bin"))
  1372. (lv2 (string-append out "/lib/lv2")))
  1373. ;; Install LV2.
  1374. (for-each
  1375. (lambda (file)
  1376. (copy-recursively file
  1377. (string-append lv2 "/" (basename file))))
  1378. (find-files "bin" "\\.lv2$" #:directories? #t))
  1379. ;; Install executables.
  1380. (for-each
  1381. (lambda (file)
  1382. (install-file file bin))
  1383. (find-files "bin"
  1384. (lambda (name stat)
  1385. (and
  1386. (equal? (dirname name) "bin")
  1387. (not (string-suffix? ".so" name))
  1388. (not (string-suffix? ".lv2" name))))))
  1389. #t))))))
  1390. (inputs
  1391. `(("fftwf" ,fftwf)
  1392. ("jack" ,jack-1) ; for the standalone JACK application
  1393. ("libsamplerate" ,libsamplerate)
  1394. ("mesa" ,mesa)
  1395. ("libsndfile" ,libsndfile)))
  1396. (native-inputs
  1397. `(("ladspa" ,ladspa)
  1398. ("lv2" ,lv2)
  1399. ("pkg-config" ,pkg-config)))
  1400. (synopsis "Sample slicer audio plugin")
  1401. (description
  1402. "Ninjas 2 is a rewrite of the Ninjas sample slicer audio plugin.
  1403. Its goal is to be an easy to use sample slicer with quick slicing of samples
  1404. and auto-mapping slices to MIDI note numbers.")
  1405. (home-page "https://github.com/clearly-broken-software/ninjas2")
  1406. (license license:gpl3+)))
  1407. (define-public lilypond
  1408. (package
  1409. (name "lilypond")
  1410. (version "2.20.0")
  1411. (source
  1412. (origin
  1413. (method url-fetch)
  1414. (uri (string-append "http://lilypond.org/download/sources/"
  1415. "v" (version-major+minor version) "/"
  1416. "lilypond-" version ".tar.gz"))
  1417. (sha256
  1418. (base32 "0qd6pd4siss016ffmcyw5qc6pr2wihnvrgd4kh1x725w7wr02nar"))))
  1419. (build-system gnu-build-system)
  1420. (arguments
  1421. `(#:tests? #f ;out-test/collated-files.html fails
  1422. #:out-of-source? #t
  1423. #:make-flags '("conf=www") ;to generate images for info manuals
  1424. #:configure-flags
  1425. (list "CONFIGURATION=www"
  1426. (string-append "--with-texgyre-dir="
  1427. (assoc-ref %build-inputs "font-tex-gyre")
  1428. "/share/fonts/opentype/"))
  1429. #:phases
  1430. (modify-phases %standard-phases
  1431. (add-after 'unpack 'fix-path-references
  1432. (lambda _
  1433. (substitute* "scm/backend-library.scm"
  1434. (("\\(search-executable '\\(\"gs\"\\)\\)")
  1435. (string-append "\"" (which "gs") "\""))
  1436. (("\"/bin/sh\"")
  1437. (string-append "\"" (which "sh") "\"")))))
  1438. (add-after 'fix-path-references 'adjust-to-API-change
  1439. (lambda _
  1440. (substitute* '("Documentation/pictures/GNUmakefile"
  1441. "stepmake/stepmake/tex-rules.make")
  1442. ((".*-c .setpdfwrite.*") ""))
  1443. (substitute* "scm/backend-library.scm"
  1444. (("\"-c.setpdfwrite\"") ""))
  1445. (substitute* "scm/framework-ps.scm"
  1446. (("\".setpdfwrite ") "\""))))
  1447. (add-before 'configure 'prepare-configuration
  1448. (lambda _
  1449. (substitute* "configure"
  1450. (("SHELL=/bin/sh") "SHELL=sh")
  1451. ;; When checking the fontforge version do not consider the
  1452. ;; version string that's part of the directory.
  1453. (("head -n") "tail -n")
  1454. ;; Also allow for SOURCE_DATE_EPOCH = 0 in fontforge.
  1455. (("20110222") "19700101"))
  1456. (setenv "out" "www")
  1457. (setenv "conf" "www")))
  1458. (add-after 'install 'install-info
  1459. (lambda _
  1460. (invoke "make"
  1461. "-j" (number->string (parallel-job-count))
  1462. "conf=www" "install-info"))))))
  1463. (inputs
  1464. `(("guile" ,guile-1.8)
  1465. ("font-dejavu" ,font-dejavu)
  1466. ("font-tex-gyre" ,font-tex-gyre)
  1467. ("fontconfig" ,fontconfig)
  1468. ("freetype" ,freetype)
  1469. ("ghostscript" ,ghostscript)
  1470. ("pango" ,pango)
  1471. ("python" ,python-2)))
  1472. (native-inputs
  1473. `(("bison" ,bison)
  1474. ("perl" ,perl)
  1475. ("flex" ,flex)
  1476. ("fontforge" ,fontforge)
  1477. ("dblatex" ,dblatex)
  1478. ("gettext" ,gettext-minimal)
  1479. ("imagemagick" ,imagemagick)
  1480. ("netpbm" ,netpbm) ;for pngtopnm
  1481. ("texlive" ,(texlive-updmap.cfg (list texlive-metapost
  1482. texlive-epsf
  1483. texlive-lh
  1484. texlive-latex-cyrillic)))
  1485. ("texinfo" ,texinfo)
  1486. ("texi2html" ,texi2html-1.82)
  1487. ("rsync" ,rsync)
  1488. ("pkg-config" ,pkg-config)
  1489. ("zip" ,zip)))
  1490. (home-page "http://www.lilypond.org/")
  1491. (synopsis "Music typesetting")
  1492. (description
  1493. "GNU LilyPond is a music typesetter, which produces high-quality sheet
  1494. music. Music is input in a text file containing control sequences which are
  1495. interpreted by LilyPond to produce the final document. It is extendable with
  1496. Guile.")
  1497. (license license:gpl3+)
  1498. ;; On armhf and mips64el, building the documentation sometimes leads to
  1499. ;; more than an hour of silence, so double the max silent time.
  1500. (properties `((max-silent-time . 7200)))))
  1501. (define-public abjad
  1502. (package
  1503. (name "abjad")
  1504. (version "3.4")
  1505. (source
  1506. (origin
  1507. (method git-fetch)
  1508. (uri (git-reference
  1509. (url "https://github.com/Abjad/abjad")
  1510. (commit (string-append "v" version))))
  1511. (file-name (git-file-name name version))
  1512. (sha256
  1513. (base32
  1514. "0s63vk9fifp0im9c31kb9ck39mbaxhrls993d8fvg0nkg41z1jnz"))))
  1515. (build-system python-build-system)
  1516. (arguments
  1517. `(#:phases
  1518. (modify-phases %standard-phases
  1519. (replace 'check
  1520. (lambda* (#:key tests? #:allow-other-keys)
  1521. (when tests?
  1522. ;; See: https://stackoverflow.com/a/34140498
  1523. (invoke "python" "-m" "pytest" "tests")
  1524. #t))))))
  1525. (native-inputs
  1526. `(("python-black" ,python-black)
  1527. ("python-flake8" ,python-flake8)
  1528. ("python-iniconfig" ,python-iniconfig)
  1529. ("python-isort" ,python-isort)
  1530. ("python-mypy" ,python-mypy)
  1531. ("python-pytest" ,python-pytest)
  1532. ("python-pytest-cov" ,python-pytest-cov)
  1533. ("python-sphinx-autodoc-typehints" ,python-sphinx-autodoc-typehints)))
  1534. (inputs
  1535. `(("lilypond" ,lilypond)))
  1536. (propagated-inputs
  1537. `(("python-ply" ,python-ply)
  1538. ("python-quicktions" ,python-quicktions)
  1539. ("python-roman" ,python-roman)
  1540. ("python-six" ,python-six)
  1541. ("python-uqbar" ,python-uqbar)))
  1542. (home-page "https://abjad.github.io")
  1543. (synopsis "Python API for building LilyPond files")
  1544. (description
  1545. "Abjad helps composers build up complex pieces of music notation in iterative
  1546. and incremental ways. Use Abjad to create a symbolic representation of all the notes,
  1547. rests, chords, tuplets, beams and slurs in any score. Because Abjad extends the Python
  1548. programming language, you can use Abjad to make systematic changes to music as you work.
  1549. Because Abjad wraps the LilyPond music notation package, you can use Abjad to control the
  1550. typographic detail of symbols on the page.")
  1551. (license license:expat)))
  1552. (define-public python-abjad
  1553. (deprecated-package "python-abjad" abjad))
  1554. (define-public abjad-ext-rmakers
  1555. (package
  1556. (name "abjad-ext-rmakers")
  1557. (version "3.4")
  1558. (source
  1559. (origin
  1560. (method git-fetch)
  1561. (uri (git-reference
  1562. (url "https://github.com/Abjad/abjad-ext-rmakers")
  1563. (commit (string-append "v" version))))
  1564. (file-name (git-file-name name version))
  1565. (sha256
  1566. (base32
  1567. "0wma9vzn42h1rhbzh2dwjsrzjhsi1yqdgn6wx1dfk78vaki6prd8"))))
  1568. (build-system python-build-system)
  1569. (arguments
  1570. `(#:phases
  1571. (modify-phases %standard-phases
  1572. (replace 'check
  1573. (lambda* (#:key tests? #:allow-other-keys)
  1574. (when tests?
  1575. (invoke "python" "-m" "pytest" ".")
  1576. #t))))))
  1577. (native-inputs
  1578. `(("lilypond" ,lilypond)
  1579. ("python-black" ,python-black)
  1580. ("python-flake8" ,python-flake8)
  1581. ("python-iniconfig" ,python-iniconfig)
  1582. ("python-isort" ,python-isort)
  1583. ("python-mypy" ,python-mypy)
  1584. ("python-pytest" ,python-pytest)
  1585. ("python-pytest-cov" ,python-pytest-cov)
  1586. ("python-pytest-helpers-namespace" ,python-pytest-helpers-namespace)))
  1587. (propagated-inputs
  1588. `(("abjad" ,abjad)))
  1589. (home-page "https://abjad.github.io")
  1590. (synopsis "Abjad rhythm-maker extension package")
  1591. (description
  1592. "@code{abjad-ext-rmakers} includes a collection of classes for creating and
  1593. and manipulating rhythms such as accelerandi, taleas, and more.")
  1594. (license license:expat)))
  1595. (define-public abjad-ext-nauert
  1596. (package
  1597. (name "abjad-ext-nauert")
  1598. (version "3.4")
  1599. (source
  1600. (origin
  1601. (method git-fetch)
  1602. (uri (git-reference
  1603. (url "https://github.com/Abjad/abjad-ext-nauert")
  1604. (commit (string-append "v" version))))
  1605. (file-name (git-file-name name version))
  1606. (sha256
  1607. (base32
  1608. "05hr2lr6myzi493k8vc19cqzraxxnbdwlckwbnras19l5g5ns38x"))))
  1609. (build-system python-build-system)
  1610. (arguments
  1611. `(#:phases
  1612. (modify-phases %standard-phases
  1613. (replace 'check
  1614. (lambda* (#:key tests? #:allow-other-keys)
  1615. (when tests?
  1616. (invoke "python" "-m" "pytest" "tests")
  1617. #t))))))
  1618. (native-inputs
  1619. `(("lilypond" ,lilypond)
  1620. ("python-black" ,python-black)
  1621. ("python-flake8" ,python-flake8)
  1622. ("python-iniconfig" ,python-iniconfig)
  1623. ("python-isort" ,python-isort)
  1624. ("python-mypy" ,python-mypy)
  1625. ("python-pytest" ,python-pytest)
  1626. ("python-pytest-cov" ,python-pytest-cov)
  1627. ("python-pytest-helpers-namespace" ,python-pytest-helpers-namespace)))
  1628. (propagated-inputs
  1629. `(("abjad" ,abjad)))
  1630. (home-page "https://abjad.github.io")
  1631. (synopsis "Abjad quantization extension, based on Paul Nauert's Q-Grids")
  1632. (description
  1633. "@code{abjad-ext-nauert} provides classes for dealing with composer and
  1634. music theorist Paul Nauert's quantization grids or Q-Grids, for short.")
  1635. (license license:expat)))
  1636. (define-public abjad-ext-ipython
  1637. (package
  1638. (name "abjad-ext-ipython")
  1639. (version "3.3")
  1640. (source
  1641. (origin
  1642. (method git-fetch)
  1643. (uri (git-reference
  1644. (url "https://github.com/Abjad/abjad-ext-ipython")
  1645. (commit (string-append "v" version))))
  1646. (file-name (git-file-name name version))
  1647. (sha256
  1648. (base32
  1649. "1vv0alpiz0gf5lgjfvlh4km72dvrxfqkwzxl3k4amzci3i0jzbs2"))))
  1650. (build-system python-build-system)
  1651. (arguments
  1652. ;; UnboundLocalError: local variable 'output_path' referenced before assignment
  1653. `(#:tests? #f
  1654. #:phases
  1655. (modify-phases %standard-phases
  1656. (replace 'check
  1657. (lambda* (#:key tests? inputs outputs #:allow-other-keys)
  1658. (when tests?
  1659. (setenv "HOME" (getcwd))
  1660. (add-installed-pythonpath inputs outputs)
  1661. ;; From 'make jupyter-test'
  1662. (invoke "jupyter" "nbconvert" "--to=html"
  1663. "--ExecutePreprocessor.enabled=True" "tests/test.ipynb")))))))
  1664. (native-inputs
  1665. `(("lilypond" ,lilypond)
  1666. ("python-black" ,python-black)
  1667. ("python-flake8" ,python-flake8)
  1668. ("python-iniconfig" ,python-iniconfig)
  1669. ("python-isort" ,python-isort)
  1670. ("python-mypy" ,python-mypy)
  1671. ("python-pytest" ,python-pytest)
  1672. ("python-pytest-cov" ,python-pytest-cov)
  1673. ("python-pytest-helpers-namespace" ,python-pytest-helpers-namespace)))
  1674. (propagated-inputs
  1675. `(("abjad" ,abjad)
  1676. ("jupyter" ,jupyter)))
  1677. (home-page "https://abjad.github.io")
  1678. (synopsis "Abjad IPython Extension")
  1679. (description
  1680. "@code{abjad-ext-ipython} makes it possible to embed music notation in
  1681. @code{jupyter} notebooks.")
  1682. (license license:expat)))
  1683. (define-public non-sequencer
  1684. ;; The latest tagged release is three years old and uses a custom build
  1685. ;; system, so we take the last commit.
  1686. (let ((commit "5ae43bb27c42387052a73e5ffc5d33efb9d946a9")
  1687. (revision "4"))
  1688. (package
  1689. (name "non-sequencer")
  1690. (version (string-append "1.9.5-" revision "." (string-take commit 7)))
  1691. (source (origin
  1692. (method git-fetch)
  1693. (uri (git-reference
  1694. (url "git://git.tuxfamily.org/gitroot/non/non.git")
  1695. (commit commit)))
  1696. (sha256
  1697. (base32
  1698. "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx"))
  1699. (file-name (string-append name "-" version "-checkout"))))
  1700. (build-system waf-build-system)
  1701. (arguments
  1702. `(#:tests? #f ;no "check" target
  1703. #:configure-flags
  1704. (list "--project=sequencer"
  1705. ;; Disable the use of SSE unless on x86_64.
  1706. ,@(if (not (string-prefix? "x86_64" (or (%current-target-system)
  1707. (%current-system))))
  1708. '("--disable-sse")
  1709. '()))
  1710. #:python ,python-2))
  1711. (inputs
  1712. `(("jack" ,jack-1)
  1713. ("libsigc++" ,libsigc++)
  1714. ("liblo" ,liblo)
  1715. ("ntk" ,ntk)))
  1716. (native-inputs
  1717. `(("pkg-config" ,pkg-config)))
  1718. (home-page "https://non.tuxfamily.org/wiki/Non%20Sequencer")
  1719. (synopsis "Pattern-based MIDI sequencer")
  1720. (description
  1721. "The Non Sequencer is a powerful, lightweight, real-time,
  1722. pattern-based MIDI sequencer. It utilizes the JACK Audio Connection Kit for
  1723. MIDI I/O and the NTK GUI toolkit for its user interface. Everything in Non
  1724. Sequencer happens on-line, in real-time. Music can be composed live, while the
  1725. transport is rolling.")
  1726. (license license:gpl2+))))
  1727. (define-public non-session-manager
  1728. (package (inherit non-sequencer)
  1729. (name "non-session-manager")
  1730. (arguments
  1731. (substitute-keyword-arguments (package-arguments non-sequencer)
  1732. ((#:configure-flags flags)
  1733. `(cons "--project=session-manager"
  1734. (delete "--project=sequencer" ,flags)))))
  1735. (inputs
  1736. `(("jack" ,jack-1)
  1737. ("liblo" ,liblo)
  1738. ("ntk" ,ntk)))
  1739. (native-inputs
  1740. `(("pkg-config" ,pkg-config)))
  1741. (home-page "https://non.tuxfamily.org/nsm/")
  1742. (synopsis "Audio session management")
  1743. (description
  1744. "The Non Session Manager is an API and an implementation for audio
  1745. session management. NSM clients use a well-specified OSC protocol to
  1746. communicate with the session management daemon.")
  1747. (license license:gpl2+)))
  1748. (define-public non-mixer
  1749. (package (inherit non-sequencer)
  1750. (name "non-mixer")
  1751. (arguments
  1752. (substitute-keyword-arguments (package-arguments non-sequencer)
  1753. ((#:configure-flags flags)
  1754. `(cons "--project=mixer"
  1755. (delete "--project=sequencer" ,flags)))))
  1756. (inputs
  1757. `(("jack" ,jack-1)
  1758. ("liblo" ,liblo)
  1759. ("ladspa" ,ladspa)
  1760. ("lrdf" ,lrdf)
  1761. ("ntk" ,ntk)))
  1762. (native-inputs
  1763. `(("pkg-config" ,pkg-config)))
  1764. (home-page "https://non.tuxfamily.org/wiki/Non%20Mixer")
  1765. (synopsis "Modular digital audio mixer")
  1766. (description
  1767. "The Non Mixer is a powerful, reliable and fast modular digital audio
  1768. mixer. It utilizes JACK for inter-application audio I/O and the NTK GUI
  1769. toolkit for a fast and lightweight user interface. Non Mixer can be used
  1770. alone or in concert with Non Timeline and Non Sequencer to form a complete
  1771. studio.")
  1772. (license license:gpl2+)))
  1773. (define-public non-timeline
  1774. (package (inherit non-sequencer)
  1775. (name "non-timeline")
  1776. (arguments
  1777. (substitute-keyword-arguments (package-arguments non-sequencer)
  1778. ((#:configure-flags flags)
  1779. `(cons "--project=timeline"
  1780. (delete "--project=sequencer" ,flags)))))
  1781. (inputs
  1782. `(("jack" ,jack-1)
  1783. ("liblo" ,liblo)
  1784. ("libsndfile" ,libsndfile)
  1785. ("ntk" ,ntk)))
  1786. (native-inputs
  1787. `(("pkg-config" ,pkg-config)))
  1788. (home-page "https://non.tuxfamily.org/wiki/Non%20Timeline")
  1789. (synopsis "Modular digital audio timeline arranger")
  1790. (description
  1791. "The Non Timeline is a powerful, reliable and fast modular digital audio
  1792. timeline arranger. It utilizes JACK for inter-application audio I/O and the
  1793. NTK GUI toolkit for a fast and lightweight user interface. Non Timeline can
  1794. be used alone or in concert with Non Mixer and Non Sequencer to form a
  1795. complete studio.")
  1796. (license license:gpl2+)))
  1797. (define-public tascam-gtk
  1798. ;; This commit represents the latest version at the time of this writing.
  1799. (let ((commit "17b8575ff88dfd2ede0f7ef9c5c5597ab8a00702")
  1800. (revision "0"))
  1801. (package
  1802. (name "tascam-gtk")
  1803. (version (git-version "0.4" revision commit))
  1804. (source (origin
  1805. (method git-fetch)
  1806. (uri (git-reference
  1807. (url "https://github.com/onkelDead/tascam-gtk")
  1808. (commit commit)))
  1809. (file-name (git-file-name name version))
  1810. (sha256
  1811. (base32
  1812. "07k7rccqqg7lnygkh97a200l1i6s1rl92n01v0q6n4257sinir6f"))))
  1813. (build-system gnu-build-system)
  1814. (inputs
  1815. `(("liblo" ,liblo)
  1816. ("gtkmm" ,gtkmm-3)
  1817. ("alsa-lib" ,alsa-lib)
  1818. ("libxml++" ,libxml++-2)))
  1819. (native-inputs
  1820. `(("glib:bin" ,glib "bin")
  1821. ("pkg-config" ,pkg-config)))
  1822. (home-page "https://github.com/onkelDead/tascam-gtk")
  1823. (synopsis "GTK+ based application to control Tascam US-16x08 DSP mixer")
  1824. (description "This is a mixer application to control the Tascam US-16x08
  1825. audio interface. This device contains about 280 control elements and this
  1826. mixer application aims to provide comfortable access to the DSP effects the
  1827. device supports.")
  1828. (license license:expat))))
  1829. (define-public bsequencer
  1830. (package
  1831. (name "bsequencer")
  1832. (version "1.8.0")
  1833. (source (origin
  1834. (method git-fetch)
  1835. (uri (git-reference
  1836. (url "https://github.com/sjaehn/BSEQuencer")
  1837. (commit version)))
  1838. (file-name (git-file-name name version))
  1839. (sha256
  1840. (base32
  1841. "0w7iwzz2r4a699fi24qk71vv2k3jpl9ylzlgmvyc3rlgad0m01k1"))))
  1842. (build-system gnu-build-system)
  1843. (arguments
  1844. `(#:make-flags
  1845. (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  1846. #:tests? #f ; there are none
  1847. #:phases
  1848. (modify-phases %standard-phases
  1849. (delete 'configure))))
  1850. (inputs
  1851. `(("cairo" ,cairo)
  1852. ("lv2" ,lv2)
  1853. ("libx11" ,libx11)))
  1854. (native-inputs
  1855. `(("pkg-config" ,pkg-config)))
  1856. (home-page "https://github.com/sjaehn/BSEQuencer")
  1857. (synopsis "Multi-channel MIDI step sequencer LV2 plugin")
  1858. (description
  1859. "This package provides a multi-channel MIDI step sequencer LV2 plugin
  1860. with a selectable pattern matrix size.")
  1861. (license license:gpl3+)))
  1862. (define-public bchoppr
  1863. (package
  1864. (inherit bsequencer)
  1865. (name "bchoppr")
  1866. (version "1.8.0")
  1867. (source
  1868. (origin
  1869. (method git-fetch)
  1870. (uri (git-reference
  1871. (url "https://github.com/sjaehn/BChoppr")
  1872. (commit version)))
  1873. (file-name (git-file-name name version))
  1874. (sha256
  1875. (base32
  1876. "1nd6byy75f0rbz9dm9drhxmpsfhxhg0y7q3v2m3098llynhy9k2j"))))
  1877. (synopsis "Audio stream-chopping LV2 plugin")
  1878. (description "B.Choppr cuts the audio input stream into a repeated
  1879. sequence of up to 16 chops. Each chop can be leveled up or down (gating).
  1880. B.Choppr is the successor of B.Slizr.")
  1881. (home-page "https://github.com/sjaehn/BChoppr")
  1882. (license license:gpl3+)))
  1883. (define-public bshapr
  1884. (package
  1885. (inherit bsequencer)
  1886. (name "bshapr")
  1887. (version "0.9")
  1888. (source
  1889. (origin
  1890. (method git-fetch)
  1891. (uri (git-reference
  1892. (url "https://github.com/sjaehn/BShapr")
  1893. (commit (string-append "v" version))))
  1894. (file-name (git-file-name name version))
  1895. (sha256
  1896. (base32 "04zd3a178i2nivg5rjailzqvc5mlnilmhj1ziygmbhshbrywplri"))))
  1897. (synopsis "Beat/envelope shaper LV2 plugin")
  1898. (description "B.Shapr is a beat/envelope shaper LV2 plugin.")
  1899. (home-page "https://github.com/sjaehn/BShapr")
  1900. (license license:gpl3+)))
  1901. (define-public bjumblr
  1902. (package
  1903. (inherit bsequencer)
  1904. (name "bjumblr")
  1905. (version "1.4.2")
  1906. (source
  1907. (origin
  1908. (method git-fetch)
  1909. (uri (git-reference
  1910. (url "https://github.com/sjaehn/BJumblr")
  1911. (commit version)))
  1912. (file-name (git-file-name name version))
  1913. (sha256
  1914. (base32
  1915. "0kl6hrxmqrdf0195bfnzsa2h1073fgiqrfhg2276fm1954sm994v"))))
  1916. (inputs
  1917. `(("cairo" ,cairo)
  1918. ("libsndfile" ,libsndfile)
  1919. ("lv2" ,lv2)))
  1920. (synopsis "Pattern-controlled audio stream/sample re-sequencer LV2 plugin")
  1921. (description "B.Jumblr is a pattern-controlled audio stream / sample
  1922. re-sequencer LV2 plugin.")
  1923. (home-page "https://github.com/sjaehn/BJumblr")
  1924. (license license:gpl3+)))
  1925. (define-public bschaffl
  1926. (package
  1927. (inherit bsequencer)
  1928. (name "bschaffl")
  1929. (version "1.2.0")
  1930. (source
  1931. (origin
  1932. (method git-fetch)
  1933. (uri (git-reference
  1934. (url "https://github.com/sjaehn/BSchaffl")
  1935. (commit version)))
  1936. (file-name (git-file-name name version))
  1937. (sha256
  1938. (base32
  1939. "1c09acqrbd387ba41f8ch1qykdap5h6cg9if5pgd16i4dmjnpghj"))))
  1940. (inputs
  1941. `(("cairo" ,cairo)
  1942. ("fontconfig" ,fontconfig)
  1943. ("libsndfile" ,libsndfile)
  1944. ("libx11" ,libx11)
  1945. ("lv2" ,lv2)))
  1946. (home-page "https://github.com/sjaehn/BSchaffl")
  1947. (synopsis "Pattern-controlled MIDI amp & time stretch LV2 plugin")
  1948. (description "This package provides an LV2 plugin that allows for
  1949. pattern-controlled MIDI amp & time stretching to produce shuffle / swing
  1950. effects.
  1951. Key features include:
  1952. @enumerate
  1953. @item MIDI velocity amplification and timing manipulation plugin
  1954. @item Swing and shuffle rhythms
  1955. @item Pre-generator dynamics
  1956. @item Tempo rubato
  1957. @item Pattern (sliders) or shape-controlled
  1958. @item MIDI filters
  1959. @item Smart quantization
  1960. @end itemize
  1961. ")
  1962. (license license:gpl3+)))
  1963. (define-public solfege
  1964. (package
  1965. (name "solfege")
  1966. (version "3.22.2")
  1967. (source (origin
  1968. (method url-fetch)
  1969. (uri (string-append
  1970. "mirror://gnu/solfege/solfege-"
  1971. version ".tar.xz"))
  1972. (sha256
  1973. (base32
  1974. "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
  1975. (build-system gnu-build-system)
  1976. (arguments
  1977. `(#:tests? #f ; xmllint attempts to download DTD
  1978. #:test-target "test"
  1979. #:phases
  1980. (modify-phases %standard-phases
  1981. (add-after 'unpack 'fix-configuration
  1982. (lambda* (#:key inputs #:allow-other-keys)
  1983. (substitute* "default.config"
  1984. (("/usr/bin/aplay") "aplay")
  1985. (("/usr/bin/timidity") "timidity")
  1986. (("/usr/bin/mpg123") "mpg123")
  1987. (("/usr/bin/ogg123") "ogg123"))
  1988. #t))
  1989. (add-before 'build 'patch-python-shebangs
  1990. (lambda _
  1991. ;; Two python scripts begin with a Unicode BOM, so patch-shebang
  1992. ;; has no effect.
  1993. (substitute* '("solfege/parsetree.py"
  1994. "solfege/presetup.py")
  1995. (("#!/usr/bin/python") (string-append "#!" (which "python"))))
  1996. #t))
  1997. (add-before 'build 'add-sitedirs
  1998. ;; .pth files are not automatically interpreted unless the
  1999. ;; directories containing them are added as "sites". The directories
  2000. ;; are then added to those in the PYTHONPATH. This is required for
  2001. ;; the operation of pygtk and pygobject.
  2002. (lambda _
  2003. (substitute* "run-solfege.py"
  2004. (("import os")
  2005. "import os, site
  2006. for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)"))
  2007. #t))
  2008. (add-before 'build 'adjust-config-file-prefix
  2009. (lambda* (#:key outputs #:allow-other-keys)
  2010. (substitute* "run-solfege.py"
  2011. (("prefix = os.path.*$")
  2012. (string-append "prefix = " (assoc-ref outputs "out"))))
  2013. #t))
  2014. (add-after 'install 'wrap-program
  2015. (lambda* (#:key inputs outputs #:allow-other-keys)
  2016. ;; Make sure 'solfege' runs with the correct PYTHONPATH.
  2017. (let* ((out (assoc-ref outputs "out"))
  2018. (path (getenv "GUIX_PYTHONPATH")))
  2019. (wrap-program (string-append out "/bin/solfege")
  2020. `("GUIX_PYTHONPATH" ":" prefix (,path))))
  2021. #t)))))
  2022. (inputs
  2023. `(("python" ,python-2)
  2024. ("pygtk" ,python2-pygtk)
  2025. ("gettext" ,gettext-minimal)
  2026. ("gtk" ,gtk+)
  2027. ("lilypond" ,lilypond)))
  2028. (native-inputs
  2029. `(("pkg-config" ,pkg-config)
  2030. ("txt2man" ,txt2man)
  2031. ("libxml2" ,libxml2) ; for tests
  2032. ("ghostscript" ,ghostscript)
  2033. ("texinfo" ,texinfo-5)))
  2034. (home-page "https://www.gnu.org/software/solfege/")
  2035. (synopsis "Ear training")
  2036. (description
  2037. "GNU Solfege is a program for practicing musical ear-training. With it,
  2038. you can practice your recognition of various musical intervals and chords. It
  2039. features a statistics overview so you can monitor your progress across several
  2040. sessions. Solfege is also designed to be extensible so you can easily write
  2041. your own lessons.")
  2042. (license license:gpl3+)))
  2043. (define-public powertabeditor
  2044. (package
  2045. (name "powertabeditor")
  2046. (version "2.0.0-alpha14")
  2047. (source (origin
  2048. (method git-fetch)
  2049. (uri (git-reference
  2050. (url "https://github.com/powertab/powertabeditor")
  2051. (commit version)))
  2052. (file-name (git-file-name name version))
  2053. (sha256
  2054. (base32
  2055. "1wsvni2aa9h2bpndlic7ckch4n600ahwm56n521y5vxivwjx3jmj"))))
  2056. (build-system cmake-build-system)
  2057. (arguments
  2058. `(#:phases
  2059. (modify-phases %standard-phases
  2060. (replace 'check (lambda _ (invoke "bin/pte_tests")))
  2061. (add-after 'unpack 'fix-pugixml-detection
  2062. (lambda _
  2063. (substitute* "cmake/third_party/pugixml.cmake"
  2064. (("add_library") "#add_library"))
  2065. #t)))))
  2066. (inputs
  2067. `(("alsa-lib" ,alsa-lib)
  2068. ("boost" ,boost)
  2069. ("minizip" ,minizip)
  2070. ("pugixml" ,pugixml)
  2071. ("qtbase" ,qtbase-5)
  2072. ("rapidjson" ,rapidjson)
  2073. ("rtmidi" ,rtmidi)
  2074. ("timidity" ,timidity++)
  2075. ("zlib" ,zlib)))
  2076. (native-inputs
  2077. `(("doctest" ,doctest)
  2078. ("pkg-config" ,pkg-config)))
  2079. (home-page "https://github.com/powertab/powertabedito")
  2080. (synopsis "Guitar tablature editor")
  2081. (description
  2082. "Power Tab Editor 2.0 is the successor to the famous original Power Tab
  2083. Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
  2084. (license license:gpl3+)))
  2085. (define-public jalv-select
  2086. (package
  2087. (name "jalv-select")
  2088. (version "1.3")
  2089. (source (origin
  2090. (method git-fetch)
  2091. (uri (git-reference
  2092. (url "https://github.com/brummer10/jalv_select")
  2093. (commit (string-append "v" version))))
  2094. (file-name (git-file-name name version))
  2095. (sha256
  2096. (base32
  2097. "15yanq1wra0hyh6x72ji7pk562iddg476g3vksj495x91zhnl6vm"))))
  2098. (build-system gnu-build-system)
  2099. (arguments
  2100. `(#:make-flags
  2101. (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  2102. #:phases
  2103. (modify-phases %standard-phases
  2104. (delete 'configure)
  2105. (add-after 'unpack 'ignore-PATH
  2106. (lambda* (#:key inputs #:allow-other-keys)
  2107. (substitute* "jalv.select.cpp"
  2108. (("echo \\$PATH.*tr ':'.*xargs ls")
  2109. (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
  2110. #t))
  2111. (add-before 'reset-gzip-timestamps 'make-manpages-writable
  2112. (lambda* (#:key outputs #:allow-other-keys)
  2113. (for-each make-file-writable
  2114. (find-files (string-append (assoc-ref outputs "out")
  2115. "/share/man")
  2116. ".*\\.gz$"))
  2117. #t)))))
  2118. (inputs
  2119. `(("lilv" ,lilv)
  2120. ("lv2" ,lv2)
  2121. ("jalv" ,jalv)
  2122. ("gtkmm" ,gtkmm-2)))
  2123. (native-inputs
  2124. `(("pkg-config" ,pkg-config)))
  2125. (home-page "https://github.com/brummer10/jalv_select")
  2126. (synopsis "GUI to select LV2 plugins and run them with jalv")
  2127. (description
  2128. "The jalv.select package provides a graphical user interface allowing
  2129. users to select LV2 plugins and run them with jalv.")
  2130. (license license:public-domain)))
  2131. (define-public mixxx
  2132. (package
  2133. (name "mixxx")
  2134. (version "2.3.1")
  2135. (source
  2136. (origin
  2137. (method git-fetch)
  2138. (uri (git-reference
  2139. (url "https://github.com/mixxxdj/mixxx")
  2140. (commit version)))
  2141. (file-name (git-file-name name version))
  2142. (patches
  2143. (search-patches "mixxx-link-qtscriptbytearray-qtscript.patch"
  2144. "mixxx-system-googletest-benchmark.patch"))
  2145. (sha256
  2146. (base32 "04781s4ajdlwgvf12v2mvh6ia5grhc5pn9d75b468qci3ilnmkg8"))
  2147. (modules '((guix build utils)))
  2148. (snippet
  2149. ;; Delete libraries that we already have or don't need.
  2150. ;; TODO: try to unbundle more (see lib/).
  2151. `(begin
  2152. (let ((third-parties '("apple" "benchmark" "googletest" "hidapi"
  2153. "libebur128")))
  2154. (with-directory-excursion "lib"
  2155. (map (lambda (third-party)
  2156. (delete-file-recursively third-party))
  2157. third-parties)))
  2158. #t))))
  2159. (build-system qt-build-system)
  2160. (arguments
  2161. `(#:phases
  2162. (modify-phases %standard-phases
  2163. ;; Tests need a running X server.
  2164. (add-before 'check 'prepare-x-for-test
  2165. (lambda _
  2166. (system "Xvfb &")
  2167. (setenv "DISPLAY" ":0")))
  2168. (replace 'check
  2169. (lambda* (#:key tests? #:allow-other-keys)
  2170. (when tests?
  2171. ;; This test fails. I don't know why.
  2172. (invoke "ctest" "-E" "TagLibTest.WriteID3v2Tag"))))
  2173. (add-after 'install 'wrap-executable
  2174. (lambda* (#:key inputs outputs #:allow-other-keys)
  2175. (let* ((out (assoc-ref outputs "out"))
  2176. (faad2 (assoc-ref inputs "faad2")))
  2177. (wrap-program (string-append out "/bin/mixxx")
  2178. `("LD_LIBRARY_PATH" ":" prefix
  2179. ,(list (string-append faad2 "/lib"))))))))))
  2180. (native-inputs
  2181. `(("benchmark" ,benchmark)
  2182. ("googletest" ,googletest)
  2183. ("python" ,python-wrapper)
  2184. ("qttools" ,qttools)
  2185. ("xorg-server" ,xorg-server-for-tests)))
  2186. (inputs
  2187. `(("bash" ,bash-minimal)
  2188. ("chromaprint" ,chromaprint)
  2189. ("faad2" ,faad2)
  2190. ("ffmpeg" ,ffmpeg)
  2191. ("fftw" ,fftw)
  2192. ("flac" ,flac)
  2193. ("glu" ,glu)
  2194. ("hidapi" ,hidapi)
  2195. ("jack" ,jack-1)
  2196. ("lame" ,lame)
  2197. ("libdjinterop" ,libdjinterop)
  2198. ("libebur128" ,libebur128)
  2199. ("libid3tag" ,libid3tag)
  2200. ("libkeyfinder" ,libkeyfinder)
  2201. ("libmad" ,libmad)
  2202. ("libmp4v2" ,libmp4v2)
  2203. ("libmodplug" ,libmodplug)
  2204. ("libsndfile" ,libsndfile)
  2205. ("libshout" ,libshout)
  2206. ;; XXX: Mixxx complains the libshout-idjc package suffers from bug
  2207. ;; lp1833225 and refuses to use it. Use the bundle for now.
  2208. ;; ("libshout-idjc" ,libshout-idjc)
  2209. ("libusb" ,libusb)
  2210. ("libvorbis" ,libvorbis)
  2211. ("lilv" ,lilv)
  2212. ("mp3guessenc" ,mp3guessenc)
  2213. ("openssl" ,openssl)
  2214. ("opusfile" ,opusfile)
  2215. ("portaudio" ,portaudio)
  2216. ("portmidi" ,portmidi)
  2217. ("protobuf" ,protobuf)
  2218. ("qtbase" ,qtbase-5)
  2219. ("qtdeclarative" ,qtdeclarative)
  2220. ("qtkeychain" ,qtkeychain)
  2221. ("qtscript" ,qtscript)
  2222. ("qtsvg" ,qtsvg)
  2223. ("qtx11extras" ,qtx11extras)
  2224. ("rubberband" ,rubberband)
  2225. ("soundtouch" ,soundtouch)
  2226. ("sqlite" ,sqlite)
  2227. ("taglib" ,taglib)
  2228. ("upower" ,upower)
  2229. ("vamp" ,vamp)
  2230. ("wavpack" ,wavpack)))
  2231. (home-page "https://mixxx.org/")
  2232. (synopsis "DJ software to perform live mixes")
  2233. (description "Mixxx is a DJ software. It integrates the tools DJs need to
  2234. perform creative live mixes with digital music files.")
  2235. (license license:gpl2+)))
  2236. (define-public synthv1
  2237. (package
  2238. (name "synthv1")
  2239. (version "0.9.23")
  2240. (source (origin
  2241. (method url-fetch)
  2242. (uri
  2243. (string-append "mirror://sourceforge/synthv1/synthv1/" version
  2244. "/synthv1-" version ".tar.gz"))
  2245. (sha256
  2246. (base32
  2247. "03lvq84pg0agdn16i7ng6j7lp1ii3inf4pzjypnkywb2km7zcpni"))))
  2248. (build-system gnu-build-system)
  2249. (arguments
  2250. `(#:tests? #f)) ; there are no tests
  2251. (inputs
  2252. `(("jack" ,jack-1)
  2253. ("lv2" ,lv2)
  2254. ("alsa-lib" ,alsa-lib)
  2255. ("non-session-manager" ,non-session-manager)
  2256. ("liblo" ,liblo)
  2257. ("qtbase" ,qtbase-5)))
  2258. (native-inputs
  2259. `(("pkg-config" ,pkg-config)
  2260. ("qttools" ,qttools)))
  2261. (home-page "https://synthv1.sourceforge.io")
  2262. (synopsis "Polyphonic subtractive synthesizer")
  2263. (description
  2264. "Synthv1 is an old-school subtractive polyphonic synthesizer with four
  2265. oscillators and stereo effects.")
  2266. (license license:gpl2+)))
  2267. (define-public drumkv1
  2268. (package
  2269. (name "drumkv1")
  2270. (version "0.9.23")
  2271. (source (origin
  2272. (method url-fetch)
  2273. (uri
  2274. (string-append "mirror://sourceforge/drumkv1/drumkv1/" version
  2275. "/drumkv1-" version ".tar.gz"))
  2276. (sha256
  2277. (base32
  2278. "1jgsml9wxzwnqyb6wjn9zk94qvxs6c898hyj10sza4d9l6r1rnw0"))))
  2279. (build-system gnu-build-system)
  2280. (arguments
  2281. `(#:tests? #f)) ; there are no tests
  2282. (inputs
  2283. `(("jack" ,jack-1)
  2284. ("lv2" ,lv2)
  2285. ("libsndfile" ,libsndfile)
  2286. ("alsa-lib" ,alsa-lib)
  2287. ("non-session-manager" ,non-session-manager)
  2288. ("liblo" ,liblo)
  2289. ("qtbase" ,qtbase-5)))
  2290. (native-inputs
  2291. `(("pkg-config" ,pkg-config)
  2292. ("qttools" ,qttools)))
  2293. (home-page "https://drumkv1.sourceforge.io")
  2294. (synopsis "Drum-kit sampler synthesizer with stereo effects")
  2295. (description
  2296. "Drumkv1 is an old-school drum-kit sampler synthesizer with stereo
  2297. effects.")
  2298. (license license:gpl2+)))
  2299. (define-public samplv1
  2300. (package
  2301. (name "samplv1")
  2302. (version "0.9.23")
  2303. (source (origin
  2304. (method url-fetch)
  2305. (uri
  2306. (string-append "mirror://sourceforge/samplv1/samplv1/" version
  2307. "/samplv1-" version ".tar.gz"))
  2308. (sha256
  2309. (base32
  2310. "1bgyz530mpmlabvy592zickrzk4x4rm2i0ixf3z6plgn265km43q"))))
  2311. (build-system gnu-build-system)
  2312. (arguments
  2313. `(#:tests? #f)) ; there are no tests
  2314. (inputs
  2315. `(("jack" ,jack-1)
  2316. ("lv2" ,lv2)
  2317. ("libsndfile" ,libsndfile)
  2318. ("alsa-lib" ,alsa-lib)
  2319. ("non-session-manager" ,non-session-manager)
  2320. ("liblo" ,liblo)
  2321. ("qtbase" ,qtbase-5)))
  2322. (native-inputs
  2323. `(("pkg-config" ,pkg-config)
  2324. ("qttools" ,qttools)))
  2325. (home-page "https://samplv1.sourceforge.io")
  2326. (synopsis "Polyphonic sampler synthesizer with stereo effects")
  2327. (description
  2328. "Samplv1 is an old-school polyphonic sampler synthesizer with stereo
  2329. effects.")
  2330. (license license:gpl2+)))
  2331. (define-public padthv1
  2332. (package
  2333. (name "padthv1")
  2334. (version "0.9.23")
  2335. (source (origin
  2336. (method url-fetch)
  2337. (uri
  2338. (string-append "mirror://sourceforge/padthv1/padthv1/" version
  2339. "/padthv1-" version ".tar.gz"))
  2340. (sha256
  2341. (base32
  2342. "0222n74kykirkhq4va09hr37rybxs0nxjbmamp38jf94bfz5y8gp"))))
  2343. (build-system gnu-build-system)
  2344. (arguments
  2345. `(#:tests? #f)) ; there are no tests
  2346. (inputs
  2347. `(("jack" ,jack-1)
  2348. ("lv2" ,lv2)
  2349. ("alsa-lib" ,alsa-lib)
  2350. ("non-session-manager" ,non-session-manager)
  2351. ("liblo" ,liblo)
  2352. ("fftwf" ,fftwf)
  2353. ("qtbase" ,qtbase-5)))
  2354. (native-inputs
  2355. `(("pkg-config" ,pkg-config)
  2356. ("qttools" ,qttools)))
  2357. (home-page "https://padthv1.sourceforge.io")
  2358. (synopsis "Polyphonic additive synthesizer")
  2359. (description
  2360. "Padthv1 is an old-school polyphonic additive synthesizer with stereo
  2361. effects. Padthv1 is based on the PADsynth algorithm by Paul Nasca, as a
  2362. special variant of additive synthesis.")
  2363. (license license:gpl2+)))
  2364. (define-public amsynth
  2365. (package
  2366. (name "amsynth")
  2367. (version "1.12.2")
  2368. (source
  2369. (origin
  2370. (method url-fetch)
  2371. (uri (string-append "https://github.com/amsynth/amsynth/releases/"
  2372. "download/release-" version
  2373. "/amsynth-" version ".tar.gz"))
  2374. (sha256
  2375. (base32
  2376. "0lhp7fymm2fids02y43cy422jzmdiraszll1mk3gzlbfwg33ds1i"))))
  2377. (build-system gnu-build-system)
  2378. (arguments
  2379. `(#:phases
  2380. (modify-phases %standard-phases
  2381. (add-after 'unpack 'patch-file-names
  2382. (lambda* (#:key inputs #:allow-other-keys)
  2383. (substitute* "src/GUI/editor_pane.c"
  2384. (("/usr/bin/unzip")
  2385. (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
  2386. (substitute* "src/GUI/MainMenu.cpp"
  2387. (("/usr/bin/which")
  2388. (string-append (assoc-ref inputs "which") "/bin/which")))
  2389. #t)))))
  2390. (inputs
  2391. `(("alsa-lib" ,alsa-lib)
  2392. ("gtk+" ,gtk+-2)
  2393. ("jack" ,jack-1)
  2394. ("libsndfile" ,libsndfile)
  2395. ("lv2" ,lv2)
  2396. ;; External commands invoked at run time.
  2397. ("unzip" ,unzip)
  2398. ("which" ,which)))
  2399. (propagated-inputs
  2400. ;; avoid runtime error:
  2401. ;; GLib-GIO-ERROR **: 22:14:48.344: Settings schema
  2402. ;; 'org.gnome.desktop.interface' is not installed
  2403. `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
  2404. (native-inputs
  2405. `(("intltool" ,intltool)
  2406. ("pkg-config" ,pkg-config)))
  2407. (home-page "https://amsynth.github.io")
  2408. (synopsis "Analog modeling synthesizer")
  2409. (description
  2410. "amsynth is an easy-to-use software synthesizer with a classic
  2411. subtractive synthesizer topology. Its features include: dual
  2412. oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct
  2413. resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato
  2414. keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO
  2415. which can modulate the oscillators, filter, and amplitude; distortion and
  2416. reverb effects.")
  2417. (license license:gpl2+)))
  2418. (define-public setbfree
  2419. (package
  2420. (name "setbfree")
  2421. (version "0.8.11")
  2422. (source (origin
  2423. (method git-fetch)
  2424. (uri (git-reference
  2425. (url "https://github.com/pantherb/setBfree")
  2426. (commit (string-append "v" version))))
  2427. (file-name (git-file-name name version))
  2428. (sha256
  2429. (base32
  2430. "1s3ps3cjwlm63ml4izb7mizy8ci5pl9a19lvz62xf0br089h3afc"))))
  2431. (build-system gnu-build-system)
  2432. (arguments
  2433. `(#:tests? #f ; no "check" target
  2434. #:make-flags
  2435. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  2436. (string-append "FONTFILE="
  2437. (assoc-ref %build-inputs "font-bitstream-vera")
  2438. "/share/fonts/truetype/VeraBd.ttf")
  2439. ;; Disable unsupported optimization flags on non-x86
  2440. ,@(let ((system (or (%current-target-system)
  2441. (%current-system))))
  2442. (if (or (string-prefix? "x86_64" system)
  2443. (string-prefix? "i686" system))
  2444. '()
  2445. '("OPTIMIZATIONS=-ffast-math -fomit-frame-pointer -O3"))))
  2446. #:phases
  2447. (modify-phases %standard-phases
  2448. (add-before 'build 'set-CC-variable
  2449. (lambda _ (setenv "CC" "gcc") #t))
  2450. (delete 'configure))))
  2451. (inputs
  2452. `(("jack" ,jack-1)
  2453. ("lv2" ,lv2)
  2454. ("zita-convolver" ,zita-convolver)
  2455. ("glu" ,glu)
  2456. ("ftgl" ,ftgl)
  2457. ("font-bitstream-vera" ,font-bitstream-vera)))
  2458. (native-inputs
  2459. `(("help2man" ,help2man)
  2460. ("pkg-config" ,pkg-config)))
  2461. (home-page "http://setbfree.org")
  2462. (synopsis "Tonewheel organ")
  2463. (description
  2464. "setBfree is a MIDI-controlled, software synthesizer designed to imitate
  2465. the sound and properties of the electromechanical organs and sound
  2466. modification devices that brought world-wide fame to the names and products of
  2467. Laurens Hammond and Don Leslie.")
  2468. (license license:gpl2+)))
  2469. (define-public beast
  2470. (package
  2471. (name "beast")
  2472. (version "0.10.0")
  2473. (source (origin
  2474. (method url-fetch)
  2475. (uri (string-append "https://testbit.eu/pub/dists/beast/beast-"
  2476. version ".tar.xz"))
  2477. (sha256
  2478. (base32
  2479. "1jzzmfwssklzw8fvvil04n8csc0zm99fnd9p2xa7c0xchg37lvhn"))))
  2480. (build-system gnu-build-system)
  2481. (arguments
  2482. '(#:parallel-build? #f)) ; Race conditions cause build failures
  2483. (inputs
  2484. `(("rapicorn" ,rapicorn)
  2485. ("guile" ,guile-1.8)
  2486. ("python" ,python-2)
  2487. ("libgnomecanvas" ,libgnomecanvas)
  2488. ("libogg" ,libogg)
  2489. ("libmad" ,libmad)
  2490. ("flac" ,flac)
  2491. ("alsa-lib" ,alsa-lib)
  2492. ("libvorbis" ,libvorbis)
  2493. ("gettext" ,gettext-minimal)))
  2494. (native-inputs
  2495. `(("pkg-config" ,pkg-config)
  2496. ("glib:bin" ,glib "bin")
  2497. ("cython" ,python2-cython)
  2498. ("perl" ,perl)
  2499. ("perl-xml-parser" ,perl-xml-parser)))
  2500. (home-page "https://testbit.eu/wiki/Beast_Home")
  2501. (synopsis "Music composition and modular synthesis environment")
  2502. (description
  2503. "Beast is a music composition and modular synthesis application. It
  2504. supports a wide range of standards in the field, such as MIDI, various audio
  2505. file formats and LADSPA modules. It allows for multitrack editing, real-time
  2506. synthesis, 32bit audio rendering, precise timing down to sample granularity,
  2507. on-demand and partial loading of wave files, on the fly decoding, stereo
  2508. mixing, FFT scopes, MIDI automation and full scriptability in Scheme.")
  2509. (license license:gpl3+)))
  2510. (define-public bristol
  2511. (package
  2512. (name "bristol")
  2513. (version "0.60.11")
  2514. (source (origin
  2515. (method url-fetch)
  2516. (uri (string-append "mirror://sourceforge/bristol/bristol/"
  2517. (version-major+minor version)
  2518. "/bristol-" version ".tar.gz"))
  2519. (sha256
  2520. (base32
  2521. "1fi2m4gmvxdi260821y09lxsimq82yv4k5bbgk3kyc3x1nyhn7vx"))))
  2522. (build-system gnu-build-system)
  2523. (arguments
  2524. `(#:phases
  2525. (modify-phases %standard-phases
  2526. (add-after 'unpack 'remove-sse-flags
  2527. (lambda* (#:key system #:allow-other-keys)
  2528. (when (not (or (string-prefix? "x86_64" system)
  2529. (string-prefix? "i686" system)))
  2530. (substitute* "bristol/Makefile.in"
  2531. (("-msse -mfpmath=sse") "")))
  2532. #t))
  2533. ;; alsa-lib 1.1.x no longer provides iatomic.h. That's okay because
  2534. ;; bristol actually doesn't use it.
  2535. (add-after 'unpack 'do-not-use-alsa-iatomic
  2536. (lambda _
  2537. (substitute* "libbristolaudio/audioEngineJack.c"
  2538. (("#include <alsa/iatomic.h>") ""))
  2539. #t))
  2540. ;; We know that Bristol has been linked with JACK and we don't have
  2541. ;; ldd, so we can just skip this check.
  2542. (add-after 'unpack 'do-not-grep-for-jack
  2543. (lambda _
  2544. (substitute* "bin/startBristol.in"
  2545. (("ldd `which bristol` | grep jack") "echo guix"))
  2546. #t)))))
  2547. (inputs
  2548. `(("alsa-lib" ,alsa-lib)
  2549. ("jack" ,jack-1)
  2550. ("liblo" ,liblo)
  2551. ("libx11" ,libx11)))
  2552. (native-inputs
  2553. `(("pkg-config" ,pkg-config)))
  2554. (home-page "http://bristol.sourceforge.net/")
  2555. (synopsis "Synthesizer emulator")
  2556. (description
  2557. "Bristol is an emulation package for a number of different @code{classic}
  2558. synthesizers including additive and subtractive and a few organs. The
  2559. application consists of the engine, which is called bristol, and its own GUI
  2560. library called brighton that represents all the emulations. There are
  2561. currently more than twenty different emulations; each does sound different
  2562. although the author maintains that the quality and accuracy of each emulation
  2563. is subjective.")
  2564. (license license:gpl3+)))
  2565. (define-public tuxguitar
  2566. (package
  2567. (name "tuxguitar")
  2568. (version "1.5.4")
  2569. (source (origin
  2570. (method url-fetch)
  2571. (uri (string-append
  2572. "mirror://sourceforge/tuxguitar/TuxGuitar/TuxGuitar-"
  2573. version "/tuxguitar-" version "-src.tar.gz"))
  2574. (sha256
  2575. (base32
  2576. "0fjhf56lhlhm84v08917xp4yw8y6d0qajm4qiy1gfp8dm74whwwg"))))
  2577. (build-system ant-build-system)
  2578. (arguments
  2579. `(#:build-target "build"
  2580. #:jdk ,icedtea-8
  2581. #:tests? #f ; no tests
  2582. #:phases
  2583. (modify-phases %standard-phases
  2584. (replace 'build
  2585. (lambda* (#:key inputs outputs #:allow-other-keys)
  2586. (let* ((initial-classpath (getenv "CLASSPATH"))
  2587. (build-dir (lambda (dir)
  2588. (setenv
  2589. "CLASSPATH"
  2590. (string-join (cons initial-classpath
  2591. (find-files (getcwd) "\\.jar$"))
  2592. ":"))
  2593. (with-directory-excursion dir
  2594. (if (file-exists? "build.xml")
  2595. ((assoc-ref %standard-phases 'build)
  2596. #:build-target "build")
  2597. (begin
  2598. ;; Generate default build.xml.
  2599. ((@@ (guix build ant-build-system)
  2600. default-build.xml)
  2601. (string-append (string-downcase dir) ".jar")
  2602. (string-append (assoc-ref outputs "out")
  2603. "/share/java"))
  2604. ((assoc-ref %standard-phases 'build))))))))
  2605. (map build-dir '("TuxGuitar-lib"
  2606. "TuxGuitar-editor-utils"
  2607. "TuxGuitar-ui-toolkit"
  2608. "TuxGuitar-ui-toolkit-swt"
  2609. "TuxGuitar-viewer"
  2610. "TuxGuitar"
  2611. "TuxGuitar-gm-utils"
  2612. "TuxGuitar-alsa"
  2613. "TuxGuitar-midi"
  2614. "TuxGuitar-midi-ui"))
  2615. #t)))
  2616. (add-after 'build 'build-jni
  2617. (lambda _
  2618. (setenv "CC" "gcc")
  2619. (setenv "CFLAGS" (string-append
  2620. "-fpic -I"
  2621. (getcwd)
  2622. "/build-scripts/native-modules/common-include"))
  2623. (invoke "make" "-C" "./TuxGuitar-alsa/jni" "-f" "GNUmakefile")))
  2624. (replace 'install
  2625. (lambda* (#:key inputs outputs #:allow-other-keys)
  2626. (let* ((out (assoc-ref outputs "out"))
  2627. (bin (string-append out "/bin"))
  2628. (share (string-append out "/share"))
  2629. (jni-lib (string-append out "/lib"))
  2630. (lib (string-append share "/java"))
  2631. (swt (assoc-ref inputs "java-swt"))
  2632. (mime (string-append share "/mime/packages"))
  2633. (app (string-append share "/applications"))
  2634. (man (string-append share "/man/man1")))
  2635. (mkdir-p bin)
  2636. ;; Install all jars.
  2637. (for-each (lambda (file)
  2638. (install-file file lib))
  2639. (find-files "." "\\.jar$"))
  2640. ;; Install jni libraries
  2641. (for-each (lambda (file)
  2642. (install-file file jni-lib))
  2643. (find-files "." "\\-jni.so$"))
  2644. ;; Install all resources.
  2645. (copy-recursively "./TuxGuitar/share" share)
  2646. ;; Install desktop and mime files
  2647. (install-file "./misc/tuxguitar.xml" mime)
  2648. (install-file "./misc/tuxguitar.desktop" app)
  2649. ;; Install manaual
  2650. (install-file "./misc/tuxguitar.1" man)
  2651. ;; Create wrapper.
  2652. (call-with-output-file (string-append bin "/tuxguitar")
  2653. (lambda (port)
  2654. (let ((classpath (string-join (append (find-files lib "\\.jar$")
  2655. (find-files swt "\\.jar$"))
  2656. ":")))
  2657. (format
  2658. port
  2659. (string-append "#!/bin/sh\n"
  2660. (which "java")
  2661. " -cp " classpath
  2662. " -Dtuxguitar.home.path=" out
  2663. " -Dtuxguitar.share.path=" out "/share"
  2664. " -Dswt.library.path=" swt "/lib"
  2665. " -Djava.library.path=" out "/lib"
  2666. " org.herac.tuxguitar.app.TGMainSingleton"
  2667. " \"$1\" \"$2\"")))))
  2668. (chmod (string-append bin "/tuxguitar") #o555)
  2669. #t))))))
  2670. (inputs
  2671. `(("alsa-lib" ,alsa-lib)
  2672. ("java-swt" ,java-swt)))
  2673. (home-page "http://tuxguitar.com.ar/")
  2674. (synopsis "Multitrack tablature editor and player")
  2675. (description
  2676. "TuxGuitar is a guitar tablature editor with player support through midi.
  2677. It can display scores and multitrack tabs. TuxGuitar provides various
  2678. additional features, including autoscrolling while playing, note duration
  2679. management, bend/slide/vibrato/hammer-on/pull-off effects, support for
  2680. tuplets, time signature management, tempo management, gp3/gp4/gp5 import and
  2681. export.")
  2682. (license license:lgpl2.1+)))
  2683. (define-public pd
  2684. (package
  2685. (name "pd")
  2686. (version "0.51-4")
  2687. (source (origin
  2688. (method url-fetch)
  2689. (uri
  2690. (string-append "http://msp.ucsd.edu/Software/pd-"
  2691. version ".src.tar.gz"))
  2692. (sha256
  2693. (base32
  2694. "1hgw1ciwr59f4f9s0h7c2l36wcsn3jsddhr1r9qj97vf64c1ynaj"))))
  2695. (build-system gnu-build-system)
  2696. (arguments
  2697. (let ((wish (string-append "wish" (version-major+minor
  2698. (package-version tk)))))
  2699. `(#:tests? #f ; no "check" target
  2700. #:configure-flags
  2701. (list
  2702. "--enable-jack"
  2703. (string-append "--with-wish=" (string-append
  2704. (assoc-ref %build-inputs "tk")
  2705. "/bin/" ,wish)))
  2706. #:phases
  2707. (modify-phases %standard-phases
  2708. (add-before 'configure 'fix-with-path
  2709. (lambda _
  2710. (substitute* "tcl/pd-gui.tcl"
  2711. (("exec wish ") (string-append "exec " (which ,wish) " ")))
  2712. #t))))))
  2713. (native-inputs
  2714. `(("autoconf" ,autoconf)
  2715. ("automake" ,automake)
  2716. ("libtool" ,libtool)
  2717. ("gettext" ,gettext-minimal)
  2718. ("pkg-config" ,pkg-config)))
  2719. (inputs
  2720. `(("tk" ,tk)
  2721. ("alsa-lib" ,alsa-lib)
  2722. ("jack" ,jack-1)))
  2723. (home-page "https://puredata.info")
  2724. (synopsis "Visual programming language for artistic performances")
  2725. (description
  2726. "Pure Data (aka Pd) is a visual programming language. Pd enables
  2727. musicians, visual artists, performers, researchers, and developers to create
  2728. software graphically, without writing lines of code. Pd is used to process
  2729. and generate sound, video, 2D/3D graphics, and interface sensors, input
  2730. devices, and MIDI. Pd can easily work over local and remote networks to
  2731. integrate wearable technology, motor systems, lighting rigs, and other
  2732. equipment. Pd is suitable for learning basic multimedia processing and visual
  2733. programming methods as well as for realizing complex systems for large-scale
  2734. projects.")
  2735. (license license:bsd-3)))
  2736. (define-public libpd
  2737. (package
  2738. (name "libpd")
  2739. (version "0.11.0")
  2740. (source (origin
  2741. (method git-fetch)
  2742. (uri (git-reference
  2743. (url "https://github.com/libpd/libpd")
  2744. (commit version)
  2745. (recursive? #t))) ; for the 'pure-data' submodule
  2746. (file-name (string-append name "-" version "-checkout"))
  2747. (sha256
  2748. (base32
  2749. "1bcg1d9iyf9n37hwwphmih0c8rd1xcqykil5z1cax6xfs76552nk"))))
  2750. (build-system gnu-build-system)
  2751. (arguments
  2752. '(#:tests? #f ; no tests
  2753. #:make-flags '("CC=gcc")
  2754. #:phases
  2755. (modify-phases %standard-phases
  2756. (delete 'configure) ; no configure script
  2757. (replace 'install
  2758. (lambda* (#:key outputs #:allow-other-keys)
  2759. (let ((out (assoc-ref outputs "out")))
  2760. (invoke "make" "install"
  2761. (string-append "prefix=" out)
  2762. ;; XXX: Fix the last 2 lines of 'install' target.
  2763. "LIBPD_IMPLIB=NO"
  2764. "LIBPD_DEF=NO")))))))
  2765. (home-page "http://libpd.cc/")
  2766. (synopsis "Pure Data as an embeddable audio synthesis library")
  2767. (description
  2768. "Libpd provides Pure Data as an embeddable audio synthesis library. Its
  2769. main purpose is to liberate raw audio rendering from audio and MIDI drivers.")
  2770. (license license:bsd-3)))
  2771. (define-public portmidi
  2772. (package
  2773. (name "portmidi")
  2774. (version "217")
  2775. (source (origin
  2776. (method url-fetch)
  2777. (uri (string-append "mirror://sourceforge/portmedia/portmidi/"
  2778. version "/portmidi-src-" version ".zip"))
  2779. (sha256
  2780. (base32
  2781. "03rfsk7z6rdahq2ihy5k13qjzgx757f75yqka88v3gc0pn9ais88"))
  2782. (patches (list (search-patch "portmidi-modular-build.patch")))))
  2783. (build-system cmake-build-system)
  2784. (arguments
  2785. `(#:tests? #f ; tests cannot be linked
  2786. #:build-type "Release" ; needed to have PMALSA set
  2787. #:configure-flags
  2788. (list "-DPORTMIDI_ENABLE_JAVA=Off"
  2789. "-DPORTMIDI_ENABLE_TEST=Off") ; tests fail linking
  2790. #:phases
  2791. (modify-phases %standard-phases
  2792. ;; Some packages, e.g., MuseScore, expect "libporttime.so" instead of
  2793. ;; "libportmidi.so". Distributions get away with it by creating an
  2794. ;; appropriate symlink.
  2795. (add-after 'install 'add-porttime
  2796. (lambda* (#:key outputs #:allow-other-keys)
  2797. (let* ((out (assoc-ref outputs "out"))
  2798. (lib (string-append out "/lib")))
  2799. (with-directory-excursion lib
  2800. (symlink "libportmidi.so" "libporttime.so")))))
  2801. (add-after 'install 'install-pkg-config
  2802. (lambda* (#:key outputs #:allow-other-keys)
  2803. (let* ((out (assoc-ref outputs "out"))
  2804. (pkg-config-dir (string-append out "/lib/pkgconfig")))
  2805. (mkdir-p pkg-config-dir)
  2806. (with-output-to-file (string-append pkg-config-dir "/portmidi.pc")
  2807. (lambda _
  2808. (format #t
  2809. "prefix=~@*~a~@
  2810. libdir=${prefix}/lib~@
  2811. includedir=${prefix}/include~@
  2812. Name: portmidi~@
  2813. Description:~@
  2814. Version: ~a~@
  2815. Libs: -L${libdir} -lportmidi~@
  2816. Cflags: -I${includedir}~%"
  2817. out ,version)))))))))
  2818. (inputs
  2819. `(("alsa-lib" ,alsa-lib)))
  2820. (native-inputs
  2821. `(("unzip" ,unzip)))
  2822. (home-page "http://portmedia.sourceforge.net/portmidi/")
  2823. (synopsis "Library for MIDI I/O")
  2824. (description
  2825. "PortMidi is a library supporting real-time input and output of MIDI data
  2826. using a system-independent interface.")
  2827. (license license:expat)))
  2828. (define-public python-pyportmidi
  2829. (package
  2830. (name "python-pyportmidi")
  2831. (version (package-version portmidi))
  2832. (source (package-source portmidi))
  2833. (build-system python-build-system)
  2834. (arguments
  2835. `(#:tests? #f ; no tests included
  2836. #:phases
  2837. (modify-phases %standard-phases
  2838. (add-after 'unpack 'enter-dir
  2839. (lambda _ (chdir "pm_python") #t))
  2840. (add-after 'enter-dir 'fix-setup.py
  2841. (lambda _
  2842. (substitute* "setup.py"
  2843. ;; Use Python 3 syntax
  2844. (("print (\".*\")" _ text)
  2845. (string-append "print(" text ")\n"))
  2846. ;; TODO.txt and CHANGES.txt don't exist
  2847. (("CHANGES =.*") "CHANGES = \"\"\n")
  2848. (("TODO =.*") "TODO = \"\"\n"))
  2849. #t)))))
  2850. (inputs
  2851. `(("portmidi" ,portmidi)
  2852. ("alsa-lib" ,alsa-lib)))
  2853. (native-inputs
  2854. `(("python-cython" ,python-cython)
  2855. ("unzip" ,unzip)))
  2856. (home-page "http://portmedia.sourceforge.net/portmidi/")
  2857. (synopsis "Python bindings to PortMidi")
  2858. (description
  2859. "This package provides Python bindings to the PortMidi library.")
  2860. (license license:expat)))
  2861. (define-public frescobaldi
  2862. (package
  2863. (name "frescobaldi")
  2864. (version "3.1.3")
  2865. (source
  2866. (origin
  2867. (method url-fetch)
  2868. (uri (string-append
  2869. "https://github.com/wbsoft/frescobaldi/releases/download/v"
  2870. version "/frescobaldi-" version ".tar.gz"))
  2871. (sha256
  2872. (base32 "1hg9yc8kj445fjsby92g3qf50crcl1pb079zfma18sb7ycv50zww"))))
  2873. (build-system python-build-system)
  2874. (arguments
  2875. `(#:tests? #f)) ;no tests included
  2876. (inputs
  2877. `(("lilypond" ,lilypond)
  2878. ("poppler" ,poppler)
  2879. ("portmidi" ,portmidi)
  2880. ("python-ly" ,python-ly)
  2881. ("python-poppler-qt5" ,python-poppler-qt5)
  2882. ("python-pyportmidi" ,python-pyportmidi)
  2883. ("python-pyqt" ,python-pyqt)
  2884. ("python-sip" ,python-sip)))
  2885. (home-page "https://www.frescobaldi.org/")
  2886. (synopsis "LilyPond sheet music text editor")
  2887. (description
  2888. "Frescobaldi is a LilyPond sheet music text editor with syntax
  2889. highlighting and automatic completion. Among other things, it can render
  2890. scores next to the source, can capture input from MIDI or read MusicXML and
  2891. ABC files, has a MIDI player for proof-listening, and includes a documentation
  2892. browser.")
  2893. (license license:gpl2+)))
  2894. (define-public drumstick
  2895. (package
  2896. (name "drumstick")
  2897. (version "2.3.1")
  2898. (source (origin
  2899. (method url-fetch)
  2900. (uri (string-append "mirror://sourceforge/drumstick/"
  2901. version "/drumstick-" version ".tar.bz2"))
  2902. (sha256
  2903. (base32
  2904. "1rs248pkgn6d29nkvw9ab6dvi1vsz220jdmz1ddzr29cpyc0adfh"))))
  2905. (build-system cmake-build-system)
  2906. (arguments
  2907. `(#:tests? #f ; no test target
  2908. #:phases
  2909. (modify-phases %standard-phases
  2910. (add-before 'configure 'fix-docbook
  2911. (lambda* (#:key inputs #:allow-other-keys)
  2912. (substitute* "cmake_admin/CreateManpages.cmake"
  2913. (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
  2914. (string-append (assoc-ref inputs "docbook-xsl")
  2915. "/xml/xsl/docbook-xsl-"
  2916. ,(package-version docbook-xsl)
  2917. "/manpages/docbook.xsl")))
  2918. #t)))))
  2919. (inputs
  2920. `(("qtbase" ,qtbase-5)
  2921. ("qtsvg" ,qtsvg)
  2922. ("qttools" ,qttools)
  2923. ("alsa-lib" ,alsa-lib)))
  2924. (native-inputs
  2925. `(("pkg-config" ,pkg-config)
  2926. ("libxslt" ,libxslt) ; for xsltproc
  2927. ("docbook-xsl" ,docbook-xsl)
  2928. ("doxygen" ,doxygen)
  2929. ("graphviz" ,graphviz))) ; for dot
  2930. (home-page "https://drumstick.sourceforge.io/")
  2931. (synopsis "C++ MIDI library")
  2932. (description
  2933. "Drumstick is a set of MIDI libraries using C++/Qt5 idioms and style. It
  2934. includes a C++ wrapper around the ALSA library sequencer interface. A
  2935. complementary library provides classes for processing SMF (Standard MIDI
  2936. files: .MID/.KAR), Cakewalk (.WRK), and Overture (.OVE) file formats. A
  2937. multiplatform realtime MIDI I/O library is also provided with various output
  2938. backends, including ALSA, OSS, Network and FluidSynth.")
  2939. (license license:gpl2+)))
  2940. (define-public vmpk
  2941. (package
  2942. (name "vmpk")
  2943. (version "0.8.4")
  2944. (source (origin
  2945. (method url-fetch)
  2946. (uri (string-append "mirror://sourceforge/vmpk/vmpk/"
  2947. version "/vmpk-" version ".tar.bz2"))
  2948. (sha256
  2949. (base32
  2950. "0kh8pns9pla9c47y2nwckjpiihczg6rpg96aignsdsd7vkql69s9"))))
  2951. (build-system cmake-build-system)
  2952. (arguments
  2953. `(#:tests? #f ; no test target
  2954. #:phases
  2955. (modify-phases %standard-phases
  2956. (add-before 'configure 'fix-docbook
  2957. (lambda* (#:key inputs #:allow-other-keys)
  2958. (substitute* "cmake_admin/CreateManpages.cmake"
  2959. (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
  2960. (string-append (assoc-ref inputs "docbook-xsl")
  2961. "/xml/xsl/docbook-xsl-"
  2962. ,(package-version docbook-xsl)
  2963. "/manpages/docbook.xsl")))
  2964. #t)))))
  2965. (inputs
  2966. `(("drumstick" ,drumstick)
  2967. ("qtbase" ,qtbase-5)
  2968. ("qtsvg" ,qtsvg)
  2969. ("qtx11extras" ,qtx11extras)))
  2970. (native-inputs
  2971. `(("libxslt" ,libxslt) ;for xsltproc
  2972. ("docbook-xsl" ,docbook-xsl)
  2973. ("qttools" ,qttools)
  2974. ("pkg-config" ,pkg-config)))
  2975. (home-page "https://vmpk.sourceforge.io/")
  2976. (synopsis "Virtual MIDI piano keyboard")
  2977. (description
  2978. "Virtual MIDI Piano Keyboard is a MIDI events generator and receiver. It
  2979. doesn't produce any sound by itself, but can be used to drive a MIDI
  2980. synthesizer (either hardware or software, internal or external). You can use
  2981. the computer's keyboard to play MIDI notes, and also the mouse. You can use
  2982. the Virtual MIDI Piano Keyboard to display the played MIDI notes from another
  2983. instrument or MIDI file player.")
  2984. (license license:gpl3+)))
  2985. (define-public zynaddsubfx
  2986. (package
  2987. (name "zynaddsubfx")
  2988. (version "3.0.5")
  2989. (source (origin
  2990. (method url-fetch)
  2991. (uri (string-append
  2992. "mirror://sourceforge/zynaddsubfx/zynaddsubfx/"
  2993. version "/zynaddsubfx-" version ".tar.bz2"))
  2994. (sha256
  2995. (base32
  2996. "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl"))))
  2997. (build-system cmake-build-system)
  2998. (arguments
  2999. `(#:phases
  3000. (modify-phases %standard-phases
  3001. ;; Move SSE compiler optimization flags from generic target to
  3002. ;; athlon64 and core2 targets, because otherwise the build would fail
  3003. ;; on non-Intel machines.
  3004. (add-after 'unpack 'remove-sse-flags-from-generic-target
  3005. (lambda _
  3006. (substitute* "src/CMakeLists.txt"
  3007. (("-msse -msse2 -mfpmath=sse") "")
  3008. (("-march=(athlon64|core2)" flag)
  3009. (string-append flag " -msse -msse2 -mfpmath=sse")))
  3010. #t)))))
  3011. (inputs
  3012. `(("liblo" ,liblo)
  3013. ("ntk" ,ntk)
  3014. ("mesa" ,mesa)
  3015. ("alsa-lib" ,alsa-lib)
  3016. ("jack" ,jack-1)
  3017. ("fftw" ,fftw)
  3018. ("minixml" ,minixml)
  3019. ("libxpm" ,libxpm)
  3020. ("zlib" ,zlib)))
  3021. (native-inputs
  3022. `(("pkg-config" ,pkg-config)))
  3023. (home-page "http://zynaddsubfx.sf.net/")
  3024. (synopsis "Software synthesizer")
  3025. (description
  3026. "ZynAddSubFX is a feature heavy realtime software synthesizer. It offers
  3027. three synthesizer engines, multitimbral and polyphonic synths, microtonal
  3028. capabilities, custom envelopes, effects, etc.")
  3029. (license license:gpl2)))
  3030. (define-public yoshimi
  3031. (package
  3032. (name "yoshimi")
  3033. (version "1.7.4")
  3034. (source
  3035. (origin
  3036. (method url-fetch)
  3037. (uri (string-append "mirror://sourceforge/yoshimi/"
  3038. (version-major+minor version)
  3039. "/yoshimi-" version ".tar.bz2"))
  3040. (sha256
  3041. (base32 "0lxfqj4p4njww3n0wa6yfj38zfls16y3wszd47gvc5asmqyg5vjd"))))
  3042. (build-system cmake-build-system)
  3043. (arguments
  3044. `(#:tests? #f ; there are no tests
  3045. #:configure-flags
  3046. (list (string-append "-DCMAKE_INSTALL_DATAROOTDIR="
  3047. (assoc-ref %outputs "out") "/share"))
  3048. #:phases
  3049. (modify-phases %standard-phases
  3050. (add-before 'configure 'enter-dir
  3051. (lambda _ (chdir "src") #t))
  3052. ;; Move SSE compiler optimization flags from generic target to
  3053. ;; athlon64 and core2 targets, because otherwise the build would fail
  3054. ;; on non-Intel machines.
  3055. (add-after 'unpack 'remove-sse-flags-from-generic-target
  3056. (lambda _
  3057. (substitute* "src/CMakeLists.txt"
  3058. (("-msse -msse2 -mfpmath=sse") "")
  3059. (("-march=(athlon64|core2)" flag)
  3060. (string-append flag " -msse -msse2 -mfpmath=sse")))
  3061. #t)))))
  3062. (inputs
  3063. `(("boost" ,boost)
  3064. ("fftwf" ,fftwf)
  3065. ("alsa-lib" ,alsa-lib)
  3066. ("jack" ,jack-1)
  3067. ("fontconfig" ,fontconfig)
  3068. ("minixml" ,minixml)
  3069. ("mesa" ,mesa)
  3070. ("fltk" ,fltk)
  3071. ("lv2" ,lv2)
  3072. ("readline" ,readline)
  3073. ("ncurses" ,ncurses)
  3074. ("cairo" ,cairo)
  3075. ("zlib" ,zlib)))
  3076. (native-inputs
  3077. `(("pkg-config" ,pkg-config)))
  3078. (home-page "http://yoshimi.sourceforge.net/")
  3079. (synopsis "Multi-paradigm software synthesizer")
  3080. (description
  3081. "Yoshimi is a fork of ZynAddSubFX, a feature-heavy real-time software
  3082. synthesizer. It offers three synthesizer engines, multitimbral and polyphonic
  3083. synths, microtonal capabilities, custom envelopes, effects, etc. Yoshimi
  3084. improves on support for JACK features, such as JACK MIDI.")
  3085. (license license:gpl2)))
  3086. (define-public libgig
  3087. (package
  3088. (name "libgig")
  3089. (version "4.2.0")
  3090. (source (origin
  3091. (method url-fetch)
  3092. (uri (string-append "http://download.linuxsampler.org/packages/"
  3093. "libgig-" version ".tar.bz2"))
  3094. (sha256
  3095. (base32
  3096. "1zs5yy124bymfyapsnljr6rv2lnn5inwchm0xnwiw44b2d39l8hn"))))
  3097. (build-system gnu-build-system)
  3098. (inputs
  3099. `(("libuuid" ,util-linux "lib")
  3100. ("libsndfile" ,libsndfile)))
  3101. (native-inputs
  3102. `(("pkg-config" ,pkg-config)))
  3103. (home-page "https://linuxsampler.org/libgig/")
  3104. (synopsis "C++ library for working with Gigasampler (.gig) files")
  3105. (description
  3106. "Libgig is a C++ library for loading, modifying existing and creating new
  3107. Gigasampler (.gig) files and DLS (Downloadable Sounds) Level 1/2 files, KORG
  3108. sample based instruments (.KSF and .KMP files), SoundFont v2 (.sf2) files and
  3109. AKAI sampler data. The package includes a couple of command line tools based
  3110. on the library.")
  3111. ;; The library and tools are released under the GPL, except the AKAI
  3112. ;; classes which are released under the LGPL.
  3113. (license (list license:gpl2+ license:lgpl2.1+))))
  3114. (define-public jack-keyboard
  3115. (package
  3116. (name "jack-keyboard")
  3117. (version "2.5")
  3118. (source
  3119. (origin
  3120. (method url-fetch)
  3121. (uri (string-append "mirror://sourceforge/jack-keyboard/jack-keyboard/"
  3122. version "/jack-keyboard-" version ".tar.gz"))
  3123. (sha256
  3124. (base32
  3125. "0mzmg8aavybcfdlq2yd9d0vscqd6is5p6jzrgfpfm5j3xdcvh2s3"))))
  3126. (build-system gnu-build-system)
  3127. (inputs
  3128. `(("jack" ,jack-1)
  3129. ("lash" ,lash)
  3130. ("gtk+" ,gtk+-2)))
  3131. (native-inputs
  3132. `(("pkg-config" ,pkg-config)))
  3133. (home-page "http://jack-keyboard.sourceforge.net/")
  3134. (synopsis "Virtual MIDI keyboard")
  3135. (description "Jack-keyboard is a virtual MIDI keyboard, a program that
  3136. allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
  3137. (license license:bsd-2)))
  3138. (define-public jack-capture
  3139. (package
  3140. (name "jack-capture")
  3141. (version "0.9.73")
  3142. (source (origin
  3143. (method git-fetch)
  3144. (uri (git-reference
  3145. (url "https://github.com/kmatheussen/jack_capture")
  3146. (commit version)))
  3147. (file-name (string-append name "-" version "-checkout"))
  3148. (sha256
  3149. (base32
  3150. "0jcqky96q8xgya6wqv1p8pj9fkf2wh7ynl67ah7x5bn3basgfclf"))))
  3151. (build-system gnu-build-system)
  3152. (arguments
  3153. `(#:make-flags
  3154. (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  3155. #:tests? #f ; there are none
  3156. #:phases
  3157. (modify-phases %standard-phases
  3158. (delete 'configure))))
  3159. (native-inputs
  3160. `(("pkg-config" ,pkg-config)
  3161. ("which" ,which)))
  3162. (inputs
  3163. `(("gtk+" ,gtk+-2)
  3164. ("jack" ,jack-1)
  3165. ("libogg" ,libogg)
  3166. ("liblo" ,liblo)
  3167. ("lame" ,lame)
  3168. ("libsndfile" ,libsndfile)))
  3169. (home-page "https://github.com/kmatheussen/jack_capture")
  3170. (synopsis "Program for recording sound files with JACK")
  3171. (description "This is a program for recording sound files with JACK. It
  3172. can connect to any JACK port and record the output into a stereo WAV file.")
  3173. (license license:gpl2+)))
  3174. (define-public jack-select
  3175. (package
  3176. (name "jack-select")
  3177. (version "1.5.0")
  3178. (source (origin
  3179. (method url-fetch)
  3180. (uri (pypi-uri "jack-select" version))
  3181. (sha256
  3182. (base32
  3183. "1zijk9ly2fczxsnnrqr8s0ajmlyx1j1vd8gk0rm5dj5zyhhmia7f"))))
  3184. (build-system gnu-build-system)
  3185. (arguments
  3186. `(#:modules ((guix build gnu-build-system)
  3187. ((guix build python-build-system) #:prefix python:)
  3188. (guix build utils))
  3189. #:imported-modules (,@%gnu-build-system-modules
  3190. (guix build python-build-system))
  3191. #:make-flags
  3192. (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  3193. #:tests? #f ; there are none
  3194. #:phases
  3195. (modify-phases %standard-phases
  3196. (replace 'configure
  3197. (lambda* (#:key inputs #:allow-other-keys)
  3198. ;; python-dbus cannot be found but it's really there. See
  3199. ;; https://github.com/SpotlightKid/jack-select/issues/2
  3200. (substitute* "setup.py"
  3201. (("'dbus-python',") ""))
  3202. ;; Fix reference to dlopened libraries.
  3203. (substitute* "jackselect/alsainfo.py"
  3204. (("libasound.so.2")
  3205. (search-input-file inputs "/lib/libasound.so.2")))))
  3206. (replace 'build
  3207. (assoc-ref python:%standard-phases 'build))
  3208. (add-after 'install 'wrap
  3209. (assoc-ref python:%standard-phases 'wrap)))))
  3210. (native-inputs
  3211. `(("pkg-config" ,pkg-config)))
  3212. (inputs
  3213. `(("alsa-lib" ,alsa-lib)
  3214. ("python" ,python-wrapper)
  3215. ("python-pyudev" ,python-pyudev)
  3216. ("python-pyxdg" ,python-pyxdg)
  3217. ("python-dbus" ,python-dbus)
  3218. ("python-pygobject" ,python-pygobject)))
  3219. (home-page "https://github.com/SpotlightKid/jack-select")
  3220. (synopsis "Systray application to quickly change the JACK-DBus configuration")
  3221. (description "This application displays an icon in the system tray (also
  3222. known as notification area) of your desktop, which shows the status of the
  3223. JACK audio server and when you click on it, a menu pops up, which lets you
  3224. quickly select from the JACK configuration presets you created with QjackCtl.
  3225. When you select a preset, its JACK engine and driver configuration settings
  3226. are loaded via DBus into JACK and then the server is restarted. This allows
  3227. you to switch between different audio setups with just two mouse clicks.")
  3228. (license license:expat)))
  3229. (define-public cursynth
  3230. (package
  3231. (name "cursynth")
  3232. (version "1.5")
  3233. (source
  3234. (origin
  3235. (method url-fetch)
  3236. (uri (string-append "mirror://gnu/cursynth/cursynth-"
  3237. version ".tar.gz"))
  3238. (sha256
  3239. (base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
  3240. (patches (search-patches "cursynth-wave-rand.patch"))))
  3241. (build-system gnu-build-system)
  3242. (native-inputs `(("pkg-config" ,pkg-config)))
  3243. ;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
  3244. ;; prevents us from using pulseaudio
  3245. (inputs `(("ncurses" ,ncurses)
  3246. ("alsa" ,alsa-lib)))
  3247. (home-page "https://www.gnu.org/software/cursynth/")
  3248. (synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
  3249. (description "GNU cursynth is a polyphonic synthesizer that runs
  3250. graphically in the terminal. It is built on a full-featured subtractive
  3251. synthesis engine. Notes and parameter changes may be entered via MIDI or the
  3252. computer's keyboard.")
  3253. (license license:gpl3+)))
  3254. (define-public aj-snapshot
  3255. (package
  3256. (name "aj-snapshot")
  3257. (version "0.9.9")
  3258. (source (origin
  3259. (method url-fetch)
  3260. (uri (string-append "mirror://sourceforge/aj-snapshot/"
  3261. "aj-snapshot-" version ".tar.bz2"))
  3262. (sha256
  3263. (base32
  3264. "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil"))))
  3265. (build-system gnu-build-system)
  3266. (inputs
  3267. `(("minixml" ,minixml)
  3268. ("jack" ,jack-1)
  3269. ("alsa-lib" ,alsa-lib)))
  3270. (native-inputs
  3271. `(("pkg-config" ,pkg-config)))
  3272. (home-page "http://aj-snapshot.sourceforge.net/")
  3273. (synopsis "Snapshot connections between ALSA and JACK clients")
  3274. (description "Aj-snapshot is a small program that can be used to make
  3275. snapshots of the connections made between JACK and/or ALSA clients. Because
  3276. JACK can provide both audio and MIDI support to programs, aj-snapshot can
  3277. store both types of connections for JACK. ALSA, on the other hand, only
  3278. provides routing facilities for MIDI clients. Aj-snapshot is meant to be used
  3279. from the command line.")
  3280. (license license:gpl3+)))
  3281. (define-public qtractor
  3282. (package
  3283. (name "qtractor")
  3284. (version "0.9.23")
  3285. (source (origin
  3286. (method url-fetch)
  3287. (uri (string-append "https://downloads.sourceforge.net/qtractor/"
  3288. "qtractor-" version ".tar.gz"))
  3289. (sha256
  3290. (base32
  3291. "1d2d884x5kfa41skwyh0ihyx5jgc9467617gmfjm379qcgnxq00s"))))
  3292. (build-system gnu-build-system)
  3293. (arguments
  3294. `(#:tests? #f)) ; no "check" target
  3295. (inputs
  3296. `(("qt" ,qtbase-5)
  3297. ("qtx11extras" ,qtx11extras)
  3298. ("alsa-lib" ,alsa-lib)
  3299. ("jack" ,jack-1)
  3300. ("libsndfile" ,libsndfile)
  3301. ("ladspa" ,ladspa)
  3302. ("lv2" ,lv2)
  3303. ("lilv" ,lilv)
  3304. ("suil" ,suil)
  3305. ("libsamplerate" ,libsamplerate)
  3306. ("libvorbis" ,libvorbis)
  3307. ("libmad" ,libmad)
  3308. ("rubberband" ,rubberband)
  3309. ("liblo" ,liblo)
  3310. ("zlib" ,zlib)))
  3311. (native-inputs
  3312. `(("pkg-config" ,pkg-config)
  3313. ("qttools" ,qttools)))
  3314. (home-page "https://qtractor.org/")
  3315. (synopsis "Audio/MIDI multi-track sequencer")
  3316. (description
  3317. "Qtractor is an Audio/MIDI multi-track sequencer application. It uses
  3318. JACK for audio and ALSA sequencer for MIDI as multimedia infrastructures and
  3319. follows a traditional multi-track tape recorder control paradigm.")
  3320. (license license:gpl2+)))
  3321. (define-public ams-lv2
  3322. (package
  3323. (name "ams-lv2")
  3324. (version "1.2.2")
  3325. (source
  3326. (origin
  3327. (method git-fetch)
  3328. (uri (git-reference
  3329. (url "https://github.com/blablack/ams-lv2")
  3330. (commit (string-append "v" version))))
  3331. (file-name (git-file-name name version))
  3332. (sha256
  3333. (base32 "1lz2mvk4gqsyf92yxd3aaldx0d0qi28h4rnnvsaz4ls0ccqm80nk"))))
  3334. (build-system waf-build-system)
  3335. (arguments
  3336. `(#:phases
  3337. (modify-phases %standard-phases
  3338. (add-after 'unpack 'remove-sse-flags
  3339. (lambda* (#:key system #:allow-other-keys)
  3340. (unless (or (string-prefix? "x86_64" system)
  3341. (string-prefix? "i686" system))
  3342. (substitute* "wscript"
  3343. (("'-msse', '-mfpmath=sse', ") "")))
  3344. #t)))
  3345. #:tests? #f)) ; no tests
  3346. (inputs
  3347. `(("cairo" ,cairo)
  3348. ("fftw" ,fftw)
  3349. ("gtk" ,gtk+-2)
  3350. ("gtkmm" ,gtkmm-2)
  3351. ("lv2" ,lv2)
  3352. ("lvtk" ,lvtk)))
  3353. (native-inputs
  3354. `(("pkg-config" ,pkg-config)))
  3355. (home-page "https://github.com/blablack/ams-lv2")
  3356. (synopsis "Port of Alsa Modular Synth internal modules into LV2")
  3357. (description "This set of LV2 plugins is a port of the internal modules
  3358. found in Alsa Modular Synth. These plugins are used to create modular
  3359. synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample
  3360. and hold, etc.")
  3361. (license license:gpl2)))
  3362. (define-public gxtuner
  3363. (package
  3364. (name "gxtuner")
  3365. (version "2.4")
  3366. (source (origin
  3367. (method git-fetch)
  3368. (uri (git-reference
  3369. (url "https://github.com/brummer10/gxtuner")
  3370. (commit (string-append "v" version))))
  3371. (file-name (git-file-name name version))
  3372. (sha256
  3373. (base32
  3374. "1fxd2akan2njlr7fpkh84830783qhh1gg7yakswqk5dd466dcn96"))))
  3375. (build-system gnu-build-system)
  3376. (arguments
  3377. `(#:make-flags
  3378. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3379. (string-append "INCLUDE_L_DIR="
  3380. (assoc-ref %build-inputs "zita-resampler")
  3381. "/include/"))
  3382. #:phases
  3383. (modify-phases %standard-phases
  3384. (delete 'configure)
  3385. (add-before 'build 'target-specific-glib-API-version
  3386. (lambda _
  3387. ;; See https://github.com/brummer10/gxtuner/pull/21
  3388. (setenv "CFLAGS"
  3389. "-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_54\
  3390. -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_54"))))))
  3391. (inputs
  3392. `(("gtk+" ,gtk+)
  3393. ("jack" ,jack-1)
  3394. ("fftwf" ,fftwf)
  3395. ("cairo" ,cairo)
  3396. ("zita-resampler" ,zita-resampler)))
  3397. (native-inputs
  3398. `(("pkg-config" ,pkg-config)))
  3399. (home-page "https://github.com/brummer10/gxtuner")
  3400. (synopsis "Guitar tuner")
  3401. (description "GXtuner is a simple guitar tuner for JACK with an
  3402. analogue-like user interface.")
  3403. (license license:gpl2+)))
  3404. (define-public mod-host
  3405. ;; The last release was in 2014 but since then hundreds of commits have
  3406. ;; been made.
  3407. (let ((commit "1726ad06b11323da7e1aaed690ff8aef91f702b5")
  3408. (revision "3"))
  3409. (package
  3410. (name "mod-host")
  3411. (version (string-append "0.10.6-" revision "." (string-take commit 9)))
  3412. (source (origin
  3413. (method git-fetch)
  3414. (uri (git-reference
  3415. (url "https://github.com/moddevices/mod-host")
  3416. (commit commit)))
  3417. (sha256
  3418. (base32
  3419. "1nrd37c35w6z6ldczgrwmmd9hx1n3zyvcjcgb3mi4cygqdanvspv"))
  3420. (file-name (string-append name "-" version "-checkout"))))
  3421. (build-system gnu-build-system)
  3422. (arguments
  3423. `(#:tests? #f ; no tests included
  3424. #:make-flags
  3425. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  3426. "CC=gcc")
  3427. #:phases
  3428. (modify-phases %standard-phases
  3429. (delete 'configure)
  3430. (add-after 'unpack 'fix-jack-installation-directory
  3431. (lambda _
  3432. ;; Do not attempt to install files to output of "jack" package.
  3433. (substitute* "Makefile"
  3434. (("\\$\\(shell pkg-config --variable=libdir jack\\)")
  3435. "lib"))
  3436. #t)))))
  3437. (inputs
  3438. `(("lilv" ,lilv)
  3439. ("fftw" ,fftw)
  3440. ("fftwf" ,fftwf)
  3441. ("lv2" ,lv2)
  3442. ("jack" ,jack-1)
  3443. ("readline" ,readline)))
  3444. (native-inputs
  3445. `(("pkg-config" ,pkg-config)
  3446. ("python" ,python-2)))
  3447. (home-page "https://github.com/moddevices/mod-host")
  3448. (synopsis "LV2 host for Jack controllable via socket or command line")
  3449. (description "mod-host is an LV2 plugin host for JACK, controllable via
  3450. socket or command line.")
  3451. (license license:gpl3+))))
  3452. (define-public curseradio
  3453. (let ((commit "1bd4bd0faeec675e0647bac9a100b526cba19f8d")
  3454. (revision "1"))
  3455. (package
  3456. (name "curseradio")
  3457. (version (git-version "0" revision commit))
  3458. (source (origin
  3459. (method git-fetch)
  3460. (uri (git-reference
  3461. (url "https://github.com/chronitis/curseradio")
  3462. (commit commit)))
  3463. (file-name (git-file-name name version))
  3464. (sha256
  3465. (base32
  3466. "11bf0jnj8h2fxhpdp498189r4s6b47vy4wripv0z4nx7lxajl88i"))))
  3467. (build-system python-build-system)
  3468. (arguments
  3469. `(#:phases
  3470. (modify-phases %standard-phases
  3471. (add-after 'unpack 'link-to-mpv
  3472. (lambda* (#:key inputs #:allow-other-keys)
  3473. (substitute* "curseradio/curseradio.py"
  3474. (("/usr/bin/mpv")
  3475. (search-input-file inputs "/bin/mpv"))))))))
  3476. (propagated-inputs
  3477. `(("python-lxml" ,python-lxml)
  3478. ("python-requests" ,python-requests)
  3479. ("python-pyxdg" ,python-pyxdg)))
  3480. (inputs
  3481. `(("mpv" ,mpv)))
  3482. (home-page "https://github.com/chronitis/curseradio")
  3483. (synopsis "Command-line Internet radio player")
  3484. (description "Curseradio is a Curses-based radio player that uses a
  3485. tune-in sender list from @url{http://opml.radiotime.com}.")
  3486. (license license:expat))))
  3487. (define-public pianobar
  3488. (package
  3489. (name "pianobar")
  3490. (version "2020.11.28")
  3491. (source (origin
  3492. (method git-fetch)
  3493. (uri (git-reference
  3494. (url "https://github.com/PromyLOPh/pianobar")
  3495. (commit version)))
  3496. (file-name (git-file-name name version))
  3497. (sha256
  3498. (base32
  3499. "13qx52a1yj2wghf7yd9jf4ar92scbc8zgqdq0kkqf4p9isf1phf3"))))
  3500. (build-system gnu-build-system)
  3501. (arguments
  3502. `(#:tests? #f ; no tests
  3503. #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
  3504. #:phases (modify-phases %standard-phases
  3505. (delete 'configure))))
  3506. (inputs
  3507. `(("ao" ,ao)
  3508. ("curl" ,curl)
  3509. ("libgcrypt" ,libgcrypt)
  3510. ("json-c" ,json-c)
  3511. ("ffmpeg" ,ffmpeg)))
  3512. (native-inputs
  3513. `(("pkg-config" ,pkg-config)))
  3514. (home-page "https://6xq.net/pianobar/")
  3515. (synopsis "Console-based pandora.com player")
  3516. (description "pianobar is a console-based music player for the
  3517. personalized online radio pandora.com. It has configurable keys for playing
  3518. and managing stations, can be controlled remotely via fifo, and can run
  3519. event-based scripts for scrobbling, notifications, etc.")
  3520. (license license:expat)))
  3521. (define-public picard
  3522. (package
  3523. (name "picard")
  3524. (version "2.4.4")
  3525. (source (origin
  3526. (method url-fetch)
  3527. (uri (string-append
  3528. "https://musicbrainz.osuosl.org/pub/musicbrainz/"
  3529. "picard/picard-" version ".tar.gz"))
  3530. (sha256
  3531. (base32
  3532. "1c5l7i43jaj3s4wklc0cba6nn2x9cmpcggk4q4h9m1bci2xilsiy"))
  3533. (patches (search-patches "picard-fix-id3-rename-test.patch"))))
  3534. (build-system python-build-system)
  3535. (arguments
  3536. '(#:use-setuptools? #f
  3537. #:configure-flags
  3538. (list "--root=/"
  3539. ;; Don't phone home or show ‘Check for Update…’ in the Help menu.
  3540. "--disable-autoupdate")
  3541. #:phases
  3542. (modify-phases %standard-phases
  3543. (add-after 'unpack 'patch-source
  3544. (lambda* (#:key inputs #:allow-other-keys)
  3545. (substitute* "picard/const/__init__.py"
  3546. (("pyfpcalc")
  3547. (string-append
  3548. "pyfpcalc', '"
  3549. (assoc-ref inputs "chromaprint") "/bin/fpcalc")))
  3550. #t)))))
  3551. (native-inputs
  3552. `(("gettext" ,gettext-minimal)
  3553. ("python-dateutil" ,python-dateutil)))
  3554. (inputs
  3555. `(("chromaprint" ,chromaprint)
  3556. ("python-discid" ,python-discid)
  3557. ("python-pyqt" ,python-pyqt)
  3558. ("python-mutagen" ,python-mutagen)))
  3559. (home-page "https://picard.musicbrainz.org/")
  3560. (synopsis "Graphical music tagging application")
  3561. (description
  3562. "MusicBrainz Picard is a music tagging application, supporting multiple
  3563. formats, looking up tracks through metadata and audio fingerprints.")
  3564. (license license:gpl2+)))
  3565. (define-public python-mutagen
  3566. (package
  3567. (name "python-mutagen")
  3568. (version "1.45.1")
  3569. (source (origin
  3570. (method url-fetch)
  3571. (uri (pypi-uri "mutagen" version))
  3572. (sha256
  3573. (base32
  3574. "1qdk6i8gyhbi1c4j5jmbfpac3q8sff2ysri1pnp7nb9wzcp615v3"))))
  3575. (build-system python-build-system)
  3576. (native-inputs
  3577. `(("python-pytest" ,python-pytest)
  3578. ("python-hypothesis" ,python-hypothesis)
  3579. ("python-flake8" ,python-flake8)))
  3580. (home-page "https://mutagen.readthedocs.io/")
  3581. (synopsis "Read and write audio tags")
  3582. (description "Mutagen is a Python module to handle audio metadata. It
  3583. supports ASF, FLAC, M4A, Monkey’s Audio, MP3, Musepack, Ogg FLAC, Ogg Speex, Ogg
  3584. Theora, Ogg Vorbis, True Audio, WavPack and OptimFROG audio files. All versions
  3585. of ID3v2 are supported, and all standard ID3v2.4 frames are parsed. It can read
  3586. Xing headers to accurately calculate the bitrate and length of MP3s. ID3 and
  3587. APEv2 tags can be edited regardless of audio format. It can also manipulate Ogg
  3588. streams on an individual packet/page level.")
  3589. (license license:gpl2))) ; "later version" never mentioned
  3590. (define-public python-mediafile
  3591. (package
  3592. (name "python-mediafile")
  3593. (version "0.8.0")
  3594. (source
  3595. (origin
  3596. (method url-fetch)
  3597. (uri (pypi-uri "mediafile" version))
  3598. (sha256
  3599. (base32
  3600. "0ipb001j19s9wvssmrj8wz0nrkbl0k3zr3dgzyp1bd9cjc6vklnp"))))
  3601. (build-system python-build-system)
  3602. (propagated-inputs
  3603. `(("python-mutagen" ,python-mutagen)
  3604. ("python-six" ,python-six)))
  3605. (home-page "https://github.com/beetbox/mediafile")
  3606. (synopsis "Read and write audio file tags")
  3607. (description
  3608. "MediaFile is a simple interface to the metadata tags for many audio file
  3609. formats. It wraps Mutagen, a high-quality library for low-level tag
  3610. manipulation, with a high-level, format-independent interface for a common set
  3611. of tags.")
  3612. (license license:expat)))
  3613. (define-public python-musicbrainzngs
  3614. (package
  3615. (name "python-musicbrainzngs")
  3616. (version "0.7.1")
  3617. (source (origin
  3618. (method url-fetch)
  3619. (uri (pypi-uri "musicbrainzngs" version))
  3620. (sha256
  3621. (base32
  3622. "09z6k07pxncfgfc8clfmmxl2xqbd7h8x8bjzwr95hc0bzl00275b"))))
  3623. (build-system python-build-system)
  3624. (home-page "https://python-musicbrainzngs.readthedocs.org/")
  3625. (synopsis "Python bindings for MusicBrainz NGS webservice")
  3626. (description "Musicbrainzngs implements Python bindings of the MusicBrainz
  3627. web service. This library can be used to retrieve music metadata from the
  3628. MusicBrainz database.")
  3629. ;; 'musicbrainzngs/compat.py' is ISC licensed.
  3630. (license (list license:bsd-2 license:isc))))
  3631. (define-public python2-musicbrainzngs
  3632. (package-with-python2 python-musicbrainzngs))
  3633. (define-public python-isrcsubmit
  3634. (package
  3635. (name "python-isrcsubmit")
  3636. (version "2.0.1")
  3637. (source
  3638. (origin
  3639. (method url-fetch)
  3640. (uri (pypi-uri "isrcsubmit" version))
  3641. (sha256
  3642. (base32
  3643. "0jh4cni8qhri6dh83cmp0i0m0384vv0vznlygv49wj9xzh1d99qv"))))
  3644. (build-system python-build-system)
  3645. (propagated-inputs
  3646. `(("python-discid" ,python-discid)
  3647. ("python-musicbrainzngs" ,python-musicbrainzngs)))
  3648. (home-page "https://github.com/JonnyJD/musicbrainz-isrcsubmit")
  3649. (synopsis "Submit ISRCs from CDs to MusicBrainz")
  3650. (description "@code{isrcsubmit} is a tool to extract @dfn{International
  3651. Standard Recording Code} (ISRCs) from audio CDs and submit them to
  3652. @url{https://musicbrainz.org/, MusicBrainz}.")
  3653. (license license:gpl3+)))
  3654. (define-public python2-pyechonest
  3655. (package
  3656. (name "python2-pyechonest")
  3657. (version "9.0.0")
  3658. (source (origin
  3659. (method url-fetch)
  3660. (uri (pypi-uri "pyechonest" version))
  3661. (sha256
  3662. (base32
  3663. "1584nira3rkiman9dm81kdshihmkj21s8navndz2l8spnjwb790x"))))
  3664. (build-system python-build-system)
  3665. (arguments
  3666. `(;; Python 3 is not supported:
  3667. ;; https://github.com/echonest/pyechonest/issues/42
  3668. #:python ,python-2))
  3669. (home-page "https://github.com/echonest/pyechonest")
  3670. (synopsis "Python interface to The Echo Nest APIs")
  3671. (description "Pyechonest is a Python library for the Echo Nest API. With
  3672. Pyechonest you have Python access to the entire set of API methods including:
  3673. @enumerate
  3674. @item artist - search for artists by name, description, or attribute, and get
  3675. back detailed information about any artist including audio, similar artists,
  3676. blogs, familiarity, hotttnesss, news, reviews, urls and video.
  3677. @item song - search songs by artist, title, description, or attribute (tempo,
  3678. duration, etc) and get detailed information back about each song, such as
  3679. hotttnesss, audio_summary, or tracks.
  3680. @item track - upload a track to the Echo Nest and receive summary information
  3681. about the track including key, duration, mode, tempo, time signature along with
  3682. detailed track info including timbre, pitch, rhythm and loudness information.
  3683. @end enumerate\n")
  3684. (license license:bsd-3)))
  3685. (define-public python-pylast
  3686. (package
  3687. (name "python-pylast")
  3688. (version "4.2.1")
  3689. (source (origin
  3690. (method url-fetch)
  3691. (uri (pypi-uri "pylast" version))
  3692. (sha256
  3693. (base32
  3694. "0pzzhr4mlwpvfhy9gzq86ppz29fmf5z0w3xkl5if1fm59r1afms7"))))
  3695. (build-system python-build-system)
  3696. ;; Tests require network access. See
  3697. ;; https://github.com/pylast/pylast/issues/105
  3698. (arguments '(#:tests? #f))
  3699. (native-inputs
  3700. `(("python-coverage" ,python-coverage)
  3701. ("python-pytest" ,python-pytest)
  3702. ("python-flaky" ,python-flaky)
  3703. ("python-pyyaml" ,python-pyyaml)
  3704. ("python-setuptools-scm" ,python-setuptools-scm)))
  3705. (home-page "https://github.com/pylast/pylast")
  3706. (synopsis "Python interface to Last.fm and Libre.fm")
  3707. (description "A Python interface to Last.fm and other API-compatible
  3708. websites such as Libre.fm.")
  3709. (license license:asl2.0)))
  3710. (define-public instantmusic
  3711. (let ((commit "300891d09c703525215fa5a116b9294af1c923c8")
  3712. (revision "1"))
  3713. (package
  3714. (name "instantmusic")
  3715. (version (git-version "1.0" revision commit))
  3716. (source (origin
  3717. (method git-fetch)
  3718. (uri (git-reference
  3719. (url "https://github.com/yask123/Instant-Music-Downloader")
  3720. (commit commit)))
  3721. (file-name (git-file-name name version))
  3722. (sha256
  3723. (base32
  3724. "0j7qivaa04bpdz3anmgci5833dgiyfqqwq9fdrpl9m68b34gl773"))))
  3725. (build-system python-build-system)
  3726. (propagated-inputs
  3727. `(("python-requests" ,python-requests)
  3728. ("eyed3" ,eyed3)
  3729. ("python-beautifulsoup4" ,python-beautifulsoup4)
  3730. ("youtube-dl" ,youtube-dl)))
  3731. (arguments
  3732. '(#:modules ((guix build python-build-system)
  3733. (guix build utils)
  3734. (srfi srfi-26))
  3735. #:phases (modify-phases %standard-phases
  3736. (add-before 'build 'change-directory
  3737. (lambda _
  3738. (chdir "instantmusic-0.1") #t))
  3739. (add-before 'install 'fix-file-permissions
  3740. (lambda _
  3741. ;; Fix some read-only files that would cause a build failure
  3742. (for-each (cut chmod <> #o644)
  3743. (find-files "instantmusic.egg-info"
  3744. "PKG-INFO|.*\\.txt"))
  3745. #t)))))
  3746. (home-page "https://github.com/yask123/Instant-Music-Downloader")
  3747. (synopsis "Command-line program to download a song from YouTube")
  3748. (description "InstantMusic downloads a song from YouTube in MP3 format.
  3749. Songs can be searched by artist, name or even by a part of the song text.")
  3750. (license license:expat))))
  3751. (define-public beets
  3752. (package
  3753. (name "beets")
  3754. (version "1.5.0")
  3755. (source (origin
  3756. (method url-fetch)
  3757. (uri (pypi-uri "beets" version))
  3758. (sha256
  3759. (base32
  3760. "0arl4nc3y8iwa331hf6ggai19y8ns9pl03g5d6ac857wq2x7nzw8"))))
  3761. (build-system python-build-system)
  3762. (arguments
  3763. `(#:phases
  3764. (modify-phases %standard-phases
  3765. (add-after 'unpack 'set-HOME
  3766. (lambda _
  3767. (setenv "HOME" (string-append (getcwd) "/tmp"))
  3768. #t))
  3769. (replace 'check
  3770. (lambda* (#:key tests? #:allow-other-keys)
  3771. (when tests?
  3772. (invoke "pytest" "-v" "test"))))
  3773. ;; Wrap the executable, so it can find python-gi (aka
  3774. ;; pygobject) and gstreamer plugins.
  3775. (add-after 'wrap 'wrap-typelib
  3776. (lambda* (#:key outputs #:allow-other-keys)
  3777. (let ((prog (string-append (assoc-ref outputs "out")
  3778. "/bin/beet"))
  3779. (plugins (getenv "GST_PLUGIN_SYSTEM_PATH"))
  3780. (types (getenv "GI_TYPELIB_PATH")))
  3781. (wrap-program prog
  3782. `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,plugins))
  3783. `("GI_TYPELIB_PATH" ":" prefix (,types)))
  3784. #t))))))
  3785. (native-inputs
  3786. `(("gobject-introspection" ,gobject-introspection)
  3787. ("python-flask" ,python-flask)
  3788. ("python-mock" ,python-mock)
  3789. ("python-py7zr" ,python-py7zr)
  3790. ("python-pytest" ,python-pytest-6)
  3791. ("python-responses" ,python-responses)))
  3792. (inputs
  3793. `(("bash-minimal" ,bash-minimal)
  3794. ("gst-plugins-base" ,gst-plugins-base)
  3795. ("gst-plugins-good" ,gst-plugins-good)
  3796. ("gstreamer" ,gstreamer)
  3797. ("python-confuse" ,python-confuse)
  3798. ("python-jellyfish" ,python-jellyfish)
  3799. ("python-mediafile" ,python-mediafile)
  3800. ("python-munkres" ,python-munkres)
  3801. ("python-musicbrainzngs" ,python-musicbrainzngs)
  3802. ("python-pyyaml" ,python-pyyaml)
  3803. ("python-six" ,python-six)
  3804. ("python-unidecode" ,python-unidecode)
  3805. ;; Optional dependencies for plugins. Some of these are also required by tests.
  3806. ("python-beautifulsoup4" ,python-beautifulsoup4) ; For lyrics.
  3807. ("python-discogs-client" ,python-discogs-client) ; For discogs.
  3808. ("python-mpd2" ,python-mpd2) ; For mpdstats.
  3809. ("python-mutagen" ,python-mutagen) ; For scrub.
  3810. ("python-langdetect" ,python-langdetect) ; For lyrics.
  3811. ("python-pillow" ,python-pillow) ; For fetchart, embedart, thumbnails.
  3812. ("python-pyacoustid" ,python-pyacoustid) ; For chroma.
  3813. ("python-pygobject" ,python-pygobject) ; For bpd, replaygain.
  3814. ("python-pylast" ,python-pylast) ; For lastgenre, lastimport.
  3815. ("python-pyxdg" ,python-pyxdg) ; For thumbnails.
  3816. ("python-rarfile" ,python-rarfile) ; For import.
  3817. ("python-reflink" ,python-reflink) ; For reflink.
  3818. ("python-requests" ,python-requests)
  3819. ("python-requests-oauthlib" ,python-requests-oauthlib))) ; For beatport.
  3820. (home-page "https://beets.io")
  3821. (synopsis "Music organizer")
  3822. (description "The purpose of beets is to get your music collection
  3823. right once and for all. It catalogs your collection, automatically
  3824. improving its metadata as it goes using the MusicBrainz database.
  3825. Then it provides a variety of tools for manipulating and accessing
  3826. your music.")
  3827. (license license:expat)))
  3828. (define-public beets-next
  3829. (deprecated-package "beets-next" beets))
  3830. (define-public beets-bandcamp
  3831. (package
  3832. (name "beets-bandcamp")
  3833. (version "0.1.4")
  3834. (source (origin
  3835. (method url-fetch)
  3836. (uri (pypi-uri "beets-bandcamp" version))
  3837. (sha256
  3838. (base32
  3839. "0dwbdkrb9c0ppzm5s78h47ndpr88cw1k0z8fgfhkl706wazx2ddg"))))
  3840. (build-system python-build-system)
  3841. (arguments '(#:tests? #f)) ; there are no tests
  3842. (propagated-inputs
  3843. `(("beets" ,beets)
  3844. ("python-isodate" ,python-isodate)
  3845. ("python-beautifulsoup4" ,python-beautifulsoup4)
  3846. ("python-requests" ,python-requests)
  3847. ("python-six" ,python-six)))
  3848. (home-page "https://github.com/unrblt/beets-bandcamp")
  3849. (synopsis "Bandcamp plugin for beets")
  3850. (description
  3851. "This plugin for beets automatically obtains tag data from @uref{Bandcamp,
  3852. https://bandcamp.com/}. It's also capable of getting song lyrics and album art
  3853. using the beets FetchArt plugin.")
  3854. (license license:gpl2)))
  3855. (define-public milkytracker
  3856. (package
  3857. (name "milkytracker")
  3858. (version "1.03.00")
  3859. (source (origin
  3860. (method git-fetch)
  3861. (uri (git-reference
  3862. (url "https://github.com/milkytracker/MilkyTracker")
  3863. (commit (string-append "v" version))))
  3864. (file-name (git-file-name name version))
  3865. (sha256
  3866. (base32
  3867. "025fj34gq2kmkpwcswcyx7wdxb89vm944dh685zi4bxx0hz16vvk"))
  3868. (modules '((guix build utils)))
  3869. ;; Remove non-FSDG compliant sample songs.
  3870. (snippet
  3871. '(begin
  3872. (delete-file-recursively "resources/music")
  3873. (substitute* "CMakeLists.txt"
  3874. (("add_subdirectory\\(resources/music\\)") ""))
  3875. #t))))
  3876. (build-system cmake-build-system)
  3877. (arguments
  3878. '(#:tests? #f ; no check target
  3879. ;; This flag ensures that MilkyTracker links with the JACK library.
  3880. #:configure-flags '("-DCMAKE_CXX_FLAGS=-ljack")))
  3881. (inputs
  3882. `(("alsa-lib" ,alsa-lib)
  3883. ("lhasa" ,lhasa)
  3884. ("jack" ,jack-1)
  3885. ("rtmidi" ,rtmidi)
  3886. ("sdl" ,sdl2)
  3887. ("zlib" ,zlib)
  3888. ("zziplib" ,zziplib)))
  3889. (native-inputs
  3890. `(("pkg-config" ,pkg-config)))
  3891. (synopsis "Music tracker for working with .MOD/.XM module files")
  3892. (description "MilkyTracker is a music application for creating .MOD and .XM
  3893. module files. It attempts to recreate the module replay and user experience of
  3894. the popular DOS program Fasttracker II, with special playback modes available
  3895. for improved Amiga ProTracker 2/3 compatibility.")
  3896. (home-page "https://milkytracker.titandemo.org/")
  3897. ;; 'src/milkyplay' is under Modified BSD, the rest is under GPL3 or later.
  3898. (license (list license:bsd-3 license:gpl3+))))
  3899. (define-public schismtracker
  3900. (package
  3901. (name "schismtracker")
  3902. (version "20190805")
  3903. (source (origin
  3904. (method git-fetch)
  3905. (uri (git-reference
  3906. (url "https://github.com/schismtracker/schismtracker")
  3907. (commit version)))
  3908. (file-name (git-file-name name version))
  3909. (sha256
  3910. (base32
  3911. "0qqps20vvn3rgpg8174bjrrm38gqcci2z5z4c1r1vhbccclahgsd"))
  3912. (modules '((guix build utils)))
  3913. (snippet
  3914. ;; Remove use of __DATE__ and __TIME__ for reproducibility.
  3915. `(begin
  3916. (substitute* "schism/version.c"
  3917. (("Schism Tracker built %s %s.*$")
  3918. (string-append "Schism Tracker version " ,version "\") ;")))
  3919. #t))))
  3920. (build-system gnu-build-system)
  3921. (arguments
  3922. `(#:phases
  3923. (modify-phases %standard-phases
  3924. (add-before 'configure 'link-libm
  3925. (lambda _ (setenv "LIBS" "-lm") #t)))))
  3926. (native-inputs
  3927. `(("autoconf" ,autoconf)
  3928. ("automake" ,automake)
  3929. ("python" ,python)))
  3930. (inputs
  3931. `(("alsa-lib" ,alsa-lib) ; for asound dependency
  3932. ("libx11" ,libx11)
  3933. ("libxext" ,libxext)
  3934. ("sdl" ,sdl)))
  3935. (home-page "http://schismtracker.org")
  3936. (synopsis "Oldschool sample-based music composition tool")
  3937. (description
  3938. "Schism Tracker is a reimplementation of Impulse Tracker, a program used to
  3939. create high quality music without the requirements of specialized, expensive
  3940. equipment, and with a unique \"finger feel\" that is difficult to replicate in
  3941. part. The player is based on a highly modified version of the ModPlug engine,
  3942. with a number of bugfixes and changes to improve IT playback.")
  3943. (license license:gpl2+)))
  3944. (define-public sooperlooper
  3945. (package
  3946. (name "sooperlooper")
  3947. (version "1.7.6")
  3948. (source
  3949. (origin
  3950. (method url-fetch)
  3951. (uri (string-append "http://essej.net/sooperlooper/sooperlooper-"
  3952. version ".tar.gz"))
  3953. (sha256
  3954. (base32 "0kbb1pj62rl32c88j6p7dg823kvs0gb5s42qy3bl6yg0wn10dksj"))))
  3955. (build-system gnu-build-system)
  3956. (arguments
  3957. `(#:phases
  3958. (modify-phases %standard-phases
  3959. (add-after 'unpack 'add-sigc++-includes
  3960. (lambda* (#:key inputs #:allow-other-keys)
  3961. (let ((sig (assoc-ref inputs "libsigc++"))
  3962. (xml (assoc-ref inputs "libxml2"))
  3963. (cwd (getcwd)))
  3964. (setenv "CPATH"
  3965. (string-append sig "/include/sigc++-2.0:"
  3966. sig "/lib/sigc++-2.0/include:"
  3967. xml "/include/libxml2/:"
  3968. cwd "/libs/pbd:"
  3969. cwd "/libs/midi++:"
  3970. (or (getenv "CPATH") ""))))
  3971. (substitute* '("src/control_osc.hpp"
  3972. "src/gui/app_frame.hpp"
  3973. "src/gui/config_panel.hpp"
  3974. "src/gui/keys_panel.hpp"
  3975. "src/gui/latency_panel.hpp"
  3976. "src/gui/main_panel.hpp"
  3977. "src/gui/midi_bind_panel.hpp"
  3978. "src/gui/prefs_dialog.hpp")
  3979. (("sigc\\+\\+/object.h")
  3980. "sigc++/sigc++.h"))
  3981. (substitute* '("src/engine.cpp"
  3982. "src/gui/latency_panel.cpp"
  3983. "src/gui/looper_panel.cpp"
  3984. "src/gui/main_panel.cpp")
  3985. (("(\\(| )bind " _ pre)
  3986. (string-append pre "sigc::bind ")))
  3987. #t))
  3988. (add-after 'unpack 'fix-xpm-warnings
  3989. (lambda _
  3990. (substitute* (find-files "." "\\.xpm$")
  3991. (("static char") "static const char"))
  3992. #t)))))
  3993. (inputs
  3994. `(("jack" ,jack-1)
  3995. ("alsa-lib" ,alsa-lib)
  3996. ("wxwidgets" ,wxwidgets-gtk2)
  3997. ("libsndfile" ,libsndfile)
  3998. ("libsamplerate" ,libsamplerate)
  3999. ("liblo" ,liblo)
  4000. ("rubberband" ,rubberband)
  4001. ("libxml2" ,libxml2)
  4002. ("libsigc++" ,libsigc++)
  4003. ("ncurses" ,ncurses)))
  4004. (native-inputs
  4005. `(("pkg-config" ,pkg-config)))
  4006. (home-page "http://essej.net/sooperlooper/")
  4007. (synopsis "Live looping sampler")
  4008. (description
  4009. "SooperLooper is a live looping sampler capable of immediate loop
  4010. recording, overdubbing, multiplying, reversing and more. It allows for
  4011. multiple simultaneous multi-channel loops limited only by your computer's
  4012. available memory.")
  4013. (license license:gpl2+)))
  4014. (define-public moc
  4015. (package
  4016. (name "moc")
  4017. (version "2.5.2")
  4018. (source (origin
  4019. (method url-fetch)
  4020. (uri (string-append "http://ftp.daper.net/pub/soft/"
  4021. name "/stable/"
  4022. name "-" version ".tar.bz2"))
  4023. (sha256
  4024. (base32
  4025. "026v977kwb0wbmlmf6mnik328plxg8wykfx9ryvqhirac0aq39pk"))))
  4026. (build-system gnu-build-system)
  4027. (inputs
  4028. `(("alsa-lib" ,alsa-lib)
  4029. ("curl" ,curl)
  4030. ("faad2" ,faad2)
  4031. ("ffmpeg" ,ffmpeg-3.4)
  4032. ("file" ,file)
  4033. ("jack" ,jack-1)
  4034. ("libid3tag" ,libid3tag)
  4035. ("libltdl" ,libltdl)
  4036. ("libmodplug" ,libmodplug)
  4037. ("libmpcdec" ,libmpcdec)
  4038. ("libmad" ,libmad)
  4039. ("libogg" ,libogg)
  4040. ("libvorbis" ,libvorbis)
  4041. ("ncurses" ,ncurses)
  4042. ("openssl" ,openssl)
  4043. ("sasl" ,cyrus-sasl)
  4044. ("speex" ,speex)
  4045. ("taglib" ,taglib)
  4046. ("wavpack" ,wavpack)
  4047. ("zlib" ,zlib)))
  4048. (native-inputs
  4049. `(("pkg-config" ,pkg-config)))
  4050. (synopsis "Console audio player designed to be powerful and easy to use")
  4051. (description
  4052. "Music on Console is a console audio player that supports many file
  4053. formats, including most audio formats recognized by FFMpeg.")
  4054. (home-page "http://moc.daper.net")
  4055. (license license:gpl2+)))
  4056. (define-public midicsv
  4057. (package
  4058. (name "midicsv")
  4059. (version "1.1")
  4060. (source (origin
  4061. (method url-fetch)
  4062. (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/"
  4063. name "-" version ".tar.gz"))
  4064. (sha256
  4065. (base32
  4066. "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw"))))
  4067. (build-system gnu-build-system)
  4068. (arguments
  4069. `(#:phases (modify-phases %standard-phases (delete 'configure))
  4070. #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output))))
  4071. (synopsis "Convert MIDI files to and from CSV")
  4072. (description
  4073. "Midicsv reads a standard MIDI file and decodes it into a comma-separated
  4074. value file (CSV), which preserves all the information in the MIDI file. The
  4075. ASCII CSV file may be loaded into a spreadsheet or database application, or
  4076. processed by a program to transform the MIDI data (for example, to key
  4077. transpose a composition or extract a track from a multi-track sequence). A
  4078. CSV file in the format created by midicsv may be converted back into a
  4079. standard MIDI file with the csvmidi program.")
  4080. (home-page "http://www.fourmilab.ch/webtools/midicsv/")
  4081. (license license:public-domain)))
  4082. (define-public gx-guvnor-lv2
  4083. (package
  4084. (name "gx-guvnor-lv2")
  4085. (version "0.1")
  4086. (source (origin
  4087. (method git-fetch)
  4088. (uri (git-reference
  4089. (url "https://github.com/brummer10/GxGuvnor.lv2")
  4090. (commit (string-append "v" version))))
  4091. (file-name (string-append name "-" version "-checkout"))
  4092. (sha256
  4093. (base32
  4094. "1wa5070j40p7f0b3kr259pzm99xb6cf2badr2capayjvgayd6gnm"))))
  4095. (build-system gnu-build-system)
  4096. (arguments
  4097. `(;; The check target is used only to output a warning.
  4098. #:tests? #f
  4099. #:make-flags
  4100. (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
  4101. #:phases
  4102. (modify-phases %standard-phases
  4103. (replace 'configure
  4104. (lambda _
  4105. (substitute* "Makefile"
  4106. (("INSTALL_DIR = .*") "INSTALL_DIR=/lib/lv2\n")
  4107. (("install : all") "install :"))
  4108. #t)))))
  4109. (inputs
  4110. `(("lv2" ,lv2)))
  4111. (home-page "https://github.com/brummer10/GxGuvnor.lv2")
  4112. (synopsis "Overdrive/distortion pedal simulation")
  4113. (description "This package provides the LV2 plugin \"GxGuvnor\", a
  4114. simulation of an overdrive or distortion pedal for guitars.")
  4115. ;; The LICENSE file says GPLv3 but the license headers in the files say
  4116. ;; GPLv2 or later. The whole project is released under GPLv3 or later
  4117. ;; according to https://github.com/brummer10/GxGuvnor.lv2/issues/1
  4118. (license license:gpl3+)))
  4119. (define-public gx-vbass-preamp-lv2
  4120. (let ((commit "eb999b0ca0ef4da40a59e458a9ab6e7042b96c99")
  4121. (revision "2"))
  4122. (package (inherit gx-guvnor-lv2)
  4123. (name "gx-vbass-preamp-lv2")
  4124. (version (string-append "0-" revision "." (string-take commit 9)))
  4125. (source (origin
  4126. (method git-fetch)
  4127. (uri (git-reference
  4128. (url "https://github.com/brummer10/GxVBassPreAmp.lv2")
  4129. (commit commit)))
  4130. (sha256
  4131. (base32
  4132. "0firap073ldw4nrykkd7jvyyj0jbl1nslxyzjj4kswazp99x7d9h"))
  4133. (file-name (string-append name "-" version "-checkout"))))
  4134. (inputs
  4135. `(("lv2" ,lv2)
  4136. ("gtk+" ,gtk+-2)))
  4137. (native-inputs
  4138. `(("pkg-config" ,pkg-config)))
  4139. (home-page "https://github.com/brummer10/GxVBassPreAmp.lv2")
  4140. (synopsis "Simulation of the Vox Venue Bass 100 Pre Amp Section")
  4141. (description "This package provides the LV2 plugin \"GxVBassPreAmp\", a
  4142. pre-amplifier simulation modelled after the 1984 Vox Venue Bass 100 Pre Amp
  4143. Section."))))
  4144. (define-public gx-overdriver-lv2
  4145. (let ((commit "ed71801987449414bf3adaa0dbfac68e8775f1ce")
  4146. (revision "1"))
  4147. (package (inherit gx-guvnor-lv2)
  4148. (name "gx-overdriver-lv2")
  4149. (version (string-append "0-" revision "." (string-take commit 9)))
  4150. (source (origin
  4151. (method git-fetch)
  4152. (uri (git-reference
  4153. (url "https://github.com/brummer10/GxOverDriver.lv2")
  4154. (commit commit)))
  4155. (sha256
  4156. (base32
  4157. "13j614jh525fbkby79nnzwj0z1ac0c9wclyn5pfqvkmx6a7j24r8"))
  4158. (file-name (string-append name "-" version "-checkout"))))
  4159. (home-page "https://github.com/brummer10/GxOverDriver.lv2")
  4160. (synopsis "Overdrive effect with level and tone control")
  4161. (description "This package provides the LV2 plugin \"GxOverDriver\", an
  4162. overdrive effect."))))
  4163. (define-public gx-tone-mender-lv2
  4164. (let ((commit "b6780b4a3e4782b3ed0e5882d6788f178aed138f")
  4165. (revision "1"))
  4166. (package (inherit gx-guvnor-lv2)
  4167. (name "gx-tone-mender-lv2")
  4168. (version (string-append "0-" revision "." (string-take commit 9)))
  4169. (source (origin
  4170. (method git-fetch)
  4171. (uri (git-reference
  4172. (url "https://github.com/brummer10/GxToneMender.lv2")
  4173. (commit commit)))
  4174. (sha256
  4175. (base32
  4176. "07qdcfsvv2vdnfnjh91pfgvjdcs5y91nvwfm8c0z8fp6b4bk7a9q"))
  4177. (file-name (string-append name "-" version "-checkout"))))
  4178. (home-page "https://github.com/brummer10/GxToneMender.lv2")
  4179. (synopsis "Clean boost with a 3-knob tonestack")
  4180. (description "This package provides the LV2 plugin \"GxToneMender\", a
  4181. clean boost effect with a 3-knob tonestack."))))
  4182. (define-public gx-push-pull-lv2
  4183. (let ((commit "7f76ae2068498643ac8671ee0930b13ee3fd8eb5")
  4184. (revision "1"))
  4185. (package (inherit gx-guvnor-lv2)
  4186. (name "gx-push-pull-lv2")
  4187. (version (string-append "0-" revision "." (string-take commit 9)))
  4188. (source (origin
  4189. (method git-fetch)
  4190. (uri (git-reference
  4191. (url "https://github.com/brummer10/GxPushPull.lv2")
  4192. (commit commit)))
  4193. (sha256
  4194. (base32
  4195. "12f5hwck2irph0gjbj8xy8jqcqdwb8l1hlwf29k0clz52h1jhb5q"))
  4196. (file-name (string-append name "-" version "-checkout"))))
  4197. (home-page "https://github.com/brummer10/GxPushPull.lv2")
  4198. (synopsis "Octave up push pull transistor fuzz simulation")
  4199. (description "This package provides the LV2 plugin \"GxPushPull\", a
  4200. simulation of a push pull transistor fuzz effect with added high octave."))))
  4201. (define-public gx-suppa-tone-bender-lv2
  4202. (package (inherit gx-guvnor-lv2)
  4203. (name "gx-suppa-tone-bender-lv2")
  4204. (version "0.1")
  4205. (source (origin
  4206. (method git-fetch)
  4207. (uri (git-reference
  4208. (url "https://github.com/brummer10/GxSuppaToneBender.lv2")
  4209. (commit (string-append "v" version))))
  4210. (file-name (string-append name "-" version "-checkout"))
  4211. (sha256
  4212. (base32
  4213. "01x6bjmllkmvxfzc5xwdix7w021j26js71awv728cxsmkxgqw0zy"))))
  4214. (home-page "https://github.com/brummer10/GxSuppaToneBender.lv2")
  4215. (synopsis "Simulation of the Vox Suppa Tone Bender pedal")
  4216. (description "This package provides the LV2 plugin
  4217. \"GxSuppaToneBender\", a simulation modelled after the Vox Suppa Tone Bender
  4218. pedal.")))
  4219. (define-public gx-saturator-lv2
  4220. (let ((commit "605330f432c94b6eb3f8203cbe472befae959532")
  4221. (revision "3"))
  4222. (package (inherit gx-vbass-preamp-lv2)
  4223. (name "gx-saturator-lv2")
  4224. (version (string-append "0-" revision "." (string-take commit 9)))
  4225. (source (origin
  4226. (method git-fetch)
  4227. (uri (git-reference
  4228. (url "https://github.com/brummer10/GxSaturator.lv2")
  4229. (commit commit)))
  4230. (sha256
  4231. (base32
  4232. "1w4nvh0rmxrv3s3hmh4fs74f3hc0jn31v00j769j7v68mqr7kawy"))
  4233. (file-name (string-append name "-" version "-checkout"))))
  4234. (home-page "https://github.com/brummer10/GxSaturator.lv2")
  4235. (synopsis "Saturation effect")
  4236. (description "This package provides the LV2 plugin \"GxSaturator\", a
  4237. saturation effect."))))
  4238. (define-public gx-hyperion-lv2
  4239. (package (inherit gx-guvnor-lv2)
  4240. (name "gx-hyperion-lv2")
  4241. (version "0.1")
  4242. (source (origin
  4243. (method git-fetch)
  4244. (uri (git-reference
  4245. (url "https://github.com/brummer10/GxHyperion.lv2")
  4246. (commit (string-append "v" version))))
  4247. (file-name (string-append name "-" version "-checkout"))
  4248. (sha256
  4249. (base32
  4250. "1vx79s6s9if117y2g0ppdja2sv2wcny6xcfl3j1z4cipahnildxf"))))
  4251. (home-page "https://github.com/brummer10/GxHyperion.lv2")
  4252. (synopsis "Simulation of the Hyperion Fuzz pedal")
  4253. (description "This package provides the LV2 plugin \"GxHyperion\", a
  4254. simulation of the Hyperion Fuzz pedal.")))
  4255. (define-public gx-voodoo-fuzz-lv2
  4256. (package (inherit gx-guvnor-lv2)
  4257. (name "gx-voodoo-fuzz-lv2")
  4258. (version "0.1")
  4259. (source (origin
  4260. (method git-fetch)
  4261. (uri (git-reference
  4262. (url "https://github.com/brummer10/GxVoodoFuzz.lv2")
  4263. (commit (string-append "v" version))))
  4264. (file-name (string-append name "-" version "-checkout"))
  4265. (sha256
  4266. (base32
  4267. "1v0scphivri1fk4hl20j13f92i48mnx1zsil4hgnadsmm4nsfw43"))))
  4268. (home-page "https://github.com/brummer10/GxVoodoFuzz.lv2")
  4269. (synopsis "Fuzz effect modelled after the Voodoo Lab SuperFuzz")
  4270. (description "This package provides the LV2 plugin \"GxVoodooFuzz\", a
  4271. simulation modelled after the Voodoo Lab SuperFuzz pedal. It's basically a
  4272. Bosstone circuit, followed by the tone control of the FoxToneMachine in
  4273. parallel with a DarkBooster, followed by a volume control.")))
  4274. (define-public gx-super-fuzz-lv2
  4275. (package (inherit gx-guvnor-lv2)
  4276. (name "gx-super-fuzz-lv2")
  4277. (version "0.1")
  4278. (source (origin
  4279. (method git-fetch)
  4280. (uri (git-reference
  4281. (url "https://github.com/brummer10/GxSuperFuzz.lv2")
  4282. (commit (string-append "v" version))))
  4283. (file-name (string-append name "-" version "-checkout"))
  4284. (sha256
  4285. (base32
  4286. "1jlljd9hlgfflbiizq47lv1xbbgjyx3v835mf24zmh1q5zsw4np4"))))
  4287. (home-page "https://github.com/brummer10/GxSuperFuzz.lv2")
  4288. (synopsis "Fuzz effect modelled after the UniVox SuperFuzz")
  4289. (description "This package provides the LV2 plugin \"GxSuperFuzz\", an
  4290. analog simulation of the UniVox SuperFuzz pedal. In this simulation the trim
  4291. pot, which is usually in the housing, is exposed as a control parameter. It
  4292. adjusts the amount of harmonics.")))
  4293. (define-public gx-vintage-fuzz-master-lv2
  4294. (package (inherit gx-guvnor-lv2)
  4295. (name "gx-vintage-fuzz-master-lv2")
  4296. (version "0.1")
  4297. (source (origin
  4298. (method git-fetch)
  4299. (uri (git-reference
  4300. (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
  4301. (commit (string-append "v" version))))
  4302. (file-name (string-append name "-" version "-checkout"))
  4303. (sha256
  4304. (base32
  4305. "02jb211z8rw2qr5r1z5mdxlqgiw6cbc319xpqplvn6k21c59mskv"))))
  4306. (home-page "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
  4307. (synopsis "Fuzz effect simulation of the vintage Fuzz Master")
  4308. (description "This package provides the LV2 plugin
  4309. \"GxVintageFuzzMaster\", a simulation of the vintage Fuzz Master pedal.")))
  4310. (define-public gx-slow-gear-lv2
  4311. (let ((commit "5d37e775b0feef1d82feee94e2a7a2d7e57efe2d")
  4312. (revision "3"))
  4313. (package (inherit gx-vbass-preamp-lv2)
  4314. (name "gx-slow-gear-lv2")
  4315. (version (string-append "0-" revision "." (string-take commit 9)))
  4316. (source (origin
  4317. (method git-fetch)
  4318. (uri (git-reference
  4319. (url "https://github.com/brummer10/GxSlowGear.lv2")
  4320. (commit commit)))
  4321. (sha256
  4322. (base32
  4323. "141mz69zkhk3lm54bb6wgpnghb92zm1ig7fv07240cmhydqji1q1"))
  4324. (file-name (string-append name "-" version "-checkout"))))
  4325. (home-page "https://github.com/brummer10/GxSlowGear.lv2")
  4326. (synopsis "Slow gear audio effect")
  4327. (description "This package provides the LV2 plugin \"GxSlowGear\", a
  4328. slow gear audio effect to produce volume swells."))))
  4329. (define-public gx-switchless-wah-lv2
  4330. (let ((commit "7b08691203314612999f0ce2328cdc1161cd6665")
  4331. (revision "2"))
  4332. (package (inherit gx-guvnor-lv2)
  4333. (name "gx-switchless-wah-lv2")
  4334. (version (string-append "0-" revision "." (string-take commit 9)))
  4335. (source (origin
  4336. (method git-fetch)
  4337. (uri (git-reference
  4338. (url "https://github.com/brummer10/GxSwitchlessWah.lv2")
  4339. (commit commit)))
  4340. (sha256
  4341. (base32
  4342. "04jqfpncmrrqn34p21w4v9m2x5a5wsqwbm4f3byxvq4vcibwxzk2"))
  4343. (file-name (string-append name "-" version "-checkout"))))
  4344. (home-page "https://github.com/brummer10/GxSwitchlessWah.lv2")
  4345. (synopsis "Wah emulation with switchless activation")
  4346. (description "This package provides the LV2 plugin \"GxSwitchlessWah\",
  4347. a simulation of an analog Wah pedal with switchless activation."))))
  4348. (define-public rkrlv2
  4349. ;; This commit corresponds to the beta_3 tag
  4350. (let ((commit "7edcb4e29a358623bfd57fa2c27e5da60adfcec3")
  4351. (revision "2"))
  4352. (package
  4353. (name "rkrlv2")
  4354. (version (git-version "0" revision commit))
  4355. (source (origin
  4356. (method git-fetch)
  4357. (uri (git-reference
  4358. (url "https://github.com/ssj71/rkrlv2")
  4359. (commit commit)))
  4360. (sha256
  4361. (base32
  4362. "16i4ajrib7kb0abdcn4901g8a4lkwkp2fyqyms38dhqq84slyfjs"))
  4363. (file-name (git-file-name name version))))
  4364. (build-system cmake-build-system)
  4365. (arguments '(#:tests? #f)) ; there are no tests
  4366. (inputs
  4367. `(("fftw" ,fftw)
  4368. ("libsamplerate" ,libsamplerate)
  4369. ("lv2" ,lv2)))
  4370. (native-inputs
  4371. `(("pkg-config" ,pkg-config)))
  4372. (home-page "https://github.com/ssj71/rkrlv2")
  4373. (synopsis "Rakarrack effects ported to LV2 plugins")
  4374. (description "This package provides the Rakarrack effects as LV2
  4375. plugins. The ports are done such that hopefully when Rakarrack gets an active
  4376. maintainer these will get merged into the original project.")
  4377. (license license:gpl2))))
  4378. (define-public mod-utilities
  4379. (let ((commit "80ea3ea9f52fab7f191671f4810bf90fc955a046")
  4380. (revision "2"))
  4381. (package
  4382. (name "mod-utilities")
  4383. (version (string-append "0-" revision "." (string-take commit 9)))
  4384. (source (origin
  4385. (method git-fetch)
  4386. (uri (git-reference
  4387. (url "https://github.com/moddevices/mod-utilities")
  4388. (commit commit)))
  4389. (file-name (string-append name "-" version "-checkout"))
  4390. (sha256
  4391. (base32
  4392. "1v55zmzmlg0ka7341x5lsvb44amy17vk27s669ps1basd1bk5s5v"))))
  4393. (build-system gnu-build-system)
  4394. (arguments
  4395. `(#:tests? #f ; there are no tests
  4396. #:make-flags
  4397. (list (string-append "INSTALL_PATH="
  4398. (assoc-ref %outputs "out")
  4399. "/lib/lv2")
  4400. (string-append "PREFIX=" (assoc-ref %outputs "out"))
  4401. "CC=gcc")
  4402. #:phases
  4403. (modify-phases %standard-phases
  4404. (delete 'configure))))
  4405. (inputs
  4406. `(("lv2" ,lv2)))
  4407. (home-page "https://github.com/moddevices/mod-utilities")
  4408. (synopsis "LV2 utility plugins")
  4409. (description "This package provides LV2 audio utility plugins, such as
  4410. filters, crossovers, simple gain plugins without zipper noise, switch box
  4411. plugins, a switch trigger, a toggle switch, and a peakmeter.")
  4412. (license license:gpl2+))))
  4413. (define-public ingen
  4414. (let ((commit "cc4a4db33f4d126a07a4a498e053c5fb9a883be3")
  4415. (revision "2"))
  4416. (package
  4417. (name "ingen")
  4418. (version (string-append "0.0.0-" revision "."
  4419. (string-take commit 9)))
  4420. (source
  4421. (origin
  4422. (method git-fetch)
  4423. (uri (git-reference
  4424. (url "https://git.drobilla.net/ingen.git")
  4425. (commit commit)))
  4426. (file-name (string-append name "-" version "-checkout"))
  4427. (sha256
  4428. (base32
  4429. "1wg47vjw9djn99gbnsl2bcwj4xhdid61m4wrbn2nlp797flj91ic"))))
  4430. (build-system waf-build-system)
  4431. (arguments
  4432. `(#:python ,python-2
  4433. #:tests? #f ; no "check" target
  4434. #:configure-flags (list "--no-webkit")
  4435. #:phases
  4436. (modify-phases %standard-phases
  4437. (add-after 'unpack 'patch-wscript
  4438. (lambda* (#:key outputs #:allow-other-keys)
  4439. (let ((out (assoc-ref outputs "out")))
  4440. (substitute* "wscript"
  4441. ;; FIXME: Our version of lv2specgen.py does not behave as
  4442. ;; expected. Maybe this requires a development version of
  4443. ;; LV2.
  4444. (("lv2specgen.py") "touch ingen.lv2/ingen.html; echo")
  4445. ;; Add libraries to RUNPATH.
  4446. (("^(.+)target.*= 'src/ingen/ingen'," line prefix)
  4447. (string-append prefix
  4448. "linkflags=[\"-Wl,-rpath="
  4449. out "/lib" "\"]," line)))
  4450. (substitute* '("src/wscript"
  4451. "src/server/wscript")
  4452. ;; Add libraries to RUNPATH.
  4453. (("bld.env.PTHREAD_LINKFLAGS" line)
  4454. (string-append line
  4455. " + [\"-Wl,-rpath=" out "/lib" "\"]")))
  4456. (substitute* "src/client/wscript"
  4457. ;; Add libraries to RUNPATH.
  4458. (("^(.+)target.*= 'ingen_client'," line prefix)
  4459. (string-append prefix
  4460. "linkflags=[\"-Wl,-rpath="
  4461. out "/lib" "\"]," line)))
  4462. (substitute* "src/gui/wscript"
  4463. ;; Add libraries to RUNPATH.
  4464. (("^(.+)target.* = 'ingen_gui.*" line prefix)
  4465. (string-append prefix
  4466. "linkflags=[\"-Wl,-rpath="
  4467. out "/lib" "\"]," line))))
  4468. #t)))))
  4469. (inputs
  4470. `(("boost" ,boost)
  4471. ("python-rdflib" ,python-rdflib)
  4472. ("python" ,python)
  4473. ("jack" ,jack-1)
  4474. ("lv2" ,lv2)
  4475. ("lilv" ,lilv)
  4476. ("raul" ,raul-devel)
  4477. ("ganv" ,ganv)
  4478. ("suil" ,suil)
  4479. ("serd" ,serd)
  4480. ("sord" ,sord)
  4481. ("sratom" ,sratom)
  4482. ("gtkmm" ,gtkmm-2)))
  4483. (native-inputs
  4484. `(("pkg-config" ,pkg-config)
  4485. ("python-pygments" ,python-pygments)))
  4486. (home-page "https://drobilla.net/software/ingen")
  4487. (synopsis "Modular audio processing system")
  4488. (description "Ingen is a modular audio processing system for JACK and
  4489. LV2 based systems. Ingen is built around LV2 technology and a strict
  4490. separation of engine from user interface. The engine is controlled
  4491. exclusively through a protocol, and can execute as a headless process, with an
  4492. in-process GUI, or as an LV2 plugin. The GUI can run as a program which
  4493. communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which
  4494. communicates via LV2 ports. Any saved Ingen graph can be loaded as an LV2
  4495. plugin on any system where Ingen is installed. This allows users to visually
  4496. develop custom plugins for use in other applications without programming.")
  4497. (license license:agpl3+))))
  4498. (define-public qmidiarp
  4499. (package
  4500. (name "qmidiarp")
  4501. (version "0.6.5")
  4502. (source (origin
  4503. (method url-fetch)
  4504. (uri (string-append "mirror://sourceforge/qmidiarp/qmidiarp/"
  4505. version "/qmidiarp-" version ".tar.bz2"))
  4506. (sha256
  4507. (base32
  4508. "043yh1p0rrbj1v840y27529m9260g55gvh1km8az4jxy7mns58r2"))))
  4509. (build-system gnu-build-system)
  4510. (arguments
  4511. `(#:configure-flags
  4512. (list "--enable-qt5")))
  4513. (inputs
  4514. `(("qtbase" ,qtbase-5)
  4515. ("alsa-lib" ,alsa-lib)
  4516. ("jack" ,jack-1)
  4517. ("liblo" ,liblo)
  4518. ("lv2" ,lv2)))
  4519. (native-inputs
  4520. `(("pkg-config" ,pkg-config)
  4521. ("qttools" ,qttools)))
  4522. (home-page "http://qmidiarp.sourceforge.net/")
  4523. (synopsis "MIDI arpeggiator")
  4524. (description "QMidiArp is an advanced MIDI arpeggiator, programmable step
  4525. sequencer and LFO. It can hold any number of arpeggiator, sequencer, or LFO
  4526. modules running in parallel.")
  4527. (license license:gpl2+)))
  4528. (define-public qmidiroute
  4529. (package
  4530. (name "qmidiroute")
  4531. (version "0.4.0")
  4532. (source (origin
  4533. (method url-fetch)
  4534. (uri (string-append "mirror://sourceforge/alsamodular/QMidiRoute/"
  4535. version "/qmidiroute-" version ".tar.bz2"))
  4536. (sha256
  4537. (base32
  4538. "19v1ppbglgl3z9v7xdqc0k33w71cqq8a7d6ihvfs7iz77dygrih9"))))
  4539. (build-system gnu-build-system)
  4540. (arguments
  4541. `(#:configure-flags
  4542. (list "--enable-qt5")))
  4543. (inputs
  4544. `(("qtbase" ,qtbase-5)
  4545. ("alsa-lib" ,alsa-lib)))
  4546. (native-inputs
  4547. `(("pkg-config" ,pkg-config)
  4548. ("qttools" ,qttools)))
  4549. (home-page "http://alsamodular.sourceforge.net/")
  4550. (synopsis "MIDI event router and filter")
  4551. (description "QMidiRoute is a MIDI event router and filter. MIDI note,
  4552. control change, program change and pitch bend events are logged, and can be
  4553. filtered, redirected and transformed into other events according to MIDI maps
  4554. defined as tabs in the main control surface.")
  4555. (license license:gpl2+)))
  4556. (define-public seq24
  4557. (package
  4558. (name "seq24")
  4559. (version "0.9.3")
  4560. (source (origin
  4561. (method url-fetch)
  4562. (uri (string-append "https://launchpad.net/seq24/trunk/"
  4563. version "/+download/seq24-"
  4564. version ".tar.bz2"))
  4565. (sha256
  4566. (base32
  4567. "12dphdhnvfk1k0vmagi1v2lhyxjyj1j3cz6ksjw0ydcvid1x8ap2"))
  4568. (patches (search-patches "seq24-rename-mutex.patch"))))
  4569. (build-system gnu-build-system)
  4570. (inputs
  4571. `(("gtkmm" ,gtkmm-2)
  4572. ("alsa-lib" ,alsa-lib)
  4573. ("jack" ,jack-1)
  4574. ("lash" ,lash)))
  4575. (native-inputs
  4576. `(("pkg-config" ,pkg-config)))
  4577. (home-page "https://edge.launchpad.net/seq24/")
  4578. (synopsis "Real-time MIDI sequencer")
  4579. (description "Seq24 is a real-time MIDI sequencer. It was created to
  4580. provide a very simple interface for editing and playing MIDI loops.")
  4581. (license license:gpl2+)))
  4582. (define-public python-discogs-client
  4583. (package
  4584. (name "python-discogs-client")
  4585. (version "2.3.12")
  4586. (source (origin
  4587. (method url-fetch)
  4588. (uri (pypi-uri "python3-discogs-client" version))
  4589. (sha256
  4590. (base32
  4591. "1zmib0i9jicv9fyphgkcrk418qmpv3l4p38ibl31sh237ki5xqw9"))))
  4592. (build-system python-build-system)
  4593. (propagated-inputs
  4594. `(("python-dateutil" ,python-dateutil)
  4595. ("python-oauthlib" ,python-oauthlib)
  4596. ("python-requests" ,python-requests)))
  4597. (home-page "https://github.com/joalla/discogs_client")
  4598. (synopsis "Python client for the Discogs API")
  4599. (description "This is the continuation of the official Discogs API
  4600. client for Python. It enables you to query the Discogs database for
  4601. information on artists, releases, labels, users, Marketplace listings,
  4602. and more. It also supports OAuth 1.0a authorization, which allows you to
  4603. change user data such as profile information, collections and wantlists,
  4604. inventory, and orders.")
  4605. (license license:bsd-2)))
  4606. (define-public python2-discogs-client
  4607. (package-with-python2 python-discogs-client))
  4608. (define-public libsmf
  4609. (package
  4610. (name "libsmf")
  4611. (version "1.3")
  4612. (source
  4613. (origin
  4614. (method url-fetch)
  4615. ;; SF download page says development moved, but the link it points to
  4616. ;; is gone (https://github.com/nilsgey/libsmf). Someone else adopted
  4617. ;; it but made no release so far (https://github.com/stump/libsmf).
  4618. (uri (string-append "mirror://sourceforge/libsmf/libsmf/"
  4619. version "/libsmf-" version ".tar.gz"))
  4620. (sha256
  4621. (base32
  4622. "16c0n40h0r56gzbh5ypxa4dwp296dan3jminml2qkb4lvqarym6k"))))
  4623. (build-system gnu-build-system)
  4624. (outputs '("out"
  4625. "static")) ; 88KiB of .a files
  4626. (arguments
  4627. `(#:phases
  4628. (modify-phases %standard-phases
  4629. (add-after 'install 'move-static-libraries
  4630. (lambda* (#:key outputs #:allow-other-keys)
  4631. ;; Move static libraries to the "static" output.
  4632. (let* ((out (assoc-ref outputs "out"))
  4633. (lib (string-append out "/lib"))
  4634. (static (assoc-ref outputs "static"))
  4635. (slib (string-append static "/lib")))
  4636. (mkdir-p slib)
  4637. (for-each (lambda (file)
  4638. (install-file file slib)
  4639. (delete-file file))
  4640. (find-files lib "\\.a$"))
  4641. #t))))))
  4642. (inputs
  4643. `(("readline" ,readline)
  4644. ("glib" ,glib)))
  4645. (native-inputs
  4646. `(("doxygen" ,doxygen)
  4647. ("pkg-config" ,pkg-config)))
  4648. (home-page "http://libsmf.sourceforge.net/")
  4649. (synopsis "Standard MIDI File format library")
  4650. (description
  4651. "LibSMF is a C library for handling SMF (\"*.mid\") files. It transparently handles
  4652. conversions between time and pulses, tempo map handling and more. The only dependencies
  4653. are a C compiler and glib. Full API documentation and examples are included.")
  4654. (license license:bsd-2)))
  4655. (define-public lmms
  4656. (package
  4657. (name "lmms")
  4658. (version "1.2.2")
  4659. (source
  4660. (origin
  4661. (method git-fetch)
  4662. (uri (git-reference
  4663. (url "https://github.com/LMMS/lmms")
  4664. (commit (string-append "v" version))))
  4665. (file-name (git-file-name name version))
  4666. (sha256
  4667. (base32
  4668. "11xgf461cnmq0jkgdgx5bddi87ammpik4whg1m4fcvd3i0d5i601"))))
  4669. (build-system cmake-build-system)
  4670. (arguments
  4671. `(#:tests? #f ; no tests
  4672. ;; Qt 5 support must be explicitly enabled in the 1.2 stable versions of
  4673. ;; LMMS, so try removing "-DWANT_QT5=ON" in later versions.
  4674. ;; Also, explicitly disabling VST support gets rid of the in-tree
  4675. ;; dependency on qt5-x11embed.
  4676. #:configure-flags '("-DWANT_QT5=ON"
  4677. "-DWANT_VST=OFF")
  4678. #:phases
  4679. (modify-phases %standard-phases
  4680. (add-after 'unpack 'unpack-rpmalloc
  4681. (lambda* (#:key inputs #:allow-other-keys)
  4682. (copy-recursively (assoc-ref inputs "rpmalloc")
  4683. "src/3rdparty/rpmalloc/rpmalloc")
  4684. #t))
  4685. (add-before 'configure 'set-ldflags
  4686. (lambda* (#:key outputs #:allow-other-keys)
  4687. (setenv "LDFLAGS"
  4688. (string-append
  4689. "-Wl,-rpath=\""
  4690. (assoc-ref outputs "out") "/lib/lmms"
  4691. ":"
  4692. (assoc-ref outputs "out") "/lib/lmms/ladspa"
  4693. "\""))
  4694. #t))
  4695. (add-before 'reset-gzip-timestamps 'make-manpages-writable
  4696. (lambda* (#:key outputs #:allow-other-keys)
  4697. (map (lambda (file)
  4698. (make-file-writable file))
  4699. (find-files (string-append (assoc-ref outputs "out")
  4700. "/share/man")
  4701. ".*\\.gz$"))
  4702. #t)))))
  4703. (native-inputs
  4704. `(("pkg-config" ,pkg-config)
  4705. ("qttools" ,qttools)
  4706. ;; rpmalloc is a public domain memory allocator. This version specified
  4707. ;; below is the version required by LMMS.
  4708. ;; To get the new commit of rpmalloc to use here, run
  4709. ;; `git submodule--helper list | grep rpmalloc | cut -f2 -d' '`
  4710. ;; in the cloned LMMS repository.
  4711. ("rpmalloc"
  4712. ,(origin
  4713. (method git-fetch)
  4714. (uri (git-reference
  4715. (url "https://github.com/mjansson/rpmalloc")
  4716. (commit "b5bdc18051bb74a22f0bde4bcc90b01cf590b496")))
  4717. (sha256
  4718. (base32
  4719. "0g9pls46iggg7rdm65vzfj8nyr3v2n5xkp54c4qbh9hhalpsw4ay"))))))
  4720. (inputs
  4721. `(("sdl" ,sdl)
  4722. ("qtbase" ,qtbase-5)
  4723. ("qtx11extras" ,qtx11extras)
  4724. ("fltk" ,fltk)
  4725. ("libogg" ,libogg)
  4726. ("libsamplerate" ,libsamplerate)
  4727. ("fluidsynth" ,fluidsynth)
  4728. ("libvorbis" ,libvorbis)
  4729. ("alsa-lib" ,alsa-lib)
  4730. ("portaudio" ,portaudio)
  4731. ("ladspa" ,ladspa)
  4732. ("libsndfile1" ,libsndfile)
  4733. ("libxft" ,libxft)
  4734. ("freetype2" ,freetype)
  4735. ("fftw3f" ,fftwf)
  4736. ("jack" ,jack-1)
  4737. ("carla" ,carla)))
  4738. (home-page "https://lmms.io/")
  4739. (synopsis "Music composition tool")
  4740. (description "LMMS is a digital audio workstation. It includes tools for sequencing
  4741. melodies and beats and for mixing and arranging songs. LMMS includes instruments based on
  4742. audio samples and various soft sythesizers. It can receive input from a MIDI keyboard.")
  4743. (license license:gpl2+)))
  4744. (define-public liquidsfz
  4745. (package
  4746. (name "liquidsfz")
  4747. (version "0.2.3")
  4748. (source (origin
  4749. (method url-fetch)
  4750. (uri (string-append "https://space.twc.de/~stefan/liquidsfz/"
  4751. "liquidsfz-" version ".tar.bz2"))
  4752. (sha256
  4753. (base32
  4754. "1hb4hc3gkvjfbx0ls6wxzavhv2hf9ix11cz8yvndyb6q9lwkimwl"))))
  4755. (build-system gnu-build-system)
  4756. (arguments
  4757. `(#:configure-flags '("--enable-shared")))
  4758. (native-inputs
  4759. `(("pkg-config" ,pkg-config)
  4760. ;; Fails with default gcc (#include <filesystem> not found).
  4761. ("gcc" ,gcc-9)))
  4762. (inputs
  4763. `(("jack" ,jack-2)
  4764. ("lv2" ,lv2)
  4765. ("readline" ,readline)
  4766. ("libsndfile" ,libsndfile/fixed)))
  4767. (home-page "https://github.com/swesterfeld/liquidsfz")
  4768. (synopsis "Sampler library")
  4769. (description "The main goal of liquidsfz is to provide an SFZ sampler
  4770. implementation library that is easy to integrate into other projects. A
  4771. standalone JACK client and an LV2 plugin is also available.")
  4772. (license license:lgpl2.1+)))
  4773. (define-public sfizz
  4774. (package
  4775. (name "sfizz")
  4776. (version "1.0.0")
  4777. (source (origin
  4778. (method url-fetch)
  4779. (uri (string-append "https://github.com/sfztools/sfizz"
  4780. "/releases/download/" version
  4781. "/sfizz-" version ".tar.gz"))
  4782. (sha256
  4783. (base32
  4784. "1pk67xvyqkvhjz2q5hbj5v0mnfvdvvl8vl5bsh6ymwiq3glkd41l"))
  4785. (modules '((guix build utils)))
  4786. (snippet
  4787. ;; TODO: pugixml is bundled, but can only be removed in
  4788. ;; versions after 1.0.0.
  4789. '(for-each delete-file-recursively
  4790. '("external/abseil-cpp"
  4791. "external/simde"
  4792. "plugins/editor/external/vstgui4"
  4793. "plugins/vst")))))
  4794. (build-system cmake-build-system)
  4795. (arguments
  4796. `(#:configure-flags
  4797. (list "-DSFIZZ_LV2_UI=OFF"
  4798. "-DSFIZZ_VST=OFF"
  4799. "-DSFIZZ_VST2=OFF"
  4800. "-DSFIZZ_TESTS=ON"
  4801. "-DSFIZZ_USE_SYSTEM_ABSEIL=ON")))
  4802. (native-inputs
  4803. `(("pkg-config" ,pkg-config)))
  4804. (inputs
  4805. `(("abseil-cpp" ,abseil-cpp)
  4806. ("glib" ,glib)
  4807. ("jack" ,jack-2)
  4808. ("lv2" ,lv2)
  4809. ("libsamplerate" ,libsamplerate)
  4810. ("pugixml" ,pugixml)
  4811. ("simde" ,simde)))
  4812. (home-page "https://sfz.tools/sfizz/")
  4813. (synopsis "SFZ parser and synth library")
  4814. (description "Sfizz provides an SFZ parser and synth C++ library. It
  4815. includes LV2 plugins and a JACK standalone client.")
  4816. (license license:bsd-2)))
  4817. (define-public musescore
  4818. (package
  4819. (name "musescore")
  4820. (version "3.6.2")
  4821. (source
  4822. (origin
  4823. (method git-fetch)
  4824. (uri (git-reference
  4825. (url "https://github.com/musescore/MuseScore")
  4826. (commit (string-append "v" version))))
  4827. (file-name (git-file-name name version))
  4828. (sha256
  4829. (base32 "0szvb6mlzy9df9lrq546rrpixa480knzij1wgh6ilflxz87q048q"))
  4830. (modules '((guix build utils)))
  4831. (snippet
  4832. ;; Remove unused libraries.
  4833. '(begin
  4834. (for-each delete-file-recursively
  4835. '("thirdparty/freetype"
  4836. "thirdparty/openssl"
  4837. "thirdparty/portmidi"
  4838. "thirdparty/qt-google-analytics"))
  4839. #t))))
  4840. (build-system qt-build-system)
  4841. (arguments
  4842. `(#:configure-flags
  4843. `("-DBUILD_TELEMETRY_MODULE=OFF" ;don't phone home
  4844. "-DBUILD_WEBENGINE=OFF"
  4845. "-DDOWNLOAD_SOUNDFONT=OFF"
  4846. "-DMUSESCORE_BUILD_CONFIG=release"
  4847. "-DUSE_SYSTEM_FREETYPE=ON")
  4848. ;; There are tests, but no simple target to run. The command used to
  4849. ;; run them is:
  4850. ;;
  4851. ;; make debug && sudo make installdebug && cd \
  4852. ;; build.debug/mtest && make && ctest
  4853. ;;
  4854. ;; Basically, it requires to start a whole new build process.
  4855. ;; So we simply skip them.
  4856. #:tests? #f))
  4857. (inputs
  4858. `(("alsa-lib" ,alsa-lib)
  4859. ("freetype" ,freetype)
  4860. ("gtk+-bin" ,gtk+ "bin") ;for gtk-update-icon-cache
  4861. ("jack" ,jack-1)
  4862. ("lame" ,lame)
  4863. ("libogg" ,libogg)
  4864. ("libsndfile" ,libsndfile)
  4865. ("libvorbis" ,libvorbis)
  4866. ("portaudio" ,portaudio)
  4867. ("portmidi" ,portmidi)
  4868. ("pulseaudio" ,pulseaudio)
  4869. ("qtbase" ,qtbase-5)
  4870. ("qtdeclarative" ,qtdeclarative)
  4871. ("qtgraphicaleffects" ,qtgraphicaleffects)
  4872. ("qtquickcontrols2" ,qtquickcontrols2)
  4873. ("qtscript" ,qtscript)
  4874. ("qtsvg" ,qtsvg)
  4875. ("qtxmlpatterns" ,qtxmlpatterns)))
  4876. (native-inputs
  4877. `(("pkg-config" ,pkg-config)
  4878. ("qttools" ,qttools)))
  4879. (synopsis "Music composition and notation software")
  4880. (description
  4881. "MuseScore is a music score typesetter. Its main purpose is the creation
  4882. of high-quality engraved musical scores in a WYSIWYG environment.
  4883. It supports unlimited staves, linked parts and part extraction, tablature,
  4884. MIDI input, percussion notation, cross-staff beaming, automatic transposition,
  4885. lyrics (multiple verses), fretboard diagrams, and in general everything
  4886. commonly used in sheet music. Style options and style sheets to change the
  4887. appearance and layout are provided.
  4888. MuseScore can also play back scores through the built-in sequencer and SoundFont
  4889. sample library.")
  4890. (home-page "https://musescore.org")
  4891. (license license:gpl2)))
  4892. (define-public muse-sequencer
  4893. (package
  4894. (name "muse-sequencer")
  4895. (version "4.0.0")
  4896. (source (origin
  4897. (method git-fetch)
  4898. (uri (git-reference
  4899. (url "https://github.com/muse-sequencer/muse")
  4900. (commit version)))
  4901. (file-name (git-file-name name version))
  4902. (sha256
  4903. (base32
  4904. "1gamr9ln10l26wwyin1a4grrqy6h05qzcgp28wsp85yczkpsh02c"))))
  4905. (build-system qt-build-system)
  4906. (arguments
  4907. `(#:tests? #f ; there is no test target
  4908. #:configure-flags
  4909. (list "-DENABLE_VST_NATIVE=OFF"
  4910. (string-append "-DCMAKE_EXE_LINKER_FLAGS="
  4911. "-Wl,-rpath="
  4912. (assoc-ref %outputs "out") "/lib/muse-"
  4913. ,(version-major+minor version) "/modules")
  4914. (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
  4915. "-Wl,-rpath="
  4916. (assoc-ref %outputs "out") "/lib/muse-"
  4917. ,(version-major+minor version) "/modules"))
  4918. #:phases
  4919. (modify-phases %standard-phases
  4920. (add-after 'unpack 'chdir
  4921. (lambda _ (chdir "src"))))))
  4922. (inputs
  4923. `(("alsa-lib" ,alsa-lib)
  4924. ("dssi" ,dssi)
  4925. ("fluidsynth" ,fluidsynth)
  4926. ("glib" ,glib)
  4927. ("jack" ,jack-1)
  4928. ("ladspa" ,ladspa)
  4929. ("lash" ,lash)
  4930. ("libinstpatch" ,libinstpatch)
  4931. ("liblo" ,liblo)
  4932. ("libsamplerate" ,libsamplerate)
  4933. ("libsndfile" ,libsndfile)
  4934. ("lilv" ,lilv)
  4935. ("lrdf" ,lrdf)
  4936. ("lv2" ,lv2)
  4937. ("pcre" ,pcre)
  4938. ("pulseaudio" ,pulseaudio) ; required by rtaudio
  4939. ("qtbase" ,qtbase-5)
  4940. ("qtsvg" ,qtsvg)
  4941. ("rtaudio" ,rtaudio)
  4942. ("rubberband" ,rubberband)
  4943. ("sord" ,sord)))
  4944. (native-inputs
  4945. `(("perl" ,perl)
  4946. ("pkg-config" ,pkg-config)
  4947. ("python" ,python-wrapper)
  4948. ("qttools" ,qttools)))
  4949. (home-page "https://muse-sequencer.github.io/")
  4950. (synopsis "MIDI/Audio sequencer")
  4951. (description "MusE is a MIDI/Audio sequencer with recording and editing
  4952. capabilities. Its audio sequencer supports the LADSPA, DSSI, and LV2 audio
  4953. plugin formats; the MIDI sequencer provides a piano roll, a drum editor, a
  4954. list view, and a score editor. MusE aims to be a complete multitrack virtual
  4955. studio.")
  4956. (license license:gpl2+)))
  4957. (define-public gsequencer
  4958. (package
  4959. (name "gsequencer")
  4960. (version "3.10.18")
  4961. (source
  4962. (origin
  4963. (method git-fetch)
  4964. (uri (git-reference
  4965. (url "https://git.savannah.gnu.org/git/gsequencer.git/")
  4966. (commit version)))
  4967. (file-name (git-file-name name version))
  4968. (sha256
  4969. (base32 "126kbvdkxy82mmkl19qhp9k6iz5xclar06chbj7lf580x96c899c"))))
  4970. (build-system glib-or-gtk-build-system)
  4971. (arguments
  4972. `(#:phases
  4973. (modify-phases %standard-phases
  4974. (add-before 'build 'prepare-x-for-test
  4975. (lambda _
  4976. (system "Xvfb &")
  4977. (setenv "DISPLAY" ":0"))))))
  4978. (native-inputs
  4979. `(("autoconf" ,autoconf)
  4980. ("automake" ,automake)
  4981. ("cunit" ,cunit)
  4982. ("gettext" ,gettext-minimal)
  4983. ("gobject-introspection" ,gobject-introspection)
  4984. ("gtk-doc" ,gtk-doc)
  4985. ("libtool" ,libtool)
  4986. ("libxslt" ,libxslt)
  4987. ("pkg-config" ,pkg-config)
  4988. ("xorg-server" ,xorg-server-for-tests)))
  4989. (inputs
  4990. `(("alsa-lib" ,alsa-lib)
  4991. ("dssi" ,dssi)
  4992. ("fftw" ,fftw)
  4993. ("gst-plugins-base" ,gst-plugins-base)
  4994. ("gstreamer" ,gstreamer)
  4995. ("gtk+" ,gtk+)
  4996. ("jack" ,jack-1)
  4997. ("ladspa" ,ladspa)
  4998. ("libinstpatch" ,libinstpatch)
  4999. ("libsamplerate" ,libsamplerate)
  5000. ("libsndfile" ,libsndfile)
  5001. ("libsoup" ,libsoup)
  5002. ("libuuid" ,util-linux "lib")
  5003. ("libxml2" ,libxml2)
  5004. ("lv2" ,lv2)
  5005. ("pulseaudio" ,pulseaudio)
  5006. ("webkitgtk" ,webkitgtk)))
  5007. (home-page "https://nongnu.org/gsequencer/")
  5008. (synopsis "Advanced Gtk+ Sequencer")
  5009. (description
  5010. "GSequencer allows you to play, capture and create music. There is a piano
  5011. roll, automation and wave form editor. It has machines for playing drum samples,
  5012. Soundfont2 sound containers and synthesizers. They usually can be connected to a
  5013. MIDI input source (instrument). It has support for various audio backends like
  5014. ALSA, Pulseaudio, JACK, OSSv4 and CoreAudio.")
  5015. (license license:gpl3+)))
  5016. (define-public dssi
  5017. (package
  5018. (name "dssi")
  5019. (version "1.1.1")
  5020. (source (origin
  5021. (method url-fetch)
  5022. (uri (string-append
  5023. "mirror://sourceforge/dssi/dssi/" version
  5024. "/dssi-" version ".tar.gz"))
  5025. (sha256
  5026. (base32
  5027. "0kl1hzhb7cykzkrqcqgq1dk4xcgrcxv0jja251aq4z4l783jpj7j"))))
  5028. (build-system gnu-build-system)
  5029. (inputs
  5030. `(("alsa-lib" ,alsa-lib)
  5031. ("jack" ,jack-1)
  5032. ("ladspa" ,ladspa)
  5033. ("libsamplerate" ,libsamplerate)
  5034. ("libsndfile" ,libsndfile)
  5035. ("liblo" ,liblo)))
  5036. (native-inputs
  5037. `(("pkg-config" ,pkg-config)))
  5038. (synopsis "Audio plugin API for soft synths and effects")
  5039. (description "DSSI is a plugin API for software instruments with user
  5040. interfaces, permitting them to be hosted in-process by audio applications.
  5041. It is intended to be simple, GUI-toolkit-agnostic, and slightly biased
  5042. towards familiarity with MIDI. The DSSI distribution package contains
  5043. a JACK/ALSA-sequencer reference host and some plugins as well as the
  5044. specification and header.")
  5045. (home-page "http://dssi.sourceforge.net/")
  5046. ;; The DSSI interface is LGPL2.1+, some tests and examples are GPL2+.
  5047. ;; The vast majority of examples are in the public domain.
  5048. (license (list license:lgpl2.1+ license:gpl2+))))
  5049. (define-public rosegarden
  5050. (package
  5051. (name "rosegarden")
  5052. (version "21.06.1")
  5053. (source
  5054. (origin
  5055. (method url-fetch)
  5056. (uri (string-append "mirror://sourceforge/rosegarden/rosegarden/"
  5057. (version-major+minor version) "/"
  5058. "rosegarden-" version ".tar.bz2"))
  5059. (sha256
  5060. (base32 "0yir279gxc5b298sr0fg9jxgdi75bb1gvvy4mh3pxqjsnp00sxc7"))))
  5061. (build-system cmake-build-system)
  5062. (arguments
  5063. `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
  5064. #:phases
  5065. (modify-phases %standard-phases
  5066. (add-after 'unpack 'patch-tests
  5067. (lambda _
  5068. (substitute* "CMakeLists.txt"
  5069. (("BUILD_TESTING OFF") "BUILD_TESTING ON")
  5070. ;; Make tests work.
  5071. ((" -fvisibility=hidden") ""))))
  5072. (add-after 'unpack 'fix-references
  5073. (lambda* (#:key inputs #:allow-other-keys)
  5074. (substitute* "src/gui/general/ProjectPackager.cpp"
  5075. (("\"flac\\>")
  5076. (string-append "\"" (assoc-ref inputs "flac") "/bin/flac"))
  5077. (("\"wavpack\\>")
  5078. (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wavpack"))
  5079. (("\"wvunpack\\>")
  5080. (string-append "\"" (assoc-ref inputs "wavpack") "/bin/wvunpack"))
  5081. (("\"bash\\>")
  5082. (string-append "\"" (assoc-ref inputs "bash") "/bin/bash"))
  5083. (("\"tar\\>")
  5084. (string-append "\"" (assoc-ref inputs "tar") "/bin/tar")))
  5085. (substitute* "src/gui/general/LilyPondProcessor.cpp"
  5086. (("\"convert-ly\\>")
  5087. (string-append "\"" (assoc-ref inputs "lilypond") "/bin/convert-ly"))
  5088. (("\"lilypond\\>")
  5089. (string-append "\"" (assoc-ref inputs "lilypond") "/bin/lilypond")))))
  5090. (add-after 'unpack 'make-reproducible
  5091. (lambda _
  5092. ;; Prevent Last-Modified from being written.
  5093. ;; The "*.qm" files that are used in locale.qrc would have a new
  5094. ;; mtime otherwise that is written into qrc_locale.cpp in the
  5095. ;; end - except when we disable it.
  5096. (substitute* "src/CMakeLists.txt"
  5097. (("COMMAND [$][{]QT_RCC_EXECUTABLE[}]")
  5098. "COMMAND ${QT_RCC_EXECUTABLE} --format-version 1")
  5099. ;; Extraneous.
  5100. ;;(("qt5_add_resources[(]rg_SOURCES ../data/data.qrc[)]")
  5101. ;; "qt5_add_resources(rg_SOURCES ../data/data.qrc OPTIONS --format-version 1)")
  5102. )
  5103. ;; Make hashtable traversal order predicable.
  5104. (setenv "QT_RCC_TEST" "1"))) ; important
  5105. (add-before 'check 'prepare-check
  5106. (lambda _
  5107. (setenv "QT_QPA_PLATFORM" "offscreen")
  5108. ;; Tests create files in $HOME/.local/share/rosegarden .
  5109. (mkdir-p "/tmp/foo")
  5110. (setenv "HOME" "/tmp/foo")
  5111. (setenv "XDG_RUNTIME_DIR" "/tmp/foo"))))))
  5112. (inputs
  5113. `(("alsa-lib" ,alsa-lib)
  5114. ("bash" ,bash)
  5115. ("dssi" ,dssi)
  5116. ("flac" ,flac)
  5117. ("fftwf" ,fftwf)
  5118. ("jack" ,jack-1)
  5119. ("ladspa" ,ladspa)
  5120. ("liblo" ,liblo)
  5121. ("libsamplerate" ,libsamplerate)
  5122. ("lilypond" ,lilypond)
  5123. ("lrdf" ,lrdf)
  5124. ("qtbase" ,qtbase-5)
  5125. ("tar" ,tar)
  5126. ("lirc" ,lirc)
  5127. ("wavpack" ,wavpack)
  5128. ("zlib" ,zlib)))
  5129. (native-inputs
  5130. `(("pkg-config" ,pkg-config)
  5131. ("qttools" ,qttools))) ;for qtlinguist
  5132. (synopsis "Music composition and editing environment based around a MIDI
  5133. sequencer")
  5134. (description "Rosegarden is a music composition and editing environment
  5135. based around a MIDI sequencer that features a rich understanding of music
  5136. notation and includes basic support for digital audio.")
  5137. (home-page "https://www.rosegardenmusic.com/")
  5138. (license license:gpl2)))
  5139. (define-public patchmatrix
  5140. (package
  5141. (name "patchmatrix")
  5142. (version "0.16.0")
  5143. (source (origin
  5144. (method git-fetch)
  5145. (uri (git-reference
  5146. (url "https://github.com/OpenMusicKontrollers/patchmatrix")
  5147. (commit version)))
  5148. (file-name (git-file-name "patchmatrix" version))
  5149. (sha256
  5150. (base32
  5151. "020vp7zzxxzzjfic57vkpg68dm8hi98ilr1bj88xjsv6i47xmjbn"))))
  5152. (build-system meson-build-system)
  5153. (arguments '(#:tests? #f)) ; no test target
  5154. (inputs
  5155. `(("jack" ,jack-1)
  5156. ("lv2" ,lv2)
  5157. ("mesa" ,mesa)))
  5158. (native-inputs
  5159. `(("pkg-config" ,pkg-config)))
  5160. (home-page "https://github.com/OpenMusicKontrollers/patchmatrix")
  5161. (synopsis "Simple JACK patch bay")
  5162. (description "PatchMatrix is a patch bay for the JACK audio connection
  5163. kit. It provides a patch bay in flow matrix style for audio, MIDI, CV, and
  5164. OSC connections.")
  5165. (license license:artistic2.0)))
  5166. (define-public sorcer
  5167. (package
  5168. (name "sorcer")
  5169. (version "1.1.3")
  5170. (source (origin
  5171. (method url-fetch)
  5172. (uri (string-append "https://github.com/openAVproductions/"
  5173. "openAV-Sorcer/archive/release-"
  5174. version ".tar.gz"))
  5175. (file-name (string-append name "-" version ".tar.gz"))
  5176. (sha256
  5177. (base32
  5178. "07iyqj28wm0xc4arrq893bm12xjpz65db7ynrlmf6w8krg8wjmd0"))))
  5179. (build-system cmake-build-system)
  5180. (arguments
  5181. `(#:tests? #f ; no tests included
  5182. #:phases
  5183. (modify-phases %standard-phases
  5184. (add-after 'unpack 'remove-architecture-specific-flags
  5185. (lambda _
  5186. (substitute* "CMakeLists.txt"
  5187. (("-msse2 -mfpmath=sse") ""))
  5188. #t))
  5189. (add-after 'unpack 'build-faust-sources
  5190. (lambda* (#:key inputs #:allow-other-keys)
  5191. (with-directory-excursion "faust"
  5192. (delete-file "main.cpp")
  5193. (invoke "faust" "-i"
  5194. "-a" "lv2synth.cpp"
  5195. "-o" "main.cpp" "main.dsp")))))))
  5196. (inputs
  5197. `(("boost" ,boost)
  5198. ("lv2" ,lv2)
  5199. ("ntk" ,ntk)))
  5200. (native-inputs
  5201. `(("faust" ,faust)
  5202. ("pkg-config" ,pkg-config)))
  5203. (home-page "http://openavproductions.com/sorcer/")
  5204. (synopsis "Wavetable LV2 plugin synth")
  5205. (description "Sorcer is a wavetable LV2 plugin synthesizer, targeted at
  5206. the electronic or dubstep genre.")
  5207. (license license:gpl3+)))
  5208. (define-public sonivox-eas
  5209. (package
  5210. (name "sonivox-eas")
  5211. (version "1.3.0")
  5212. (source (origin
  5213. (method git-fetch)
  5214. (uri (git-reference
  5215. (url "https://github.com/pedrolcl/Linux-SonivoxEas")
  5216. (commit (string-append "v" version))))
  5217. (file-name (string-append name "-" version "-checkout"))
  5218. (sha256
  5219. (base32
  5220. "1ygmlrsdzxii2dvj6id2ai3xv3klw2x67ip5rcp823jzczl0wpjd"))))
  5221. (build-system cmake-build-system)
  5222. (arguments '(#:tests? #f)) ; there are no tests
  5223. (inputs
  5224. `(("alsa-lib" ,alsa-lib)
  5225. ("drumstick" ,drumstick)
  5226. ("pulseaudio" ,pulseaudio)
  5227. ("qtbase" ,qtbase-5)))
  5228. (native-inputs
  5229. `(("pkg-config" ,pkg-config)))
  5230. (home-page "https://github.com/pedrolcl/Linux-SonivoxEas")
  5231. (synopsis "MIDI synthesizer library")
  5232. (description "This project is a real time General MIDI synthesizer based
  5233. on the Sonivox EAS Synthesizer by Google. It does not need external
  5234. soundfonts, using embedded samples instead.")
  5235. ;; Sonivox is released under the ASL2.0; the rest of the code is under
  5236. ;; GPLv2+.
  5237. (license (list license:gpl2+ license:asl2.0))))
  5238. (define-public whysynth
  5239. (package
  5240. (name "whysynth")
  5241. (version "20170701")
  5242. (source (origin
  5243. (method url-fetch)
  5244. (uri (string-append "http://smbolton.com/whysynth/whysynth-"
  5245. version ".tar.bz2"))
  5246. (sha256
  5247. (base32
  5248. "02qbn0hbvn1iym4zxv35b201blg31yjpgh71h8db0j5zls2xc0m6"))))
  5249. (build-system gnu-build-system)
  5250. (inputs
  5251. `(("dssi" ,dssi)
  5252. ("liblo" ,liblo)
  5253. ("fftwf" ,fftwf)
  5254. ("gtk+" ,gtk+-2)
  5255. ("ladspa" ,ladspa)
  5256. ("alsa-lib" ,alsa-lib)))
  5257. (native-inputs
  5258. `(("pkg-config" ,pkg-config)))
  5259. (home-page "http://smbolton.com/whysynth.html")
  5260. (synopsis "DSSI software synthesizer")
  5261. (description "WhySynth is a versatile softsynth which operates as a plugin
  5262. for the DSSI Soft Synth Interface. A brief list of features:
  5263. @enumerate
  5264. @item 4 oscillators, 2 filters, 3 LFOs, and 5 envelope generators per voice.
  5265. @item 11 oscillator modes: minBLEP, wavecycle, chorused wavecycle,
  5266. asynchronous granular, three FM modes, waveshaper, noise, PADsynth, and phase
  5267. distortion.
  5268. @item 10 filter modes.
  5269. @item flexible modulation and mixdown options, plus effects.
  5270. @end enumerate
  5271. ")
  5272. (license license:gpl2+)))
  5273. (define-public libdiscid
  5274. (package
  5275. (name "libdiscid")
  5276. (version "0.6.2")
  5277. (source
  5278. (origin
  5279. (method url-fetch)
  5280. (uri (string-append
  5281. "http://ftp.musicbrainz.org/pub/musicbrainz/libdiscid/libdiscid-"
  5282. version ".tar.gz"))
  5283. (sha256
  5284. (base32
  5285. "1f9irlj3dpb5gyfdnb1m4skbjvx4d4hwiz2152f83m0d9jn47r7r"))))
  5286. (arguments `(#:test-target "check"))
  5287. (build-system cmake-build-system)
  5288. (home-page "https://musicbrainz.org/doc/libdiscid")
  5289. (synopsis "Disc id reader library")
  5290. (description "libdiscid is a C library for creating MusicBrainz and freedb
  5291. disc IDs from audio CDs. It reads a CD's table of contents (TOC) and generates
  5292. an identifier which can be used to lookup the CD at MusicBrainz. Additionally,
  5293. it provides a submission URL for adding the disc ID to the database and gathers
  5294. ISRCs and the MCN (=UPC/EAN) from disc.")
  5295. (license license:lgpl2.1+)))
  5296. (define-public python-discid
  5297. (package
  5298. (name "python-discid")
  5299. (version "1.1.1")
  5300. (source
  5301. (origin
  5302. (method url-fetch)
  5303. (uri (pypi-uri "discid" version))
  5304. (sha256
  5305. (base32
  5306. "1fgp67nhqlbvhhwrcxq5avil7alpzw4s4579hlyvxzbphdnbz8vq"))))
  5307. (build-system python-build-system)
  5308. (inputs
  5309. `(("libdiscid" ,libdiscid)))
  5310. (arguments
  5311. `(#:phases
  5312. (modify-phases %standard-phases
  5313. (add-before 'build 'set-libdiscid
  5314. ;; Set path of libdiscid
  5315. (lambda* (#:key inputs #:allow-other-keys)
  5316. (let ((discid (assoc-ref inputs "libdiscid")))
  5317. (substitute* "discid/libdiscid.py"
  5318. (("lib_name = (.*)$" all name)
  5319. (string-append "lib_name = \"" discid
  5320. "/lib/libdiscid.so.0\"\n")))
  5321. #t))))))
  5322. (home-page "https://python-discid.readthedocs.io/")
  5323. (synopsis "Python bindings for Libdiscid")
  5324. (description
  5325. "This package provides Python bindings for the Libdiscid library. The
  5326. main purpose is the calculation of @url{https://musicbrainz.org/doc/Disc%20ID,
  5327. Disc IDs} for use with the MusicBrainz database. Additionally the disc
  5328. @dfn{Media Catalog Number} (MCN) and track @dfn{International Standard
  5329. Recording Code} (ISRC) can be extracted.}")
  5330. (license license:lgpl3+)))
  5331. (define-public libmusicbrainz
  5332. (package
  5333. (name "libmusicbrainz")
  5334. (version "5.1.0")
  5335. (source
  5336. (origin
  5337. (method url-fetch)
  5338. (uri (string-append
  5339. "https://github.com/metabrainz/libmusicbrainz/releases/download/release-"
  5340. version "/libmusicbrainz-" version ".tar.gz"))
  5341. (sha256
  5342. (base32
  5343. "0ikb9igyyk28jm34raxfzkw2qyn4nzzwsymdyprp7cmvi6g2ajb7"))))
  5344. (build-system cmake-build-system)
  5345. (arguments
  5346. `(#:phases
  5347. (modify-phases %standard-phases
  5348. (add-after 'unpack 'fix-build
  5349. (lambda _
  5350. (substitute* "src/CMakeLists.txt"
  5351. (("\\*.inc") ""))))
  5352. (replace 'check
  5353. (lambda _
  5354. ;; requires network connections
  5355. ;; (invoke "tests/mbtest")
  5356. (invoke "tests/ctest")
  5357. #t)))))
  5358. (inputs `(("neon" ,neon)
  5359. ("libxml2" ,libxml2)))
  5360. (native-inputs `(("pkg-config" ,pkg-config)))
  5361. (home-page "https://musicbrainz.org/doc/libmusicbrainz")
  5362. (synopsis "MusicBrainz client library")
  5363. (description "The MusicBrainz Client Library (libmusicbrainz), also known as
  5364. mb_client, is a development library geared towards developers who wish to add
  5365. MusicBrainz lookup capabilities to their applications.")
  5366. (license license:lgpl2.1+)))
  5367. (define-public perl-musicbrainz-discid
  5368. (package
  5369. (name "perl-musicbrainz-discid")
  5370. (version "0.06")
  5371. (source (origin
  5372. (method url-fetch)
  5373. (uri (string-append
  5374. "mirror://cpan/authors/id/N/NJ/NJH/MusicBrainz-DiscID-"
  5375. version ".tar.gz"))
  5376. (sha256
  5377. (base32
  5378. "1azc91jnwa3gdmy9pc8mflakgvsvf69ywwlqllxmdzwpk386w2xs"))))
  5379. (build-system perl-build-system)
  5380. (native-inputs `(("pkg-config" ,pkg-config)
  5381. ("which" ,which)))
  5382. (inputs `(("libdiscid" ,libdiscid)))
  5383. (home-page "https://metacpan.org/release/MusicBrainz-DiscID")
  5384. (synopsis "Perl interface to the MusicBrainz libdiscid library")
  5385. (description
  5386. "The @code{MusicBrainz::DiscID} module is a Perl interface to the
  5387. MusicBrainz libdiscid library, allowing you to manipulate digital audio
  5388. compact disc (CDDA) identifiers.")
  5389. (license license:gpl2)))
  5390. (define-public perl-webservice-musicbrainz
  5391. (package
  5392. (name "perl-webservice-musicbrainz")
  5393. (version "1.0.5")
  5394. (source (origin
  5395. (method url-fetch)
  5396. (uri (string-append
  5397. "mirror://cpan/authors/id/B/BF/BFAIST/WebService-MusicBrainz-"
  5398. version ".tar.gz"))
  5399. (sha256
  5400. (base32
  5401. "16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj"))))
  5402. (build-system perl-build-system)
  5403. (arguments
  5404. ;; Tests try to connect to http://musicbrainz.org.
  5405. '(#:tests? #f))
  5406. (native-inputs
  5407. `(("perl-module-build" ,perl-module-build)))
  5408. (propagated-inputs
  5409. `(("perl-mojolicious" ,perl-mojolicious)))
  5410. (home-page "https://metacpan.org/release/WebService-MusicBrainz")
  5411. (synopsis "Web service API to the MusicBrainz database")
  5412. (description
  5413. "This module searches the MusicBrainz database through their web service
  5414. at @code{musicbrainz.org}.")
  5415. (license license:perl-license)))
  5416. (define-public clyrics
  5417. (package
  5418. (name "clyrics")
  5419. (version "0.12")
  5420. (source
  5421. (origin
  5422. (method git-fetch)
  5423. (uri (git-reference
  5424. (url "https://github.com/trizen/clyrics")
  5425. (commit version)))
  5426. (file-name (git-file-name name version))
  5427. (sha256
  5428. (base32 "1l9iqz6vxrrxapv7s110g360bqxksir4dcqd8w0l4lhmnfmz3vnk"))))
  5429. (build-system trivial-build-system)
  5430. (inputs
  5431. `(("bash" ,bash) ; for the wrapped program
  5432. ("perl" ,perl)
  5433. ("perl-www-mechanize" ,perl-www-mechanize)
  5434. ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
  5435. ;; Required or else LWP will fail with "GET https://www.google.com/ ==>
  5436. ;; 500 Can't verify SSL peers without knowing which Certificate
  5437. ;; Authorities to trust".
  5438. ("perl-mozilla-ca" ,perl-mozilla-ca)))
  5439. (arguments
  5440. `(#:modules ((guix build utils))
  5441. #:builder (begin
  5442. (use-modules (guix build utils)
  5443. (ice-9 match)
  5444. (srfi srfi-26))
  5445. (let* ((source (assoc-ref %build-inputs "source"))
  5446. (output (assoc-ref %outputs "out")))
  5447. (setenv "PATH"
  5448. (string-append
  5449. (assoc-ref %build-inputs "bash") "/bin" ":"
  5450. (assoc-ref %build-inputs "perl") "/bin" ":"))
  5451. (copy-recursively source (getcwd))
  5452. (patch-shebang "clyrics")
  5453. (substitute* "clyrics"
  5454. (("/usr/share") output))
  5455. (install-file "clyrics" (string-append output "/bin"))
  5456. (wrap-program (string-append output "/bin/clyrics")
  5457. `("PERL5LIB" ":" =
  5458. ,(delete
  5459. ""
  5460. (map (match-lambda
  5461. (((? (cut string-prefix? "perl-" <>) name) . dir)
  5462. (string-append dir "/lib/perl5/site_perl"))
  5463. (_ ""))
  5464. %build-inputs))))
  5465. (copy-recursively "plugins" (string-append output "/clyrics"))
  5466. #t))))
  5467. (home-page "https://github.com/trizen/clyrics")
  5468. (synopsis "Extensible lyrics fetcher")
  5469. (description
  5470. "Clyrics is an extensible command-line tool to fetch the lyrics of songs.
  5471. It can be used in daemon mode along with the Music-on-Console (MOC) and cmus
  5472. console music players.")
  5473. (license license:gpl3+)))
  5474. (define-public demlo
  5475. (let ((commit "fe9ec4c8ac2fa995ec18e6ac86d50d46df06ec01")
  5476. (revision "0"))
  5477. (package
  5478. (name "demlo")
  5479. (version (git-version "3.8" revision commit))
  5480. (source
  5481. (origin
  5482. (method git-fetch)
  5483. (uri (git-reference
  5484. (url
  5485. "https://gitlab.com/ambrevar/demlo")
  5486. (commit commit)))
  5487. (file-name (git-file-name name version))
  5488. (sha256
  5489. (base32
  5490. "1afkbqhzn6da7zaf5ab7dvyqj1izqhzprwfb4hw448fllda9bdvk"))))
  5491. (build-system go-build-system)
  5492. (native-inputs
  5493. `(("lua" ,lua)
  5494. ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
  5495. ("go-github-com-mattn-go-colorable" ,go-github-com-mattn-go-colorable)
  5496. ("go-github-com-aarzilli-golua" ,go-github-com-aarzilli-golua)
  5497. ("go-gitlab-com-ambrevar-damerau" ,go-gitlab-com-ambrevar-damerau)
  5498. ("go-gitlab-com-ambrevar-golua-unicode" ,go-gitlab-com-ambrevar-golua-unicode)
  5499. ("go-github-com-mgutz-ansi" ,go-github-com-mgutz-ansi)
  5500. ("go-github-com-michiwend-gomusicbrainz" ,go-github-com-michiwend-gomusicbrainz)
  5501. ("go-github-com-stevedonovan-luar" ,go-github-com-stevedonovan-luar)
  5502. ("go-github-com-wtolson-go-taglib" ,go-github-com-wtolson-go-taglib)
  5503. ("go-github-com-yookoala-realpath" ,go-github-com-yookoala-realpath)))
  5504. (inputs
  5505. `(("chromaprint" ,chromaprint)
  5506. ("ffmpeg" ,ffmpeg)))
  5507. (arguments
  5508. `(#:import-path "gitlab.com/ambrevar/demlo"
  5509. #:phases
  5510. (modify-phases %standard-phases
  5511. (add-after 'install 'wrap-program
  5512. (lambda* (#:key inputs outputs #:allow-other-keys)
  5513. (let ((out (assoc-ref outputs "out"))
  5514. (ffmpeg (assoc-ref inputs "ffmpeg"))
  5515. (chromaprint (assoc-ref inputs "chromaprint")))
  5516. (wrap-program (string-append out "/bin/demlo")
  5517. `("XDG_DATA_DIRS" ":" prefix (,out))
  5518. `("PATH" ":" prefix
  5519. ,(map (lambda (dir)
  5520. (string-append dir "/bin:"
  5521. dir "/sbin"))
  5522. (list ffmpeg chromaprint))))
  5523. #t)))
  5524. (add-after 'install 'install-scripts
  5525. (lambda* (#:key outputs #:allow-other-keys)
  5526. (let* ((out (assoc-ref outputs "out"))
  5527. (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
  5528. (xdg-data-dirs (string-append out "/demlo")))
  5529. (copy-recursively (string-append root "/actions")
  5530. (string-append xdg-data-dirs "/actions"))
  5531. (copy-recursively (string-append root "/scripts")
  5532. (string-append xdg-data-dirs "/scripts"))
  5533. (install-file (string-append root "/config.lua") xdg-data-dirs)
  5534. ;; TODO: Test fish completion.
  5535. (install-file (string-append root "/completion/demlo.fish")
  5536. (string-append out "/share/fish/vendor_completions.d"))
  5537. #t))))))
  5538. (home-page "https://gitlab.com/ambrevar/demlo")
  5539. (synopsis "Dynamic and extensible music library organizer")
  5540. (description "Demlo is a music library organizer. It can encode, fix
  5541. case, change folder hierarchy according to tags or file properties, tag from
  5542. an online database, copy covers while ignoring duplicates or those below a
  5543. quality threshold, and much more. It makes it possible to manage your
  5544. libraries uniformly and dynamically. You can write your own rules to fit your
  5545. needs best.
  5546. Demlo can address any of these recurring music library issues (and much more):
  5547. @itemize
  5548. @item Fix the lack of folder structure.
  5549. @item Normalize tags, fix their case, chose which tags to keep and which to
  5550. discard.
  5551. @item Handle lossy and lossless audio differently.
  5552. @item Handle mp3 id3tags hell...
  5553. @item Handle multiple covers, whether embedded and/or external, resize covers,
  5554. discard bad quality ones.
  5555. @end itemize\n")
  5556. (license license:expat))))
  5557. (define-public fmit
  5558. (package
  5559. (name "fmit")
  5560. (version "1.2.14")
  5561. (source (origin
  5562. (method git-fetch)
  5563. (uri (git-reference
  5564. (url "https://github.com/gillesdegottex/fmit/")
  5565. (commit (string-append "v" version))))
  5566. (file-name (git-file-name name version))
  5567. (sha256
  5568. (base32
  5569. "1q062pfwz2vr9hbfn29fv54ip3jqfd9r99nhpr8w7mn1csy38azx"))))
  5570. (build-system gnu-build-system)
  5571. (arguments
  5572. '(#:phases
  5573. (modify-phases %standard-phases
  5574. (delete 'configure)
  5575. (add-before 'build 'qmake
  5576. (lambda _
  5577. (let ((out (assoc-ref %outputs "out")))
  5578. (invoke "qmake"
  5579. "fmit.pro"
  5580. (string-append "PREFIX=" out)
  5581. (string-append "PREFIXSHORTCUT=" out)
  5582. "CONFIG+=acs_qt acs_alsa acs_jack acs_portaudio"))))
  5583. (add-after 'install 'wrap-executable
  5584. (lambda* (#:key inputs outputs #:allow-other-keys)
  5585. (let ((out (assoc-ref outputs "out")))
  5586. (wrap-program (string-append out "/bin/fmit")
  5587. `("QT_PLUGIN_PATH" ":" prefix
  5588. ,(map (lambda (label)
  5589. (string-append (assoc-ref inputs label)
  5590. "/lib/qt5/plugins"))
  5591. '("qtbase" "qtmultimedia" "qtsvg")))
  5592. `("QML2_IMPORT_PATH" ":" prefix
  5593. ,(map (lambda (label)
  5594. (string-append (assoc-ref inputs label)
  5595. "/lib/qt5/qml"))
  5596. '("qtmultimedia"))))
  5597. #t))))))
  5598. (inputs
  5599. `(("alsa-lib" ,alsa-lib)
  5600. ("fftw" ,fftw)
  5601. ("jack" ,jack-1)
  5602. ("portaudio" ,portaudio)
  5603. ("qtbase" ,qtbase-5)
  5604. ("qtmultimedia" ,qtmultimedia)
  5605. ("qtsvg" ,qtsvg)))
  5606. (native-inputs
  5607. `(("gettext" ,gettext-minimal)
  5608. ("hicolor-icon-theme" ,hicolor-icon-theme)
  5609. ("itstool" ,itstool)
  5610. ("qttools" ,qttools)))
  5611. (synopsis "Musical instrument tuner")
  5612. (description "FMIT is a graphical utility for tuning musical instruments,
  5613. with error and volume history, and advanced features.")
  5614. (home-page "https://gillesdegottex.github.io/fmit/")
  5615. ;; Most of the code is under GPL2+, but some abstract or helper classes
  5616. ;; are under LGPL2.1.
  5617. (license (list license:gpl2+ license:lgpl2.1))))
  5618. (define-public mloop
  5619. (let ((commit "adebff98b0b4dc5872a03acb82e89c77cb29c127")
  5620. (revision "0"))
  5621. (package
  5622. (name "mloop")
  5623. (version (git-version "0.0.1" revision commit))
  5624. (source (origin
  5625. (method git-fetch)
  5626. (uri (git-reference
  5627. (url "http://git.fuzzle.org/mloop")
  5628. (commit commit)))
  5629. (file-name (git-file-name name version))
  5630. (sha256
  5631. (base32
  5632. "175gxvg5slq0bllcx1c381rjlq3xpxww8c3kpiw5i2kfr4m52myz"))))
  5633. (build-system waf-build-system)
  5634. (arguments
  5635. `(#:python ,python-2
  5636. #:tests? #f)) ; no "check" target
  5637. (inputs
  5638. `(("jack" ,jack-1)
  5639. ("ncurses" ,ncurses)))
  5640. (native-inputs
  5641. `(("pkg-config" ,pkg-config)))
  5642. (home-page "https://fuzzle.org/~petern/mloop.html")
  5643. (synopsis "Live MIDI looper")
  5644. (description "mloop is a live MIDI looping system, using jack-midi.
  5645. Loops are recorded, optionally with beat quantization, and can then be played
  5646. back, either once or looping. A 'note cache' system is implemented to
  5647. remember which notes are pressed and their velocities. This allows for a loop
  5648. to start off with the currently pressed notes, making seamless loops much
  5649. easier to perform. Features include:
  5650. @itemize
  5651. @item Quantisation; end a loop on a beat exactly.
  5652. @item Delayed recording; wait for a MIDI event before starting a loop record.
  5653. @item Adjust tempo; Playback speed of loops can be adjusted on the fly.
  5654. @end itemize\n")
  5655. (license license:gpl2))))
  5656. (define-public pragha
  5657. (package
  5658. (name "pragha")
  5659. (version "1.3.4")
  5660. (source (origin
  5661. (method url-fetch)
  5662. (uri (string-append "https://github.com/pragha-music-player/pragha/"
  5663. "releases/download/v" version "/pragha-" version
  5664. ".tar.bz2"))
  5665. (sha256
  5666. (base32
  5667. "19kbhq99bkimx3aqrdzln0vlr4slkpx6kq66j731jvqyq76nlkp5"))))
  5668. (build-system glib-or-gtk-build-system)
  5669. (native-inputs
  5670. `(("intltool" ,intltool)
  5671. ("pkg-config" ,pkg-config)))
  5672. (inputs
  5673. `(("glib" ,glib)
  5674. ("grilo" ,grilo)
  5675. ("gstreamer" ,gstreamer)
  5676. ("gst-plugins-base" ,gst-plugins-base)
  5677. ("gst-plugins-good" ,gst-plugins-good)
  5678. ("gtk+" ,gtk+)
  5679. ("libcddb" ,libcddb)
  5680. ("libcdio" ,libcdio)
  5681. ("libcdio-paranoia" ,libcdio-paranoia)
  5682. ("libgudev" ,libgudev)
  5683. ("libnotify" ,libnotify)
  5684. ("libpeas" ,libpeas)
  5685. ("libsoup" ,libsoup)
  5686. ("sqlite" ,sqlite)
  5687. ("taglib" ,taglib)))
  5688. (arguments
  5689. `(#:phases
  5690. (modify-phases %standard-phases
  5691. (add-after 'install 'wrap-program
  5692. (lambda* (#:key inputs outputs #:allow-other-keys)
  5693. (let ((out (assoc-ref outputs "out"))
  5694. (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
  5695. (wrap-program (string-append out "/bin/pragha")
  5696. `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
  5697. #t))))))
  5698. (home-page "https://pragha-music-player.github.io")
  5699. (synopsis "Music player")
  5700. (description "Pragha is a lightweight music player based on Gtk and
  5701. sqlite. It is constructed to be fast, light, and simultaneously tries to be
  5702. complete without obstructing your daily work.")
  5703. (license license:gpl3+)))
  5704. (define-public playerctl
  5705. (package
  5706. (name "playerctl")
  5707. (version "2.2.1")
  5708. (source (origin
  5709. (method git-fetch)
  5710. (uri (git-reference
  5711. (url "https://github.com/altdesktop/playerctl")
  5712. (commit (string-append "v" version))))
  5713. (file-name (git-file-name name version))
  5714. (sha256
  5715. (base32
  5716. "17hi33sw3663qz5v54bqqil31sgkrlxkb2l5bgqk87pac6x2wnbz"))))
  5717. (build-system meson-build-system)
  5718. (arguments
  5719. `(#:configure-flags '("-Dintrospection=false" "-Dgtk-doc=false")))
  5720. (inputs `(("python-pygobject" ,python-pygobject)))
  5721. (native-inputs
  5722. `(("glib:bin" ,glib "bin")
  5723. ("pkg-config" ,pkg-config)))
  5724. (synopsis "Control MPRIS-supporting media player applications")
  5725. (description
  5726. "Playerctl is a command-line utility and library for controlling media
  5727. players that implement the MPRIS D-Bus Interface Specification. Playerctl
  5728. makes it easy to bind player actions, such as play and pause, to media keys.
  5729. You can also get metadata about the playing track such as the artist and title
  5730. for integration into status line generators or other command-line tools.")
  5731. (home-page "https://github.com/altdesktop/playerctl")
  5732. (license license:lgpl3+)))
  5733. (define-public artyfx
  5734. (package
  5735. (name "artyfx")
  5736. (version "1.3.1")
  5737. (source (origin
  5738. (method git-fetch)
  5739. (uri (git-reference
  5740. (url
  5741. "https://github.com/openAVproductions/openAV-ArtyFX")
  5742. (commit (string-append "release-" version))))
  5743. (file-name (git-file-name name version))
  5744. (sha256
  5745. (base32
  5746. "0cxikdnxgjk5gp6kmml4dx2jy2cy4x0c837h7bwraj2pfz0nfgqq"))))
  5747. (build-system cmake-build-system)
  5748. (arguments
  5749. `(#:tests? #f ; no tests included
  5750. #:phases
  5751. (modify-phases %standard-phases
  5752. (add-after 'unpack 'remove-architecture-specific-flags
  5753. (lambda _
  5754. (substitute* "CMakeLists.txt"
  5755. (("-msse2 -mfpmath=sse") ""))
  5756. #t)))))
  5757. (inputs
  5758. `(("cairo" ,cairo)
  5759. ("libsndfile" ,libsndfile)))
  5760. (native-inputs
  5761. `(("pkg-config" ,pkg-config)
  5762. ("lv2" ,lv2)))
  5763. (home-page "http://openavproductions.com/artyfx/")
  5764. (synopsis "Audio effect LV2 plugin bundle")
  5765. (description "ArtyFX is an LV2 plugin bundle of artistic real-time audio
  5766. effects. It contains a bitcrusher, delay, distortion, equalizer, compressor,
  5767. and reverb.")
  5768. (license license:gpl2+)))
  5769. (define-public lsp-plugins
  5770. (package
  5771. (name "lsp-plugins")
  5772. (version "1.1.26")
  5773. (source
  5774. (origin
  5775. (method git-fetch)
  5776. (uri (git-reference
  5777. (url "https://github.com/sadko4u/lsp-plugins")
  5778. (commit (string-append "lsp-plugins-" version))))
  5779. (file-name (git-file-name name version))
  5780. (sha256
  5781. (base32 "1apw8zh3a3il4smkjji6bih4vbsymj0hjs10fgkrd4nazqkjvgyd"))))
  5782. (build-system gnu-build-system)
  5783. (arguments
  5784. `(#:make-flags
  5785. (list
  5786. (string-append "CC=" ,(cc-for-target))
  5787. "BUILD_MODULES=\"lv2 ladspa jack\"" "VST_UI=0"
  5788. (string-append "PREFIX=" (assoc-ref %outputs "out"))
  5789. (string-append "ETC_PATH=" (assoc-ref %outputs "out") "/etc"))
  5790. #:phases
  5791. (modify-phases %standard-phases
  5792. (delete 'configure)) ; no configure script
  5793. #:test-target "test"))
  5794. (inputs
  5795. `(("cairo" ,cairo)
  5796. ("hicolor-icon-theme" ,hicolor-icon-theme)
  5797. ("jack" ,jack-1)
  5798. ("ladspa" ,ladspa)
  5799. ("libsndfile" ,libsndfile)
  5800. ("lv2" ,lv2)
  5801. ("mesa" ,mesa)))
  5802. (native-inputs
  5803. `(("pkg-config" ,pkg-config)))
  5804. (synopsis "Audio plugin collection")
  5805. (description "LSP (Linux Studio Plugins) is a collection of audio
  5806. plugins available as LADSPA/LV2 plugins and as standalone JACK
  5807. applications.")
  5808. (home-page "https://lsp-plug.in/")
  5809. (license license:lgpl3)))
  5810. (define-public sherlock-lv2
  5811. (package
  5812. (name "sherlock-lv2")
  5813. (version "0.24.0")
  5814. (source
  5815. (origin
  5816. (method url-fetch)
  5817. (uri (string-append
  5818. "https://git.open-music-kontrollers.ch/lv2/"
  5819. "sherlock.lv2/snapshot/sherlock.lv2-"
  5820. version ".tar.xz"))
  5821. (sha256
  5822. (base32
  5823. "08gjfx7vrsx9zvj04j8cr3vscxmq6jr2hbdi6dfgp1l1dnnpxsgq"))))
  5824. (build-system meson-build-system)
  5825. (inputs
  5826. `(("glu" ,glu)
  5827. ("libx11" ,libx11)
  5828. ("mesa" ,mesa)
  5829. ("sratom" ,sratom)))
  5830. (native-inputs
  5831. `(("flex" ,flex)
  5832. ("pkg-config" ,pkg-config)))
  5833. (synopsis "Investigative LV2 plugin bundle")
  5834. (description "The Sherlock plugin bundle contains LV2 plugins for
  5835. visualizing LV2 atom, MIDI and OSC events. They can be used for monitoring
  5836. and debugging of event signal flows inside plugin graphs.")
  5837. (home-page "https://open-music-kontrollers.ch/lv2/sherlock/")
  5838. (license license:artistic2.0)))
  5839. (define-public foo-yc20
  5840. (package
  5841. (name "foo-yc20")
  5842. (version "1.3.0")
  5843. (source
  5844. (origin
  5845. (method url-fetch)
  5846. (uri (string-append "https://github.com/sampov2/foo-yc20/releases/download/"
  5847. version "/foo-yc20-" version ".tar.bz2"))
  5848. (sha256
  5849. (base32
  5850. "1drzfyr7mzb58pdv0gsqkg6ds6kbgp6g25rrv1yya1611cljgvjh"))))
  5851. (build-system gnu-build-system)
  5852. (arguments
  5853. `(#:make-flags
  5854. (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  5855. #:tests? #f ; no automated test
  5856. #:phases
  5857. (modify-phases %standard-phases
  5858. (replace 'configure
  5859. (lambda _
  5860. (substitute* "Makefile"
  5861. (("-mtune=native") "")
  5862. (("-march=native") ""))
  5863. #t)))))
  5864. (inputs
  5865. `(("jack" ,jack-1)
  5866. ("lv2" ,lv2)
  5867. ("cairo" ,cairo)
  5868. ("gtk" ,gtk+-2)))
  5869. (native-inputs
  5870. `(("faust" ,faust)
  5871. ("pkg-config" ,pkg-config)))
  5872. (home-page "https://foo-yc20.codeforcode.com/")
  5873. (synopsis "Implementation of Yamaha YC-20 combo organ from 1969")
  5874. (description "This is a Faust implementation of a 1969 designed Yamaha
  5875. combo organ, the YC-20. This package provides an LV2 plugin and a standalone
  5876. version. Processing for the organ is based on original schematics and
  5877. measurements from a working specimen. This instrument simulates the circutry
  5878. as a whole to realisticly reproduce the features and flaws of the real deal.")
  5879. ;; Note that after 1.3.0 the license was changed.
  5880. (license license:gpl3+)))
  5881. (define-public spectacle-analyzer
  5882. (package
  5883. (name "spectacle-analyzer")
  5884. (version "1.0")
  5885. (source
  5886. (origin
  5887. (method git-fetch)
  5888. (uri (git-reference
  5889. (url "https://github.com/jpcima/spectacle")
  5890. (commit (string-append "v" version))
  5891. ;; Bundles a specific commit of the DISTRHO plugin framework.
  5892. (recursive? #t)))
  5893. (file-name (git-file-name name version))
  5894. (sha256
  5895. (base32
  5896. "0xiqa6z8g68lcvnwhws4j7c4py35r9d20cirrili7ycyp3a6149a"))))
  5897. (build-system gnu-build-system)
  5898. (arguments
  5899. `(#:tests? #f ; no check target
  5900. #:make-flags
  5901. (list "CC=gcc"
  5902. (string-append "PREFIX=" (assoc-ref %outputs "out")))
  5903. #:phases
  5904. (modify-phases %standard-phases
  5905. (delete 'configure))))
  5906. (native-inputs
  5907. `(("pkg-config" ,pkg-config)
  5908. ("xxd" ,xxd)))
  5909. (inputs
  5910. `(("cairo" ,cairo)
  5911. ("fftw" ,fftw)
  5912. ("fftwf" ,fftwf)
  5913. ("jack" ,jack-1)
  5914. ("lv2" ,lv2)
  5915. ("mesa" ,mesa)))
  5916. (synopsis "Realtime graphical spectrum analyzer")
  5917. (description "Spectacle is a real-time spectral analyzer using the
  5918. short-time Fourier transform, available as LV2 audio plugin and JACK client.")
  5919. (home-page "https://github.com/jpcima/spectacle")
  5920. ;; The project is licensed under the ISC license, and files in
  5921. ;; sources/plugin carry the Expat license.
  5922. (license (list license:isc license:expat))))
  5923. (define-public x42-plugins
  5924. (package
  5925. (name "x42-plugins")
  5926. (version "20200714")
  5927. (source
  5928. (origin
  5929. (method url-fetch)
  5930. (uri
  5931. (string-append "https://gareus.org/misc/x42-plugins/x42-plugins-"
  5932. version ".tar.xz"))
  5933. (sha256
  5934. (base32 "1av05ykph8x67018hm9zfgh1vk0zi39mvrsxkj6bm4hkarxf0vvl"))))
  5935. (build-system gnu-build-system)
  5936. (arguments
  5937. `(#:tests? #f ; no "check" target
  5938. #:make-flags
  5939. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  5940. "LIBZITACONVOLVER=-lzita-convolver"
  5941. (string-append "FONTFILE="
  5942. (assoc-ref %build-inputs "font-dejavu")
  5943. "/share/fonts/truetype/DejaVuSans-Bold.ttf"))
  5944. #:phases
  5945. (modify-phases %standard-phases
  5946. (add-before 'build 'set-CC-variable
  5947. (lambda _
  5948. (setenv "CC" "gcc")
  5949. #t))
  5950. (delete 'configure))))
  5951. (inputs
  5952. `(("cairo" ,cairo)
  5953. ("fftwf" ,fftwf)
  5954. ("ftgl" ,ftgl)
  5955. ("glib" ,glib)
  5956. ("glu" ,glu)
  5957. ("hicolor-icon-theme" ,hicolor-icon-theme)
  5958. ("jack" ,jack-1)
  5959. ("libltc" ,libltc)
  5960. ("libsamplerate" ,libsamplerate)
  5961. ("libx11" ,libx11)
  5962. ("pango" ,pango)
  5963. ("zita-convolver" ,zita-convolver)))
  5964. (native-inputs
  5965. `(("help2man" ,help2man)
  5966. ("liblo" ,liblo)
  5967. ("lv2" ,lv2)
  5968. ("font-dejavu" ,font-dejavu)
  5969. ("pkg-config" ,pkg-config)))
  5970. (synopsis "Collection of LV2/JACK audio/MIDI processing plugins")
  5971. (description "x42-plugins is a collection of over 80 cross-platform LV2
  5972. audio and MIDI plugins that can also run as standalone JACK applications.")
  5973. (home-page "https://x42-plugins.com/x42/")
  5974. (license license:gpl2+)))
  5975. (define-public zam-plugins
  5976. (package
  5977. (name "zam-plugins")
  5978. (version "3.13")
  5979. (source
  5980. (origin
  5981. (method git-fetch)
  5982. (uri
  5983. (git-reference
  5984. (url "https://github.com/zamaudio/zam-plugins")
  5985. (commit version)
  5986. ;; Recursive to fetch the DISTRHO plugin framework. This
  5987. ;; framework is intended to be included in the sources
  5988. ;; and not to be used as a library.
  5989. (recursive? #t)))
  5990. (file-name (git-file-name name version))
  5991. (sha256
  5992. (base32 "02blg0iqich4vx5z1ahj6avkh83yqszdiq83p9jd5qwm0i4llqjq"))))
  5993. (build-system gnu-build-system)
  5994. (arguments
  5995. `(#:tests? #f ;no "check" target
  5996. #:make-flags
  5997. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  5998. "HAVE_ZITA_CONVOLVER=true")
  5999. #:phases
  6000. (modify-phases %standard-phases
  6001. (add-before 'build 'set-CC-variable
  6002. (lambda _
  6003. (setenv "CC" "gcc") #t))
  6004. (delete 'configure))))
  6005. (inputs
  6006. `(("fftwf" ,fftwf)
  6007. ("jack" ,jack-1) ;for the standalone JACK application
  6008. ("liblo" ,liblo)
  6009. ("libsamplerate" ,libsamplerate)
  6010. ("mesa" ,mesa)
  6011. ("zita-convolver" ,zita-convolver)))
  6012. (native-inputs
  6013. `(("ladspa" ,ladspa)
  6014. ("lv2" ,lv2)
  6015. ("pkg-config" ,pkg-config)))
  6016. (synopsis "Collection of audio processing plugins")
  6017. (description
  6018. "Zam plugins is a collection of audio processing plugins in the LADSPA,
  6019. LV2 and VST2 formats, as well as standalone JACK versions. The collection
  6020. includes ZaMaximX2, ZamAutoSat, ZamComp, ZamCompX2, ZamEQ2, ZamGEQ31,
  6021. ZamHeadX2, ZamPhono, ZamGate, ZamGateX2, ZamTube, ZamDelay, ZamDynamicEQ,
  6022. ZaMultiComp, ZaMultiCompX2 and ZamSynth.")
  6023. (home-page "http://www.zamaudio.com/?p=976")
  6024. (license license:gpl2+)))
  6025. (define-public geonkick
  6026. (package
  6027. (name "geonkick")
  6028. (version "2.7.0")
  6029. (source
  6030. (origin
  6031. (method git-fetch)
  6032. (uri (git-reference
  6033. (url "https://gitlab.com/iurie-sw/geonkick")
  6034. (commit (string-append "v" version))))
  6035. (file-name (git-file-name name version))
  6036. (sha256
  6037. (base32 "0w1mvqm46qdwldcl81svaykwii4wvx7mcr57kwvnj0iv2qrc891i"))))
  6038. (build-system cmake-build-system)
  6039. (arguments
  6040. `(#:tests? #f ;no tests included
  6041. #:configure-flags
  6042. (list (string-append "-DGKICK_REDKITE_SDK_PATH="
  6043. (assoc-ref %build-inputs "redkite"))
  6044. (string-append "-DCMAKE_INSTALL_PREFIX="
  6045. (assoc-ref %outputs "out")))))
  6046. (inputs
  6047. `(("hicolor-icon-theme" ,hicolor-icon-theme)
  6048. ("jack" ,jack-1) ;for the standalone JACK application
  6049. ("libsndfile" ,libsndfile)
  6050. ("libx11" ,libx11)
  6051. ("redkite" ,redkite)
  6052. ("rapidjson" ,rapidjson)))
  6053. (native-inputs
  6054. `(("lv2" ,lv2)
  6055. ;; Fails with default gcc (#include <filesystem> not found).
  6056. ("gcc" ,gcc-9)
  6057. ("pkg-config" ,pkg-config)
  6058. ("sord" ,sord)))
  6059. (synopsis "Percussion synthesizer")
  6060. (description "Geonkick is a synthesizer that can synthesize elements
  6061. of percussion such as kicks, snares, hit-hats, shakers, claps and sticks.
  6062. It can also play and mix samples.")
  6063. (home-page "https://gitlab.com/iurie-sw/geonkick")
  6064. (license license:gpl3+)))
  6065. (define-public mamba
  6066. (package
  6067. (name "mamba")
  6068. (version "2.1")
  6069. (source
  6070. (origin
  6071. (method git-fetch)
  6072. (uri
  6073. (git-reference
  6074. (url "https://github.com/brummer10/Mamba")
  6075. (commit (string-append "v" version))
  6076. (recursive? #t))) ; references specific commit of libxputty
  6077. (file-name (git-file-name name version))
  6078. (sha256
  6079. (base32
  6080. "1bq6sqsij3cdwcsj3wpsnivi4c7jl4l5gwfywhqnib70v60smdja"))))
  6081. (build-system gnu-build-system)
  6082. (arguments
  6083. `(#:tests? #f ; no "check" target
  6084. #:make-flags
  6085. (list (string-append "PREFIX="
  6086. (assoc-ref %outputs "out"))
  6087. (string-append "CC=" ,(cc-for-target)))
  6088. #:phases
  6089. (modify-phases %standard-phases
  6090. (delete 'configure))))
  6091. (inputs
  6092. `(("alsa-lib" ,alsa-lib)
  6093. ("cairo" ,cairo)
  6094. ("fluidsynth" ,fluidsynth)
  6095. ("jack" ,jack-1)
  6096. ("liblo" ,liblo)
  6097. ("libsigc++" ,libsigc++)
  6098. ("libsmf" ,libsmf)
  6099. ("libx11" ,libx11)))
  6100. (native-inputs
  6101. `(("pkg-config" ,pkg-config)))
  6102. (home-page "https://github.com/brummer10/Mamba")
  6103. (synopsis "Virtual MIDI keyboard and MIDI file player/recorder for JACK")
  6104. (description "Mamba is a virtual MIDI keyboard and MIDI file
  6105. player/recorder for the JACK Audio Connection Kit. It comes with predefined
  6106. keymaps for QWERTZ, QWERTY and AZERTY keyboards and also allows custom
  6107. ones.")
  6108. (license license:bsd-0)))
  6109. (define-public dpf-plugins
  6110. (package
  6111. (name "dpf-plugins")
  6112. (version "1.3")
  6113. (source
  6114. (origin
  6115. (method git-fetch)
  6116. (uri
  6117. (git-reference
  6118. (url "https://github.com/DISTRHO/DPF-Plugins")
  6119. (commit (string-append "v" version))))
  6120. (file-name (git-file-name name version))
  6121. (sha256
  6122. (base32
  6123. "1hsfmpv3kvpiwk8nfw9xpaipzy0n27i83y2v1yr93lznwm5rqrbs"))))
  6124. (build-system gnu-build-system)
  6125. (arguments
  6126. `(#:tests? #f ; no "check" target
  6127. #:make-flags
  6128. (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  6129. #:phases
  6130. (modify-phases %standard-phases
  6131. (add-before 'build 'set-CC-variable
  6132. (lambda _ (setenv "CC" "gcc") #t))
  6133. (delete 'configure))))
  6134. (inputs
  6135. `(("cairo" ,cairo)
  6136. ("liblo" ,liblo) ; for dssi plugins
  6137. ("jack" ,jack-1) ; for standalone applications
  6138. ("mesa" ,mesa)))
  6139. (native-inputs
  6140. `(("pkg-config" ,pkg-config)
  6141. ("dssi" ,dssi)
  6142. ("lv2" ,lv2)))
  6143. (home-page "https://github.com/DISTRHO/DPF-Plugins")
  6144. (synopsis "Audio plugin collection")
  6145. (description "Collection of audio plugins built with the DISTRHO Plugin
  6146. Framework (DPF) available in LADSPA, DSSI, LV2 and VST2 formats. This
  6147. package includes the following plugins: glBars, Kars, Max-Gen examples
  6148. (MaBitcrush, MaFreeverb, MaGigaverb, MaPitchshift), Mini-Series (3BandEQ,
  6149. 3BandSplitter, PingPongPan), ndc-Plugs (Amplitude Imposer, Cycle Shifter,
  6150. Soul Force), MVerb, Nekobi, and ProM.")
  6151. ;; This package consists of several plugins refactored to use the
  6152. ;; DISTHRO Plugin Framework (DPF). Different copyrights and licenses
  6153. ;; apply to different plugins. The root LICENSE file has a table with
  6154. ;; license information for each plugin and paths to each license
  6155. (license (list license:isc license:gpl3 license:lgpl3 license:expat license:gpl2))))
  6156. (define-public avldrums-lv2
  6157. (package
  6158. (name "avldrums-lv2")
  6159. (version "0.4.2")
  6160. (source
  6161. (origin
  6162. (method git-fetch)
  6163. (uri (git-reference
  6164. (url "https://github.com/x42/avldrums.lv2")
  6165. (commit (string-append "v" version))
  6166. ;; This plugin expects the robtk submodule's source files to be
  6167. ;; there in order to build.
  6168. (recursive? #t)))
  6169. (file-name (git-file-name name version))
  6170. (sha256
  6171. (base32 "14gka5g7va30gm1hn0cas4vvb8s764rfvzcxm67ww86hf54cpnig"))))
  6172. (build-system gnu-build-system)
  6173. (arguments
  6174. `(#:tests? #f ; no "check" target
  6175. #:make-flags
  6176. (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
  6177. #:phases
  6178. (modify-phases %standard-phases
  6179. (delete 'configure) ; no configure script
  6180. (add-before 'build 'set-CC-variable
  6181. (lambda _
  6182. (setenv "CC" "gcc"))))))
  6183. (inputs
  6184. `(("cairo" ,cairo)
  6185. ("dssi" ,dssi)
  6186. ("glu" ,glu)
  6187. ("mesa" ,mesa)
  6188. ("pango" ,pango)))
  6189. (native-inputs
  6190. `(("pkg-config" ,pkg-config)
  6191. ("lv2" ,lv2)))
  6192. (home-page "https://x42-plugins.com/x42/x42-avldrums")
  6193. (synopsis "Drum sample player LV2 plugin dedicated to the AVLinux Drumkits")
  6194. (description "AVLdrums is a drum sample player LV2 plugin dedicated to Glen
  6195. MacArthur's AVLdrums. This plugin provides a convenient way to sequence and mix
  6196. MIDI drums and comes as two separate drumkits: Black Pearl and Red Zeppelin.")
  6197. (license license:gpl2+)))
  6198. (define-public helm
  6199. (package
  6200. (name "helm")
  6201. (version "0.9.0")
  6202. (source
  6203. (origin
  6204. (method git-fetch)
  6205. (uri
  6206. (git-reference
  6207. (url "https://github.com/mtytel/helm")
  6208. (commit (string-append "v" version))))
  6209. (file-name (git-file-name name version))
  6210. (sha256
  6211. (base32
  6212. "17ys2vvhncx9i3ydg3xwgz1d3gqv4yr5mqi7vr0i0ca6nad6x3d4"))))
  6213. (build-system gnu-build-system)
  6214. (arguments
  6215. `(#:tests? #f ; no "check" target
  6216. #:make-flags
  6217. (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))
  6218. "lv2" "standalone")
  6219. #:phases
  6220. (modify-phases %standard-phases
  6221. (add-after 'unpack 'include-pnglib-code-and-remove-usr-from-paths
  6222. (lambda _
  6223. (substitute* "standalone/builds/linux/Makefile"
  6224. (("JUCE_INCLUDE_PNGLIB_CODE=0")
  6225. "JUCE_INCLUDE_PNGLIB_CODE=1"))
  6226. (substitute* "builds/linux/LV2/Makefile"
  6227. (("JUCE_INCLUDE_PNGLIB_CODE=0")
  6228. "JUCE_INCLUDE_PNGLIB_CODE=1"))
  6229. (substitute* "Makefile"
  6230. (("/usr") ""))
  6231. #t))
  6232. (add-before 'reset-gzip-timestamps 'make-gz-files-writable
  6233. (lambda* (#:key outputs #:allow-other-keys)
  6234. (for-each make-file-writable
  6235. (find-files (string-append (assoc-ref outputs "out"))
  6236. ".*\\.gz$"))
  6237. #t))
  6238. (delete 'configure))))
  6239. (inputs
  6240. `(("alsa-lib" ,alsa-lib)
  6241. ("curl" ,curl)
  6242. ("freetype2" ,freetype)
  6243. ("hicolor-icon-theme" ,hicolor-icon-theme)
  6244. ("libxcursor" ,libxcursor)
  6245. ("libxinerama" ,libxinerama)
  6246. ("jack" ,jack-1)
  6247. ("mesa" ,mesa)))
  6248. (native-inputs
  6249. `(("pkg-config" ,pkg-config)
  6250. ("lv2" ,lv2)))
  6251. (home-page "https://tytel.org/helm/")
  6252. (synopsis "Polyphonic synth with lots of modulation")
  6253. (description "Helm is a cross-platform polyphonic synthesizer available standalone
  6254. and as an LV2 plugin.")
  6255. (license license:gpl3+)))
  6256. (define-public zrythm
  6257. (package
  6258. ;; Zrythm contains trademarks and comes with a trademark policy found in
  6259. ;; TRADMARKS.md inside the release distribution. The trademark policy
  6260. ;; allows verbatim re-distribution, and it also allows FSF-approved
  6261. ;; distros to make necessary changes to integrate the software into the
  6262. ;; distribution.
  6263. (name "zrythm")
  6264. (version "1.0.0-alpha.12.0.1")
  6265. (source
  6266. (origin
  6267. (method url-fetch)
  6268. (uri (string-append "https://www.zrythm.org/releases/zrythm-"
  6269. version ".tar.xz"))
  6270. (sha256
  6271. (base32
  6272. "1si4n8rdg0a3frlbj6yqpyzr4f20v3cpl4m6kv0yf7r25psyl5pk"))))
  6273. (build-system meson-build-system)
  6274. (arguments
  6275. `(#:glib-or-gtk? #t
  6276. #:configure-flags
  6277. `("-Dtests=true"
  6278. "-Dmanpage=true"
  6279. "-Ddseg_font=false"
  6280. "-Dgraphviz=enabled" ; for exporting routing graphs
  6281. "-Dguile=enabled" ; for Guile scripting
  6282. "-Djack=enabled" ; for JACK audio/MIDI backend
  6283. "-Drtmidi=enabled" ; for RtMidi backend (ALSA sequencer)
  6284. "-Dsdl=enabled"))) ; for SDL audio backend (which uses ALSA)
  6285. (inputs
  6286. `(("alsa-lib" ,alsa-lib)
  6287. ("jack" ,jack-1)
  6288. ("font-dseg" ,font-dseg)
  6289. ("fftw" ,fftw)
  6290. ("fftwf" ,fftwf)
  6291. ("gettext" ,gettext-minimal)
  6292. ("glibc" ,glibc)
  6293. ("graphviz" ,graphviz)
  6294. ("gtk+" ,gtk+)
  6295. ("gtksourceview" ,gtksourceview)
  6296. ("guile" ,guile-2.2)
  6297. ("libaudec" ,libaudec)
  6298. ("libcyaml" ,libcyaml)
  6299. ("libsamplerate" ,libsamplerate)
  6300. ("libsndfile" ,libsndfile)
  6301. ("libyaml" ,libyaml)
  6302. ("lilv" ,lilv)
  6303. ("lv2" ,lv2)
  6304. ("pulseaudio" ,pulseaudio)
  6305. ("reproc" ,reproc)
  6306. ("rubberband" ,rubberband)
  6307. ("rtmidi" ,rtmidi)
  6308. ("sdl2" ,sdl2)
  6309. ("xdg-utils" ,xdg-utils)
  6310. ("zstd" ,zstd "lib")))
  6311. (native-inputs
  6312. `(("pkg-config" ,pkg-config)
  6313. ("help2man" ,help2man)
  6314. ("glib" ,glib "bin"))) ; for 'glib-compile-resources'
  6315. (synopsis "Digital audio workstation focusing on usability")
  6316. (description "Zrythm is a digital audio workstation designed to be
  6317. featureful and easy to use. It offers unlimited automation options, LV2
  6318. plugin support, JACK support and chord assistance.")
  6319. (home-page "https://www.zrythm.org")
  6320. (license license:agpl3+)))
  6321. (define-public dragonfly-reverb
  6322. (package
  6323. (name "dragonfly-reverb")
  6324. (version "3.2.1")
  6325. (source
  6326. (origin
  6327. (method git-fetch)
  6328. (uri
  6329. (git-reference
  6330. (url "https://github.com/michaelwillis/dragonfly-reverb")
  6331. (commit version)
  6332. ;; Bundles a specific commit of the DISTRHO plugin framework.
  6333. (recursive? #t)))
  6334. (file-name (git-file-name name version))
  6335. (sha256
  6336. (base32 "0vfm2510shah67k87mdyar4wr4vqwii59y9lqfhwm6blxparkrqa"))))
  6337. (build-system gnu-build-system)
  6338. (arguments
  6339. `(#:tests? #f ; no check target
  6340. #:make-flags (list "CC=gcc")
  6341. #:phases
  6342. (modify-phases %standard-phases
  6343. (delete 'configure) ;no configure target
  6344. (replace 'install ;no install target
  6345. (lambda* (#:key outputs #:allow-other-keys)
  6346. (let* ((out (assoc-ref outputs "out"))
  6347. (bin (string-append out "/bin"))
  6348. (lv2 (string-append out "/lib/lv2")))
  6349. ;; Install LV2.
  6350. (for-each
  6351. (lambda (file)
  6352. (copy-recursively file
  6353. (string-append lv2 "/" (basename file))))
  6354. (find-files "bin" "\\.lv2$" #:directories? #t))
  6355. ;; Install executables.
  6356. (for-each
  6357. (lambda (file)
  6358. (install-file file bin))
  6359. (find-files "bin"
  6360. (lambda (name stat)
  6361. (and
  6362. (equal? (dirname name) "bin")
  6363. (not (string-suffix? ".so" name))
  6364. (not (string-suffix? ".lv2" name))))))
  6365. #t))))))
  6366. (native-inputs
  6367. `(("pkg-config" ,pkg-config)))
  6368. (inputs
  6369. `(("jack" ,jack-1)
  6370. ("libx11" ,libx11)
  6371. ("mesa" ,mesa)))
  6372. (home-page "https://michaelwillis.github.io/dragonfly-reverb/")
  6373. (synopsis "Concert hall reverb and room reverb effects")
  6374. (description
  6375. "Dragonfly Reverb is a bundle of two free audio effects: a concert
  6376. hall reverb and a room reverb. Both are available as LV2 plugins as well
  6377. as JACK standalone applications.")
  6378. (license license:gpl3+)))
  6379. (define-public zplugins
  6380. (package
  6381. (name "zplugins")
  6382. (version "0.1.7")
  6383. (source
  6384. (origin
  6385. (method git-fetch)
  6386. (uri
  6387. (git-reference
  6388. (url "https://git.zrythm.org/zrythm/zplugins")
  6389. (commit (string-append "v" version))))
  6390. (file-name (git-file-name name version))
  6391. (sha256
  6392. (base32
  6393. "1rkm2xajmyik6289b20rp5a5br9f3sh1xk8nb1bs6qpmcrfirgbs"))))
  6394. (build-system meson-build-system)
  6395. (inputs
  6396. `(("guile" ,guile-2.2)
  6397. ("libsndfile" ,libsndfile)
  6398. ("lv2" ,lv2)
  6399. ("ztoolkit-rsvg" ,ztoolkit-rsvg)))
  6400. (native-inputs
  6401. `(("pkg-config" ,pkg-config)))
  6402. (synopsis "Audio plugin collection")
  6403. (description "ZPlugins is a collection of audio DSP plugins intended
  6404. to be bundled with the Zrythm @dfn{digital audio workstation} (DAW).")
  6405. (home-page "https://www.zrythm.org/en/plugins.html")
  6406. (license license:agpl3+)))
  6407. (define-public zlfo
  6408. ;; The "zlfo" package is now included in zplugins
  6409. (deprecated-package "zlfo" zplugins))
  6410. (define-public remid-lv2
  6411. (package
  6412. (name "remid-lv2")
  6413. (version "0.3")
  6414. (source
  6415. (origin
  6416. (method git-fetch)
  6417. (uri (git-reference
  6418. (url "https://github.com/ssj71/reMID.lv2")
  6419. (commit (string-append "v" version))))
  6420. (file-name (git-file-name name version))
  6421. (sha256
  6422. (base32
  6423. "062kriniidsrhzwrf89kfxm9wb0cmgrl07asnlmgil8vcl7gl9y5"))))
  6424. (build-system cmake-build-system)
  6425. (arguments
  6426. `(#:tests? #f)) ; no tests included
  6427. (inputs
  6428. `(("alsa-lib" ,alsa-lib)
  6429. ("glib" ,glib)
  6430. ("jack" ,jack-1)
  6431. ("lv2" ,lv2)))
  6432. (native-inputs
  6433. `(("pkg-config" ,pkg-config)))
  6434. (home-page "https://github.com/ssj71/reMID.lv2")
  6435. (synopsis
  6436. "MIDI-controlled implementation of the SID 6581 chip used in the
  6437. Commodore 64")
  6438. (description
  6439. "The 6581 SID chip is the sound chip used in the Commodore 64 computer.
  6440. reMID is a MIDI implementation of the 6581 SID chip using the reSID library
  6441. to provide a virtual SID-based synthesizer, controllable in real-time via
  6442. MIDI. It includes support for scripted instruments that allow complex sonic
  6443. control of the chip.")
  6444. (license license:gpl2+)))
  6445. (define-public vl1-emulator
  6446. (package
  6447. (name "vl1-emulator")
  6448. (version "1.1.0.0")
  6449. (source
  6450. (origin
  6451. (method git-fetch)
  6452. (uri (git-reference
  6453. (url "https://github.com/linuxmao-org/VL1-emulator")
  6454. (commit (string-append "v" version))
  6455. ;; bundles a specific commit of the DISTRHO plugin framework
  6456. (recursive? #t)))
  6457. (file-name (git-file-name name version))
  6458. (sha256
  6459. (base32
  6460. "1npc86vqma8gk1hawa0lii0r2xmnv846plyl1ci3bdswyrdk5chm"))))
  6461. (build-system gnu-build-system)
  6462. (arguments
  6463. `(#:tests? #f ;no check target
  6464. #:make-flags
  6465. (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
  6466. "CC=gcc")
  6467. #:phases
  6468. (modify-phases %standard-phases
  6469. (delete 'configure)))) ;no configure target
  6470. (inputs
  6471. `(("cairo" ,cairo)
  6472. ("jack" ,jack-1)
  6473. ("mesa" ,mesa)))
  6474. (native-inputs
  6475. `(("pkg-config" ,pkg-config)))
  6476. (home-page "https://github.com/linuxmao-org/VL1-emulator")
  6477. (synopsis "Emulator of Casio VL-Tone VL1")
  6478. (description "The VL1-Emulator is an emulator of Casio VL-Tone VL1,
  6479. based on source code by PolyValens, offered as an LV2 plugin and a
  6480. standalone JACK application.")
  6481. ;; Expat or CC0
  6482. (license (list license:expat license:cc0))))
  6483. (define-public regrader
  6484. (package
  6485. (inherit vl1-emulator)
  6486. (name "regrader")
  6487. (version "1.0.0")
  6488. (source
  6489. (origin
  6490. (method git-fetch)
  6491. (uri (git-reference
  6492. (url "https://github.com/linuxmao-org/regrader")
  6493. (commit (string-append "v" version))
  6494. ;; bundles a specific commit of the DISTRHO plugin framework
  6495. (recursive? #t)))
  6496. (file-name (git-file-name name version))
  6497. (sha256
  6498. (base32
  6499. "0gl4d5lf2afqknz22jz7hh7029sc9v1xrz6nbz9dlv42bwc0cvl0"))))
  6500. (home-page "https://github.com/linuxmao-org/regrader")
  6501. (synopsis "Delay effect plugin")
  6502. (description
  6503. "Regrader is a delay effect where the repeats degrade in resolution.
  6504. This is an unofficial port of the Regrader plugin created by Igorski. It
  6505. is available as an LV2 plugin and a standalone JACK application.")
  6506. (license license:expat)))
  6507. (define-public fogpad
  6508. (package
  6509. (inherit vl1-emulator)
  6510. (name "fogpad")
  6511. (version "1.0.0")
  6512. (source
  6513. (origin
  6514. (method git-fetch)
  6515. (uri (git-reference
  6516. (url "https://github.com/linuxmao-org/fogpad")
  6517. (commit (string-append "v" version))
  6518. ;; bundles a specific commit of the DISTRHO plugin framework
  6519. (recursive? #t)))
  6520. (file-name (git-file-name name version))
  6521. (sha256
  6522. (base32
  6523. "1j1hbya2dsqpf22zkpi4kwz3dram9g1ndxzmgfwpmf3i4jd3csgb"))))
  6524. (home-page "https://github.com/linuxmao-org/fogpad")
  6525. (synopsis "Reverb effect plugin")
  6526. (description
  6527. "Fogpad is a reverb effect in which the reflections can be frozen,
  6528. filtered, pitch shifted and ultimately disintegrated. This is an unofficial
  6529. port of the Regrader plugin created by Igorski. It is available as an LV2
  6530. plugin and a standalone JACK application.")
  6531. (license license:expat)))
  6532. (define-public tap-lv2
  6533. (let ((commit "cab6e0dfb2ce20e4ad34b067d1281ec0b193598a")
  6534. (revision "1"))
  6535. (package
  6536. (name "tap-lv2")
  6537. (version (git-version "0.0" revision commit))
  6538. (source
  6539. (origin
  6540. (method git-fetch)
  6541. (uri (git-reference
  6542. (url "https://github.com/moddevices/tap-lv2")
  6543. (commit commit)))
  6544. (file-name (git-file-name name version))
  6545. (sha256
  6546. (base32
  6547. "0q480djfqd9g8mzrggc4vl7yclrhdjqx563ghs8mvi2qq8liycw3"))))
  6548. (build-system gnu-build-system)
  6549. (arguments
  6550. `(#:tests? #f ; no check target
  6551. #:make-flags
  6552. (list "CC=gcc")
  6553. #:phases
  6554. (modify-phases %standard-phases
  6555. (delete 'configure) ; no configure
  6556. (replace 'install
  6557. (lambda _
  6558. (invoke "make"
  6559. (string-append "INSTALL_PATH="
  6560. (assoc-ref %outputs "out")
  6561. "/lib/lv2")
  6562. "install"))))))
  6563. (inputs
  6564. `(("lv2" ,lv2)))
  6565. (native-inputs
  6566. `(("pkg-config" ,pkg-config)))
  6567. (synopsis "Audio plugin collection")
  6568. (description "TAP (Tom's Audio Processing) plugins is a collection of
  6569. audio effect plugins originally released as LADSPA plugins. This package
  6570. offers an LV2 version ported by moddevices.")
  6571. (home-page "http://tap-plugins.sourceforge.net/")
  6572. (license license:gpl2))))
  6573. (define-public wolf-shaper
  6574. (package
  6575. (name "wolf-shaper")
  6576. (version "0.1.8")
  6577. (source
  6578. (origin
  6579. (method git-fetch)
  6580. (uri (git-reference
  6581. (url "https://github.com/pdesaulniers/wolf-shaper")
  6582. (commit (string-append "v" version))
  6583. ;; Bundles a specific commit of the DISTRHO plugin framework.
  6584. (recursive? #t)))
  6585. (file-name (git-file-name name version))
  6586. (sha256
  6587. (base32
  6588. "1j9xmh1nkf45ay1c5dz2g165qvrwlanzcq6mvb3nfxar265drd9q"))))
  6589. (build-system gnu-build-system)
  6590. (arguments
  6591. `(#:tests? #f ; no check target
  6592. #:make-flags (list "CC=gcc")
  6593. #:phases
  6594. (modify-phases %standard-phases
  6595. (delete 'configure) ;no configure target
  6596. (replace 'install ;no install target
  6597. (lambda* (#:key outputs #:allow-other-keys)
  6598. (let* ((out (assoc-ref outputs "out"))
  6599. (bin (string-append out "/bin"))
  6600. (lv2 (string-append out "/lib/lv2")))
  6601. ;; Install LV2.
  6602. (for-each
  6603. (lambda (file)
  6604. (copy-recursively file
  6605. (string-append lv2 "/" (basename file))))
  6606. (find-files "bin" "\\.lv2$" #:directories? #t))
  6607. ;; Install executables.
  6608. (for-each
  6609. (lambda (file)
  6610. (install-file file bin))
  6611. (find-files "bin"
  6612. (lambda (name stat)
  6613. (and
  6614. (equal? (dirname name) "bin")
  6615. (not (string-suffix? ".so" name))
  6616. (not (string-suffix? ".lv2" name))))))
  6617. #t))))))
  6618. (native-inputs
  6619. `(("pkg-config" ,pkg-config)))
  6620. (inputs
  6621. `(("jack" ,jack-1)
  6622. ("lv2" ,lv2)
  6623. ("mesa" ,mesa)))
  6624. (synopsis "Waveshaper plugin")
  6625. (description "Wolf Shaper is a waveshaper plugin with a graph editor.
  6626. It is provided as an LV2 plugin and as a standalone Jack application.")
  6627. (home-page "https://pdesaulniers.github.io/wolf-shaper/")
  6628. (license license:gpl3)))
  6629. (define-public wolf-spectrum
  6630. (package
  6631. (inherit wolf-shaper)
  6632. (name "wolf-spectrum")
  6633. (version "1.0.0")
  6634. (source
  6635. (origin
  6636. (method git-fetch)
  6637. (uri (git-reference
  6638. (url "https://github.com/pdesaulniers/wolf-spectrum")
  6639. (commit (string-append "v" version))
  6640. ;; Bundles a specific commit of the DISTRHO plugin framework.
  6641. (recursive? #t)))
  6642. (file-name (git-file-name name version))
  6643. (sha256
  6644. (base32
  6645. "17db1jlj7vb1xyvkdhhrsvdbwb7jqw6i4168cdvlj3yvn2ra8gpm"))))
  6646. (synopsis "2D spectrogram plugin")
  6647. (description "Wolf Spectrum is a real-time 2D spectrogram plugin.
  6648. It is provided as an LV2 plugin and as a standalone Jack application.")
  6649. (home-page "https://github.com/pdesaulniers/wolf-spectrum")
  6650. (license license:gpl3)))
  6651. (define-public shiru-lv2
  6652. (let ((commit "08853f99140012234649e67e5647906fda74f6cc")
  6653. (revision "1"))
  6654. (package
  6655. (name "shiru-lv2")
  6656. (version (git-version "0.0" revision commit))
  6657. (source
  6658. (origin
  6659. (method git-fetch)
  6660. (uri (git-reference
  6661. (url "https://github.com/linuxmao-org/shiru-plugins")
  6662. (commit commit)
  6663. ;; Bundles a specific commit of the DISTRHO plugin framework.
  6664. (recursive? #t)))
  6665. (file-name (git-file-name name version))
  6666. (sha256
  6667. (base32
  6668. "00rf6im3rhg98h60sgl1r2s37za5vr5h14pybwi07h8zbc8mi6fm"))))
  6669. (build-system gnu-build-system)
  6670. (arguments
  6671. `(#:tests? #f ; no check target
  6672. #:make-flags (list "CC=gcc")
  6673. #:phases
  6674. (modify-phases %standard-phases
  6675. (delete 'configure) ;no configure target
  6676. (replace 'install ;no install target
  6677. (lambda* (#:key outputs #:allow-other-keys)
  6678. (let* ((out (assoc-ref outputs "out"))
  6679. (bin (string-append out "/bin"))
  6680. (lv2 (string-append out "/lib/lv2")))
  6681. ;; Install LV2.
  6682. (for-each
  6683. (lambda (file)
  6684. (copy-recursively file
  6685. (string-append lv2 "/" (basename file))))
  6686. (find-files "bin" "\\.lv2$" #:directories? #t))
  6687. ;; Install executables.
  6688. (for-each
  6689. (lambda (file)
  6690. (install-file file bin))
  6691. (find-files "bin"
  6692. (lambda (name stat)
  6693. (and
  6694. (equal? (dirname name) "bin")
  6695. (not (string-suffix? ".so" name))
  6696. (not (string-suffix? ".lv2" name))))))
  6697. #t))))))
  6698. (native-inputs
  6699. `(("pkg-config" ,pkg-config)))
  6700. (inputs
  6701. `(("cairo" ,cairo)
  6702. ("glu" ,glu)
  6703. ("jack" ,jack-1)
  6704. ("lv2" ,lv2)
  6705. ("mesa" ,mesa)
  6706. ("pango" ,pango)))
  6707. (synopsis "Audio plugin collection")
  6708. (description "Shiru plugins is a collection of audio plugins created
  6709. by Shiru, ported to LV2 by the Linux MAO project using the DISTRHO plugin
  6710. framework.")
  6711. (home-page "http://shiru.untergrund.net/software.shtml")
  6712. (license license:wtfpl2))))
  6713. (define-public a2jmidid
  6714. (package
  6715. (name "a2jmidid")
  6716. (version "9")
  6717. (source (origin
  6718. (method git-fetch)
  6719. (uri (git-reference
  6720. (url "https://github.com/jackaudio/a2jmidid")
  6721. (commit version)))
  6722. (sha256
  6723. (base32 "1x6rcl3f4nklnx4p5jln9a7fpj9y7agjxs9rw7cccmwnski7pnsq"))
  6724. (file-name (git-file-name name version))))
  6725. (arguments
  6726. `(#:tests? #f ; No tests.
  6727. #:phases
  6728. (modify-phases %standard-phases
  6729. (add-after 'install 'wrap-programs
  6730. (lambda* (#:key inputs outputs #:allow-other-keys)
  6731. (let* ((out (assoc-ref outputs "out"))
  6732. (bin (string-append out "/bin/")))
  6733. (substitute* (string-append bin "a2j")
  6734. (("a2j_control") (string-append bin "a2j_control")))
  6735. (wrap-program (string-append bin "a2j_control")
  6736. `("PYTHONPATH" prefix (,(getenv "GUIX_PYTHONPATH"))))
  6737. #t))))))
  6738. (build-system meson-build-system)
  6739. (inputs
  6740. `(("alsa-lib" ,alsa-lib)
  6741. ("bash-minimal" ,bash-minimal) ; for wrap-program
  6742. ("dbus" ,dbus)
  6743. ("jack" ,jack-1)
  6744. ("python" ,python)
  6745. ("python-dbus" ,python-dbus)))
  6746. (native-inputs
  6747. `(("pkg-config" ,pkg-config)))
  6748. (synopsis "ALSA sequencer to JACK MIDI bridging")
  6749. (description
  6750. "@code{a2jmidid} is a daemon that implements automatic bridging of ALSA
  6751. midi devices to JACK midi devices.")
  6752. (home-page "https://github.com/jackaudio/a2jmidid")
  6753. (license license:gpl2)))