음악, 삶, 개발

juce::Timer 클래스의 사용 본문

개발 공부/Juce 공부방

juce::Timer 클래스의 사용

Lee_____ 2020. 10. 8. 23:04

< 공식 문서 >

 

juce::Timer 클래스


< 설명 > 

 

아래의 GUI, Audio thread 의 근간이 되는 클래스이다.

pure virtual 을 가진 추상 클래스라서, 객체를 만들지않고 상속해야한다.

 

아래와 같이 객체를 생성하여 사용하는게 아니라,

class MyComponent : public juce::Component {

    juce::Timer timer;

}

아래와 같이 상속을 하고 pure virtual 을 정의해주고, 생성자와 파괴자에서 start 와 stop 을 반드시 해줘야한다.

class MyComponent : public juce::Component, juce::Timer {

    public :    

        MyComponent() {

            startTimer(1000); // 반드시 생성자에서 start 해줘야함.

        }

        ~MyComponent() {

            stopTimer(); // 반드시 파괴자에서 stop 해줘야함.

        }

        void timerCallback() override {

            // timerCallback() 은 순수 가상 함수임.
            // 반드시 정의해야함!

        }

}

위와 같이 사용해야하며,

위의 코드에서는 1초마다 timerCallback() 함수가 호출되게된다.

juce::Component 에 juce::Timer 클래스가 사용되었다면,

플러그인창이 열려있을때, 즉 GUI 가 보일때만 timerCallback() 이 호출되고,

플러그인창이 닫혀있으면 호출되지않는다.

위의 Ableton Live 에서 플러그인창이 닫혀있다.

플러그인창이 닫혀있을때 Juce 는 GUI 요소들을 파괴하고,

창이 열릴때 다시 생성한다.

즉 플러그인창이 닫혀있으면 GUI 객체들은 존재하지않기때문에,

timerCallback(); 또한 호출되지않는것이다.