From 0c3fe540e925829022d9d8aa567c2dc2bd3d33d5 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Wed, 21 Jun 2017 13:03:30 +0800 Subject: Complete rewrite of the MIDI mapper. Enforces single fluidsynth instance. Documentation update. Minor changes to make lite version work. --- core/qmpmidimapperrtmidi.cpp | 105 ------------------------------------------- 1 file changed, 105 deletions(-) delete mode 100644 core/qmpmidimapperrtmidi.cpp (limited to 'core/qmpmidimapperrtmidi.cpp') diff --git a/core/qmpmidimapperrtmidi.cpp b/core/qmpmidimapperrtmidi.cpp deleted file mode 100644 index 263cada..0000000 --- a/core/qmpmidimapperrtmidi.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include -#include -#include -#include RT_MIDI_H -#include "qmpmidimappers.hpp" -RtMidiOut* qmpMidiMapperRtMidi::dummy=NULL; -qmpMidiMapperRtMidi::qmpMidiMapperRtMidi() -{ - try{dummy=new RtMidiOut();} - catch(RtMidiError &e) - { - printf("Failed to initialize the dummy device: %s\n",e.what()); - dummy=NULL; - } - memset(ports,0,sizeof(ports)); -} -qmpMidiMapperRtMidi::~qmpMidiMapperRtMidi() -{ - delete dummy;dummy=NULL; - for(int i=0;i<16;++i)if(ports[i])delete ports[i]; -} -int qmpMidiMapperRtMidi::enumDevices() -{ - return dummy?dummy->getPortCount():0; -} -std::string qmpMidiMapperRtMidi::deviceName(int id) -{ - return dummy?dummy->getPortName(id):""; -} -int qmpMidiMapperRtMidi::deviceInit(int id) -{ - int i=0;for(;ports[i]&&i<16;++i); - if(i==16)return -1; - try - { - ports[i]=new RtMidiOut(); - ports[i]->openPort(id); - } - catch(RtMidiError &e) - { - printf("Device initialization failure: %s\n",e.what()); - ports[i]=NULL; - return -1; - } - return i; -} -void qmpMidiMapperRtMidi::deviceDeinit(int iid) -{ - if(ports[iid]){ports[iid]->closePort();delete ports[iid];ports[iid]=NULL;} -} -void qmpMidiMapperRtMidi::noteOn(int iid,int ch,int key,int vel) -{ - if(!ports[iid])return;ch&=0x0F; - std::vectormessage; - message.push_back(0x90|ch); - message.push_back(key); - message.push_back(vel); - ports[iid]->sendMessage(&message); -} -void qmpMidiMapperRtMidi::noteOff(int iid,int ch,int key) -{ - if(!ports[iid])return;ch&=0x0F; - std::vectormessage; - message.push_back(0x80|ch);message.push_back(key);message.push_back(0); - ports[iid]->sendMessage(&message); -} -void qmpMidiMapperRtMidi::ctrlChange(int iid,int ch,int cc,int val) -{ - if(!ports[iid])return;ch&=0x0F; - std::vectormessage; - message.push_back(0xB0|ch);message.push_back(cc);message.push_back(val); - ports[iid]->sendMessage(&message); -} -void qmpMidiMapperRtMidi::progChange(int iid,int ch,int val) -{ - if(!ports[iid])return;ch&=0x0F; - std::vectormessage; - message.push_back(0xC0|ch);message.push_back(val); - ports[iid]->sendMessage(&message); -} -void qmpMidiMapperRtMidi::pitchBend(int iid,int ch,int val) -{ - if(!ports[iid])return;ch&=0x0F; - std::vectormessage; - message.push_back(0xE0|ch);message.push_back(val&0x7F); - message.push_back(val>>7);ports[iid]->sendMessage(&message); -} -void qmpMidiMapperRtMidi::sysEx(int iid,int length,const char *data) -{ - if(!ports[iid])return; - std::vectormessage(data,data+length); - ports[iid]->sendMessage(&message); -} -void qmpMidiMapperRtMidi::panic(int iid,int ch) -{ - //maybe all notes off is more close to panic? - pitchBend(iid,ch,8192); - ctrlChange(iid,ch,120,0); - //ctrlChange(iid,ch,123,0); -} -void qmpMidiMapperRtMidi::reset(int iid,int ch) -{ - ctrlChange(iid,ch,120,0); - ctrlChange(iid,ch,121,0); -} -- cgit v1.2.3