Compiz-Fusion und ein “Kicker”-Problem

Gestern hat sich Deutschland beim “Kicken” gegen Kroatien blamiert. Ein Leiden – fast wie mit Windows – man sieht den Fehlern machtlos zu. Etwas anders bei “Kicker” und Compiz-Fusion unter KDE. Auch da gibt es Probleme im Zusammenspiel; man ist aber nicht zum tatenlosen Leiden verdammt.

Die nachfolgenden Ausführungen gelten für den Fall, dass man die Nvidia-Rendering-Funktionen zur Unterstützung des 3D-Desktops (genauer: des Composite-Managers) und nicht XGL/Compiz verwendet. Hat man den Desktop-Würfel z.B. mit 8 Seiten unter KDE konfiguriert, so gibt es zwei kleine Schwierigkeiten mit der Mini-Anzeige der 8 virtuellen Desktops des Würfels (8 sog. “Viewports”) in der Kicker-Leiste.

  • KDE und Kicker verstehen die neue Konfiguration nicht so, wie sie gemeint ist – nämlich so, dass die 8 Viewports des Würfels die vorherigen virtuellen KDE-Desktops (nehmen wir an, dass seien auch 8 Desktops gewesen) ersetzen sollen. Vielmehr erscheinen 8×8 =64 Minianzeigen von angeblich verfügbaren Desktops im Kicker-Bereich. (Dies ist bei Verwendung von XGL anstelle der Nvidia-Treiber-Funktionen nicht so! Es ist aber verständlich, dass KDE keine Integration für spezielle Funktionalitäten eines spezifischen Herstellers betreibt.)

    Man muss die Anzahl der anzuzeigenden virtuellen KDE-Desktops daher von Hand auf 1 reduzieren, damit nur die 8 Minianzeigen der “Viewports” des 3D-Desktops in der Kicker-Leiste übrigbleiben.

  • Viel ärgerlicher ist, dass alle auf irgendeinem der Viewports geöffneten Fenster in der Minianzeige der Desktops nur auf dem ersten Viewport-Minibildchen erscheinen. Denn Kicker kann das eigentlich besser; Kicker muss dazu aber die Information über die aktuelle Konfiguration neu verarbeite. Es hilft der kurze Wechsel zu einem Terminalfenster und die Eingabe von

    ….> killall kicker
    ….> kicker

    am Prompt. Bitte kein “kicker &” absetzen.

Danach verhält sich die Minianzeige der virtuellen Desktops in der KDE-Kicker-Leiste wie gewünscht und die Freude am 3D-Desktop – einer “Spielerei”, wie meine Frau nicht ganz zu Unrecht meint – ist noch größer.

kicker

Rosegarden – hast du Töne?

Rose_Haupt

Gestern habe ich darüber berichtet, wie man “JACK” zum Laufen bringt. Jack ist meist aber nur Mittel zum Zweck. In meinem Fall sollte eigentlich der Sequenzer “Rosegarden” ausprobiert werden. Ich war ja gestern ganz froh, als Rosegarden endlich lief, den Anschluss an Jack schaffte und keine Fehler mehr meldete. Dann habe ich aber (leider) auch noch den Versuch unternommen, Rosegarden und meiner Audigy-Soundkarte ein paar Midi-Töne zu entlocken. Das misslang im ersten Anlauf völlig – Rosegarden blieb stumm und gab trotz korrekt konfiguriertem Jack keine Midi-Töne von sich. Interessanterweise konnte der Datenstrom eines SW-Synthesizers, der mit JackEQ auf Rosegarden umgelenkt wurde, sehr wohl mit lautstarkem Resultat verarbeitet werden. Ursachen für mein Scheitern mit Midi waren einerseits meine Unerfahrenheit mit Audio-Devices, aber auch etwas missverständliche Einstellungsdialoge von Rosegarden.

