gpt4 book ai didi

audio - Allegro 声音不起作用(播放 wav 文件)

转载 作者:行者123 更新时间:2023-12-03 01:48:46 25 4
gpt4 key购买 nike

我正在为一个学校项目制作一个游戏,并且我有一个声音效果,应该在发射激光时播放。有一段时间它运行良好,但后来停止了。在它停止后,我稍微更改了代码,因为我想将文件存储在数据文件中。

在 Allegro 中初始化声音

install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);

这是加载和播放声音的代码
//Loading sound file from datafile
DATAFILE *laserShot = NULL;
laserShot = load_datafile_object("asteroids.dat", "laser_Shot");

//Error checking
if (laserShot->dat == NULL) {
allegro_message("Error loading laser_Shot.wav");
}
else {
//Playing sound for shot
play_sample((SAMPLE*) laserShot->dat, 255, 127, 1000, 0);
}

//Freeing memory
unload_datafile_object(laserShot);

如果这很重要的话,声音本身非常短,不到一秒钟。
声音也会尝试快速连续播放多次,但实际上现在比最初工作时有更多的休息时间,所以我认为这没有什么不同。

我有什么明显的错误吗?

最佳答案

首先,确保设置了所有参数,如果您只调用 install_sound,则不会。你也应该这样称呼:

 set_config_int("sound", "quality", 1);

第三个参数是指使用的声音质量。这应该意味着最高质量,如果您想要其他类型,您应该在 allegro libs 引用中搜索。

其次,你应该分配 语音 .语音基本上是内存中用于播放样本的空间。默认情况下,allegro 4 可以分配 255 种不同的声音,但由于硬件原因,实数可以少得多。你这样做:
int laser_voice = allocate_voice("sample.wav");

现在您可以设置参数,如音量、平移、扫描和播放模式。例如,如果您想以与源相同的频率和音量播放循环样本,您应该这样做:
voice_set_volume(   laser_voice, 200);
voice_set_pan( laser_voice, 127);
voice_set_playmode( laser_voice, PLAYMODE_LOOP);

对于其他选项,您应该访问引用资料。

现在,要播放示例,您只需调用
voice_start(laser_voice);

然后您可以通过 reallocate_voice 停止、重播、更改参数或更改样本。就这样。在代码结束时,您通过
deallocate_voice(laser_voice);

关于audio - Allegro 声音不起作用(播放 wav 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41498784/

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