JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=b069d9ccca170918b9a480b7467ed3aeMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Sounds hören sich sehr seltsam an

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 24.01.2005, 22:06    Titel: Sounds hören sich sehr seltsam an Antworten mit Zitat

Ich hab's endlich geschafft und meinen Soundlader fertig.

Problem ist jetzt jedoch: Es hört sich alles irgendwie furchtbar seltsam an (metallisch). Auch wenn ich ein Soundfile, welches ca. 1 Sekunde lang ist lade und das nicht looped abspiele spielt er das so lange bis man das Programm abbricht.

Hier mal der Code:
CPP:
HRESULT CRDSound::LoadSound(char *cFileName)
{
   if(FAILED(CheckSound(cFileName)))
      return CRD_FAIL;

   char      cErrorMsg[1024];
   HRESULT      hr;
   WCHAR      wcFileName[MAX_PATH];

   if(MultiByteToWideChar(CP_ACP,0,cFileName,-1,wcFileName,MAX_PATH)==0)
      return E_FAIL;

   m_vSound.resize(m_iNumSounds+1);
   m_vSound[m_iNumSounds].cName   = cFileName;
   m_vSound[m_iNumSounds].iID      = m_iNumSounds;

   // Datei laden:
   if(FAILED(hr=m_lpLoader->LoadObjectFromFile(CLSID_DirectMusicSegment,
                                             IID_IDirectMusicSegment8,
                                    wcFileName,
                                    (void**)&m_vSound[m_iNumSounds].pSegment)))
   {
      if ( (hr==DMUS_E_LOADER_FAILEDOPEN) ||
          (hr==DMUS_E_LOADER_FAILEDCREATE) )
         return CRD_FILENOTFOUND;
      else if (hr==DMUS_E_LOADER_FORMATNOTSUPPORTED)
         return CRD_FORMATNOTSUPPORTED;
      else if (hr==E_OUTOFMEMORY)
         return CRD_OUTOFMEMORY;
      return CRD_FAIL;
   }

   if(FAILED(m_vSound[m_iNumSounds].pSegment->Download(m_lpPerformance)))   
   {
      sprintf(cErrorMsg,"Soundfile %s / Download der Instrumente fehlgeschlagen\n",m_vSound[m_iNumSounds].cName);
      m_Log->WriteToLog(cErrorMsg);
      return CRD_FAIL;
   }

   sprintf(cErrorMsg,"Soundfile %s wurde geladen (ID-Nr. %d)\n",m_vSound[m_iNumSounds].cName,m_vSound[m_iNumSounds].iID);
   m_Log->WriteToLog(cErrorMsg);

   m_iNumSounds++;
   return CRD_OK;
} // LoadSound

HRESULT CRDSound::CheckSound(char *cFileName)
{
   for(int i=0; i<m_iNumSounds;i++)
   {
      if(m_vSound[i].cName == cFileName)
      {
         return E_FAIL;
      }
   }
   return S_OK;
} // CheckSound

HRESULT CRDSound::PlaySound(char* cFileName, bool bLoop)
{
   // ID rauskriegen:
   int iID = ReturnID(cFileName);

   if(iID == -1)
      return CRD_FILENOTFOUND;

   // Play Looped???
   if(bLoop)
      m_vSound[iID].pSegment->SetRepeats(DMUS_SEG_REPEAT_INFINITE);

   // als Sekundären Buffer abspielen:
   if(FAILED(m_lpPerformance->PlaySegment(m_vSound[iID].pSegment,
                                          DMUS_SEGF_DEFAULT |
                                     DMUS_SEGF_SECONDARY,
                                 0,
                                 0)))
                                 return CRD_FAIL;

   return CRD_OK;
} // PlaySound

int CRDSound::ReturnID(char *cFileName)
{
   for(int i=0; i < m_iNumSounds; i++)
   {
      if(m_vSound[i].cName == cFileName)
         return i;
   }
   return -1;
}


(Hey GreveN ich hab sogar mit STL gearbeitet, Danke nochmal für den Tipp!) Smile
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 24.01.2005, 22:36    Titel: Antworten mit Zitat

Wo ist die Initialisierung?

CoCreateInstance und m_lpPerformance->InitAudio


