gpt4 book ai didi

audio - Allegro 5中的原始音频播放

转载 作者:行者123 更新时间:2023-12-03 00:37:48 29 4
gpt4 key购买 nike

我正在编写MOD播放器,尝试使用Allegro5原始流功能播放样本,但我无法弄清该流的确切初始化参数,以播放从mod文件加载的样本数据。

这就是我所拥有的:

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参数是为测试(8363Hz)进行硬编码的,但是,以指定的频率播放时,我没有达到我的期望,并且al_drain_audio_stream()永远卡住了,在循环中播放垃圾...

任何帮助,将不胜感激。

最佳答案

至少,您需要在调用al_get_audio_stream_fragment之前先调用al_set_audio_stream_fragment。通常,您会在响应ALLEGRO_EVENT_AUDIO_STREAM_FRAGMENT事件的同时,在while循环中提供这些流。有关一些示例代码,请参见Allegro的源代码中的ex_saw示例:https://github.com/liballeg/allegro5/blob/master/examples/ex_saw.c

关于audio - Allegro 5中的原始音频播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924407/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com