SAMPLE *load_sample(char *filename);
从文件读入一个采样声音, 返回它的指针, 如果出错则返回 NULL.
提供的这个函数支持单声道和立体声的 WAV 和单声道的 VOC 文件,
可以是 8 或 16 位格式的.
SAMPLE *load_wav(char *filename);
从一个 RIFF WAV 文件里读入一个采样声音.
SAMPLE *load_voc(char *filename);
从一个 Creative Labs VOC 文件中读入一个采样声音.
SAMPLE *create_sample(int bits, int stereo, int freq, int len);
建造一个新的指定类型的采样声音结构.
数据域指针指向波形格式的数据块: 见 allegro.h 里的结构定义的描述.
void destroy_sample(SAMPLE *spl);
当你调用了这个,就撤销掉了一个采样声音结构.
即使是在采样声音正在播放时调用也是安全的, 因为它会检查声音,
如果正在播放则会先关掉它.
int play_sample(SAMPLE *spl, int vol, int pan, int freq, int loop);
以指定音量, 左右声道 (pan) 位置, 和频率开启一个采样声音.
音量和左右声道位置 (pan) 的范围是从 0 (小/左) 到 255 (大/右).
频率是相对的而不是绝对的: 1000 表示录制采样声音时的频率,
2000 是它的两倍, 等等. 如果循环标志被设置了,
采样声音将不停的重复知道你调用 stop_sample(),
它可以在你播放时通过调用 adjust_sample() 来调整.
void adjust_sample(SAMPLE *spl, int vol, int pan, int freq, int loop);
当采样声音在播放时改变参数
(用来控制循环播放的声音). 你可以改变音量, 左右声道位置,
和频率, 也可以清除循环标志, 这样可以在到达这次循环的末尾停止.
如果有几个相同的采样声音在播放,
这调整第一个碰上的.
如果采样声音没有在播放,它不起效果.
void stop_sample(SAMPLE *spl);
杀掉一个采样声音, 这在你设置了循环模式的采样声音时需要.
如果有几个采样声音在播放, 它将停掉所有的.
如果你需要更详细的描述来控制采样声音怎样播放, 你可以使用 更低层次的音效函数而不是调用 play_sample(). 这有更多的工作要做, 因为你必须明确的分配和释放音效 而不是等它们结束播放时自动的被触发, 但是它允许你非常细致的准确指定你想对声音干的每件事. 你还可能想修改采样声音结构的区域:
int priority; 范围 0-255 (缺省 128), 如果你试图播放比驱动程序能管理更多的音效, 这控制着音效怎样被分配. 这可以用在保证 在重要的声音被维持而次要的声音被砍掉.int allocate_voice(SAMPLE *spl);
unsigned long loop_start; unsigned long loop_end; 采样声音联合的循环位置, 缺省设置为采样声音的开始和结束处.
void deallocate_voice(int voice);
释放一声卡音效, 无论是使用什么资源都将停止播放和发布.
void reallocate_voice(int voice, SAMPLE *spl);
切换一个正在分配的音效来使用不同的采样声音.
调用 reallocate_voice(voice, sample) 相当于:
deallocate_voice(voice); voice = allocate_voice(sample);void release_voice(int voice);
这本质上和 deallocate_voice() 相同, 但是它在生效前将等待声音停止.
void voice_start(int voice);
开启一个音效, 使用已经设置好的参数.
void voice_stop(int voice);
停止一个音效, 储存当前的位置和状态以便于以后调用 voice_start() 接着放.
void voice_set_priority(int voice, int priority);
设置音效的优先级 (范围 0-255).
如果你试图播放比声卡驱动程序能够管理的更多的音效,
这用来决定哪个音效应当被砍掉.
SAMPLE *voice_check(int voice);
检查音效当前是否被分配了.
它返回音效正在使用的采样声音的一个拷贝, 如果音效非活动的则返回 NULL
(即音效已经被取消分配, 或 release_vioce() 函数被调用且
采样声音已经停止播放了).
int voice_get_position(int voice);
以采样声音联合的形似返回当前音效的位置, 如果停止播放了则返回 -1.
void voice_set_position(int voice, int position);
以采样声音联合的形式设置音效的位置.
void voice_set_playmode(int voice, int playmode);
调整指定音效的循环状态. 当音效正在播放时这也可以完成,
因此你可以以循环模式开始一个采样声音
(设置循环开始和结束位置为合适的值),
然后当你想结束声音时清除循环标志,
它将播放附随的采样声音部分持续到循环尾,
以正常的方式结束. 模式参数是一个包含以下值的位域:
void voice_set_volume(int voice, int volume);
设置音效的音量, 范围 0-255.
void voice_ramp_volume(int voice, int time, int endvol);
开始从当前音量到指定结束音量的渐变(渐强或渐弱)操作,
时间以百万分之一秒为单位.
void voice_stop_volumeramp(int voice);
中断音量渐变操作.
int voice_get_frequency(int voice);
返回当前音效的音调, 以 Hz 为单位.
void voice_set_frequency(int voice, int frequency);
设置音效的音调, 以 Hz 为单位.
void voice_sweep_frequency(int voice, int time, int endfreq);
开始从当前位置的音调到指定位置结束音调的频率移动 (glissando) ,
时间以百万分之一秒为单位.
void voice_stop_frequency_sweep(int voice);
中断频率移动操作.
int voice_get_pan(int voice);
返回当前的 pan 位置, 从 0(左) 到 255 (右).
void voice_set_pan(int voice, int pan);
甚至 pan 位置, 范围从 0 (左) 到 255 (右).
void voice_sweep_pan(int voice, int time, int endpan);
开始从当前位置到指定结束位置的 pan sweep ( 左 <-> 右移动) 操作,
时间以百万分之一秒为单位.
void voice_stop_pan_sweep(int voice);
中断 pan sweep (左右声道移动) 操作.
void voice_set_echo(int voice, int strength, int delay);
设置音效的回声参数 (现在还没有提供).
void voice_set_tremolo(int voice, int rate, int depth);
设置音效的震音参数 (现在还没有提供).
void voice_set_vibrato(int voice, int rate, int depth);
设置音效的颤音参数 (现在还没有提供).