mirror of https://github.com/probonopd/MiniDexed
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.7 KiB
66 lines
1.7 KiB
10 months ago
|
#include "midiHandler.hpp"
|
||
|
#include <stdio.h>
|
||
|
|
||
|
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;
|
||
|
*/
|
||
|
}
|
||
|
}
|
||
|
emptyMidiBuffer();
|
||
|
//printf("buffer.bufferedEvents: %d\n", buffer.bufferedEvents[0].data);
|
||
|
//fflush(NULL);
|
||
|
}
|
||
|
|
||
|
MidiHandler::~MidiHandler()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void MidiHandler::emptyMidiBuffer()
|
||
|
{
|
||
|
buffer.numBufferedEvents = 0;
|
||
|
buffer.numBufferedThroughEvents = 0;
|
||
|
}
|
||
|
|
||
|
void MidiHandler::appendMidiMessage(MidiEvent event)
|
||
|
{
|
||
|
buffer.bufferedEvents[buffer.numBufferedEvents] = event;
|
||
|
buffer.numBufferedEvents = (buffer.numBufferedEvents + 1) % buffer.maxBufferSize;
|
||
|
}
|
||
|
|
||
|
void MidiHandler::appendMidiThroughMessage(MidiEvent event)
|
||
|
{
|
||
|
buffer.bufferedMidiThroughEvents[buffer.numBufferedThroughEvents] = event;
|
||
|
buffer.numBufferedThroughEvents = (buffer.numBufferedThroughEvents + 1) % buffer.maxBufferSize;
|
||
|
}
|
||
|
|
||
|
void MidiHandler::mergeBuffers()
|
||
|
{
|
||
|
for (unsigned e = 0; e < buffer.numBufferedThroughEvents; e++) {
|
||
|
buffer.bufferedEvents[e + buffer.numBufferedEvents] = buffer.bufferedMidiThroughEvents[e];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
struct MidiBuffer MidiHandler::getMidiBuffer()
|
||
|
{
|
||
|
mergeBuffers();
|
||
|
return buffer;
|
||
|
}
|