diff options
Diffstat (limited to 'qmidiplayer-lite/qmpcorewrapper.hpp')
-rw-r--r-- | qmidiplayer-lite/qmpcorewrapper.hpp | 106 |
1 files changed, 58 insertions, 48 deletions
diff --git a/qmidiplayer-lite/qmpcorewrapper.hpp b/qmidiplayer-lite/qmpcorewrapper.hpp index 090edc7..07dff65 100644 --- a/qmidiplayer-lite/qmpcorewrapper.hpp +++ b/qmidiplayer-lite/qmpcorewrapper.hpp @@ -5,56 +5,66 @@ #include <thread> #include <fluidsynth.h> #include "../core/qmpmidiplay.hpp" -class CQMPCoreWrapper:public QObject +class CQMPCoreWrapper: public QObject { - Q_OBJECT + Q_OBJECT private: - CMidiPlayer *mp; - std::thread *playerTh; - int curprog; + CMidiPlayer *mp; + std::thread *playerTh; + int curprog; public: - explicit CQMPCoreWrapper(QObject* parent=0):QObject(parent) - { - mp=new CMidiPlayer(); - } - ~CQMPCoreWrapper(){delete mp;} - Q_INVOKABLE void initFluidSynth(QUrl sfpath) - { - mp->fluid()->setOptStr("audio.driver","pulseaudio"); - mp->fluid()->deviceInit(); - mp->fluid()->loadSFont(sfpath.toLocalFile().toStdString().c_str()); - for(int i=0;i<16;++i) - mp->setChannelOutput(i,0); - } - Q_INVOKABLE void deinitFluidSynth() - { - mp->fluid()->deviceDeinit(); - } - Q_INVOKABLE void loadFile(QUrl file) - { - mp->playerLoadFile(file.toLocalFile().toStdString().c_str()); - mp->playerInit();curprog=0; - } - Q_INVOKABLE void playFile() - { - playerTh=new std::thread(&CMidiPlayer::playerThread,mp); - } - Q_INVOKABLE void stop() - { - mp->playerDeinit();playerTh->join();delete playerTh; - mp->playerPanic(); - } - Q_INVOKABLE int getProgress() - { - while(!mp->isFinished()&&mp->getTCeptr()>mp->getStamp(curprog) - &&curprog<=100) - ++curprog; - return curprog; - } - Q_INVOKABLE void panic(){mp->playerPanic();} - Q_INVOKABLE void setTCeptr(int perct) - { - mp->setTCeptr(mp->getStamp(perct),perct);curprog=perct; - } + explicit CQMPCoreWrapper(QObject *parent = 0): QObject(parent) + { + mp = new CMidiPlayer(); + } + ~CQMPCoreWrapper() + { + delete mp; + } + Q_INVOKABLE void initFluidSynth(QUrl sfpath) + { + mp->fluid()->setOptStr("audio.driver", "pulseaudio"); + mp->fluid()->deviceInit(); + mp->fluid()->loadSFont(sfpath.toLocalFile().toStdString().c_str()); + for (int i = 0; i < 16; ++i) + mp->setChannelOutput(i, 0); + } + Q_INVOKABLE void deinitFluidSynth() + { + mp->fluid()->deviceDeinit(); + } + Q_INVOKABLE void loadFile(QUrl file) + { + mp->playerLoadFile(file.toLocalFile().toStdString().c_str()); + mp->playerInit(); + curprog = 0; + } + Q_INVOKABLE void playFile() + { + playerTh = new std::thread(&CMidiPlayer::playerThread, mp); + } + Q_INVOKABLE void stop() + { + mp->playerDeinit(); + playerTh->join(); + delete playerTh; + mp->playerPanic(); + } + Q_INVOKABLE int getProgress() + { + while (!mp->isFinished() && mp->getTCeptr() > mp->getStamp(curprog) + && curprog <= 100) + ++curprog; + return curprog; + } + Q_INVOKABLE void panic() + { + mp->playerPanic(); + } + Q_INVOKABLE void setTCeptr(int perct) + { + mp->setTCeptr(mp->getStamp(perct), perct); + curprog = perct; + } }; #endif // QMPCOREWRAPPER_H |