Alan "Cal" Calvert overleden

Op 2 juli 2011 is op 61-jarige leeftijd Alan “Cal” Calvert overleden na een lang gevecht tegen kanker. Cal was de initiator en maintainer van de Yoshimi ZynAddSubFX fork. De Linux Audio Community zal hem missen, niet alleen vanwege zijn bijdrage als ontwikkelaar maar ook als mens. Altijd geduldig, vriendelijk, hulpvaardig, nieuwsgierig en altijd bereid te luisteren en nieuwe dingen uit te proberen. Rust zacht Cal!

Alan "Cal" Calvert overleden

JuJu perikelen

Heb me maar eens gewaagd aan het uitproberen van de nieuwe JuJu FireWire stack die de oude ieee1394 stack op termijn gaat vervangen. Dus nieuwste libraw1394 en FFADO versies geïnstalleerd, /etc/modules, /etc/modprobe.d/blacklist-firewire.conf en /etc/default/rtirq aangepast en sudo update-initramfs -u -k all gedraaid. Na een reboot wat projectjes opgestart en helaas, heel veel xruns. Als er goeie pakketjes zijn van de nieuwe 3.0 realtime kernel probeer ik het wel weer eens. Voorlopig blijf ik met de oude FireWIre stack werken.

JuJu perikelen

Nieuwe release RT patchset

Ook al zijn forced threaded interrupt handlers inmiddels onderdeel van de mainline kernel (vanaf 2.6.39), neemt niet weg dat er nog het nodige verbeterd kan worden aan de real-time performance van recentere kernels. Thomas Gleixner en co. hebben de aankomende release van de 3.0 kernel aangegrepen om met een nieuwe release van hun real-time patchset te komen. 3.0-rc7-rt0 is inmiddels beschikbaar en de eerste reacties zijn postief.

Nieuwe release RT patchset

Bevrijd?

Begin zo mijn twijfels te krijgen over het nut van de BY-NC-SA CC licentie die ik momenteel gebruik voor mijn werken. Vooral dat NC (Non Commercial) stukje. Twijfel werd getriggered door een blogpost waar ik via LWN.net op uitkwam. Ik wil graag dat iedereen bij mijn werken kan en vind het prima als men er wat mee doet. Maar waar ik voorheen dacht die vrijheid te moeten beperken voor commerciële partijen heb ik nu zo iets van, wie zijn die commerciële partijen? Voor hetzelfde geld is dat een beginnende ondernemer die misschien wel met mijn werk iets moois zou kunnen doen om zijn zaak onder de aandacht te kunnen brengen. Moet ik dat in de weg willen zitten. Nee. En wat me waarschijnlijk over de streep gaat trekken is het feit dat een commerciële partij zich mijn werk niet mag toeëigenen, ze moeten dezelfde licentie gebruiken (SA, Share Alike). Eigenlijk is dat precies wat ik wil, mijn werken zijn van iedereen en zo blijven ze van iedereen.

En nu ik er zo over zit te bloggen en na zit te denken, wat nu als je muziek wel voor een commercial van een groot bedrijf wordt gebruikt op TV bijvoorbeeld met een BY-SA licentie? En in ene schiet me te binnen dat het me laatst al opviel dat ik bij een reclame op TV de artiest en naam van het nummer duidelijk vermeld zag. Hoogstwaarschijnlijk een BY CC licentie. Voor mij zou dat al genoeg zijn, zo’n naamsvermelding, hoef er geen geld voor en trouwens, met zo’n naamsvermelding gaan mensen echt wel naar je op zoek als het werk ze bevalt. Dáár zitten de eventuele inkomsten.

Bevrijd?

amSynth Galore!

Eigenlijk moet ik gewoon meer muziek maken maar dan zie ik m’n BCR2000 staan naast m’n scherm met de laatste beta van amSynth erop die je kunt skinnen en dan ben ik alweer afgeleid. Oftewel, heb een amSynth skin gemaakt voor gebruik met de BCR2000.


text-align: center;

amSynth 1.3 beta 2 met BCR2000 skin

amSynth zelf is inmiddels bij de tweede beta van de 1.3 release aangekomen. Zowel deze beta versie als de BCR2000 skin staan in mijn PPA. De skin staat trouwens ook op mijn Sourceforge pagina. Daarnaast heb ik de laatste git versie van de amSynth DSSI plug-in geüpload naar mijn PPA aangezien de plug-in uit het eerdere pakketje de boel liet crashen op sommige 64-bits machines.

amSynth Galore!

TYOQA is aangebroken!

The Year Of Qtractor Automation is aangebroken, oftewel Rui, de ontwikkelaar van Qtractor, is begonnen met het implementeren van automatisering in Qtractor. En het ziet er goed uit, het werkt goed en het voelt goed. Dat laatste klinkt misschien vreemd maar zulke ingrijpende veranderingen aan een applicatie die je bijna dagelijks gebruikt kunnen je ook tegenvallen of je zelfs tegen gaan staan.


text-align: center;

Qtractor hoofdscherm met MIDI track en automatiseringscurve

En op de een of andere manier voelt de manier waarop Rui dit implementeert bijna als vanzelfsprekend. Ik kan er gelijk mee overweg, begrijp hoe het werkt en zie van allerlei mogelijkheden die deze functionaliteit biedt voorbij trekken in m’n hoofd.

Gebruik je net zoals ik Ubuntu Lucid Lynx 10.04 dan heb ik goed nieuws, heb een Qtractor-SVN PPA opgezet waarnaar ik m.b.v. een script nieuwe bronpakketten upload zodra er aanpassingen zijn in de SVN trunk:

#!/bin/bash

MAINDIR=$HOME/PPA/qtractor/daily-builds

SVNREV=$(svn info https://qtractor.svn.sourceforge.net/svnroot/qtractor/trunk
| grep Revision | cut -d " " -f 2)

CURRENTREV=$(cat $MAINDIR/current.rev)

if [ $SVNREV = $CURRENTREV ]
 then echo "Current build is up to date."
 exit
else
 echo $SVNREV | tee $MAINDIR/current.rev

 VERSION=$(svn cat
https://qtractor.svn.sourceforge.net/svnroot/qtractor/trunk/configure.ac
| grep AC_INIT | cut -d " " -f 2 | cut -c 1-8)

 SVNDIR=$MAINDIR/qtractor-$VERSION+svn$SVNREV

 svn co https://qtractor.svn.sourceforge.net/svnroot/qtractor/trunk $SVNDIR

 rm -rf `find $SVNDIR -type d -name .svn && find $SVNDIR -type d -name debian`

 cp -a $MAINDIR/debian $SVNDIR

 cd $SVNDIR

 dch -v "$VERSION+svn$SVNREV-0lucid0~autostatic0"
 "Daily build, Qtractor SVN trunk checkout $SVNREV"

 rsync -av $SVNDIR/debian/changelog $MAINDIR/debian/changelog

 debuild -S -sa -k12345678

 dput ppa:autostatic/qtractor-svn
 $MAINDIR/qtractor_$VERSION+svn$SVNREV-0lucid0~autostatic0_source.changes

fi

TYOQA is aangebroken!

aj-snapshot

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.

aj-snapshot

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!

text-align: center;

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.

amSynth DSSI plug-in

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.


text-align: center;

Hoofdscherm van QMidiArp met een LFO, Sequencer en twee Arpeggiator modules

Nieuwe pakketjes in de PPA

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.

Bash Session Management