Met aj-snapshot van de hand van Lieven Moors kun je een snapshot maken van de actieve ALSA en JACK connecties. Heb een bronpakketje geüpload naar mijn PPA en aj-snapshot pakketjes voor Ubuntu 10.04 zijn dan ook inmiddels beschikbaar. Heb deze tool zelf nog niet gebruikt maar ga dat waarschijnlijk wel doen, het lijkt me toch wel een erg handige command line tool om JACK en ALSA connecties te herstellen en op deze manier hoef ik dat niet meer zelf te scripten met aconnect en jack_connect regels.
amSynth DSSI plug-in
De ontwikkelversie van amSynth heeft twee extra Makefiles in de broncode zitten waarmee je amSynth ook als DSSI en als (Linux) VST plug-in kan compileren. Vooral de DSSI plug-in leek me interessant dus ben aan het testen gegaan. Na het maken van Ubuntu pakketjes, waarvoor ik wel de DSSI Makefile moest aanpassen, en het installeren van het amsynth-dssi pakketje kon ik zonder problemen de plug-in openen en gebruiken in mijn favoriete host, Qtractor.
Een belangrijke functionaliteit miste wel: het selecteren van bestaande amSynth presets. De meeste DSSI plug-ins kunnen wel presets inladen, dit is ook een belangrijk voordeel van het DSSI plug-in framework, dus heb een feature request gedaan op de amSynth Google code site. En wie schetst mijn verbazing, dit verzoek werd gelijk opgepikt door de ontwikkelaar van amSynth en inmiddels is het mogelijk om met de laatste SVN versie bestaande amSynth presets te selecteren in het Track Properties venster van Qtractor!
Qtractor Track Properties venster met amSynth DSSI plug-in
Inmiddels zijn mijn DSSI Makefile patch en een patch voor de DSSI plug-in zelf toegevoegd aan de source tree dus de DSSI plug-in in SVN versie laat zich nu heel makkelijk packagen voor Ubuntu, resultaat is terug te vinden in mijn PPA.
Nieuwe pakketjes in de PPA
Pakketjes gebrouwen van een tweetal nieuwe releases (Qtractor 0.4.9 en QMidiArp 0.4.1) en van de amSynth DSSI plug-in die in de SVN repository van amSynth staat. Ben vooral benieuwd naar QMidiArp, had twee tutorials gevonden op YouTube en daar werd ik nieuwsgierig door want het ziet er zeer veelbelovend uit.
Hoofdscherm van QMidiArp met een LFO, Sequencer en twee Arpeggiator modules
Bash Session Management
Zo af en toe krijg ik de vraag wat voor session manager ik gebruik om mijn projecten en de daarbijbehorende applicaties en JACK connecties te beheren. Mijn antwoord is dan: Bash. Dus géén Ladish, géén JACK Session en ook géén aj-snapshot maar simpele Bash scripts. Waarom? Omdat ik Bash begrijp en momenteel geen tijd en zin heb om me te verdiepen in nóg een extra tool. Daarnaast is het aantal applicaties dat Ladish en JACK Session ondersteunt echt minimaal.
Maar hoe ziet zo’n Bash script er dan uit? Nou zo:
#!/bin/bash
export SESSION=$HOME/Sessions/moneyorlove.d
hydrogen -s $SESSION/moneyorlove.h2song &
seq24 -j $SESSION/seq24-moneyorlove.midi &
sleep 2
yoshimi -N analoguebass --state=$SESSION/yoshimi-analoguebass.state &
yoshimi -N dubstep --state=$SESSION/yoshimi-dubstep.state &
sleep 2
guitarix -r default -f $SESSION/guitarix_moneyorlove_bass_rc &
sleep 2
amsynth -b $SESSION/moneyorlove.amSynth.presets &
sleep 2
qtractor $SESSION/moneyorlove.qtr &
sleep 3
export SEQ24_BASS_OUT=$(jack_lsp | grep "(capture): Yoshimi Analogue")
export SEQ24_DUBSTEP_OUT=$(jack_lsp | grep "(capture): Yoshimi Dubstep")
export DRONE1=$(jack_lsp | grep "Feedback Drone/out_1")
export DRONE2=$(jack_lsp | grep "Feedback Drone/out_2")
aconnect Hydrogen:1 MPK
jack_connect "$SEQ24_BASS_OUT" yoshimi-analoguebass:midi in
jack_connect "$SEQ24_DUBSTEP_OUT" yoshimi-dubstep:midi in
jack_disconnect "$DRONE1" "system:playback_1"
jack_disconnect "$DRONE2" "system:playback_2"
Ok, wat gebeurt hier?
export SESSION=$HOME/Sessions/moneyorlove.d
Ik maak als eerste een SESSION variable aan met als waarde de directory waar alle benodigde bestanden voor mijn sessie in staan. In mijn home staat een Sessions directory en daar staan alle sessie directories en bijbehorende Bash scripts in. Vervolgens start ik Hydrogen en seq24 op met de parameters om de bijbehorende project bestanden in te laden:
hydrogen -s $SESSION/moneyorlove.h2song &
seq24 -j $SESSION/seq24-moneyorlove.midi &
Daarna laat ik Bash even twee tellen uitrusten
sleep 2
om vervolgens twee instances van Yoshimi (respectievelijke JACK poortnamen analoguebass en dubstep, kun je opgeven met de -N optie) op te starten met de bijbehorende .state bestanden. Je kunt met Yoshimi ook .xmz (parameter) bestanden opslaan, komt bijna op hetzelfde neer.
yoshimi -N analoguebass --state=$SESSION/yoshimi-analoguebass.state &
yoshimi -N dubstep --state=$SESSION/yoshimi-dubstep.state &
Weer even pas op de plaats:
sleep 2
Guitarix opstarten met de standaard instellingen (kun je aanpassen in Guitarix) en een Guitarix state file inladen:
guitarix -r default -f $SESSION/guitarix_moneyorlove_bass_rc &
Bash weer uit laten puffen:
sleep 2
amSynth starten met de juiste .presets file:
amsynth -b $SESSION/moneyorlove.amSynth.presets &
Even wachten…
sleep 2
Qtractor laden en een .qtr sessie file laten openen:
qtractor $SESSION/moneyorlove.qtr &
Hier speel ik een beetje vals want in feite gebruik ik Qtractor voor een deel als session manager. Qtractor slaat in de .qtr sessie file namelijk alle JACK connecties op die naar en van Qtractor gemaakt worden. Nadat Qtractor is gestart laat ik Bash weer even bijkomen:
sleep 3
Aangezien Qtractor dus alleen JACK connecties opslaat van en naar Qtractor moet ik de resterende JACK connecties handmatig aanmaken. Dit doe ik met jack_connect. De benodigde ALSA MIDI connecties die Qtractor niet kan opslaan zet ik op mbv aconnect. Maar eerst moet ik wat poortnamen toewijzen aan variabelen om er zeker van te zijn dat de juiste poorten met elkaar verbonden worden. Hier gebruik ik jack_lsp voor, de CLI JACK tool om een lijstje te genereren van beschikbare JACK poorten, en hier laat ik grep op los om de juiste poorten eruit te pikken.
export SEQ24_BASS_OUT=$(jack_lsp | grep "(capture): Yoshimi Analogue")
export SEQ24_DUBSTEP_OUT=$(jack_lsp | grep "(capture): Yoshimi Dubstep")
export DRONE1=$(jack_lsp | grep "Feedback Drone/out_1")
export DRONE2=$(jack_lsp | grep "Feedback Drone/out_2")
Lest best de JACK connecties die Qtractor niet kan maken:
aconnect Hydrogen:1 MPK
jack_connect "$SEQ24_BASS_OUT" yoshimi-analoguebass:midi in
jack_connect "$SEQ24_DUBSTEP_OUT" yoshimi-dubstep:midi in
En op de valreep nog even wat onnodige poorten disconnecten:
jack_disconnect "$DRONE1" "system:playback_1"
jack_disconnect "$DRONE2" "system:playback_2"
En nu is mijn volledige sessie opgestart en klaar om mee te werken. Twee dingen vallen waarschijnlijk al meteen op: 1. de ampersands (&) en 2. de vele sleep commando’s. Waarom? 1. een ampersand toevoegen aan een commando zorgt ervoor dat het commando op de achtergrond gaat draaien en het script door kan gaan met de volgende regel, oftewel, het script stopt niet om het commando af te wachten, 2. sommige applicaties hebben even tijd nodig om op te starten en het is cruciaal dat als de sessie file van Qtractor ingeladen wordt alle applicaties zijn opgestart zodat Qtractor de JACK connecties kan aanmaken.
Ja, en wat nu als je je sessie af wilt sluiten? Moet je dan alle applicaties handmatig afsluiten? Ja. Maar zo af en toe gebruik ik ook een ‘end-session’ script die alle openstaande audio applicaties killt. Dit kun je ook netjes scripten in je sessie script zelf, zo ver ben echter nog niet en vooralsnog red ik me prima zo. Als ik klaar ben zet ik toch meestal mijn PC uit en het komt zelden voor dat ik tijdens het maken van muziek meerdere sessies na elkaar moet openen.
Tranches en Tapeutape
Vorige week eindelijk eens de kans gehad om naar deze twee appjes te kijken. Tranches is een heel simpele maar zeer bruikbare beatslicer, zoals bijv. Smasher. Alleen heeft Smasher geen JACK support en is derhalve niet real-time te gebruiken. Tranches kent die beperkingen niet en maakt het mogelijk om real-time samples op te knippen en af te spelen, ook achterstevoren. De GUI is met FLTK gemaakt dus het appje is superlicht en het werkt dan ook als een speer.
Tapeutape is een ontiegelijke simpele sampler. Heerlijk stukje software. Voor mijn toekomstige projectjes prop ik daar mijn samples in en probeer ik Hydrogen zoveel mogelijk te mijden. Heb gewoon teveel problemen met Hydrogen, sync problemen, crashes, het vreet CPU op mijn netbook en samples toevoegen aan een bestaand project is een heidens karwei omdat Hydrogen de JACK poortnamen nog steeds niet meteen update. Dus dan moet ik eerst een nieuwe instrument aanmaken, dan worden de poortnamen wél geüpdate. Maar vaak crasht Hydrogen dan en kan ik weer opnieuw beginnen. Ook Tapeutape is in FLTK gemaakt dus ook superlicht en niet zo’n zware moloch als het op Qt gebaseerde Hydrogen. Tapeutape nog niet uitgebreid getest dus nog geen idee hoe Tapeutape hiermee omgaat en hoe de software zich houdt.
Tango Studio heeft up to date pakketjes van beide appjes voor Ubuntu 10.04.
LAC2011: configuratie workshop video
De videoregistratie van mijn eerste workshop op LAC2011 staat nu ook online.
Configuring your system for low-latency real-time audio processing
LAC2011: workflow workshop video
De videoregistratie van mijn tweede workshop op LAC2011 staat inmiddels online.
A musician’s workflow: composing, recording and arranging with qtractor and friends
Luppp live looper
Afgelopen LAC heb ik de kans gehad om met Harry van Haaren bij te praten. Vorig jaar in Utrecht was hij er ook bij maar heb hem toen nauwelijks gesproken. Hij behoort tot de nieuwe, jonge generatie ontwikkelaars die hopelijk de continuïteit van het Linux audio ecosysteem kunnen waarborgen. Momenteel werkt hij aan een live looper, Luppp, en dat is een goeie zaak want daar zijn er wel een paar van maar die worden of niet meer onderhouden of werken gewoon niet lekker.
Wat hij me liet zien zag er veelbelovend uit en aangezien een goeie live looper ontbreekt in mijn set-up (seq24 is toch meer een MIDI sequencer en Hydrogen gebruik ik alleen als sampler) hoop ik dat hij binnenkort met een bruikbare release komt.
Binnenkort phasex-dev Milestone 2?
Was benieuwd of er nog wat activiteit te bespeuren viel bij de PHASEX fork op github. PHASEX is een fijne, bruikbare softsynth waarvan de oorspronkelijke code en site echter van de aardbodem verdwenen zijn. Maar gelukkig is er de PHASEX Development Branch dus de code is niet verloren gegaan en als ik deze reply mag geloven zit er dus zelfs een nieuwe release aan te komen, Milestone 2!
Milestone 2: More bugfixes. Better engine loop and JACK thread sync.
LFO, delay and chorus clock-sync.
Zelf draai ik de laatste git checkout maar die is alweer van december vorig jaar en de JACK sync en clock sync daarvan zijn nog niet optimaal. Nu maar hopen dat Milestone 2 snel gereleased wordt en dat de synchronisatie functionaliteit beter werkt met deze versie. Presets met arpeggios bijvoorbeeld lopen nu nog na verloop van tijd hopeloos uit sync.
Presentatie voor Horus II
Bij aankomst stonden de sixpacks bier al op tafel dus m’n presentatie ging een stuk soepeler dan op LAC2011. Jammer dat ik pas wat later kon beginnen vanwege een falende pizzabezorger dus kon niet mijn hele verhaal kwijt. Maar was desondanks een goeie presentatie voor een leuke club mensen. Volgende maand ga ik zeker weer proberen heen te gaan.
Iedereen die enige affiniteit heeft met Linux audio zou ik willen adviseren zich op te geven voor de Horus mailinglijst. Nog beter, geef je op voor een volgende bijeenkomst en laat je verassen door wat er allemaal kan met Linux en open source tools onder het genot van een koud pilsje. Kan het je aanraden.