D
Ein compilierbares und ausführbares Minimalbeispiel ist das noch nicht. Sowas wie eine stdafx.h habe ich nicht, also hab ich die Zeile einfach mal rausgenommen. Eine int main() oder sowas hast du auch nicht mitgeliefert, also hab ich den code aus deinem event-Handler mal in eine reinkopiert. Allerdings musste ich ihn noch ändern, weil du die mp3s für einen C-Dur-Akkord hochgeladen hast, dein Code allerdings versucht, A-Dur zu spielen. So konnte ich es dann ans Laufen bringen:
// main.cpp
#include <stdio.h>
#include <conio.h>
#include "Noten.h"
using namespace irrklang;
int main(int argc, const char** argv)
{
ISoundEngine* soundEngine = createIrrKlangDevice();
spieleC(soundEngine);
spieleE(soundEngine);
spieleG(soundEngine);
do
{
printf("Press 'q' to quit.\n");
}
while(getch() != 'q');
soundEngine->drop();
return 0;
}
// Noten.h
#ifndef NOTEN_H_
#define NOTEN_H_
#include <irrKlang.h>
void spieleC(irrklang::ISoundEngine*);
void spieleE(irrklang::ISoundEngine*);
void spieleG(irrklang::ISoundEngine*);
#endif /* NOTEN_H_ */
// Noten.cpp
#include "Noten.h"
#include <string>
#pragma comment(lib, "irrklang.lib")
using namespace irrklang;
using namespace std;
void spieleC(ISoundEngine* soundEngine) {
string soundFile = "C.mp3";
soundEngine->play2D(soundFile.c_str());
}
void spieleE(ISoundEngine* soundEngine) {
string soundFile = "E.mp3";
soundEngine->play2D(soundFile.c_str());
}
void spieleG(ISoundEngine* soundEngine) {
string soundFile = "G.mp3";
soundEngine->play2D(soundFile.c_str());
}
Ich wollte nicht zu viel ändern, aber ein paar Sachen mussten einfach sein.
- Benutze keine using-Direktiven in Header-Dateien. Damit verschmutzt du nur den globalen Namensraum der includierenden Cpps. Wenn die using sagen wollen, sollen sie das selbst tun.
- Die Deklaration des Soundengine-Pointers in der Noten.cpp war überflüssig. Du übergibst ja eh einen als Parameter.
- Die Funktionen, die für das Minimalbeispiel nicht gebraucht werden, hab ich mal rausgenommen, damit es übersichtlicher wird.
So, das Ganze funktioniert bei mir einwandfrei. Alle drei Samples werden gleichzeitig abgespielt. Komisch hört sich das ganze trotzdem an. Hör mal einzeln in deine Dateien rein. Eine hat einen komischen Zusatzton (Übersteuerung?). Eine andere hat am Anfang etwas Stille.
Versuch mal, ob du das Minimalbeispiel bei dir ans Laufen bekommst. Wenn bei dir trotzdem irgendwas nicht geht, versuch das Problem auf das nötigste zu reduzieren und dann so zu posten, dass wir das hier einfach bei uns nachstellen können. Siehe: http://www.c-plusplus.net/forum/304133