Rosegarden bietet im Bereich der Midi-Konfiguration einen Dialog an, mit dem das Midi-Gerät gewählt werden kann und mit dem auch die zugehörigen Bänke verwaltet werden. Dieser Dialog wird durch einen weiteren zum “Laden” einer Soundfont-Bank ergänzt. Hier begann meine Kette der Mißverständnisse: Der Rosegarden-Dialog zur Verwaltung der Midi-Geräte lädt nämlich keineswegs Soundfonts auf die Karte (s.u.).

Im Internet entdeckte ich übrigens, dass eine Reihe von Leuten ein ähnlich stummes Rosegarden vorgefunden hatten wie ich selbst. Die erhielten dann von bekümmerten Zeitgenossen viele Ratschläge, von denen die meisten aber am Kern des Problems vorbeigingen. U.a. fand ich die Anmerkung, dass ein SW-Syntheziser zwingend erforderlich sei. Das ist schlicht falsch. Die “Audigy 2”-Karte, die ich einsetze, ist ein vollwertiger Soundprozessor, der unter dem emu10k1-Modul und Alsa sehr wohl mit Midi-Vorgaben umgehen kann. Nachfolgende Ausführungen sollen helfen, meine elementaren Fehler zu vermeiden. Der Reihe nach:

Midi
Midi ist nach meinem Verständnis ein Protokoll, das einem Klang-Generator (z.B. einem Synthesizer oder einer Sounkarte) vorgibt, mit welcher zeitlichen Charakteristik, Lautstärke und in welcher Tonhöhe er Töne erzeugen soll. Die Vorgabe kann über Software, aber auch über Midi-fähige “eingabe”-Instrumente udn Tastaturen erfolgen. Die klangliche Färbung liegt dagegen beim Sounderzeuger/Schallumwandler. Im Fall einer modernen Soundkarte werden zur Vorgabe instrumentaler Klangfarben sog. Soundfonts auf die Karte “geladen”. Diese steuern den Syntheziser der Karte so, dass er eine Reihe von klanglichen Varianten nach einem bestimmten Nummernschema (Soundbänke und Kanäle) anbieten kann. Das Midi-Protokoll erlaubt dann z.B. einer Sequenzer-SW, diese “instrumentalen” Klangfarben des Midi-Geräts gezielt einzusetzen.

Soundfontdateien für die Audiokarte
Damit die Midi-Devices auf einer Soundkarte (meist gibt es hier mehrere) überhaupt Töne produzieren, wenn sie von einer Software über das Midi-Protokoll und den Soundkartentreiber angesprochen werden, muss also zuvor zwingend eine Soundfont-Datei (wie z.B. CT4MGM.SF2) auf die Soundkarte (in meinem Fall eine Audigy 2) geladen werden. Soundfontdateien gehorchen normierten Formaten. Man findet Soundfont-Dateien im Internet oder auch auf Treiber-CDs für die jeweilige Soundkarte.

Laden von Soundfontdateien auf die Audiokarte
Zum Laden von sog. “sf2”-Soundfontdateien auf eine Audigy gibt es unter Linux das Programm “/usr/bin/asfxload”. Es arbeitet selbstverständlich mit dem emu10k1-Treiber (und Alsa) zusammen. (Für oss heisst das Programm sfxload – Rosegarden und Jack erfordern aber Alsa). Zu den Optionen siehe die Man-Seiten.

Anstatt manuell mit asfxload zu arbeiten, kann man das Laden auch von Rosegarden vornehmen lassen – Rosegarden setzt dazu asfxload ein. Der entscheidende Dialog hierfür
findet sich unter “Einstellungen -> Rosegarden einrichten -> Midi” und nicht (!) unter “Studio -> Midi-Geräte verwalten”.

Rosegarden_1

