Afspelen midi-bestanden onder openSUSE 12.2, met JACK Audio, Qsynth en Rosegarden

Om midi-bestanden af te kunnen spelen, is in Linux nogal wat voorbereiding nodig, al is het al veel beter dan het was.
Deze how to behandelt installatie en instellingen van Jack als low latency geluidsysteem, Qsynth als softsynth en Rosegarden als programma om midi bestanden mee te beluisteren en te bewerken. Deze how to is iets ingewikkelder dan de how to midi met Pulseaudio, Qsynth en Rosegarden. Maar dan kan Rosegarden wel audio opnemen en op andere manieren volledig gebruik maken van de mogelijkheden van Jack. Echter, applicaties die Pulseaudio nodig hebben voor audio, werken tijdelijk niet (omdat zolang Jack is geladen Pulseaudio automatisch tijdelijk wordt uitgeschakeld).
Lees hier meer over Jack:
JACK | connecting a world of audio
Audio | 64 Studio
http://rosegarden.sourceforge.net/tutorial/en/chapter-2.html (beetje verouderd, maar de technische details kloppen nog)

Nodig voor deze how to: een werkend multimediasysteem, dat is opgezet met packman en met de juiste codecs geïnstalleerd: http://forums.opensuse.org/content/107-re-multi-media-restricted-format-installation-guide.html.
Een geluidskaart met een ingebouwde synthesizer is niet nodig in deze opzet, omdat we een softsynth gebruiken.
In deze how to worden ook andere programma’s genoemd, om als je dat wilt tot een soort OpenSUSE Studio te komen.

Stappen 1 en 2 zijn vooral een check of alle noodzakelijke paketten zijn geïnstalleerd. In stap 3 begint het echte werk: instellen van Jack en de software.

** 1 OpenSUSE opstarten met Kernel-desktop, die is ingesteld voor real time scheduling**
Omdat real time scheduling noodzakelijk is voor geluid zonder haperingen en vastlopers, kun je volgens deze methode alleen midi afspelen, als je automatisch start met de desktop-kernel. Gelukkig laadt OpenSUSE standaard deze kernel. Maar een check of dat bij jouw ook echt zo is, kan geen kwaad.

  • Check of de kernel-desktop is geïnstalleerd, door onderstaande code te plakken in konsole of een ander terminal programma:
su -c'zypper se kernel-desktop'

Installeren indien dit nog niet zo is:

su -c'zypper in kernel-desktop'

Start je systeem opnieuw op.

  • Check, als je de kernel-desktop nog moest installeren, of nu automatisch wordt opgestart met de kernel-desktop.
uname -r

De output zou moeten zijn

kernelversienummer-desktop

De kernelversie is natuurlijk afhankelijk van je systeem: als er maar desktop aan het eind staat.
Als dat niet zo is, moet je dat instellen: Open YAST - Bootloader - Bootloaderopties. Ga naar “standaard-opstartsectie” en selecteer de kernel-desktop entry in de uitklaplijst. Klik “oke” en nogmaals “oke”. Let op: er vanuit gaand dat je systeem opstart met GRUB2. Als je een andere bootloader hebt, moet je zelf uitzoeken hoe je je systeem met de juiste kernel laat opstarten. Als je de bootloader hebt aangepast, moet je nu eerst je systeem herstarten en controleren of je daarna wel met de juiste kernel hebt opgestart.

** 2 Installeer de nodige paketten**
Voer het volgende uit:

su -c'zypper in jack libjack0 pulseaudio-module-jack pavucontrol qjackctl qjackctl-lang fluidsynth qsynth rosegarden lilypond GeneralUser awesfx snd_sf2'

Jack is het geluidsysteem. Qjackctl is een gui waarmee Jack wordt ingesteld. De pulseaudiomodule regelt de integratie met PA. Qsynth is de soft synthesizer. Rosegarden is het muziekprogramma en Lilypond een bladmuziekprogramma dat is geïntegreerd in Rosegarden. De drie laatste paketten zijn midi-soundfonts (collecties met geluiden van muziekinstrumenten). Veel van de programma’s opgenomen in het Zypper commando zijn overigens standaard al geïnstalleerd, als het goed is. Door dit commando zo uit te voeren, weten we zeker dat we alles hebben wat nodig is.

** 3 Instellen Qjackctl, Qsynth en Rosegarden
3.1 Instellen Qjackctl
**Start Qjackctl.
Zodra in het display wordt vermeld: “gestart”, ga je naar 3.2. Komen er echter “gestopt” meldingen van xruns, zorg dan dat je instellingen er zo uitzien, als startpunt om verder te experimenteren: https://dl.dropbox.com/u/23381935/qjackctl.png. Dat zijn de instellingen die het bij mij goed doen. Als je nu nog stop-meldingen krijgt, zul je moeten experimenteren met de instellingen. Op internet zijn hier veel aanwijzingen voor. Dit is een goeie als startpunt voor basics, die ook hints geeft over de instellingen en wat die doen met je systeem: JACK Audio Connection Kit | 64 Studio. Ik herinner me nog goed hoelang ik heb zitten klooien, voordat de instellingen goed waren. Ook toen ik midi bestanden ging afspelen (met name die met veel geluidssporen, die meer processorcapaciteit kunnen vragen), bleek ik nog 1 keer te moeten freubelen.
Let op dat je bij interface de juiste vermelding van je geluidskaart opneemt: hw:0 of hw:1. Dat is bij mij hw:1 omdat hw:0 de HDMI is.

