JUCE學習筆記(一):創造一個音訊播放器
阿新 • • 發佈:2021-10-07
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 (falsechangeState); 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 }