music.scm 261 KB

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