JUCE 学习笔记(一):创建音频播放器
最编程
2024-05-02 21:54:38
...
Audio Formats:
Juce提供了一系列的工具来读写多种格式的音频文件。本例中会用到一下类
AudioFormatManager:这个类包含了一份音频文件格式的list,并且可以创造合适的对象来从这些格式中读取声音数据
AudioFormatReader:这个类处理底层音频文件读取的操作,并且让我们可以通过一致的格式读取音频(如浮动值的数组)。当AudioFormatManager对象被要求打开一个特定文件时,会创建这个类的实例。
AudioFormatReaderSource:这是AudioSource类的一个子类。它可以从AudioFormatReader对象中读取音频数据,并通过其getNextAudioBlock()函数渲染音频
AudioTransportSource:另一个AudioSource的子类,可以控制一个AudioFormatReaderSource对象的播放。这种控制包括开始和停止AudioFormatReaderSource对象的播放。它还可以进行采样率转换,以及提前缓冲音频。
WAV和AIFF格式在各平台适用,其他文件格式取决于平台和Projucer项目中juce_audio_formats模块中启用的选项
State
enum TransportState { Stopped, Starting, Playing, Stopping };
Changing States
1 void changeState (TransportState newState) 2 { 3 if (state != newState) 4 { 5 state = newState; 6 7 switch (state) 8 { 9 case Stopped: // [3] 10 stopButton.setEnabled (false); 11 playButton.setEnabled (true); 12 transportSource.setPosition (0.0); 13 break; 14 15 case Starting: // [4] 16 playButton.setEnabled (false); 17 transportSource.start(); 18 break; 19 20 case Playing: // [5] 21 stopButton.setEnabled (true); 22 break; 23 24 case Stopping: // [6] 25 transportSource.stop(); 26 break; 27 } 28 } 29 }