Soundprogrammierung unter Linux
-
Hallo!
Wie funktioniert das unter Linux im Grossen und Ganzen?
Also unter /dev/dsp kann ich ja mit cat file > /dev/dsp grundlegend sounds abspielen.Wie funktioniert das in einem richtigen Programm? Benutzt man da auch das dsp-device? wie kann ich sicher gehen, dass ich mich nicht mit einem anderen Programm in die Quere komme? Ist die Schnittstelle zum Soundchip genormt, das ich also mich garnicht darum kümmern muss um was für einen Chip es sich da handelt?
Hab mich schon totgegoogelt, aber nicht wirklich was gefunden. Ich würd mir ein How-To wümschen was erklärt, wie ich in C/C++ ein einfaches soundfile (meinetwegen raw) abspiele.
danke im voraus!
Gruß
Marcel
-
adsci schrieb:
wie kann ich sicher gehen, dass ich mich nicht mit einem anderen Programm in die Quere komme?
Darum kümmert sich amix. Früher verwendete man grundsätzlich immer Soundserver wie den esd oder arts, was aber heute in den meisten Fällen überflüssig ist.
Ist die Schnittstelle zum Soundchip genormt, das ich also mich garnicht darum kümmern muss um was für einen Chip es sich da handelt?
Klar, sonst wäre das ja extrem mühsam.
http://www.suse.de/~mana/alsa090_howto.htmlHab mich schon totgegoogelt, aber nicht wirklich was gefunden. Ich würd mir ein How-To wümschen was erklärt, wie ich in C/C++ ein einfaches soundfile (meinetwegen raw) abspiele.
Schau Dir am besten an, wie Du das mit SDL oä machst, dann brauchst Du Dich nicht um die allerschlimmsten LowLevel-Details kümmern und Dein Programm ist uU sogar halbwegs portabel:
http://www.libsdl.org/intro/usingsound.html
-
Cool, nman, einer der sich richtig auskennt.
Direkt dazu:
Wie genau läuft das mit OSS, ALSA, ESD, und dem KDE Dingen (Namen vergessen)?
Setzen die aufeinander auf?!
Also etwas wie HW<-OSS<-ALSA<-ESD is' nich', oder?!
Auf einem Ubuntu Laptop bekomm' ich Q3 und ET nicht mit Sound ans Laufen.
Beide wollen auf /dev/dsp zugreifen und melden immer "input/output error on /dev/dsp".In Foren hab' ich mich schlau gemacht, da meinten viele Gnome's ESD belegt das Device.
Aber "killall esd" vorher taugt auch nichts.Dann hiess es, man muß auf /proc/oss/... "direkten HW-Zugriff" für quake3(.exe) festlegen als root.
Funzt bei mir auch nicht.
Generell Systemklänge gehen.
Frozen-Bubble hat Sound.
alsamixer ist okay. alsaplayer kann WAVs abspielen.Ein echo 'scheisendreckmitsosse' > /dev/dsp bringt die Lautsprecher zum Knacksen...
Generell scheint also das Device frei zu sein.Auf was muß man denn da NOCH achten?!?
Bist ja nicht so der Zocker, trotzdem irgendwelche Ideen??
-
@Sgt. Nukem
OSS ist das alte Soundsystem. Mittlerweile ist ALSA Standard.Versuch vielleicht mal die OSS Emulation zu starten: modprobe snd-pcm-oss
Wie das mit esd, arts und jack abläuft hab ich immer noch nicht ganz verstanden. Im Grunde sind das wohl nur Mixer um mehrere Sounds mit einer SKarte auszugeben. Aber Alsa scheint das auch automatisch integriert zu haben.
Für Sound lohnt sich vermutlich eh eine höhere Library.
-
kingruedi schrieb:
Wie das mit esd, arts und jack abläuft hab ich immer noch nicht ganz verstanden. Im Grunde sind das wohl nur Mixer um mehrere Sounds mit einer SKarte auszugeben.
Jup, die mischen einfach per Software Sound von mehreren Kanälen auf einen zusammen, der dann via ALSA ausgegeben wird.
Wobei das nicht der Hauptgrund dafür ist, jack zu verwenden, der ist einfach für low-latency-Sachen gebaut.Aber Alsa scheint das auch automatisch integriert zu haben.
Nicht ganz automatisch, wenn die eigene Soundkarte das nicht per Hardware unterstützt (wie die Soundblaster Audigy), dann muss man ein bisschen mit ALSAs amix herumspielen, damit man mehrere Sounds gleichzeitig ausgeben kann. (War bei meiner alten "Soundblaster live Player"(?) zB so. amix gibt es übrigens noch nicht allzu lange, bis vor einiger Zeit waren wirklich arts und Co. die einzige Möglichkeit, die man hatte, wenn man die Instant-Messenger-Sounds hören wollte, während in XMMS Musik lief. :))
Für Sound lohnt sich vermutlich eh eine höhere Library.
Jup, definitiv, SDL ist diesbezüglich echt praktisch, besonders weil sich da für gewöhnlich ja immer noch der Endbenutzer die genaue Ausgabeart aussuchen kann.
-
kingruedi schrieb:
Versuch vielleicht mal die OSS Emulation zu starten: modprobe snd-pcm-oss
Hatte ich schon drin.
kingruedi schrieb:
Wie das mit esd, arts und jack abläuft hab ich immer noch nicht ganz verstanden. Im Grunde sind das wohl nur Mixer um mehrere Sounds mit einer SKarte auszugeben. Aber Alsa scheint das auch automatisch integriert zu haben.
Da bin ich ja beruhigt, daß da selbst die Linux Gurus nicht mehr ganz durchblicken...
Und dann kommt jetzt von KDE ein weiterer Wrapper, weil artSd (?) nicht mehr weiterentwickelt wird... oh Mann...nman schrieb:
Wobei das nicht der Hauptgrund dafür ist, jack zu verwenden, der ist einfach für low-latency-Sachen gebaut.
Also auch sowas wie Spiele??
Oder meinst Du eher Input-Kram, Synthesizer, MIDI, ...?Also ich hab' jetzt den Laptop wieder zum Frickeln.
Ich hab' erstmal rw-Rechte für all auf /dev/dsp gegeben.
Dann hab' ich's mit dem ergoogletenecho "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
als root tatsächlich geschafft, dem user-Quake3 Sound zu entlocken.
Allerdings braucht jetzt Q3 Ewigkeiten bis wirklich der "bam-bam"-Screen kommt - diesmal aber halt mit Sound.
Woher kommt diese ewige Verzögerung?Übrigens mußte ich dafür nicht esd o.ä. killen.
Doom3 Demo lief wie gesagt auch so schon mit Sound, der ist allerdings tierisch verzerrt. Das hab' ich noch nicht hinbekommen.
Bei WLAN seh' ich das ja (noch) ein, aber das selbst Sound so ein Krampf noch ist... *grml*Irgendwer 'ne Idee, wie ich das echo "quake3... als root (sudo -i) für den User transparent automatisieren könnte (ohne PW-Eingabe) - es wird ja direkt auf /proc geschrieben...?!!
-
Sgt. Nukem schrieb:
Und dann kommt jetzt von KDE ein weiterer Wrapper, weil artSd (?) nicht mehr weiterentwickelt wird... oh Mann...
Der wird aber nur den artsd ablösen, genauso wie OSS schon längst vollständig von ALSA abgelöst sein sollte.
Also auch sowas wie Spiele??
Nein, die sind überhaupt kein Problem ohne jack.
Ich dachte eher an prozedurale Audio-Medienverarbeitung wie zB bei in Echtzeit angewandten Audioeffekten.Ich hab' erstmal rw-Rechte für all auf /dev/dsp gegeben.
Besser nur u+rw und g+rw und als Owner root:audio und alle die darauf zugreifen können sollen in die Audiogruppe tun.
... Woher kommt diese ewige Verzögerung?
Keine Ahnung, ich habe kein Quake 3.
Übrigens mußte ich dafür nicht esd o.ä. killen.
Vielleicht hättest Du das aber tun sollen und die Verzögerung kam daher, dass der Soundserver erst abwartete, bis er ein paar Minuten nicht verwendet wurde, um das Device wieder freizugeben.
(Ist nur geraten, aber so unsauber wie Quake3 teils geschrieben sein dürfte, würde mich das nicht wundern.)Bei WLAN seh' ich das ja (noch) ein, aber das selbst Sound so ein Krampf noch ist... *grml*
Hm, ich habe auch kein Doom3, aber bei Unreal Tournament und sämtlichen anderen Spielen, die ich zuhause installiert hatte, gab es nie Probleme mit dem Sound. Vielleicht ist die Soundabteilung von id software einfach nicht die Beste...
Irgendwer 'ne Idee, wie ich das echo "quake3... als root (sudo -i) für den User transparent automatisieren könnte (ohne PW-Eingabe) - es wird ja direkt auf /proc geschrieben...?!!
Warum lässt Du das nicht einfach schon beim Systemstart ein Startskript machen?
-
Hast Du übrigens schonmal Freund Google gefragt?
-
nman schrieb:
Hast Du übrigens schonmal Freund Google gefragt?
Meinst Du
echo "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
habe ich durch bloßes herumprobieren gefunden...??
(Guck' mal was Deine Suchergebnisse so meistens hervorbringen...
)
-
Sgt. Nukem schrieb:
Meinst Du
echo "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
habe ich durch bloßes herumprobieren gefunden...??
(Guck' mal was Deine Suchergebnisse so meistens hervorbringen...
)
Da wird zumindest ein paar Mal erwähnt, dass Quake 3 ziemlich buggy sein dürfte, das meinte ich eigentlich.
-
nman schrieb:
Da wird zumindest ein paar Mal erwähnt, dass Quake 3 ziemlich buggy sein dürfte, das meinte ich eigentlich.
Achso.
Hatte in der Tat nur Q3-Engine oder id Games generell getestet.
Teste ich demnächst mal andere.Kann aber erst wieder am Wochenende...
Naja, vielleicht teste ich das auch mal auf dem 64-Bit-System hier...