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

De Harde Waren

Al een tijdje zat ik te azen op een netbookje. Maar die 10″ schermpjes en priegeltoetsenbordjes weerhielden me van de aanschaf van zo’n apparaat. Totdat ik een mooie aanbieding van een netbookje tegenkwam met een 11,6″ schermpje. Even centjes gecheckt en meissie lief aangekeken (“waar heb dat nou voor nodig?“) en de gok gewaagd in de winkel want uitproberen was niet mogelijk. Maar volgens de reviews was de Packard Bell Dot M/A.NL/202 een leuk apparaat en met wat nerden en tweaken was Ubuntu er ook wel op aan de gang te krijgen.

Packard Bell  dot m/a.NL/202

Aangezien dit soort apparaten geen CD-Rom speler hebben moest ik met een USB stick aan de gang. Gelukkig geen probleem voor Ubuntu, binnen no time maak je een opstart USB stick. Probeer dat maar eens met dat OS uit Redmond, en mocht het je al lukken dan ben je volgens mij nog illegaal bezig ook. Na het booten met de stick (Ubuntu Jaunty 9.04) gaf het netbookje echter weinig sjoege. Dus een nieuwe opstart USB stick gemaakt met de Alternate versie van Jaunty en op die manier lukte het me wel om Ubuntu te installeren. En eigenlijk werkte alles meteen, geluid, draadloos, 3D effecten (met de open source Radeon driver!). Het enige wat niet goed werkte was CPU frequency scaling, oftewel het automatisch aanpassen van de kloksnelheid van de processor afhankelijk van de belasting van het apparaat. Maar ook dat viel op te lossen met een patch en het opnieuw aanmaken van de zgn. DSDT tabellen, dat zijn tabellen met gegevens voor het power management. Die werden altijd aangemaakt met programmatuur van Intel maar sinds een paar jaar worden daar ook Microsoft tools voor gebruikt met als gevolg incompatibiliteitsproblemen. Gelukkig kun je de tabellen uitlezen en weer invoeren in dat Intel programma zodat Linux weer wat met de tabellen kan. In het geval van mijn netbookje lostte dat samen met een kernelpatch het probleem op van de CPU frequency scaling.

Uiteraard heb ik het netbookje daarna helemaal gefinetuned zodat ik er ook muziek mee kan maken, dus een RT kernel erop en de nodige aanpassingen gedaan aan de installatie. En vandaag heb ik er het rtirq pakketje op gezet en goed ingesteld en nu loopt het echt als een speer. Aan rtirq besteed ik nog een aparte blog, het goed instellen van die tool vergt wat graafwerk maar het resultaat is er dan ook naar, latency van het onboard kaartje (een Realtek AC272) staat nu op 5.33 ms en een Qtractor opname met zo’n 20 sporen en een hoop realtime effecten en ook nog wat Midi loopt zonder problemen.

Het netbookje wil ik gaan gebruiken met de band of voor mijn solo dingen. Midi keyboard eraan, wat loops en samples erop en je hebt een perfecte sequencer/sampler met ook nog eens mooie softsynths erbij. Ook gebruik ik het apparaat om dingetjes uit te werken onderweg naar werk. Helaas is de accuduur nogal beperkt als je een RT kernel draait, hooguit een uur of twee. Met mijn custom kernel en CPU scaling haal ik meer dan drie uur. Nog steeds niet denderend maar goed genoeg voor mij.

De Harde Waren

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

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