Der Traurige Zustand der Open Source Dokumentation Dokumentation
-
Hallo,
ich vesuche mal zu dokumentieren wie ich mit der pulseaudio-doku zurechtkomme.
Die Aufgabe: Ich habe eine Soundkarte mit zwei Stereoausgängen. Und ich möchte in pavucontrol jeden dieser Ausgänge unabhängig regeln können.
1. Versuch: pavucontrol
Da gibt es sowas wie "Configuration -> Profile". Wenn das auf "Analog Surround 4.0 + Analog Stereo Input" steht, dann habe ich schonmal jeden Kanal als Regler in "Output Devices". Ich möchte zwar zwei getrennte output devices haben, je für einen Ausgang, aber das sollte ja nicht so schwer sein?
1.1 da gibt es doch das Profil "Analog Stereo Duplex"? Ist es das was ich möchte?
-> Nach einem pulseaudio -k; sleep 1 ; pulseaudio --start und einem amarok neustart kann ich auch wieder was hören. so, jetzt habe ich bei "output Devices" nicht mehr einen Vierkanäligen Ausgang sondern einen Zweikanäligen, und kann in einem Auswahlmenü zwischen "Analog Output" und "Analog Headphones" wählen. Nur scheint diese Auswahl nichts zu bewirken; der regler darunter ändert die Lautstärke für beide Ausgänge unabhängig von der "Port"-Auswahl. Naja, irgendwas wird es schon machen.1.2 Ok, probieren wir es doch mal mit linux-fu: die Kommandozeile
pacmdDie Aufgabe ist denkbar einfach: Zwei virtuelle sinks erstellen (denn sowas muss es geben, das hab' ich im pavucontrol, Punkt "Show: Virtual Output Devices" gesehen, ich bin ja nicht ganz blöd) die jeweils die richtigen zwei Kanäle benutzen, und alle sind glücklich.
so, dann ran ans werk
ich@tolles_linux:~$ pacmd >>> help [...informationsflut...]puh, so genau wollte ich das nicht wissen
>>> help sinkhmmm, immer noch ausführlich
>>> help create sinkaha, er kennt anscheinend nur eine Antwort. nun gut. es gibt ja grep für solch hartnäckigen informationsschleudern:
ich@tolles_linux:~$ pacmd help | grep sink list-sinks List loaded sinks list-sink-inputs List sink inputs set-sink-volume Set the volume of a sink (args: index|name, volume) set-sink-input-volume Set the volume of a sink input (args: index, volume) set-sink-mute Set the mute switch of a sink (args: index|name, bool) set-sink-input-mute Set the mute switch of a sink input (args: index, bool) update-sink-proplist Update the properties of a sink (args: index|name, properties) update-sink-input-proplist Update the properties of a sink input (args: index, properties) set-default-sink Set the default sink (args: index|name) kill-sink-input Kill a sink input (args: index) play-sample Play a sample from the sample cache (args: name, sink|index) play-file Play a sound file (args: filename, sink|index) move-sink-input Move sink input to another sink (args: index, sink) suspend-sink Suspend sink (args: index|name, bool) suspend Suspend all sinks and all sources (args: bool) set-sink-port Change the port of a sink (args: index, name)ok, ich kann sinks listen, ändern, suspendieren, als default setzen... aber erstellen? anscheinend nicht.
ich@tolles_linux:~$ pacmd help | grep create ich@tolles_linux:~$ja, hab' ich's mir doch gedacht. Jetzt muss ich mich doch auf eine Odyssee durch das Internet begeben um das Goldene Vlies der getrennten Lautstärkeregler zu finden.
[...]
eine Zeitlang später finde ich heraus, dass neue Sinks mit "load-module <richtige argumente>" erstellt werden. Natürlich, da hätte ich gleich drauf kommen können.die module sind sogar dokumentiert, unter http://pulseaudio.org/wiki/Modules. Es gibt zwar kein "module-virtual-sink", aber anscheinend ist das eine klasse von sinks, nicht ein einzelner typ... so, was brauche ich denn hiervon... aha, module-remap-sink, das möchte ich machen.
sooo, kryptische kommandos in eine shell tippen, das kann ich, das mache ich ja sonst auch immer... einen moment..ich@tolles_linux:~$ pacmd load-module module-remap-sink sink_name=my_separate_headphone_jack_1 master=alsa_output.pci-0000_00_1b.0.analog-stereo channels=2 channel_map=front-left,front-right master_channel_map=fuck. der ausgang hat nur zwei kanäle. dann wird das wohl nichts. er hat zwar, wie mir "list-modules" verrät, sogenannte "ports", mit denen kann ich nichts anfangen. und noch schlimmer, module-remap-sink nicht. also doch zurück zum Surround 4.0 Profil.
... ein pulseaudio restart später:
ich@tolles_linux:~$pacmd load-module module-remap-sink sink_name=my_separate_headphone_jack_1 master=alsa_output.pci-0000_00_1b.0.analog-surround-40 channels=2 channel_map=front-left,front-right master_channel_map=front-left,front-right Welcome to PulseAudio! Use "help" for usage information. >>> >>> ich@tolles_linux:~$pacmd load-module module-remap-sink sink_name=my_separate_headphone_jack_1 master=alsa_output.pci-0000_00_1b.0.analog-surround-40 channels=2 channel_map=front-left,front-right master_channel_map=rear-left,rear-right Welcome to PulseAudio! Use "help" for usage information. >>> >>>Hat das funktioniert? Natürlich nicht. Anscheinend funktioniert nicht mal der surround-4.0 regler vernünftig, wie ein rumspielen am pavucontrol mit gleichzeitig offenem alsamixer zeigt: es werden völlig falsche kanäle gesteuert.
Aber ich wäre ja kein echter Frickler wenn ich mich davon unterkriegen lassen würde. also: nächstes Mal spiele ich an der debian - pulseaudio-config rum.
-
Da ist dir ein Fehler im Titel untergekommen: Du beschwerst dich über die Dokumentation von "PulseAudio", im Titel steht aber, dass du Probleme mit der Dokumentation von "Open Source" hast.
Mal abgesehen davon: Du weisst, dass PulseAudio noch gar nicht in einer stabilen Version veröffentlicht ist?
-
ich habe pa bisher immer kurz nach Neuinstallation eines linux-Systems deaktiviert bzw entfernt wg. Problemen.
-
Ich installiere es gar nicht erst, das finde ich praktischer.

-
Das erinnert mich an den Kamelo Eintrag von Debian:
LinkKamelopedia schrieb:
Debian nennt sich ein internetweites Reformhaus für Software. Weltfremede Fachidioten erstellen dort Produkte die kein Mensch versteht und kein Schwein haben will. Gerne verweist man dort auf die Tatsache das hier alles dokumentiert und nichts verschwiegen wird. Die wirklich umfassenden Dokumentationen unterliegen sehr strengen Regeln. Sie müssen :
1. Unter einem Stichwort versteckt sein, das nur Leute anwenden die keine Hilfe brauchen.
2. Mit Anwendungshinweisen beginnen, die 70% der Anwender eindeutig NICHT benötigen.
3. Zu mindestens 50% aus Fachbegriffen bestehen, die kaum ein Mensch versteht.
4. Sich überwiegen auf Information beziehen die jeden Normalbürger schlicht überfordern.
-
Da simma wieder, und ich muss gleich am Anfang sagen:
=> I AM A SEXY SHOELESS GOD OF COMMAND-LINE-FU!
Ohne viele Umschweife die Ergebnisse meiner Jahrelangen PulseAudio-Forschung:
#!/bin/sh pulseaudio -k sleep 3 pulseaudio --start sleep 10 # 1. # remove all the auto-detected alsa crap... # don't know if i have to, will test this # later # I have to put hardcoded module numbers in... pacmd unload-module 4 pacmd unload-module 5 pacmd unload-module 18 # 2. # Seems that the module argument list in http://pulseaudio.org/wiki/Modules # is not a _complete_ list. How stupid of me to think that. # Good thing that an example buried somewhere in the middle of the page # makes it clear that module-alsa-sink also has the "channels" and # "channel_map" properties. # 2.1 # Seems that the channel names are not arbitrary variable names. # To my shame this is covered by the documentation, so I can't blame # PulseAudio for that pacmd load-module module-alsa-sink device=hw:0 channels=4 sink_name=two-jack-card channel_map=front-left,front-right,rear-left,rear-right pacmd load-module module-remap-sink sink_name=my-working-headphone-jack-1 master=two-jack-card channels=2 channel_map=front-left,front-right master_channel_map=front-left,front-right remix=no pacmd load-module module-remap-sink sink_name=my-working-headphone-jack-2 master=two-jack-card channels=2 channel_map=front-left,front-right master_channel_map=rear-left,rear-right remix=no pacmd load-module module-combine slaves=my-working-headphone-jack-1,my-working-headphone-jack-2 adjust_time=0 resample_method=src-sinc-fastestDas beste ist: It Fucking Works! Ich habe eine Sink die auf die zwei buchsen-sinks mapped die wieder auf die alsa-vier-kanal-sink mappen! und mit einer cpu-load von nur 2 * 40% und gelegentlichem knacksen im sound funktioniert es! Ihr werdet jetzt sagen: mit einem beliebigen alsa-mixer, ohne pulse, hätte ich das in 10 Sekunden einstellen können, aber jetzt habe ich gespeicherte pro-anwendung-lautstärken, und flat-volumes (sofern das funktioniert)!
Nun zum Fazit: Was haben wir hieraus gelernt?
0. Mein script ist vermutlich komplett ineffizient und geht gegen die komplette Philosophie von Unix, PulseAudio und den Humanismus. Aber was soll's, ich verkaufe ja nichts.1. Die Open Source Doku hat immer recht: Jetzt wo ich es hingekriegt habe ist offensichtlich, an welcher Stelle ich hätte lesen müssen, um nicht ewig herumzubasteln. Genau wie ein guter Forentroll intuitiv falsche, aber logisch richtige oder zumindest schwer angreifbare Thesen aufstellt und damit einen Flame provoziert (so wie z.B. TGGC, oder D.E. in den Wirtschaftsthreads), schreibt der gute Open-Source-Dokumentierer die Doku so, dass alles relevante drinsteht, aber in einer Form die kein effektives Scannen des Textes erlaubt. Und wenn sich dann der user beschwert kann man sagen: "Was Willstu? Steht doch alles in Zeile 11439-11438, zusammen mit Anmerkung 16.3.19 (b)"
2. Eigentlich müsste ich jetzt, in guter OpenSource-Manier, meine Unzulänglichkeit die Doku zu verstehen wiederum sauber dokumentieren, die PulseAudio-Doku forken und dahingehend verbessern dass es den nächsten Usern nicht passiert. Aber: Ich habe bereits was ich wollte, und ehrlich gesagt fände ich es ein bisschen unfair wenn es die nächsten leichter hätten als ich. Also hinterlasse ich nur einen anonymen Rant in einer von vielen nicht gesprochenen Sprache in einem Forum am Rande des Internets, und ein vermutlich falsches und in kürze absoletes skript.
3. front-left, front-right, ... etc. kanäle und aux0, aux1, aux2 unterscheiden sich nicht nur im Namen. Sondern auch in den mixing-default-einstellungen. Und ja, das steht auch in der Doku
-
Doku schrieb:
Da ist dir ein Fehler im Titel untergekommen: Du beschwerst dich über die Dokumentation von "PulseAudio", im Titel steht aber, dass du Probleme mit der Dokumentation von "Open Source" hast.
Das ist kein Fehler. Wie du sicher noch lernen wirst muss man in der heutigen Medienlandschaft nun mal colorierte wenn nicht gar reisserische Titel wählen um überhaupt gelesen zu werden.
Mal abgesehen davon: Du weisst, dass PulseAudio noch gar nicht in einer stabilen Version veröffentlicht ist?
Was ist das schon? Das ganze Leben ist eine Beta und bevor man die letzten Bugs raus hat ist das System überholt und wird eingestampft.
-
FreieFrickelFreude schrieb:
Doku schrieb:
Da ist dir ein Fehler im Titel untergekommen: Du beschwerst dich über die Dokumentation von "PulseAudio", im Titel steht aber, dass du Probleme mit der Dokumentation von "Open Source" hast.
Das ist kein Fehler. Wie du sicher noch lernen wirst muss man in der heutigen Medienlandschaft nun mal colorierte wenn nicht gar reisserische Titel wählen um überhaupt gelesen zu werden.
Du bekommst hier aber nichts für Auflage, Einschaltquote oder Thread-Aufrufe. Hier nennt man derartiges Verhalten typischerweise "trollen" und entsprechende Threads werden geschlossen.
Gratuliere zum Sieg über pulseaudio; wie schlecht dokumentiert und unangenehm das Ding trotz aller guter Ideen ist, ist weithin bekannt.