From d4f99f88ae6b7f17df7152252397ba366c970fb2 Mon Sep 17 00:00:00 2001 From: jnonis Date: Thu, 18 Jul 2024 04:31:42 +0000 Subject: [PATCH] Almost working Arp --- src/midi_arp.cpp | 5 ++-- src/modarpeggiator/common/midiHandler.cpp | 30 +++++++---------------- src/modarpeggiator/common/midiHandler.hpp | 6 ++--- 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/src/midi_arp.cpp b/src/midi_arp.cpp index 82bcc2b..6b69630 100644 --- a/src/midi_arp.cpp +++ b/src/midi_arp.cpp @@ -11,7 +11,7 @@ MidiArp::MidiArp(float32_t samplerate, CDexedAdapter* synth) arpeggiator.setSampleRate(samplerate); arpeggiator.setDivision(7); - arpeggiator.getMidiBuffer(); + arpeggiator.setBpm(120); } MidiArp::~MidiArp() @@ -45,6 +45,7 @@ void MidiArp::process(uint16_t len) arpeggiator.emptyMidiBuffer(); // Check if host supports Bar-Beat-Tick position + arpeggiator.setSyncMode(0); /* const TimePosition& position = getTimePosition(); if (!position.bbt.valid) { @@ -60,7 +61,6 @@ void MidiArp::process(uint16_t len) events.clear(); events.shrink_to_fit(); - /* printf("Before Send Midi\n"); fflush(NULL); struct MidiBuffer buffer = arpeggiator.getMidiBuffer(); @@ -97,5 +97,4 @@ void MidiArp::process(uint16_t len) } printf("After Send Midi\n"); fflush(NULL); - */ } \ No newline at end of file diff --git a/src/modarpeggiator/common/midiHandler.cpp b/src/modarpeggiator/common/midiHandler.cpp index 7f4100d..4d9589d 100644 --- a/src/modarpeggiator/common/midiHandler.cpp +++ b/src/modarpeggiator/common/midiHandler.cpp @@ -4,33 +4,21 @@ MidiHandler::MidiHandler() { printf("MidiHandler constructor\n"); - printf("MidiEvent size: %d\n", sizeof(MidiEvent)); fflush(NULL); - /* - memset(buffer.bufferedEvents, 0, MIDI_BUFFER_SIZE * sizeof(MidiEvent)); - memset(buffer.bufferedMidiThroughEvents, 0, MIDI_BUFFER_SIZE * sizeof(MidiEvent)); - memset(buffer.midiOutputBuffer, 0, MIDI_BUFFER_SIZE * sizeof(MidiEvent)); - */ - for (unsigned i = 0; i < MIDI_BUFFER_SIZE; i++) { - printf("i: %d\n", i); - fflush(NULL); - for (unsigned x = 0; x < buffer.bufferedEvents[i].kDataSize; i++) { - printf("x: %d\n", x); - fflush(NULL); - /* - buffer.bufferedEvents[i].data[x] = 0; - buffer.bufferedMidiThroughEvents[i].data[x] = 0; - buffer.midiOutputBuffer[i].data[x] = 0; - */ - } - } + buffer.bufferedEvents = new MidiEvent[MIDI_BUFFER_SIZE]; + buffer.bufferedMidiThroughEvents = new MidiEvent[MIDI_BUFFER_SIZE]; + buffer.midiOutputBuffer = new MidiEvent[MIDI_BUFFER_SIZE]; + emptyMidiBuffer(); - //printf("buffer.bufferedEvents: %d\n", buffer.bufferedEvents[0].data); - //fflush(NULL); + printf("MidiHandler constructor finished\n"); + fflush(NULL); } MidiHandler::~MidiHandler() { + delete buffer.bufferedEvents; + delete buffer.bufferedMidiThroughEvents; + delete buffer.midiOutputBuffer; } void MidiHandler::emptyMidiBuffer() diff --git a/src/modarpeggiator/common/midiHandler.hpp b/src/modarpeggiator/common/midiHandler.hpp index 098f571..cb854fc 100644 --- a/src/modarpeggiator/common/midiHandler.hpp +++ b/src/modarpeggiator/common/midiHandler.hpp @@ -31,13 +31,13 @@ struct MidiBuffer { unsigned maxBufferSize = MIDI_BUFFER_SIZE; - MidiEvent bufferedEvents[MIDI_BUFFER_SIZE]; + MidiEvent* bufferedEvents; unsigned numBufferedEvents; - MidiEvent bufferedMidiThroughEvents[MIDI_BUFFER_SIZE]; + MidiEvent* bufferedMidiThroughEvents; unsigned numBufferedThroughEvents; - MidiEvent midiOutputBuffer[MIDI_BUFFER_SIZE]; + MidiEvent* midiOutputBuffer; unsigned numOutputEvents; };