发声控制

1. 系统发音控制:采用C++Builder6自带的DirectSound驱动一个主环形缓冲区,等分为两个半区,用于流式发音循环。因为DirectSound不支持播放的同时写入数据,所    以当一个半区发音播放时,另一个半区装载。当播放进入到一个新半区后,向主窗体发出消息,引发主窗体为下一个半区相关进行操作。装载发音数据来源于一个环形区块式混音缓冲区,该缓冲区分为21个半区,当一个半区向主缓冲区装载数据时,另20个半区用于读写操作,20个半区视为一个区读写。环形混音缓冲区的数据来源于从乐器库中读出的音符采样,经混音及时间间隔处理,写入到环形混音缓冲区。

2. 乐器操作过程:每个乐器库仅包含一种乐器,每个库每次最多读出5个采样同时发音,每个库或每个乐器为一个通道。由乐器库读出采样后,进行音符时域处理,然后混入区块式混音缓冲区,在主窗体装载事件下,向DirectSound发音环装载数据。每个库(通道)执行同样的过程,实现多乐器混音。

你可能感兴趣的:(发声控制)