distance to closest node displayed, timing problems with midi notes being sent 1 to 3ms too early, or too late

This commit is contained in:
Sebastian
2024-10-28 02:07:47 +01:00
parent 58766cc373
commit 06cb6d8319
11 changed files with 68 additions and 70 deletions
+2 -2
View File
@@ -76,7 +76,7 @@ class Midi {
}
void note(int midi_out, int channel, int note, int velocity, int gate){
if(!midi_outs.empty()){
if(midi_outs.contains(midi_out)){
if(midi_outs[midi_out]->is_port_open()){
midi_outs[midi_out]->send_message(libremidi::channel_events::note_on(channel, note, velocity));
notes.emplace_back(midi_out, channel, note, velocity, GetTime(), gate);
@@ -88,7 +88,7 @@ class Midi {
float time = GetTime();
for(auto &n : notes){
if(time - n.start >= (float)n.gate / 1000.0f){
midi_outs[n.midi_out]->send_message(libremidi::channel_events::note_off(n.channel, n.note, n.velocity));
if(midi_outs.contains(n.midi_out) && midi_outs[n.midi_out]->is_port_open()) midi_outs[n.midi_out]->send_message(libremidi::channel_events::note_off(n.channel, n.note, n.velocity));
n.erase = true;
}
}