870920 Menu

JUCE音频—AudioIODevice类群

音频设备(音频驱动)是计算机音频系统中不可或缺的一个重要环节,本小节讲解的类群就代表了这一环节。首先需明确“音频驱动的类型与音频设备、物理设备与逻辑设备”等关系:音频驱动的类型指的是ASIO、DirectSound、CoreAudio等音频驱动的抽象概念,音频设备则代表某个具体的音频驱动,可将此处的音频驱动理解为计算机中的逻辑音频硬件(音频设备)。JUCE类库中,通过具体的驱动类型来创建该类型所对应的音频设备。一个音频设备也许支持多种驱动类型,一个驱动类型也可以由多个音频设备所共有。比如:

使用ASIO类型来创建音频设备时,得到的结果可能不止一个。因为本机也许安装了多块声卡,每一块均支持ASIO。同时,一个物理的硬件音频设备,在使用时必须转为程序内部的逻辑音频设备。也就是说,一块物理硬件设备可转换为多个逻辑音频设备(具体的音频驱动),而当前所使用的某个逻辑音频设备,一定代表某一具体的音频驱动类型。此即物理硬件和逻辑设备之间的关系。实际编程时,可无需考虑太多,只需理解为:程序内部使用的音频设备即某一具体的音频驱动即可。

本小节所涉及的类(结构体)列举和简介如下:

 AudioIODeviceType 音频驱动类型,可据此创建本机所对应的所有音频设备

 AudioIODeviceType::Listener 音频驱动类型的捕获器类,该类型所对应的设备改变时可自动处理

 AudioIODevice 代表一个逻辑音频设备(具体的音频驱动)。完成播放和录音的关键。

 AudioIODeviceCallback 供AudioIODevice不间断调用,可产生或接收连续的音频流

 AudioSourcePlayer AudioIODeviceCallback的派生类,专用于播放AudioSource

 AudioProcessorPlayer 同上。专用于播放AudioProcessor所产生的音频流。可接收MIDI

 AudioDeviceManager 持有并管理AudioIODevice和AudioIODeviceCallback。可通过此类添加需回调的AudioIODeviceCallback,直接实现音频播放/录音,并可通过回调机制实时接收外部设备的MIDI消息

 AudioDeviceManager::AudioDeviceSetup 该结构体的数据成员为某个音频设备的各种属性

 AudioDeviceSelectorComponent UI组件,可设置AudioDeviceManager