libremidi update to v5.4.3 and added virtual midi out as default

This commit is contained in:
Sebastian
2026-06-23 00:05:41 +02:00
parent dc0003232a
commit 51cd271b6f
166 changed files with 8135 additions and 2009 deletions
+11
View File
@@ -11,12 +11,20 @@ namespace VISEQ::MIDI {
void Midi::enumerate(){
std::cout << (int)obs.get_current_api() << std::endl;
int i = 0;
midi_out_ports.clear();
for(const libremidi::output_port& port : obs.get_output_ports()){
midi_out_ports.push_back({port, i, false});
i++;
}
auto out_conf = libremidi::midi1::out_default_configuration();
virtual_midi_out = libremidi::midi_out(libremidi::output_configuration(), out_conf);
virtual_midi_out.open_virtual_port("viseq out");
//midi_out_ports.push_back({&virtual_midi_out, 99, false});
}
void Midi::open_midi_out(MidiOutPort *out_port){
@@ -41,6 +49,8 @@ namespace VISEQ::MIDI {
notes.emplace_back(midi_out, channel, note, velocity, GetTime(), gate);
}
}
virtual_midi_out.send_message(libremidi::channel_events::note_on(channel, note, velocity));
notes.emplace_back(99, channel, note, velocity, GetTime(), gate);
}
void Midi::cc(int midi_out, int channel, int cc, int value){
@@ -64,6 +74,7 @@ namespace VISEQ::MIDI {
for(auto &n : notes){
if(time - n.start >= (float)n.gate / 1000.0f){
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));
virtual_midi_out.send_message(libremidi::channel_events::note_off(n.channel, n.note, n.velocity));
n.erase = true;
}
}
+5
View File
@@ -3,6 +3,9 @@
#include "libremidi/libremidi.hpp"
#include "libremidi/observer_configuration.hpp"
#include <libremidi/configurations.hpp>
#include <libremidi/defaults.hpp>
#include <libremidi/output_configuration.hpp>
#include <map>
#include <memory>
#include "datatypes.h"
@@ -31,6 +34,8 @@ namespace VISEQ::MIDI {
std::map<int, std::shared_ptr<libremidi::midi_out>> midi_outs;
std::vector<libremidi::input_port> midi_in_ports;
std::vector<MidiOutPort> midi_out_ports;
libremidi::midi_out virtual_midi_out;
std::vector<NoteTimer> notes;
+2
View File
@@ -9,6 +9,7 @@
#include <chrono>
#include <memory>
#include <thread>
#include <mutex>
namespace VISEQ::SIGNAL {
@@ -104,6 +105,7 @@ namespace VISEQ::SIGNAL {
if(midinode->send_pitch_bend) midi.pitch_bend(m.second.i, midinode->getPitchBend().channel, midinode->getPitchBend().value);
}
}
if(midinode->send_note) midi.note(99, midinode->getNotes().channel, (int)Clamp(midinode->getNotes().note + s->midi_note_offset, 0, 127), midinode->getNotes().velocity, midinode->getNotes().gate);
s->last = s->next;
s->next = next_node;
}
+1
View File
@@ -6,6 +6,7 @@
#include "midi.h"
#include <memory>
#include <mutex>
using namespace VISEQ::GRAPH;