diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/qmpmidiplay.cpp | 6 | ||||
-rw-r--r-- | core/qmpmidiplay.hpp | 14 |
2 files changed, 8 insertions, 12 deletions
diff --git a/core/qmpmidiplay.cpp b/core/qmpmidiplay.cpp index e33f804..cbed018 100644 --- a/core/qmpmidiplay.cpp +++ b/core/qmpmidiplay.cpp @@ -49,6 +49,7 @@ void CMidiPlayer::fluidDeinitialize() } void CMidiPlayer::processEvent(const SEvent *e) { + SEventCallBackData cbd(e->type,e->p1,e->p2); switch(e->type&0xF0) { case 0x80://Note off @@ -60,7 +61,7 @@ void CMidiPlayer::processEvent(const SEvent *e) case 0x90://Note on if((mute>>(e->type&0x0F))&1)break;//muted if(solo&&!((solo>>(e->type&0x0F))&1))break; - if(noteOnCB)noteOnCB->callBack(noteOnCBUserData); + if(noteOnCB)noteOnCB->callBack(&cbd,noteOnCBUserData); if(mappedoutput[e->type&0x0F]) mapper->noteOn(mappedoutput[e->type&0x0F]-1,e->type&0x0F,e->p1,e->p2); else @@ -397,6 +398,7 @@ uint32_t CMidiPlayer::getFileStandard(){return midiFile?midiFile->getStandard(): const char* CMidiPlayer::getTitle(){return midiFile?midiFile->getTitle():"";} const char* CMidiPlayer::getCopyright(){return midiFile?midiFile->getCopyright():"";} double CMidiPlayer::getTempo(){return 60./(ctempo/1e6);} +uint32_t CMidiPlayer::getDivision(){return divs;} uint32_t CMidiPlayer::getTCpaused(){return tcpaused;} void CMidiPlayer::setTCpaused(uint32_t ps){tcpaused=ps;} uint32_t CMidiPlayer::isFinished(){return finished;} @@ -528,5 +530,5 @@ void CMidiPlayer::setChannelOutput(int ch,int devid) }else fluid_synth_all_notes_off(synth,ch); } uint8_t* CMidiPlayer::getChstates(){return chstate;} -void CMidiPlayer::setNoteOnCallBack(CMidiCallBack *cb,void *userdata) +void CMidiPlayer::setNoteOnCallBack(IMidiCallBack *cb,void *userdata) {noteOnCB=cb;noteOnCBUserData=userdata;} diff --git a/core/qmpmidiplay.hpp b/core/qmpmidiplay.hpp index 9bb6323..4f3b50f 100644 --- a/core/qmpmidiplay.hpp +++ b/core/qmpmidiplay.hpp @@ -2,10 +2,10 @@ #ifndef QMPMIDIPLAY_H #define QMPMIDIPLAY_H #include <cstring> -#include <cstdint> #include <cstdlib> #include <vector> #include <fluidsynth.h> +#include "../include/qmpcorepublic.hpp" #include "qmpmidimappers.hpp" struct SEvent { @@ -21,13 +21,6 @@ struct SEvent if(s){str=new char[strlen(s)+2];strcpy(str,s);}else str=NULL; } }; -class CMidiCallBack -{ - public: - CMidiCallBack(){} - virtual void callBack(void* data)=0; - virtual ~CMidiCallBack(){} -}; class CMidiFile { private: @@ -83,7 +76,7 @@ class CMidiPlayer qmpMidiMapperRtMidi *mapper; int mappedoutput[16],deviceusage[16],deviceiid[128]; uint8_t chstate[16],chstatus[16][130];//0..127: cc 128: pc - CMidiCallBack *noteOnCB; + IMidiCallBack *noteOnCB; void* noteOnCBUserData; void setBit(uint16_t &n,uint16_t bn,uint16_t b); @@ -126,6 +119,7 @@ class CMidiPlayer uint32_t getFileNoteCount(); uint32_t getFileStandard(); double getTempo(); + uint32_t getDivision(); const char* getTitle(); const char* getCopyright(); @@ -154,6 +148,6 @@ class CMidiPlayer qmpMidiMapperRtMidi* getMidiMapper(); void setChannelOutput(int ch,int devid); uint8_t* getChstates(); - void setNoteOnCallBack(CMidiCallBack *cb,void *userdata); + void setNoteOnCallBack(IMidiCallBack *cb,void *userdata); }; #endif |