My First Little Grand Piano

LinuxSampler is zoals de naam al zegt een software sampler, maar wel een bijzondere want met LinuxSampler kun je zogenaamde Gigasampler/GigaStudio bestanden gebruiken, en daar zijn er aardig wat van, ook enkele van een hele goeie kwaliteit. Maar helaas, omdat LinuxSampler niet voldoet aan de Debian Free Software Guidelines wordt het niet meer gepackaged voor Ubuntu. Hoe het allemaal precies zit staat in een bugreport, het komt erop neer dat de makers van LinuxSampler een extra clausule aan de GPL licentie hebben toegevoegd (“commercial exception“) terwijl een GPL licentie kennelijk clausules uitsluit.

Op de LinuxSampler site zelf zijn wel pakketjes beschikbaar, echter alleen voor Ubuntu 8.04 32-bits en ja, dat gebruik ik al een tijdje niet meer. Gelukkig heeft iemand ze gepackaged voor 9.04 64-bits en in een PPA neergezet. Vanuit deze PPA zou je dus de benodigde pakketjes voor LinuxSampler kunnen downladen en installeren, ware het niet dat er in een tweetal pakketjes wat fouten zitten mbt. de afhankelijkheden van andere pakketjes. Ik heb die eruit gehaald en de gefikste pakketjes op mijn Downloads pagina neergezet. Je kunt de fouten er ook zelf uithalen of de pakketjes uit de PPA geforceerd installeren met het dpkg -i –force-depends pakketnaam commando. Maar downloaden en dubbelklikken werkt nou eenmaal wat makkelijker.

Download dus eerst de benodigde bestanden:

libgig6_3.3.0-1_amd64.deb
liblinuxsampler_1.0.0-5_amd64.deb
linuxsampler_1.0.0-5_amd64.deb

Installeer deze in bovenstaande volgorde door de bestanden dubbel te klikken en je wachtwoord in te geven. Nu heb je alleen de backend geïnstalleerd, we hebben ook nog een frontend nodig. Daar zijn er een aantal van (Qsampler, Jsampler, Fantasia) maar Fantasia wordt het meest gebruikt en bevat de minste bugs. Om Fantasia te kunnen gebruiken heb je wel Java nodig dus mocht je dat nog niet geïnstalleerd hebben dan moet je dat eerst doen (sun-java6-bin, sun-java6-jre en sun-java6-plugin). De Fantasia frontend kun je vinden op Sourceforge:

Fantasia-0.9.jar

Zelf heb ik in mijn home mapje een mapje LinuxSampler aangemaakt en hier Fantasia ingezet. Backend hebben we, frontend ook, nu nog een mooie samplepack:

Maestro Concert Grand v2

Maestro Concert Grand v2 is a big giga bank using 792 stereo samples of a concert piano, a Yamaha CF3 from the early 90s, It was chromatically sampled to maintain the tempered tuning. The samples were recorded with two Neumann KM84 microphones, disposed in X/Y, with 5 velocity layers, and weighs 932 MB ! The piano alone, without release samples, weighs 887 Mb and 440 samples. The release samples are 352 and weigh 45 MB. You can play with or without them.

Mocht je geen RAR bestanden kunnen openen installeer dan het pakketje unrar (dus niet unrar-free!). Nu kun je het samplepack uitpakken met de Archive Manager, ik heb dat zelf gedaan in het LinuxSampler folder in mijn home folder. Als het goed is heb je nu een mooi groot gig bestand in dat mapje staan. Ok, laten we een potje piano gaan spelen:

  • Start QjackCtl en start JACK.
  • Open een terminal en geef het volgende commando in: java -jar /pad/naar/Fantasia-0.9.jar
  • Mocht je een MIDI keyboard hebben wijs dan een MIDI kanaal toe aan LinuxSampler door in Fantasia aan de rechterkant onder ‘MIDI devices’ op het aan/uit knopje te drukken. De default instellingen zijn prima dus druk op ‘Create’.
  • Druk op de aan/uit knop onder ‘Audio Devices’, selecteer bij ‘Driver’ JACK en pas de samplerate aan naar de samplerate die je in QjackCtl hebt ingesteld en druk daarna op ‘Create’. In je ‘Connections’ venster van QjackCtl moet nu onder ‘Readable Clients’ ‘LinuxSampler’ verschijnen. Klik die aan zodat deze actief wordt, klik onder ‘Writable Clients’ op ‘system’ om deze actief te maken en klik vervolgens op het ‘Connect’ knopje linksonder.
  • In Fantasia moet je nu nog het gig bestand laden. Dit doe je door in het middelste stuk van het venster op het aan/uit knopje te drukken wat onder het luidspreker icoontje staat. Druk vervolgens op ‘Load Instrument…’ en blader bij ‘Select instrument from file’ naar je gig bestand. Bij ‘Instrument index’ kun je nu nog een bepaalde laag uit het gig bestand laden maar de laag die aangegeven wordt (0 – Maestro Concert Grand) voldoet om een lekker potje op de toetsen te rammen.
  • Klik op OK, het bestand wordt geladen en als je nu op wat rondklikt op het virtuele keyboard onderin het Fantasia venster zou je pianoklanken uit je speakertjes moeten horen komen.
  • Mocht je niks horen, het moet er zo uitzien als op het 


    Fantasia screenshot
    .

  • Leuk? Op de site van Sonart Audio staat ook nog een mooie samplepack.

