Я пишу проигрыватель MOD, пытаясь воспроизвести образец с использованием возможностей необработанного потока Allegro5, я не могу определить точные параметры инициализации для потока для воспроизведения загруженных данных образца из файла мода.
Вот что у меня есть:
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);
Во-первых, параметр freq жестко запрограммирован для теста (8363 Гц), но при воспроизведении на указанной частоте я не получаю ожидаемого результата, а al_drain_audio_stream() навсегда зависает, проигрывая мусор в цикле...
Любая помощь будет оценена по достоинству.