DirectSoundCapture Frage/Problem
-
Hallo,
habe mal ne Frage:
Capture mir mit DirectSoundCapture von meiner Soundkarte den abgespielten Sound.
Habe aba ein komisches Problem. Weiß aber nicht, ob es daran liegt. Also das Capturen klappt soweit gut aber nur solange wie sich nur eine Sonudkarte im Rechner befindet. Wenn zwei sich drin befinden z.B. ne OnBoard und ne SteckSoundkarte scheint der mir nix aufzunehmen bzw. geb ich mir mittels FFT meinen Sound aus und seh dann nie was. Hat da jemand mit Erfahrung bzw. kennt vielleicht wissenwerte Seiten die sich mit DirectSoundCapture befassen?? Bzw. wie kann man herrausfinden wieviel Soundkarten sich im Rechner befinden um die aktived zu benutzen???Danke
-
Vielleicht hilfts:
http://turing.fh-landshut.de/~jamann/Audioprogrammierung unter Windows mit C++ fuer Computerspiele.pdfDu kannst verschieden Soundkarten enumieren (steht im oben aufgeführten Tut)
und dann wählen von welcher du Aufnehmen willst, bzw. von welcher abgespielt werden sollich glaub es gibt auch ein Sample im DX SDK - das heißt DSCaputre oder so... schau dir mal den Code von dem Proggie an
-
Danke für die Tips,
in den Beispielen listen die ja mögliche Aufnahmegeräte auf. Gibt es aber irgendwie die Möglichkeit zu erkennen welche Soundkarte die gerade im System aktuell verwendete ist, um dann gleich entsprechend zu sagen, dass die zu benutzen sei??
-
Soundkarte die gerade im System aktuell verwendete ist, um dann gleich entsprechend zu sagen, dass die zu benutzen sei??
die möglichkeit gibt es !!!natürlich!!! - diese Soundkarte wird als Primary Sound Device bezeichnet und wird beim erstellen des DSound Objekts angegeben - siehe dazu Tutorial bzw. DX Doku
-
Hab irgendwie n Problem mit:
DirectSoundCaptureEnumerate((LPDSENUMCALLBACK)this->DSEnumCallback,(VOID*)0)
error C2440: 'Typumwandlung': 'overloaded-function' kann nicht in 'LPDSENUMCALLBACKA' konvertiert werden
Bin wie in dem PDF vorgegangen...
-
ok habs

-
hallo,
ne frage hät ich noch. zu meinem problem. gelöst hatte ich es indme ich die callbackmethode als static deklariert habe. nun will in der methode auf membervariablen meiner klasse zugreifen. gibts da irgend ne möglichkeit?
-
prinzpel kann/darf eine static Methode nicht auf nichtstatische Methoden bzw. Datenelemente zugreifen - im Regelfall geht man so vor:
// Pseudocode class Objekt { Objekt() { Liste.Add(this); } ~Object() { Liste.Delete(this); } static void Callback() { for(int i = 0; i < Liste.Lenght; i++) Liste[i].Memberfunktion(); } void Memberfunktion() { m_Member = 34; } static vector<*Objekt> Liste; int m_Member; }in einer staischen Liste merkst du dir alle Objekte, deren Methode aufgerufen werden soll, wenn die Callback Fkt. aufgerufen wird. Wenn der Callback aufgerufen wird rufst du die entsprechenden methoden an die der callback geht auf
-
argv schrieb:
ne frage hät ich noch. zu meinem problem. gelöst hatte ich es indme ich die callbackmethode als static deklariert habe. nun will in der methode auf membervariablen meiner klasse zugreifen. gibts da irgend ne möglichkeit?
Die meisten WIN-Enumerier-Funktionen haben 'nen letzten VOID*-Parameter, dem Du irgendwas mitgeben kannst. WIN gibt dann der Callback-Funktion bei jedem Aufruf diesen auch mit. Dort könntest Du z.B. den this-Zeiger speichern, dann kannst Du über den auch Membermethoden aufrufen.
-
hallo,
habe mir mal die Tuts angeschaut und mal auch das DXSample zu CaptureSound. Habe dann mal bei dem Beispiel mal alle möglichen CaptureGeräte ausprobiert und jeder hat funktioniert. Das heißt ja,wenn ich mir so nen CaptureObjekt erzeug die Aufnahme funktionieren müsste. Aber scheinbar funktioniert es nicht...
sehr komisch
-
vergleich halt einfach den Code - der Code vom DX Sampel ist ja dazu da um daraus zu lernen