Zelf heb ik op mijn bureaublad een snelkoppeling aangemaakt met een passend icoontje erbij die het java -jar /pad/naar/Fantasia-0.9.jar commando uitvoert. En het draait zelfs prima op mijn netbookje, wel grappig zo’n draagbare mini concert piano. Nu nog een mooi USB MIDI keyboard erbij met gewogen toetsen en een sustain pedaal…

My First Little Grand Piano

Prioriteiten stellen met rtirq

In een vorig blogje had ik al aangegeven dat ik tegen wat problemen aanliep na het aansluiten van mijn Firewire kaart op mijn notebook met Karmic. Na alles goed ingesteld te hebben wilde de kaart wel opstarten met de FFADO drivers maar hield JACK er al snel mee op na de volgende foutmelding uitgespuugd te hebben:

firewire ERR: wait status < 0! (= -1)
DRIVER NT: could not run driver cycle

Zal wel aan mijn onboard Firewire chipset liggen dacht ik, maar ik kon me herinneren dat het wel gewerkt had. En dat kan ik dan niet hebben, waarom zou het met Karmic niet werken en met een oudere versie wel? Dan moet ik weten waar dat aan ligt en ga ik net zo lang zoeken totdat ik dat uitgevogeld heb.

Kort daarvoor had ik een draadje gelezen op het Ubuntu Multimedia Production forum over het rtirq pakketje. Met rtirq kun je in combinatie met de realtime kernel bepaalde zogenaamde ‘tasklets’ prioriteren. Een computer werkt met IRQ’s (interrupt requests) en de IRQ’s worden in Linux geregeld door de interrupt handlers. Hier is een mechanisme voor geschreven (een API) waarmee je met deze interrupt handlers kunt praten. Dit mechanisme heet de tasklet API en de koeriertjes heten dus tasklets. Via de tasklets kun je invloed uitoefenen op de interrupt handlers en dat is precies wat het rtirq pakketje doet.

Wil je met rtirq kunnen werken dan moet je eerst weten welke apparaten welke IRQ’s gebruiken. Met het commando cat /proc/interrupts kun je deze gegevens uitlezen. Op mijn notebook zag ik al meteen wat de oorzaak van mijn foutmelding was: de Firewire chipset deelde zijn IRQ met die van de WiFi chipset. Daarom werkte het in 8.04 wel, toen gebruikte ik nog geen draadloos internet. Na een ifdown eth0 werkte de Firewire kaart dan ook naar behoren. Maar nu ik toch al bezig was met het uitzoeken hoe rtirq te gebruiken ben ik er verder ingedoken om te kijken of ik mijn Karmic installatie op mijn notebook nog verder kon optimaliseren.

Volgens het al eerder aangehaalde forumdraadje moet je na installatie van rtirq een verbeterde versie downloaden van de site van Rui Nuno Capela (de auteur van o.a. QjackCtl en Qtractor) en deze kopiëren naar /etc/init.d/rtirq:

cd ~/Desktop
wget -c http://www.rncbc.org/jack/rtirq-20090920.tar.gz
tar zxvf rtirq-20090920.tar.gz
cd rtirq-20090920
sudo cp rtirq.sh /etc/init.d/rtirq
 

/etc/init.d/ is de directory die je opstartscripts bevatten die gedraaid worden als Ubuntu wordt opgestart, rtirq is dan ook een opstartscript die bepaalde tasklets die belangrijk zijn voor audio productie kan prioriteren. Nu het goeie script is geïnstalleerd kun je de prioritering aanpassen in het bestand /etc/default/rtirq:

