Skip to content

Commit dae4f6d

Browse files
committed
added rescan devices button to MIDI send/receive objects
1 parent 68bc8a4 commit dae4f6d

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

src/objects/communications/MidiReceiver.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,12 @@ void MidiReceiver::drawObjectNodeConfig(){
184184
}
185185
}else{
186186
ImGui::Text("No MIDI devices found!");
187+
188+
if(midiDevicesList.size() == 0){
189+
if(ImGui::Button("Rescan Devices")){
190+
rescanMIDI();
191+
}
192+
}
187193
}
188194

189195

@@ -223,6 +229,24 @@ void MidiReceiver::resetMIDISettings(int devID){
223229

224230
}
225231

232+
//--------------------------------------------------------------
233+
void MidiReceiver::rescanMIDI(){
234+
midiIn.listInPorts();
235+
midiDevicesList = midiIn.getInPortList();
236+
237+
// open port by number
238+
if(midiDevicesList.size() > 0){
239+
midiIn.openPort(midiDeviceID);
240+
241+
// don't ignore sysex, timing, & active sense messages,
242+
midiIn.ignoreTypes(false, false, false);
243+
midiIn.addListener(this);
244+
midiIn.setVerbose(true);
245+
}else{
246+
ofLog(OF_LOG_WARNING,"You have no MIDI devices available, please connect one in order to use the midi receiver object!");
247+
}
248+
}
249+
226250
//--------------------------------------------------------------
227251
void MidiReceiver::newMidiMessage(ofxMidiMessage& msg){
228252
//ofLog(OF_LOG_NOTICE,"%s",msg.toString().c_str());

src/objects/communications/MidiReceiver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class MidiReceiver : public PatchObject, public ofxMidiListener {
5555
void removeObjectContent(bool removeFileFromData=false) override;
5656

5757
void resetMIDISettings(int devID);
58+
void rescanMIDI();
5859

5960
void newMidiMessage(ofxMidiMessage& msg) override;
6061

src/objects/communications/MidiSender.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,12 @@ void MidiSender::drawObjectNodeConfig(){
186186
}
187187
}else{
188188
ImGui::Text("No MIDI devices found!");
189+
190+
if(midiDevicesList.size() == 0){
191+
if(ImGui::Button("Rescan Devices")){
192+
rescanMIDI();
193+
}
194+
}
189195
}
190196

191197

@@ -225,6 +231,19 @@ void MidiSender::resetMIDISettings(int devID){
225231

226232
}
227233

234+
//--------------------------------------------------------------
235+
void MidiSender::rescanMIDI(){
236+
midiOut.listOutPorts();
237+
midiDevicesList = midiOut.getOutPortList();
238+
239+
// open port by number
240+
if(midiDevicesList.size() > 0){
241+
midiOut.openPort(midiDeviceID);
242+
}else{
243+
ofLog(OF_LOG_WARNING,"You have no MIDI devices available, please connect one in order to use the midi sender object!");
244+
}
245+
}
246+
228247
OBJECT_REGISTER( MidiSender, "midi sender", OFXVP_OBJECT_CAT_COMMUNICATIONS)
229248

230249
#endif

src/objects/communications/MidiSender.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class MidiSender : public PatchObject{
5555
void removeObjectContent(bool removeFileFromData=false) override;
5656

5757
void resetMIDISettings(int devID);
58+
void rescanMIDI();
5859

5960

6061
ofxMidiOut midiOut;

0 commit comments

Comments
 (0)