Zuletzt bearbeitet von KI am 25.01.2005, 12:59, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 08:30    Titel: Antworten mit Zitat

Hat ich nicht mit gepostet

CPP:
HRESULT CRDSound::Init(HWND hWnd)
{
   if(hWnd==0)
      return E_FAIL;

   WCHAR wcFilePath[MAX_PATH];

    // COM initialisieren
    CoInitialize(NULL);
   
    if(FAILED(CoCreateInstance(CLSID_DirectMusicPerformance, NULL,
                     CLSCTX_INPROC, IID_IDirectMusicPerformance8,
                     (void**)&m_lpPerformance )))
                return E_FAIL;
   
    if(FAILED(CoCreateInstance(CLSID_DirectMusicLoader, NULL,
                     CLSCTX_INPROC, IID_IDirectMusicLoader8,
                     (void**)&m_lpLoader)))
                return E_FAIL;

    // Initialisieren
    if(FAILED(m_lpPerformance->InitAudio(NULL,
                                       NULL,
                               NULL,
                               DMUS_APATH_SHARED_STEREOPLUSREVERB,   //DMUS_APATH_DYNAMIC_STEREO,
                               64,
                               DMUS_AUDIOF_ALL,
                               NULL )))
                               return E_FAIL;
   
    // Suchpfad auswählen
    if(MultiByteToWideChar( CP_ACP, 0, "sound", -1, wcFilePath, MAX_PATH )==0)
      return E_FAIL;
 
    // Suchpfad setzen
    if(FAILED(m_lpLoader->SetSearchDirectory(GUID_DirectMusicAllTypes, 
                                           wcFilePath,
                                  FALSE )))
                                  return E_FAIL;
   return S_OK;
} // Init

_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 25.01.2005, 08:52    Titel: Antworten mit Zitat

Metallisch->sound auch mit den korrekten Einstellungen geladen oder irgendwelche Codecs mit aktiviert ? Oder liegt das evtl hieran: DMUS_APATH_SHARED_STEREOPLUSREVERB

Immer geloopt->kann sein das du die Anzahl der Wiederholungen auf 1 legen musst, so wie ichs beim drüberfliegen gesehen hae tust du das nur festlegenm wenn ein sound geloopt ist
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 09:43    Titel: Antworten mit Zitat

Ich glaube auch, dass es an diesem REVERB Parameter liegt.
Bei der Initialisierung kannst brauchst du übrigens nicht MultiByteToWideChar aufzurufen. So wie es aussieht bleibt der Suchpafd immer gleich. Übergib doch einfach L"sound" anstatt wcFilePath.

Dann sparst du dir eine char Variable. Wink


Zuletzt bearbeitet von KI am 25.01.2005, 13:04, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 12:02    Titel: Antworten mit Zitat

Ich habs auch schon mit DMUS_APATH_DYNAMIC_STEREO versucht, aber das Endresultat ist gleich.

Ich befürchte das irgendwas an der Laderoutine verkehrt ist, aber ich find nicht was.

Benutze ich das selbe Soundfile mit dem Beislpiel aus dem JLI-Buch funktionierts, und meine Routine ist nahezu gleich aufgebaut... Seltsam seltsam...
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 13:02    Titel: Antworten mit Zitat

Lass DMUS_SEGF_SECONDARY bei PlaySegment weg. (Also nur DMUS_SEGF_DEFAULT)
Welches Format lädst du? WAV?

edit:
Wenn es mit dem Beispiel aus dem JLI-Buch funktioniert, dürfte es eigentlich nicht an dem SECONDARY Parameter liegen... Am besten du vergleicht alles mal haargenau, ist ja nicht viel.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 13:42    Titel: Antworten mit Zitat

ne, damit funktionierts dann gar nicht. Mist, muss ich wohl nochmal ganz von vorne anfangen...
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 17:12    Titel: Antworten mit Zitat

schneidi74 hat Folgendes geschrieben:
Mist, muss ich wohl nochmal ganz von vorne anfangen...


manchmal ist das die beste Lösung weiter zu kommen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 25.01.2005, 17:38    Titel: Antworten mit Zitat

Aber ich hab mich doch schon so gefreut, das ich endlich fertig bin damit Rolling Eyes
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum