Hallo LUG,
ich habe mir in den letzten Tagen mal die ganze Sounderei unter Linux (speziell Kubuntu 8.04) etwas genauer angesehen. Also Jack, Arts, Alsa usw. Als Player habe ich Amarok genommen und die aktuelle libxmms 1.1.12 mit Ausgabe über arts, alsa und jack usw. selbst compiliert. Wenn ich den Sound über Alsa und Arts ausgebe, funktioniert alles einwandfrei. Nur wenn ich Jack dazwischen hänge, stottert die Musik. Ich habe den normalen Kernel genommen und den rt-Kernel, immer der selbe Effekt. Auch mit einem anderen Programm, was Jack nutzt, stottert es. Also nehme ich mal an, dass etwas mit Jack nicht stimmt.
Ich habe, wie gesagt, schon den RT-Kernel probiert und auch Jack mit verschiedenen Optionen von Kommandozeile gestartet. Auch Tante Google brachte mich nicht auf die richtige Spur.
Wer kann mir sachdienliche Hinweise zur Ergreifung des Stotter-Täters geben? Vielen Danke.
Falk
Am Dienstag, 20. Mai 2008 21:11 schrieb Falk Döring:
Hallo LUG,
ich habe mir in den letzten Tagen mal die ganze Sounderei unter Linux (speziell Kubuntu 8.04) etwas genauer angesehen. Also Jack, Arts, Alsa usw. Als Player habe ich Amarok genommen und die aktuelle libxmms 1.1.12 mit Ausgabe über arts, alsa und jack usw. selbst compiliert. Wenn ich den Sound über Alsa und Arts ausgebe, funktioniert alles einwandfrei. Nur wenn ich Jack dazwischen hänge, stottert die Musik. Ich habe den normalen Kernel genommen und den rt-Kernel, immer der selbe Effekt. Auch mit einem anderen Programm, was Jack nutzt, stottert es. Also nehme ich mal an, dass etwas mit Jack nicht stimmt.
Ekliges Problem. Die Kette ist Applikation -> Jack -> Alsa -> Hardware ->Ohr. Die Lösung erfolgt rückwärts.
Ich fange bei Alsa an. 1.) Sicherstellen, daß keine Applikation dieses Gerät nutzt. (Kein arts, kdm, oss , ... "killall") 2.) Sich mit einer App. direkt in Alsa einklinken. (aplay xyz) Das sollte einwandfrei laufen.
3.) jackd verstellt speziell die Buffergrößen, die vom Alsatreiber verwaltet werden, um gringe Latenzzeiten zu erzielen. Manche Hardware läßt das nicht fehlerfrei zu. (Selbst wenn jackd perfekt arbeitet und auch "gescheduled" wird.) (Test mit aplay und entsprechenden Einstellungen.)
4.) Jackd selbst darf nicht "außer Tritt" kommen (x-runs, werden normalerweise angezeigt). Das ist orthogonal zur echten Ausgabe. D.h. bei x-runs wird's mit Sicherheit hörbar, aber ohne x-runs können andere Fehler auftreten. Das ist über rt-kernel, root-Betrieb u.ä. erreichbar, kann aber auch durch "Pufferkomplikationen" erschwert werden..
5.) Meine Erfahrung ist, daß (zwei) Applikationen Alsa "sharen". Das ist zulässig, eigentlich sogar gewünscht (Alsa-Softmixer) , führt im Fall Jackd (Pufferverstellung) aber zu Problemen wie s.o. Ich kann auf demselben Alsa-device keine 2 jackd laufen lassen (Fehlermeldung jackd wegen bereits belegt.) Andere Applikationen sind da "unsensibel".
6.) Appikationen: Richtig interessant wird es bei Samplerate-Unterschieden. (Qulle (CD 44,1 kHz) abspielen, XMMS ???, Jackd auf 44,1 kHz, Soundkarte aber intern 48,0 kHz. Davon dann beliebige Kombinationen...)
Ein weites Feld. Einleuchtend?
Bernhard
PS: Solange Du nicht aktiv Musik selber machst, laß jackd weg. Wenn Du das allerdings willst, geht an jackd kein Weg vorbei. Dann will er aber auch exklusiv und optimal eingestellt arbeiten dürfen.
Hi Bernhard,
On Tue, May 20, 2008 at 22:04:55 +0200, Bernhard Schiffner wrote:
[viel Interessantes]
Das war mal ne gute Info zum Thema Jack. Bisher war mir nicht klar, wo das Ding in der Linux-Soundlandschaft angesiedelt ist.
Mir selbst reicht momentan die vorgeschlagene ALSA only Loesung, sprich, moeglichst ALSA-faehige Anwendungen, kein extra Soundserver, Software Mixing per libasound/dmix.
Gruss, Chris
Hallo Bernd,
danke für deine ausführlichen Infos. Hast du dich damit freiwillig zu einem Vortrag gemeldet? :-)
Die Ausgabe direkt über Alsa und Arts funktioniert ohne Probleme. Was Amarok ausspuckt, kann ich z.B. über KRec wieder "einlesen". Nur als ich Jack ausprobieren wollte gab es diese Stottererer.
Du hast viele interessante Ansätze aufgezählt, zu denen man mal weiterforschen kann. Da ich nicht vor habe, Musik zu machen, ist es auch nicht so schlimm, wenn es nicht klappt. Für mich ist es derzeit nur mal interessant, über welche Wege man Töne aus seinem Computer holen kann. Nebenbei lernt man auch noch was über Grub, den Kernel, Google ...
Noch ein Errata: Natürlich meine ich nicht libxmms, sondern libxine (bzw. xine-lib). Ersteres ist ein Player, der seit Ubuntu 8.04 offiziell nicht mehr im Repo ist. Nur zur Info.
Tschau,
Falk
Am Mittwoch 21 Mai 2008 06:25:27 schrieb Falk Döring:
Hallo Bernd,
danke für deine ausführlichen Infos. Hast du dich damit freiwillig zu einem Vortrag gemeldet? :-)
Würde ich auch begrüßen. Vielleicht noch PulseAudio und Phonon hinzumixen, um es den Zuhörern nicht ganz so einfach zu machen. Für ersteres gibt es eine schöne Übersichtsgrafik hier: http://rudd-o.com/wp-content/uploads/2007/11/pulseaudio-diagram.png
Josef
Hi Josef,
On Wed, May 21, 2008 at 07:19:50 +0100, Josef Spillner wrote:
Fuer ersteres gibt es eine schoene Uebersichtsgrafik hier: http://rudd-o.com/wp-content/uploads/2007/11/pulseaudio-diagram.png
OMFG. Es gab mal das KISS-Prinzip, aber heute baut man wohl lieber Eierlegendewollmilchsau-Frameworks.
meinjanur, Chris
Am Mittwoch, 21. Mai 2008 06:25 schrieb Falk Döring:
Hallo Bernd,
danke für deine ausführlichen Infos. Hast du dich damit freiwillig zu einem Vortrag gemeldet? :-)
Solange er Eurerseits als "Fragment" geduldet wird : ja.
Idee: Workshop im Klub. X+0 1.) Kleiner Vortrag nur Jack 2.) Kurzdemo gute Applikation, die auf Jack aufsetzt (Ardour + Ladpsa + "Überraschung") X+45' 3.) Hilfe an anderen Laptops 4.) Netjack als Ziel X+Y 5.) fusselige Zunge
Das wird "anstrengend" (für die nicht-vortragenden ggf. Downloads, compilieren ...)
Im positiven Fall würde ich noch mal eine ungefähre Paketliste posten, was bei Interesse nötig wäre...
???
Bernhard
Hallo Bernhard
Am Mittwoch, 21. Mai 2008 09:58:07 schrieb Bernhard Schiffner:
Am Mittwoch, 21. Mai 2008 06:25 schrieb Falk Döring:
Hallo Bernd,
danke für deine ausführlichen Infos. Hast du dich damit freiwillig zu einem Vortrag gemeldet? :-)
Solange er Eurerseits als "Fragment" geduldet wird : ja.
Ist mir egal, so lange drei Dinge erfüllt sind: Ich lerne was neues, ich kann es mir merken und mir nützt es was.
Tschau,
Falk
Am Mittwoch, 21. Mai 2008 22:11 schrieb Konrad Rosenbaum:
On Wednesday 21 May 2008, Bernhard Schiffner wrote:
Idee: Workshop im Klub.
Bitte mail mir 2 Tage vorher, damit ich den Beamer mitbringe.
Konrad
Übernachstes Klubtreffen. (11.6.) Es ist meinerseits noch viel vorzubereiten.
Bernhard
Auszug aus einer Off-List-Mail:
------------- Jackd ist ein Stück Software, das aus der professionellen Musikszene kommt, und (sehr kleine) Puffer per Callback verwaltet.
jacjd ist gewissermaßen Kontact _für Profis_ .
Beispiel: Buffergröße: 128 Byte Samplerate: 48 kHz d.h. ein "Soundatom" ist 3 ms lang.
Ich starte Jackd und muß sicherstellen, daß er _zuverlässig_ alle <3ms aufgerufen wird, da sonst der Puffer zu leer oder zu voll ist (X-run)
Applikationen melden ihren Puffer und ihre Weiterschaltfuntion bei Jackd an und Jackd holt sich ab, was er braucht.
Im Standardfall ist jackd per ALSA an _eine_ Soundkarte mit ihrem Quartz gekoppelt. Die Soundkarte stellt irgenwannn (per Interrupt) fest "jackd gib mir jetzt Sound ", worauf jackd im Prinzip sagt "OK, ich bin in der 2.ms nach Rescheduling, wir können 86 Byte austauschen (Senden und Empfangen!)." (Erste Ebene)
Etwas später (da das Scheduling von jackd nicht am Soundkartenquartz hängt), werden diese 86 Byte in die Puffer der angemeldeten und mit der Soundkarte verbundenen Applikationen "verrechnet". Gleichzeitig wird allen Applikationen mitgeteilt: "Nächstes Soundatom prozessieren". (Zweite Ebene)
D.h. zwischen Applikationen, die senden und empfangen, habe ich das Soundatom als Verzögerung. Durch "intelligent Design" kaskadieren sich diese Zeiten aber (normalerweise) nicht. Denke hier an eine aufwendige Filterbank.
Cool!
Netjack arbeite so, daß er sich per UDP in den Master-Jackd verbindet, der seinerseits wieder am Quartz der Soundkarte hängt. 1 Soundatom Verzögerung zwischen zwei beliebigen Rechnern, ausfallsicher! (Die Soundkarte des Slaves läßt sich nur mit ein paar Tricks und "ohne Garantie" da hinein integrieren. Die Quartze der Soundkarten sind ja i.a. nicht synchronisiert, d.h. es kann dadurch zu "Aussetzern" beim Slave kommen.)
Noch cooler!
Für gute Trommler sind (IMHO) 12 ms bemerkbar. Größere Zeiten werden störend empfunden.
Bernhard
lug-dd@mailman.schlittermann.de