libremidi update to v5.4.3 and added virtual midi out as default
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "midi.h"
|
||||
|
||||
#include <memory>
|
||||
#include <mutex>
|
||||
|
||||
using namespace VISEQ::GRAPH;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user