1
Fork 0

Add retrigger to Host-MIDI

Fixes #200

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2022-03-26 13:18:08 +00:00
parent 9a792c72bf
commit c411946ccf
No known key found for this signature in database
GPG Key ID: CDBAA37ABC74FBA0
1 changed files with 7 additions and 1 deletions

View File

@ -122,6 +122,7 @@ struct HostMIDI : TerminalModule {
dsp::PulseGenerator startPulse;
dsp::PulseGenerator stopPulse;
dsp::PulseGenerator continuePulse;
dsp::PulseGenerator retriggerPulses[16];
MidiInput(CardinalPluginContext* const pc)
: pcontext(pc)
@ -278,6 +279,7 @@ struct HostMIDI : TerminalModule {
outputs[GATE_OUTPUT].setChannels(channels);
outputs[VELOCITY_OUTPUT].setChannels(channels);
outputs[AFTERTOUCH_OUTPUT].setChannels(channels);
outputs[RETRIGGER_OUTPUT].setChannels(channels);
for (int c = 0; c < channels; c++) {
float pw = pwValues[(polyMode == MPE_MODE) ? c : 0];
@ -286,6 +288,7 @@ struct HostMIDI : TerminalModule {
outputs[GATE_OUTPUT].setVoltage(gates[c] ? 10.f : 0.f, c);
outputs[VELOCITY_OUTPUT].setVoltage(rescale(velocities[c], 0, 127, 0.f, 10.f), c);
outputs[AFTERTOUCH_OUTPUT].setVoltage(rescale(aftertouches[c], 0, 127, 0.f, 10.f), c);
outputs[RETRIGGER_OUTPUT].setVoltage(retriggerPulses[c].process(args.sampleTime) ? 10.f : 0.f, c);
}
outputs[START_OUTPUT].setVoltage(startPulse.process(args.sampleTime) ? 10.f : 0.f);
@ -460,6 +463,7 @@ struct HostMIDI : TerminalModule {
// Set note
notes[*channel] = note;
gates[*channel] = true;
retriggerPulses[*channel].trigger(1e-3);
}
void releaseNote(uint8_t note) {
@ -780,12 +784,13 @@ struct HostMIDIWidget : ModuleWidgetWith9HP {
createAndAddOutput(6, HostMIDI::START_OUTPUT);
createAndAddOutput(7, HostMIDI::STOP_OUTPUT);
createAndAddOutput(8, HostMIDI::CONTINUE_OUTPUT);
createAndAddOutput(9, HostMIDI::RETRIGGER_OUTPUT);
}
void draw(const DrawArgs& args) override
{
drawBackground(args.vg);
drawOutputJacksArea(args.vg, 9);
drawOutputJacksArea(args.vg, 10);
setupTextLines(args.vg);
drawTextLine(args.vg, 0, "V/Oct");
@ -797,6 +802,7 @@ struct HostMIDIWidget : ModuleWidgetWith9HP {
drawTextLine(args.vg, 6, "Start");
drawTextLine(args.vg, 7, "Stop");
drawTextLine(args.vg, 8, "Cont");
drawTextLine(args.vg, 9, "Retrigger");
ModuleWidgetWith9HP::draw(args);
}