Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion global.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,11 @@
// JACK includes
#include <jack/types.h>
#include <jack/transport.h>
#include <jack/midiport.h>

namespace QtJack {
typedef jack_default_audio_sample_t AudioSample;
typedef char MidiSample;
typedef jack_midi_event_t MidiEvent;

enum TransportState {
TransportStateStopped,
Expand Down
23 changes: 20 additions & 3 deletions midibuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ MidiBuffer::MidiBuffer(int size, void *buffer)
MidiBuffer::~MidiBuffer() {
}

#if 0
bool MidiBuffer::clear() {
if(!isValid()) {
return false;
Expand All @@ -50,21 +51,31 @@ bool MidiBuffer::clear() {
}
return true;
}
#endif

MidiSample MidiBuffer::read(int i, bool *ok) const {
bool MidiBuffer::read(MidiEvent *ms, int i, bool *ok) const {
if(!isValid()) {
if(ok) {
(*ok) = false;
}
return 0.0;
return false;
}

if(ok) {
(*ok) = true;
}
return (double)((i >= 0 && i < _size) ? ((MidiSample*)(_jackBuffer))[i] : 0.0);

#if 0
if(i < 0 || i >= this->getEventCount()) {
return false;
}
#endif

return (jack_midi_event_get(ms, _jackBuffer, i) ? false : true);
}

#if 0

bool MidiBuffer::write(int i, MidiSample value) {
if(!isValid()) {
return false;
Expand Down Expand Up @@ -104,4 +115,10 @@ bool MidiBuffer::pop(MidiRingBuffer &ringBuffer) {
return false;
}

#endif

unsigned int MidiBuffer::getEventCount() {
return (unsigned int)jack_midi_get_event_count(_jackBuffer);
}

} // namespace QtJack
11 changes: 10 additions & 1 deletion midibuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,15 @@ class MidiBuffer : public Buffer {
MidiBuffer(const MidiBuffer& other);
virtual ~MidiBuffer();

#if 0
/** Sets all samples to zero. */
bool clear() REALTIME_SAFE;
#endif

/** @returns sample at position i in the midi buffer. */
MidiSample read(int i, bool *ok = 0) const REALTIME_SAFE;
bool read(MidiEvent *ms, int i, bool *ok = 0) const REALTIME_SAFE;

#if 0
/** Writes sample at position i in the midi buffer. */
bool write(int i, MidiSample value) REALTIME_SAFE;

Expand All @@ -67,6 +70,12 @@ class MidiBuffer : public Buffer {
* @returns true on succes, false otherwise.
*/
bool pop(MidiRingBuffer& ringBuffer) REALTIME_SAFE;
#endif

/**
* @returns the number of midi events in the buffer.
*/
unsigned int getEventCount();

protected:
MidiBuffer(int size, void *buffer);
Expand Down
2 changes: 1 addition & 1 deletion ringbuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,6 @@ class RingBuffer {
};

typedef RingBuffer<AudioSample> AudioRingBuffer;
typedef RingBuffer<MidiSample> MidiRingBuffer;
typedef RingBuffer<MidiEvent> MidiRingBuffer;

} // namespace QtJack