2015年12月26日 星期六

[JUCE] Music Player Development Log 1

這次要用 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. 成果如下



沒有留言:

張貼留言