Laden von Soundfontdateien zur Rosegarden-Konfiguration
Damit Rosegarden sinnvoll zum “Komponieren” von Musiksequenzen verwendet werden kann, muss auch Rosegarden über das Midi-Device und sein Angebot Bescheid wissen. Hierzu können bestimmten Midi-Devices einerseits echte HW-Devices zugeordnet werden. Andererseits soll Rosegarden auch über die Soundbänke informiert werden. Letzteres entspricht dem “Laden” (Auswerten) der Soundfont-Dateien in Rosegarden und die Zuordnung zu den Midi-Devices für die diversen Dialoge und Oberflächen von Rosegarden. Die entsprechenden Konfigurationseinstellungen nimmt man nun unter “Studio -> Midi-Geräte verwalten” vor.

Rose_Midi_1

Rose_Midi_2

Hier lädt man dann das gleiche File, dass man zuvor an die Soundkarte übermittelt hat, erneut – nur diesmal für Rosegarden. Rosegarden bietet danach in seinen Dialogen die richtigen, d.h. die zum geladenen Soundfont passenden Kanäle und Instrumente an.

Endlich – Töne
Nun steht dem Komponieren mit den sehr eingänglichen Dialogen nichts mehr im Wege. man legt ein Segment an und bearbeitet dieses dann z.B. im Matrixeditor. Auf dem dortigen Keyboard kann man die ersten Töne hören (hoffentlich). Welchen Kanal (sprich Instrument) man der aktuellen Sequenz zuordnen will regelt man am besten mit einer Reihe von anderen Einstellungen hier. Danach heiß es nur noch Zeitintervalle mit Noten zu füllen …..

Rose_matrix

Im Hauptfenster kann man übrigens das hörbare Instrument im nachhinein noch abändern.

Stabilität?
Aus meiner Sicht ist Rosegarden im Zusammenspiel mit Jack und anderen Musik-Komponenten noch nicht 100%-ig stabil. Es kam beim Spielen manchmal zu Jack-Fehlern und nachfolgenden Problemen mit Rosegarden. Im schlimmsten Fall war sogar ein Neustarten des kompletten Audiosystems vonnöten. Ich bin im Moment nicht sicher, welche der vielen Komponenten (emu10k1, Jack und seine vielen Komponenten, andere Jack-fähige Audioprogramme oder eben Rosegarden) die Schuld an den Problemen trägen.
Aber im Allgemeinen kann man sich mit Rosegarden und schönen wie schrägen Eigenkompositionen sehr gut die Zeit vertreiben. Ein im Ansatz sehr nettes Programm – auch für Laien, wenn man es richtig einrichtet.

Links
http://rosegarden.sourceforge.net/tutorial/en/chapter-1.html
http://de.wikipedia.org/wiki/Musical_Instrument_Digital_Interface

Jack unter Opensuse 10.3

Ich bin kein Linux-Audiofreak und habe von Audioservern, Jack und Konsorten keine Ahnung. Normalerweise reicht es mir, wenn an meinem Arbeitsplatz “amarok” (ein tolles Programm!) im Zusammenspiel mit Alsa oder Oss meine Musikdateien in Töne verwandelt. Ich habe eine Audigy 2 Soundcard unter Linux; an der hängt ein 7.1 Lautsprechersystem (Upmix von 5.1 oder 6.1 Sound auf 7.1) und damit bin ich vollkommen zufrieden.

Heute allerdings musste ich Rosegarden für einen potentiellen Kunden für Tests unter Opensuse 10.3 installieren. Rosegarden benötigt den Jack – Echtzeit- Audioserver. Also habe ich Jack und einige zugehörige Tools wir JackEQ aus den SuSE-Repositories installiert. Dann wollte ich Jack einfach mal ausprobieren.

Erste Hürde: Wie startet man Jack?
Der naive Versuch, dies über die Auswahl “Jack Echtzeit-Audioserver” in der Soundsystem-Konfiguration im KDE-Kontrollzentrum zu machen, scheiterte. Der Soundserver wird zwar wieder gestartet, doch jede danach von einem normalen User gestartete Jack-Applikation meldet, dass Jack nicht läuft. Der Verdacht, dass Jack beim gewählten Vorgehen gar nicht gestartet, sondern eher vorausgesetzt wird, bestätigte sich nach einem Blick in die Prozesstabelle. Von “jack”-Prozessen keine Spur. Ein wenig Forschen im Internet führt einen dann zum manuellen Start mittels

