Ich habe Probleme mit SDL_Mixer (mein Mangel an Erfahrung). Chunks und Musik spielen gut (mit Mix_PlayChannel und Mix_PlayMusic), und das gleichzeitige Abspielen von zwei Chunks ist kein Problem.SDL_Mixer spielt einen einzelnen Block über sich selbst möglich?
Mein Problem ist, dass ich einige chunk1 spielen möchte, und dann zweite Wiederholung von chunk1 die erste überlappend spielen. Ich versuche, einen einzelnen Block in schneller Folge zu spielen, aber stattdessen spielt er den Ton wiederholt in einem viel längeren Intervall ab (nicht so schnell wie ich es möchte). Ich habe die Konsolenausgabe getestet und meine Methode zum Abspielen/Looping ist nicht fehlerhaft, da ich Konsolenmeldungen sehen kann, die mit der richtigen Geschwindigkeit geloopt werden.
Ich habe ein Array von Chunks, die ich regelmäßig während der Initialisierung laden, mit Mix_LoadWAV();
Mix_Chunk *sounds[32];
Ich habe auch eine Funktion für das Spielen dieser Stücke reserviert:
void PlaySound(int snd_id)
{
if(snd_id >= 0 && snd_id < 32)
{
if(Mix_PlayChannel(-1, sounds[snd_id], 0) == -1)
{
printf("Mix_PlayChannel: %s\n",Mix_GetError());
}
}
}
Der Versuch, einen einzelnen Ton mehrmals kurz hintereinander zu spielen (etwa 100 ms Verzögerung/10 Bp), bin ich der Ton gegeben Spielen in einem eingestellten, langsameren Intervall (etwa 500 ms oder so/2bps), obwohl die Funktion mit 10 bps aufgerufen wird.
Ich habe bereits "Mix_AllocateChannels (16);" um sicherzustellen, dass ich Kanäle zugewiesen habe (lassen Sie mich wissen, wenn ich das falsch verwende) und immer noch, ein einzelner Brocken aus dem Array weigert sich, mit einer bestimmten Rate zu spielen.
Irgendwelche Ideen/Hilfe wird geschätzt, sowie Kritik, wie ich diese Frage gestellt habe.