sudo gedit /etc/default/rtirq

De regels die aangepast moeten worden zijn de regels die beginnen met RTIRQ_NAME_LIST en RTIRQ_NON_THREADED. Bij mij zien die er nu zo uit:

RTIRQ_NAME_LIST="rtc ohci1394 snd usb i8042"
RTIRQ_NON_THREADED="rtc ohci1394 snd"

Sla het bestand op en sluit gedit af. Na een herstart met de realtime kernel zal dit script uitgevoerd worden en de tasklet die hoort bij de ohci1394 kernelmodule (de algemene Linux Firewire driver) keurig prioriteren zodat deze een stuk stabieler zal draaien omdat de module minder gezeur aan zijn kop krijgt, een soort van top-down management als het ware zeg maar eigenlijk in feite. Je kunt het script ook meteen draaien, vermits je de realtime kernel draait:

sudo /etc/init.d/rtirq start

Kun je ook gelijk zien of je geen foutjes hebt gemaakt, als alles ok is zul je een aantal regels voorbij zien komen die beginnen met “Setting IRQ priorities: start …” en zou je systeem nog stabieler moeten draaien. Ik heb rtirq ook op mijn netbookje geïnstalleerd en daar de onboard geluidskaart voorrang gegeven en dat werkt echt als een speer.

Meer informatie over het prioriteren vind je op de FFADO site.

Prioriteiten stellen met rtirq

Die vermaledijde xruns!

Je kent het wel, ben je lekker met JACK bezig, hang je Audacity er aan, beetje editten en in ene wordt het je systeempje te veel. Gevolg: xruns, xruns en nog meer xruns. Op mijn netbookje heb ik hier dus last van en waarschijnlijk ligt dat aan een brakke geluids- of codecmodule. Ik heb er maar een soort van noodknop voor gemaakt die de gehele soundstack opnieuw laadt. Daarna zijn de xruns gelukkig weer weg. Ik moet maar eens gaan uitzoeken hoe die ALSA drivers nou precies aan de kernel hangen, zijn het nou kernel afhankelijke modules of staan ze los van de kernel die je gebruikt? Het moet wel allemaal een beetje stabiel draaien, juist ook met het onboard geluidskaartje, ik ga niet de hele tijd een externe geluidskaart meeslepen.

De noodknop is eigenlijk niet meer dan een scriptje (heb het maar restartsound genoemd) dat alle geluidsmodules uit de kernel trekt, alsa stopt, de modules weer laadt en alsa weer opstart.

Die vermaledijde xruns!

Midi events vertalen naar toetscombinaties

PS: Inmiddels weet ik wat meer van MIDI en ben ik erachter gekomen dat Qtractor MMC opdrachten kan verwerken en dat je de nanoKONTROL zo kan programmeren dat de transport knopjes MMC opdrachten versturen. Onderstaand blogje is dan ook niet meer echt relevant.

Harde waren: Korg nanoKONTROL
Zachte waren: Qtractor en nanonoise

Qtractor maakt gebruik van toetscombinaties om bepaalde acties te starten (bijv. transport functies als afspelen, opnemen, terugspoelen) en op mijn nanoKONTROL zitten van die mooie transport knopjes. Maar die sturen een MIDI signaal uit en Qtractor kan heel veel met MIDI maar je kan er dus niet de transport functies binnen Qtractor mee aansturen. Het zou dus mooi zijn als er een programmaatje zou zijn dat MIDI events om zou kunnen zetten naar toetscombinaties. Na een tijdje zoeken kwam ik nanonoise tegen en dat doet precies wat ik wil en bovendien is het nog speciaal voor de nanoKONTROL geschreven ook. Weliswaar genereert nanonoise specifieke toetscombinaties voor gebruik binnen Renoise maar een toetscombinatie is een toetscombinatie dus dat maakt voor Qtractor niet uit. Bovendien kun je in Qtractor toetscombinaties aanpassen via Help – Shortcuts dus je hebt er nog de nodige vrijheid in ook.

Om dit allemaal werkende te krijgen moet je eerst het nanonoise pakketje downloaden en installeren.

nanonoise voor Ubuntu Jaunty Jackalope (64-bits)
nanonoise voor Ubuntu Jaunty Jackalope (32-bits)

