aboutsummaryrefslogtreecommitdiff
path: root/qmidiplayerlite.src.d/qmpcorewrapper.hpp
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2016-04-06 09:46:52 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2016-04-06 09:46:52 +0800
commitcf7eafca1fbc9aae495d7b7d7e1fb4bc92e6819f (patch)
treed1881d513983a345936a547cbc25b8bd1a1f056e /qmidiplayerlite.src.d/qmpcorewrapper.hpp
parentffd5bf0c99be3e4089886ab4757100474010edb8 (diff)
downloadQMidiPlayer-cf7eafca1fbc9aae495d7b7d7e1fb4bc92e6819f.tar.xz
Sometimes Naïve!
Diffstat (limited to 'qmidiplayerlite.src.d/qmpcorewrapper.hpp')
-rw-r--r--qmidiplayerlite.src.d/qmpcorewrapper.hpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/qmidiplayerlite.src.d/qmpcorewrapper.hpp b/qmidiplayerlite.src.d/qmpcorewrapper.hpp
new file mode 100644
index 0000000..558ed74
--- /dev/null
+++ b/qmidiplayerlite.src.d/qmpcorewrapper.hpp
@@ -0,0 +1,58 @@
+#ifndef QMPCOREWRAPPER_H
+#define QMPCOREWRAPPER_H
+#include <QObject>
+#include <QUrl>
+#include <thread>
+#include <fluidsynth.h>
+#include "../common/qmpmidiplay.hpp"
+class CQMPCoreWrapper:public QObject
+{
+ Q_OBJECT
+private:
+ CMidiPlayer *mp;
+ std::thread *playerTh;
+ int curprog;
+public:
+ explicit CQMPCoreWrapper(QObject* parent=0):QObject(parent)
+ {
+ mp=new CMidiPlayer(false);
+ }
+ ~CQMPCoreWrapper(){delete mp;}
+ Q_INVOKABLE void initFluidSynth()
+ {
+ fluid_settings_t *fsettings=mp->getFluidSettings();
+ fluid_settings_setstr(fsettings,"audio.driver","pulseaudio");
+ mp->fluidInitialize();
+ mp->pushSoundFont("/media/Files/FluidR3_Ext.sf2");
+ }
+ Q_INVOKABLE void deinitFluidSynth()
+ {
+ mp->fluidDeinitialize();
+ }
+ 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;
+ }
+ 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