Soundprogrammierung
-
Hi
Ich hätte, da ein paar prinzipielle Fragen dazu:
1. Im Moment nutzt ich die winMM.lib zur Soundausgabe. Nun jetzt will ichs auch mal mit directx versuchen. Kann man mit ner Dx9sdk Anwendungen programmieren, die nur dx8 benötigen, also indem man nur 8-interface-versionen benutzt? Oder muss das man das mit ner dx8sdk programmieren? Gibst irgendwo die Möglichkeit, die headers und libs runterzuladen für direktsound, ohne dass man die gesammte sdk installieren muss? Und kann mir da jemand ein paar tutorials empfehlen, ich hab seit dx7 damit nicht mehr programmiert, oder hat sich im soundbereich fast nix geändert?
2. Was meint ihr: Im Moment hat meine Anwendung 2 Fenster, eins mit Ogl, und ich mach die ganze Soundausgabe in der winproc vom Hauptfenster. Nun wenn man die Puffer genügend groß macht, dann ist die Ausgabe bei Stereo,16bit,44100khz 'störungsfrei', also kein Knacksen und Ausetzter. Schön. Wenn man aber die Fenster etwas mit input versorgt oder durch Graphik-elemtveränderungen viele WM-Paints erzeugt, kommt die Soundausgabe manchmal ins stocken, obwohl ich im taskmanager keine 100% cpu auslastung sehen kann.
Sollte man die Soundausgabe, als eigenen thread programmieren, oder was könnte da sonst abhelfen?
Wie groß sollte man Soundpuffer dimensionieren und nach welchen Kriterien? (im Moment hab ich 16384 byte pro Puffer, das macht dann 10-11 refills pro Sekunde (bei 44.1khz,16bit,stereo))3.Das nächste Problem: ich will eine Pegel/Austeuerungsanzeige in Echtzeit: Wie geht man an so was ran, wenn man Puffermäßig ausgibt? Und wie selektiert man die Werte rauß, die man als aktuellen Pegel anzeigt. Die Anzeige, sollte ca 20-30 frames pro sekunde haben. So nun hab ich aber 44100 abtastwerte pro sekunde, das macht so ca 1500-2500 Abtastwerte pro frame. Sucht man sie da dann immer den maximalen Gleichgericht-Spitzenwert heraus, und zeigt den an? Und wie synchronisiert man so was am schlausten? Immer wenn vom System die Message kommt, das ein Puffer leer ist, beginnt er ja gerade den zweiten abzuspielen. Muss ich dann parallel mitrechen, wann er wahrscheinlich welchse samples abspielt, um die entsprechenden Amplitudenwerte auszugeben?
Vielen Dank für alle Tipps und Anworten!!
Grüße Flow