Vervolgens sluit je je nanoKONTROL aan, start je achtereenvolgens qjackctl, nanonoise en Qtractor op en knoop je de boel aan elkaar via het Connections knopje:

MIDI to keystrokes

Nu komt even een rotklusje want je moet eerst alle MIDI events mappen in nanonoise door in het nanonoise schermpje rechts te klikken en voor Map MIDI te kiezen en daarna dus even knopje voor knopje en schuifje voor schuifje de boel te mappen:

nanonoise MIDI mapping

Als dat klaar is kun je de toetscombinaties in gaan stellen door weer rechts te klikken en Map Renoise te kiezen.

nanonoise Renoise

Ik heb het als volgt ingesteld:
Rewind: Pattern Sequencer – Navigation – Decrease Pattern Number (toetscombi/-code: Left)
Play: Global – Transport – Play/Stop/Edit (toetscombi/-code: Space)
Fast Forward: Pattern Sequencer – Navigation – Increase Pattern Number (toetscombi/-code: Right)
Loop: Global – Transport – Toggle Loop Pattern (toetscombi/-code: =)
Stop: hetzelfde als Play, Qtractor heeft geen Stop knopje
Record: Global – Transport – Pause/Continue (toetscombi/-code: Shift+Space)

Je kan ook onderstaand config bestandje kopiëren naar het mapje ~/.config/koppi/, dat gaat wellicht sneller.

Qtractor shortcuts

Daarnaast kun je ook nog MIDI events mappen binnen Qtractor. Op deze manier heb ik alle schuifjes en draaiknopjes van de nanoKontrol gemapt zodat ik van de afzonderlijke tracks het volume en de panning kan regelen via de nanoKONTROL. Ook heb ik zo de trigger knopjes gemapt om tracks op Record of Mute te zetten maar dat werkt nog niet optimaal. Ik heb hier een .qtc bestandje van gemaakt dat je in Qtractor kan importeren.

Midi events vertalen naar toetscombinaties

JACK in plaats van PulseAudio

Onder mijn muziekaccount op mijn netbookje gebruik ik PulseAudio helemaal niet dus heb ik een kleine aanpassing gemaakt om PulseAudio te killen en daarvoor in de plaats JACK te starten. PulseAudio heeft wel de leuke eigenschap om automatisch opnieuw op te starten als het wordt gekilld dus om dat te omzeilen heb ik het bestandje ~/.pulse/client.conf aangemaakt met als inhoud:

autospawn = no

Vervolgens heb ik het bestandje ~/bin/jackstart aangemaakt waar het volgende instaat en deze toegevoegd aan de Startup Applications:

#!/bin/bash

killall -9 pulseaudio &&
sleep 3
/usr/bin/jackd -R -m -dalsa -dhw:0 -r48000 -p256 -n2
exit

Als ik nu inlog wordt PulseAudio de nek omgedraaid en vervolgens JACK gestart en kan ik gelijk aan de slag. Iets luxer kan ook nog, je kunt namelijk ook JACK als standaard soundserver gebruiken en PulseAudio via JACK laten draaien. Hier heb je wel een extra pakketje voor nodig (pulseaudio-module-jack), ook moet je het bestandje ~/.pulse/client.conf dan weer weggooien of de autospawn regel even uitcommenten en het bestandje ~/bin/jackstart aanpassen:

#!/bin/bash

/usr/bin/pasuspender -- /usr/bin/jackd -dalsa -dhw:0 -r44100 -p1024 -n2 &
sleep 5
pactl load-module module-jack-source
pactl load-module module-jack-sink
exit

De waardes die je gebruikt om JACK op te starten moet je wel aanpassen naar de meest ideale waardes voor jouw setup. Als je het eenmaal aan de praat hebt en qjackctl opstart zou het er ongeveer zo uit moeten zien:

JACK vs PulseAudio

Nu kun je dus tegelijkertijd gebruik maken van software met JACK ondersteuning zoals bijv. Qtractor of JACK-Rack met allerlei effecten en programma’s die gebruik maken van PulseAudio (Rhythmbox, Totem).

JACK in plaats van PulseAudio

Als je het over de duivel hebt…

Trap je ‘m op zijn staart! Vandaag is er dus een nieuwe release beschikbaar van Qtractor, 0.4.3 oftewel Fussy Doula. Zit ik moeilijk te doen met pakketjes te fabrieken voor versie 0.4.2 met checkinstall, heeft de goede man gewoon de hele rambam al kant en klaar staan:

