這次要用 JUCE 來寫一個音樂撥放器
JUCE 本身就有提供相關 audio library,本程式也是 based on JUCE 提供的 tutorial
程式碼放在這
以下說明一些關鍵部分
1. 首先來看 MainComponent.h
這邊繼承了 AudioAppComponent、ChangeListener、Button:Listener以及Timer 四個class
因為 AudioAppComponent 本身就繼承了 Component,所以不用特別再繼承 Component
接著就是必須實做 Father class 的 pure virtual functions
2. 接著來看 private 的 member variable
AudioFormatManager、AudioFormatReaderSource 和 AudioTransportSource 這三個 class 是
本程式核心要使用的
3. 在 MainComponent.cpp部分,先來看 buttonClicked()
根據不同的 button,各自去實做相對應的功能
4. 來看 changeListenerCallback()
AudioTransportSource 這個 class 本身繼承了 ChangeBroadcaster
所以當 AudioTransportSource 有 change event 發生時,changeListenerCallback()就會被呼叫
5. 來看因為繼承了 AudioAppComponent 所必須實做的三個 functions
基本上,實做內容都是用繼承了 AudioSource 並實做了相關 function 的
AudioTransportSource 來實現
6. timerCallback() 是繼承了 Timer 必須實做的 function
在這個 function,利用 AudioTransportSource::getCurrentPosition() 來拿到目前音檔的時間資
訊,並利用 RelativeTime 來算出分、秒、毫秒
7. 來看一下openButtonClicked()
開檔方式和之前的 Image Viewer 是一樣的方式
這邊一個比較特別的地方是利用 AudioTransportSource::getLengthInSeconds() 來拿到音檔
的整首時間長度的資訊
8. 成果如下
沒有留言:
張貼留言