3.2 Instellen Qsynth
Start Qsynth.
Klik op het knopje “Setup” en stel het tabblad Midi als volgt in:

  • Zet een vinkje bij “enable midi input”;
  • Selecteer “jack” als Midi driver.

Instellen tabblad Audio:

  • Audio Driver: jack;
  • Sample format: 16bits;
  • Sample Rate: 44100. Dat is CD-kwaliteit.

Instellen tabblad Soundfonts:

  • Laadt de soundfonts met de knop “Open” en ga naar de map
/usr/share/sounds/sf2

Selecteer GeneralUser_GS_Fluidsynth.sf2;

  • Sluit het instellingen venster.

Als je deze how to af hebt gemaakt, kun je later nog experimenteren met geluidseffecten door aan de ronde knoppen te draaien in het hoofdvenster van qsynth. Veroorzaak alleen geen xruns door teveel geluidseffecten of door te hoog ingestelde geluidseffecten. Probeer ook eens de andere twee soundfonts uit.

3.3 Start Rosegarden en sluit Rosegarden aan op Qsynth met Qjackctl

  • Na het starten van Rosegarden, klik je in het venster van qjackctl op de knop “verbindingen”.

Klik in het tab audio op alles afkoppelen en stel de volgende verbindingen in:

  • Linkervenster Qsynth l en r , verbinden met rechtervenster playback 1 en 2;
  • Linkervenster Rosegarden master out l en r, verbinden met rechtervenster playback 1 en 2;
  • System capture 1 en 2, verbinden met Rosegarden record in 1 L en R.

Nu idem tabblad Alsa, waar je Rosegarden out 1 General Midi device verbindt met de Fluidsynth input port (als dat niet al het geval was).

3.4 Instellen standaardstudio Rosegarden

  • Open het menu: Bewerken - Preferences. Selecteer hier het tabblad Midi Algemeen. Geef de padnaam op van asfxload
/usr/bin/asfxload
  • Geef daaronder de naam en locatie van je geluidsfont op. Bij mij:
/usr/share/sounds/sf2/FluidR3_GM.sf2
  • Open een willekeurig midibestand, liefst met veel instrumenten;
  • Selecteer: Studio - Beheer midi-apparaten en selecteer hier: “Synth input port”;
  • Klik vervolgens op “banken” en selecteer een bank met veel verschillende instrumenten, bij mij: “General Midi bank” en klik “bestand sluiten” en vervolgens close;
  • Selecteer Studio - Midimixer en zorg dat geen enkel spoor is gedempt. Stel desgewenst de volumes per spoor anders in. Sluit de Midimixer;
  • Selecteer met de rechtermuisknop ieder midispoor (Rosegarden noemt dat segmenten) apart (in het deel van het venster links waar in het grijs de namen van de sporen staan) om te selecteren: General Midi Device - General Midi Device #1, etc;
  • Nu zou je het midi-bestand moeten kunnen horen tijdens het afspelen. Zo niet, dan zul je je verder moeten verdiepen in de werking van Rosegarden in hun wiki.
    Als je midi-muziek hoort, moet je deze instellingen nu opslaan als standaardstudio:
  • Selecteer Bewerk - Preferences en vervolgens het midi tabblad. Haal het vinkje weg bij “Gebruik altijd de standaardstudio bij het laden van bestanden”;
  • Selecteer Studio - Sla huidige document op als standaardstudio.

3.5 Gebruik van midi bestanden met Rosegarden
Om met midi bestanden te werken in Rosegarden, doe je steeds het volgende:
1 Start Qjackctl;
2 Start Qsynth;
3 Start Rosegarden en ga aan het werk met je muziek.
In een eenvoudig script kun je dit automatisch doen, met 1 klik. Afsluiten in omgekeerde volgorde, natuurlijk.

4 Installeer optioneel nog de volgende programma’s om van je pc een bescheiden geluidsstudio te maken

su -c 'zypper in audacity hydrogen libhydrogen-core0 ZynAddSubFX vkeybd projectM projectM-data projectM-jack projectM-libvisual-alsa lmms'

Toelichting
Audacity is een prima geluidbewerkingsprogramma (bestandsconversie, knippen en plakken, digitaliseren van LP’s of cassettebandjes en verwijderen van bijgeluiden). Hydrogen is een drum-sequencer. ZynAddSubFX is net als Qsynth een midi sequencer, maar met minder/andere mogelijkheden. En je hebt een virtueel toetsenbord (leuk). Vkeyb gebruikt je toetsenbord als een midi-keyboard. ProjectM is een fantastisch programma dat visualisaties laat zien op de maat van de muziek in audio-programma’s, in dit geval via Pulseaudio en Alsa, als je Jack aan hebt gezet. Linux Multimedia Studio is een muziekstudio programma waarmee je ook midi’s kunt beluisteren, maar zonder dat je de bladmuziek kunt bekijken.