Ich schreibe einen MOD-Player und versuche, ein Sample mit Allegro5-Rohdaten abzuspielen. Ich kann die genauen Init-Parameter für den Stream nicht herausfinden, um die geladenen Sample-Daten vom Mod abzuspielen Datei.Rohe Audiowiedergabe in Allegro 5
Das ist, was ich habe:
xf::ModLoader ml;
ml.loadFromFile("C:\\Users\\bubu\\Downloads\\agress.mod");
// getSampleLength() returns # of data words
int sample_length = ml.getSampleLength(1) * 2;
const int8_t* sample_data = ml.getSampleData(1);
ALLEGRO_MIXER* mixer = al_get_default_mixer();
ALLEGRO_AUDIO_STREAM* stream = al_create_audio_stream(1, sample_length, 8363, ALLEGRO_AUDIO_DEPTH_INT8, ALLEGRO_CHANNEL_CONF_1);
al_attach_audio_stream_to_mixer(stream, mixer);
al_set_audio_stream_gain(stream, 0.7f);
al_set_audio_stream_playmode(stream, ALLEGRO_PLAYMODE_ONCE);
al_set_audio_stream_playing(stream, true);
al_set_audio_stream_fragment(stream, (void*)sample_data);
al_drain_audio_stream(stream);
Zu allererst, Freq param für den Test (8363Hz) fest einprogrammiert ist, aber ich mit der angegebenen Frequenz nicht bekommen, was ich erwarte, dass die Wiedergabe und al_drain_audio_stream() bleibt für immer Müll in einer Schleife stecken ...
Jede Hilfe wäre willkommen.