Qtractor 0.4.3 voor Ubuntu Jaunty Jackalope (64-bits)

Librubberband 1.4.0 voor Ubuntu Jaunty Jackalope (64-bits)

Rubberband 1.4.0 voor Ubuntu Jaunty Jackalope (64-bits)

Rubberband-LADSPA 1.4.0 voor Ubuntu Jaunty Jackalope (64-bits)

Misschien maar wat vaker op ctrl+F5 drukken of een RSS feed bookmarken. Heb gelijk wat geld gedoneerd via Sourceforge.

Als je het over de duivel hebt…

De zachte en harde waren

Mijn huidige setup bestaat uit:

  • Edirol UA-25 USB geluidskaart. Ik heb dit ding al jaren maar hij doet het nog prima. De latency is lekker laag (4ms), het ding is niet kapot te krijgen (aluminium behuizing), doet het altijd en werkt ook nog eens feilloos onder Linux zonder dat je extra modules nodig hebt.
  • HP DV7-1070ed notebook. Prima notebook, het enige manco is de lange opstarttijd door een EHCI BIOS bug. En het scherm is wat aan de fletse kant ondanks de redelijk dikke Nvidia chipset die er in zit. Maar alles werkt erop, zelfs de Firewire aansluiting icm de Focusrite Saffire Pro 10 van de band.
  • Packard Bell Dot M/A.NL/202 netbookje. Vooral voor onderweg. Was al een tijdje op zoek naar een dergelijk netbookje maar moest toch wel minimaal 11,6″ zijn en redelijk wat geheugen. Dat zit bij dit Dotje wel goed, 2Gb geheugen en door de onboard Ati kaart is het beeld echt subliem. En Ubuntu 9.04 draait er als een speer op, heb er wel een custom kernel voor gebakken ivm wat extra ACPI functionaliteit. En met een 2.6.31 RT kernel draait zelfs de onboard geluidschip zonder morren met lage latencies. Fijn apparaat, aanrader.
  • Een ouwe Asus A2500h notebook die het onder 9.04 eindelijk een beetje redelijk doet. Zo ingesteld dat Jack meteen opstart gevolgd door Qtractor zodat ik gelijk ideetjes kan opnemen.
  • Studio Projects B1 mic. Deze staat altijd paraat. Gewoon een prima condensatormicrofoon. Verder gebruik ik wat mics van de band: Shure SM57, Audio Technica AT2020 en een AKG D112.

Deze apparatuur wordt aangestuurd door:

  • OS: Ubuntu 9.04 met 2.6.31 realtime kernels. Op de een of andere manier draait dat het stabielst. Heb heel lang 8.04 gebruikt maar heb altijd redelijk last gehad van xruns met 2.6.24 kernels. Daarnaast gaan de ontwikkelingen op Linux audio gebied momenteel als een speer dus is het zaak om je systemen wel een beetje up to date te houden omdat je anders al snel tegen de beperkingen van een wat oudere release loopt.
  • Recording software: ben gek op Qtractor. Wat een heerlijk programmaatje is dat, klein, snel en het doet precies wat ik wil: opnemen en mij de mogelijkheid geven simpel dingetjes toe te voegen, zij het MIDI, zij het effecten.
  • Beats programming/sequencing: LMMS! Ook zo’n fijn programma, op de vele bugs na dan en de gebrekkige JACK implementatie. Maar hoe actief zijn de ontwikkelaars momenteel, volgens mij zitten die dag en nacht te coden om LMMS nóg beter te maken. Met LMMS kan ik heerlijk beats en basslines maken of als ik echt zin heb complete nummers in elkaar flansen.
  • Plugins: diverse LADSPA en DSSI plugins. Moet ik nog een beetje induiken, er zijn er aardig wat en de kwaliteit van de verschillende plugins loopt nogal uiteen.
  • Softsynth: ZynAddSubFX. Hier kan je echt alles uithalen. Helaas heeft de JACK implementatie soms nog wel eens kuren. Ik gebruik momenteel ook wel de CALF Organ DSSI plugin.
  • Audio editing: Audacity.
  • Mastering: ha ha, zo ver ben ik nog niet, daar moet ik echt nog even goed voor gaan zitten want van dat Jamin begrijp ik nog niet echt heel veel.

Packard Bell Dot M/A.NL/202

De zachte en harde waren