LMMS aanzwengelen

Standaard gebruikt LMMS ALSA als backend voor het geluid. Maar ALSA kan maar één applicatie tegelijkertijd van geluid voorzien. Om ervoor te zorgen dat meerdere programma’s samen geluid kunnen produceren gebruikt Karmic Koala de PulseAudio sound server. En mocht PulseAudio nou net die ene applicatie zijn die de ALSA backend dus al geclaimd heeft. Oftewel, LMMS zal niet meer zijn dan de Linux Multi Media Silence (ipv. Studio). Nu kun je in LMMS de Audio Interface op PulseAudio zetten, maar in het desbetreffende venstertje staat al een waarschuwing: bad latency!

Setup LMMS

Er zal nu wel geluid komen uit LMMS maar echt optimaal werkt het niet. Als je bijv. met MIDI aan de slag wilt of met wat grotere samples dan zul je al snel tegen de beperking van PulseAudio aanlopen. ALSA kent die beperkingen nauwelijks dus het zou fijn zijn als je ALSA als backend zou kunnen gebruiken. Hier komt het programaatje pasuspender van pas. Met het pasuspender commando kun je PulseAudio tijdelijk uitzetten zodat een ander programma gebruik kan maken van ALSA, het ‘suspend’ pa, oftewel PulseAudio. LMMS kun je op deze manier ook geluid door laten geven aan ALSA, het volledige commando daarvoor is pasuspender — lmms
Voordat je LMMS op deze manier opstart moet je in een terminal eerst even aplay -l uitvoeren om erachter te komen wat de ALSA naam van je standaard geluidskaart is:

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: STAC92xx Analog [STAC92xx Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: STAC92xx Digital [STAC92xx Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 3: NVIDIA HDMI [NVIDIA HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Bij mij heet deze dus ‘Intel’ en als ik vervolgens in LMMS in het Audio Settings schermpje bij SETTINGS FOR ALSA ‘hw:Intel’ ingeef dan weet ALSA welk apparaat hij aan moet spreken:

Settings ALSA LMMS

Als ik nu LMMS opstart met pasuspender — lmms wordt PulseAudio tijdelijk uitgeschakeld en gebruikt LMMS ALSA als backend met de juiste geluidskaart. En dat werkt al een stuk beter. Kan nog beter natuurlijk mbv JACK maar daar wijdt ik nog wel een apart blogje aan aangezien JACK en LMMS niet zo heel goed met elkaar door één bocht kunnen. Maar met wat tweaken kun je al een heel eind komen. En LMMS 0.4.6 komt er aan, hopelijk met wat betere JACK ondersteuning.

LMMS aanzwengelen

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

Ubuntu Studio Controls

Ben nu mijn Karmic installatie op mijn notebook aan het finetunen voor audio productie en probeer de Ubuntu Studio Controls daarvoor te gebruiken. Normaal doe ik dit het liefst zelf maar ben wel benieuwd naar dit tooltje. De eerste melding voorspelt helaas niet veel goeds, Engels is niet mijn moedertaal maar ik weet wel dat privilages niet de correcte spelling is. Ik bekijk nu mijn /etc/security/limits.conf omdat er nog een bugje in Ubuntu Studio Controls zit waardoor er een regel niet correct wordt aangemaakt, die moet je zelf handmatig nog even toevoegen:

@audio - rtprio 90       # maximum realtime priority

unlimited  # maximum locked-in-memory address space (KB)

Ja, daar kan je systeem weinig mee, daar mist wel meer dan een regeltje. Dus ik pas het nu aan zodat er het volgende komt te staan:

@audio - rtprio 90       # maximum realtime priority
@audio - nice -19 # maximum nice priority (= lowest nice value, default '0')
@audio - memlock unlimited # maximum locked-in-memory address space (KB)

Dit is ook erg slordig en bovendien niet erg handig:

# do not delete static device nodes
ACTION=="remove", NAME=="", TEST=="/lib/udev/devices/%k", OPTIONS+="ignore_remove"
KERNEL=="raw1394",              GROUP="video"
ACTION=="remove", NAME=="?*", TEST=="/lib/udev/devices/$name", OPTIONS+="ignore_remove"

Die raw1394 regel is er dus gewoon ergens tussen geknald terwijl het netter zou zijn als deze regel aan de Firewire stanza van dit bestand (/lib/udev/rules.d/50-udev-default.rules) zou zijn toegevoegd. Bovendien is het handiger om deze regel toe te voegen aan een nieuw bestandje in /lib/udev/rules.d want er is dus al een update geweest die bovenstaande regel er weer uit heeft gehaald. Een andere optie is om een dergelijk bestandje aan te maken in /etc/udev/rules.d want er is altijd een kans dat met een toekomstige update er toevallig een bestandje in /lib/udev/rules.d bijkomt wat toevallig dezelfde naam heeft als jouw zelf aangemaakte bestandje. Kleine kans natuurlijk, maar het kan altijd.

Volgende bugje, als ik nu check in welke groepen ik zit ben ik dus niet in de ‘video’ groep gezet, alle andere accounts wel. Dus het account onder welke je Ubuntu Studio Controls aanroept wordt kennelijk niet toegevoegd. Maar even handmatig gedaan want anders kan ik alsnog geen Firewire apparaten gebruiken met mijn huidige account.

Nou, maar even checken of het werkt…

Hmmmmm, het werkt maar heb wel last van xruns en af en toe loopt het vast met de volgende foutmelding:

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

Vervolgens floept het lampje op de Focusrite uit en wordt het apparaat uitgeschakeld:

Nov 30 22:45:01 soushi kernel: [ 1128.407152] ieee1394: Node changed: 0-01:1023 ->
0-00:1023
Nov 30 22:45:01 soushi kernel: [ 1128.407160] ieee1394: Node paused: ID:BUS[0-00:1023]
GUID[00130e01000605c2]
Nov 30 22:45:04 soushi kernel: [ 1131.423020] ieee1394: Node removed: ID:BUS[0-00:1023]
GUID[00130e01000605c2]

Dit is natuurlijk erg onhandig. Het zou aan de chipset van mijn notebook kunnen liggen (JMicron) of aan het über goedkope Firewiresnoer dat ik er nu tussen heb zitten maar onder 9.04 werkte het wel volgens mij. Nooit uitgebreid getest dus het hoeft niet specifiek aan Karmic te liggen. Nu wilde ik eigenlijk alleen Ubuntu Studio Controls even testen, ik ga mijn notebook toch niet gebruiken in combinatie met mijn Firewire kaart, dus laat het hier verder bij voor vanavond. Mijn conclusie is dat ik de boel liever zelf configureer want Ubuntu Studio Controls maakt er een beetje een potje van.

Edit: ik heb hier inmiddels melding van gemaakt op launchpad.net.

En zowel onder Jaunty als onder Karmic werkt de Focusrite niet goed, ook niet met betere kabels. Ligt dus hoogstwaarschijnlijk aan de Firewire chipset van mijn notebook (JMicron Technology Corp. IEEE 1394 Host Controller) of aan het feit dat de Firewire aansluiting op mijn notebook 4-pins is ipv. 6-pins. Alhoewel, dat hoort dus niet uit te maken.

Onder 8.04 heeft het kennelijk wel gewerkt zie ik nu net op mijn oude blogje.

Ubuntu Studio Controls

Sinas7UpFernandez

Al eeuwen heeft Ubuntu versie 2.2.1 van ZynAddSubFX in de repo’s staan. En die doet het gewoon niet goed, bij het navigeren in de instruments bank loopt de boel geregeld vast. In juli van dit jaar is er een bijgewerkte versie uitgekomen (2.4.0) maar dat was kennelijk net na de “freeze” van Karmic Koala want ook in 9.10 zit nog 2.2.1. Voor mijn Jaunty 9.04 machine heb ik uiteindelijk 2.4.0 zelf gecompileerd en het vastloop-probleem is daarmee opgelost. Heb nu alleen wel last van het nodige gekraak maar daar kom ik nog wel uit.

Het packagen voor Ubuntu vind ik nog wat ondoorgrondelijk, wat dat betreft vind ik het packagen voor Fedora fijner werken. Maar mocht ik er van de week nog wat tijd voor vinden dan zal ik proberen wat Ubuntu debjes te maken, vermits het wat rustiger is op het werk. Thuis ga ik het niet doen, daar moet muziek gemaakt worden, o.a. met ZynAddSubFX want hoe je het ook wendt of keert, wat een mooie geluiden zitten daar toch in.

Edit: uiteindelijk heb ik 2.2.1 ook goed aan de gang gekregen door in QJackctl de Timeout op 5000 ms te zetten ipv de standaard 500 ms.

Sinas7UpFernandez

Het Karmische Koalabeertje

Omdat de Nvidia drivers of Compiz niet lekker werkten onder 9.04 op mijn notebook heb ik er gisteren maar 9.10 op gezet. En tot nu toe draait het lekker! En het start ook nog eens allemaal zo’n 15 seconden sneller op. Kan volgens mij nog sneller, het opstarten van mijn notebook blijft namelijk even hangen op een bug:

[    3.240007] pci 0000:00:1a.7: EHCI: BIOS handoff failed (BIOS bug?) 01010001
[    5.240007] pci 0000:00:1d.7: EHCI: BIOS handoff failed (BIOS bug?) 01010001

Onder 9.04 bleef de boel hier veel langer op hangen, een seconde of 8, en dat is dus teruggebracht naar 2 seconden. Zou dan toch deze patch in de Karmic kernel zitten?1 Dat zou betekenen dat het nog sneller kan. Wat me verder opviel na de installatie was dat er een hoop icoontjes misten nadat ik de Tango icoontjes had geïnstalleerd. Bleek dat onder System – Preferences – Appearance – Interface – Show icons in menus stond uitgevinkt. Ook moest ik even wennen aan de nieuwere Gnome-Do, zat te zoeken naar de optie dat Gnome-Do altijd het bovenste venster is maar dat is voor het Docky theme vervangen door “intellihide”. Werkt best lekker. Ook kreeg ik Guake niet lekker draaiende, druk je op F12 en verschijnt dat ding op de onderste helft van het scherm terwijl ik het bovenin wil hebben. Dit heb ik op kunnen lossen met de Place Windows plugin van Compiz. En ik vind FF 3.5 best traag, maar daar schijn je een add-on voor te hebben. FF doet er nogal lang over om URL’s te resolven, geen idee waarom dat zo veel langer moet duren dan met 3.0.x.2 Voor de rest ben ik geen rare dingen tegengekomen, ziet er allemaal goed uit en vooralsnog draait het prima. Ben benieuwd hoe het beertje zich houdt als hij de nodige data van externe geluidskaarten en MIDI controllers te verstouwen krijgt en daar tegelijkertijd ook nog eens wat mee moet gaan doen.

1 Heb de ehci_ho_to parameter inmiddels getest maar die doet niks dus waarschijnlijk is de Karmic kernel niet voorzien van deze patch.
2 Kan aan ipv6 instellingen liggen. En FF3.5 kun je nog het nodige tweaken.

Het Karmische Koalabeertje

Ubuntu Studio 9.10

Vandaag is Ubuntu 9.10 uitgekomen, met dit maal als bijnaam Karmic Koala (kennelijk zijn ze fan van Suske en Wiske bij Canonical). Er is ook gelijk een Ubuntu Studio versie van beschikbaar gekomen en volgens mij is het dit keer een goed jaar (8.10 was geen topper vanwege het ontbreken van een werkende real-time kernel en 9.04 was goed maar het kon beter). Ik draaide de real-time kernel van 9.10 al een tijdje (2.6.31-9-rt) en die is echt heel erg goed. Ook van veel applicaties draaide ik al de versies die nu ook onder 9.10 beschikbaar zijn dus weet een beetje wat ik kan verwachten. Binnenkort maar op mijn notebookje zetten, hopelijk is dat Nvidia probleempje wat ik momenteel met Jaunty heb inmiddels ook verholpen alhoewel ik er sinds de laatste kernel-update geen last meer van heb gehad.

Ubuntu Studio 9.10

Linux Audio Conference 2010

ZIt ik een beetje rond te kijken op Open Blik zie ik dat de Linux Audio Conference van linuxaudio.org komend voorjaar in Utrecht is! Zo, daar word ik wel even enthousiast van. Nog mooier zou zijn als ik een bijdrage zou kunnen leveren aan deze conferentie. Gezien mijn universitaire achtergrond en mijn huidige werk bij de Universiteit van Amsterdam zou dat zo maar eens een hele mooie kans zijn.

Uiteraard blijf ik dit volgen en zal ik alle verdere ontwikkelingen hier neerpennen. Mooi iets om naar uit te kijken.

Linux Audio Conference 2010

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!