DirectSound8
-
Hallo,
Im Header dsound.h gibt es keinen CreateDirectSound8() Prototypen(Borland CBuilder 5.0), sondern nur
CreateDirectSound().Kann mir da Jemand weiterhelfen?
Ich wünsche allen ein guten Rutsch ins neue Jahr.
-
DirectSoundCreate8
-
Hallo,
habe ich wohl einen Dreher reingebracht.
Ich meinte natürlich DirectSoundCreate8, diesen Prototypen gibt es aber trotzdem nicht in dsound.h sondern nur DirectSoundCreate.
-
Kannst Du uns mal sagen, wieso Du einen Crosspost im gleichen Forum machst?!?
-
du brauchst die dsound.h des DirectX SDKs 8.0 oder höher
-
Hallo,
versuche das ganze gerade bei Microsoft auf der Homepage zu bekommen, finde
aber nichts was Libs oder Header angeht.Wo außer bei Microsoft bekommt man die Library sowie den Header?
-
Bei Microsoft.
http://msdn.microsoft.com/downloads/list/directx.asp
(BTW, seh' gerade daß es schon wieder 'n Update gibt?!?) :xmas2:
-
Hab es gefunden, danke Dir.
-
Hallo,
habe nun die Library sowie den Header for DirectSound8, bekomme aber eine
Linkerfehlermeldung:"DSOUND.LIB contians invalid OMF record, type 0x21 (possible COFF)
-
Borland erwartet Libs im OMF Format, MS nimmt aber COFF.
Also entweder konvertieren oder MS Produkte nutzen.
-
hermes schrieb:
Hallo,
habe nun die Library sowie den Header for DirectSound8, bekomme aber eine
Linkerfehlermeldung:"DSOUND.LIB contians invalid OMF record, type 0x21 (possible COFF)
mittels coff2omf.exe kannst du es konvertieren
btw: weis einer worin der unterschied besteht ?
-
mittels coff2omf.exe kannst du es konvertieren
Danke für den Hinweis, habe ich schon über die Borland Hilfe rausgefunden.
Habe die Library nun convertiert und meinem Projekt hinzugefügt.
Den Header habe ich ebenfalls includiert.Nun kommt die folgenden Linkerfehler:
Unresolved external 'DirectSoundEnumerateA' ....
Unresolved external 'DirectSoundCreate8' ....Im Header sind die die Prototypen als "extern" declariert.
Habe auch schon alle dsound libs dem Projekt hinzugefügt, funktioniert
aber nicht.
-
auch die dxguid.lib?
Ich habe ein Dokument zum Thema DirectSound geschrieben - dabei wird MSVC benutzt - Könntest du vielleicht ein Tutorial schreiben wie man DirectSound mit Borland nutzt - ich würde dann dein Tutorial nehmen und in meinen Artikel einbauen, wenn du nichts dagegen hast - außerdem würde mich das dazu anregen zu zeigen wie man ogg Dateien mit DirectSound abspielt - außerdem könnte ich Gründzüge der Soundsynthese erklären was sicherlich auch sehr interessant ist
-
dxguid.lib habe ich ebenfalls mitgelink, die Fehlermeldung kommt aber immer noch.
Wie schon gesagt habe ich schon alle Libs mitgelinkt.
Bin ein wenig Ratlos.Könntest du vielleicht ein Tutorial schreiben wie man DirectSound mit Borland nutzt
Mach ich gerne, wenn es ersteinmal läuft.
-
Kannst du mal die Libarys unter
http://www.geocities.com/foetsch/borlibs/
testenLink zum Download:
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=16547Bitte schick mir ne E-Mail mit Erlaubnis das ich es in meinem Artikel verwednen darft, wenn du soweit bist - meine E-Mail: vertexwahn@gmx.de
-
Mit den Libs von Borland funkt es.
Das convertieren der MS Libs hat wohl nicht richtig funktioniert.
Danke
-
Hallo,
bekomme nun bei CreateSoundBuffer den Fehler "OUT OF MEMORY" zurück.
Muss ich nicht vorher Speicher allocieren?HRESULT TForm1::CreateSoundBuffer(void) { WAVEFORMATEX wFormat; DSBUFFERDESC dsbdesc; LPDIRECTSOUNDBUFFER pDsb = NULL; memset(&wFormat, 0, sizeof(WAVEFORMATEX)); //Structur löschen memset(&dsbdesc, 0, sizeof(DSBUFFERDESC)); //Structur löschen wFormat.wFormatTag = WAVE_FORMAT_PCM; wFormat.nChannels = 2; wFormat.nSamplesPerSec = 22050; wFormat.nBlockAlign = 4; wFormat.nAvgBytesPerSec = wFormat.nSamplesPerSec * wFormat.nBlockAlign; wFormat.wBitsPerSample = 16; dsbdesc.dwSize = sizeof(DSBUFFERDESC); //Grösse dsbdesc.dwBufferBytes = DSBSIZE_MAX;//3 * wFormat.nAvgBytesPerSec; dsbdesc.lpwfxFormat = &wFormat; HRESULT hr = mySoundObjekt->CreateSoundBuffer(&dsbdesc, &pDsb, NULL); return hr; }
-
Sehe gerade, das ich die Größe des Buffer vergessen habe zu initialisieren.
//---------------------------------------------------------------------------- // Create a Soundbuffer //---------------------------------------------------------------------------- LPDIRECTSOUNDBUFFER pDsb = NULL; HRESULT TForm1::CreateSoundBuffer(void) { WAVEFORMATEX wFormat; DSBUFFERDESC dsbdesc; memset(&wFormat, 0, sizeof(WAVEFORMATEX)); //Structur löschen memset(&dsbdesc, 0, sizeof(DSBUFFERDESC)); //Structur löschen wFormat.wFormatTag = WAVE_FORMAT_PCM; // Format ist PCM wFormat.nChannels = 2; // 2 Channels wFormat.nSamplesPerSec = 44100; // 44100 Samples per second wFormat.nBlockAlign = 4; // 4 Bytes per Sample wFormat.nAvgBytesPerSec = wFormat.nSamplesPerSec * wFormat.nBlockAlign; // Bytes per second wFormat.wBitsPerSample = 16; // Bits per Sample dsbdesc.dwSize = sizeof(DSBUFFERDESC); dsbdesc.lpwfxFormat = &wFormat; // Zeiger auf WAVEFORMATEX dsbdesc.dwBufferBytes = 256000; // 256000 Byte Buffergröße HRESULT hr = mySoundObjekt->CreateSoundBuffer(&dsbdesc, &pDsb, NULL); // Buffer erstellen return hr; }
-
Hallo,
wie schließe ich ein DirectSound Objekt um anschließend ein neues für ein
anderes Sound Device zu erstellen?
-
release, wie jedes com objekt-.-
-
otze schrieb:
release, wie jedes com objekt-.-
Ich habe ingesamt 4 Sound Devices zur Auswahl.
Ich gebe mit einem Button "Start" einen Sinus auf Device 1 aus und
beende die Ausgabe mit einem Button "Stop", wobei ich den Buffer mit
pDsb->Release() schließe, was zu klappen scheint ->DS_OK.Nun wähle ich ein anderes Sound Device aus und erzeuge für dieses
Device ein neues Objekt "hr = DirectSoundCreate8(Device, &mySoundObjekt, NULL)", bei dem Versuch kommt die Fehlermeldung
hr = "ALLOCATED".
Kann es sein, das ich mit Release zwar den Buffer schließe aber das Objekt
immer noch besteht?