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/
    testen

    Link zum Download:
    http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=16547

    Bitte 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-.-


Anmelden zum Antworten