jackd -v -d alsa -d hw:0

Das ging dann auch problemlos. Später – nach dem Überwinden einer weiteren Hürde – fand ich dann das schöne Tool “Qjackctl”, das das Starten und Überwachen des Audio-Servers QT-basiert über eine gelungene graphische Oberfläche ermöglicht.

qjackctl_2

Ein Test des Soundservers ist möglich, indem man z.B. “amarok” startet und unter den Einstellungen für die Audio-Ausgabe “Jack” wählt. Das funktionierte auch schön, bis ich nach einer Weile kurzzeitige Aussetzer bemerkte, wenn man andere ressourcenlastige Applikationen mit hoher Priorität startete. (Dies resultiert in etwas kryptischen xrun-Meldungen). Ich spielte danach an Pufferparametern, Periodenparametern und Prioritätsparametern im Jack-Aufruf herum ( z.B. : -P 0 -p 512 -n 2 ). Nur mit begrenztem Erfolg. Es gab dennoch immer mal wieder einen kleinen Aussetzer. Für die Analyse hatte ich bisher keine Zeit. Da ich aber was von Echtzeit gelesen hatte, wollte ich nun Jack mit Echtzeit-Priorität starten.

Zweite Hürde: Jack mit Echtzeitpriorität?
Der (gem. man-Doku) erforderliche Aufruf

jackd -v -R -d alsa -d hw:0

scheitert mit einer Meldung des Systems, dass man dazu keine Berechtigungen hat. Gut so! Warum sollte ein beliebiger User das auch dürfen; das wäre ein immenses Sicherheitsrisiko. Jack als root zu starten ist aus dem gleichen Grund unsinnig. Das bringt einen auf den Gedanken, dass man wohl in den PAM-Dateien einen Einstellung vornehmen muss. Tatsächlich sind Einträge in der Datei /etc/security/limits.conf gefragt. Will man etwa genau einem User namens “ralph” die notwendigen Rechte geben, so sind folgende Einträge angebracht :

ralf – rtprio 99
ralf – memlock unlimited
ralf – nice -19

(Für Gruppen greife man statt “ralph” zu “@gruppenname”. )

Der User Ralf darf dann tatsächlich nach einem neuen Login jackd -R ausführen. Und nun läuft der Sound auch völlig ruckelfrei und problemlos in fast jeder Belastungslage des Systems.

Dritte Hürde: JackEQ läuft nicht ohne vorgegebenen Suchpfad
Im nächsten Schritt möchte man gerne JackEQ und andere Programme aus dem Jack-Umfeld starten. Das misslingt zumindest im Fall von JackEQ jedoch. Startet man vom Terminal aus, so erhält man die Meldung, dass die Library dj_eq_1901.so nicht gefunden wird. Nach einer kurzen Recherche findet man, dass man das Paket xxxx installieren muss. Leider reicht das auch nicht, denn JackEQ vermutet die Bibliotheken zumindest auf einem 64Bit-
System im falschen Verzeichnis. Eine Suche im Internet ergibt dann, dass man unter Opensuse tunlichst

export LADSPA_PATH=”/usr/lib64/ladspa”

in eine der profile-Dateien für den Start der Shell einfügen sollte. Danach werden die Bibliotheken auch gefunden und JackEQ verrichtet seinen Dienst zusammen mit Jack.

Fazit
Jack in Ehren – aber an der Installationsfreundlichkeit lässt sich noch Einiges verbessern.

Tja, und was war eigentlich der Anlass für das Ganze? Ach ja, Rosegarden. Ein Test zeigt, dass auch dieses Programm läuft – zumindest im Prinzip. Auch hier meldet das Programm nämlich das Fehlen diverser benötigter Zusatzprogramme, die sich jedoch nachinstallieren lassen. Zu Rosegarden mehr an anderer Stelle.

Links
http://lau.linuxaudio.org/jack/
http://jackaudio.org/faq