* Copyright 2006, Haiku.
*
* Copyright (c) 2003 Matthijs Hollemans
* Copyright (c) 2002 Jerome Leveque
* Distributed under the terms of the MIT License.
*
* Authors:
* Matthijs Hollemans
* JΓ©rΓ΄me Leveque
*/
#ifndef _MIDI_GLUE_H
#define _MIDI_GLUE_H
#include <MidiPort.h>
#include <MidiConsumer.h>
#define MAKE_TIME(t) (t / (bigtime_t)1000)
#define MAKE_BIGTIME(t) (t * (bigtime_t)1000)
namespace BPrivate {
class BMidiGlue: public BMidiLocalConsumer {
public:
BMidiGlue(BMidi* midiObject, const char* name = NULL);
virtual void NoteOff(
uchar channel, uchar note, uchar velocity, bigtime_t time);
virtual void NoteOn(
uchar channel, uchar note, uchar velocity, bigtime_t time);
virtual void KeyPressure(
uchar channel, uchar note, uchar pressure, bigtime_t time);
virtual void ControlChange(
uchar channel, uchar controlNumber, uchar controlValue,
bigtime_t time);
virtual void ProgramChange(
uchar channel, uchar programNumber, bigtime_t time);
virtual void ChannelPressure(
uchar channel, uchar pressure, bigtime_t time);
virtual void PitchBend(
uchar channel, uchar lsb, uchar msb, bigtime_t time);
virtual void SystemExclusive(
void* data, size_t length, bigtime_t time);
virtual void SystemCommon(
uchar status, uchar data1, uchar data2, bigtime_t time);
virtual void SystemRealTime(uchar status, bigtime_t time);
virtual void TempoChange(int32 beatsPerMinute, bigtime_t time);
private:
BMidi* fMidiObject;
};
class BMidiPortGlue: public BMidiLocalConsumer {
public:
BMidiPortGlue(BMidiPort* midiObject, const char* name = NULL);
virtual void NoteOff(
uchar channel, uchar note, uchar velocity, bigtime_t time);
virtual void NoteOn(
uchar channel, uchar note, uchar velocity, bigtime_t time);
virtual void KeyPressure(
uchar channel, uchar note, uchar pressure, bigtime_t time);
virtual void ControlChange(
uchar channel, uchar controlNumber, uchar controlValue,
bigtime_t time);
virtual void ProgramChange(
uchar channel, uchar programNumber, bigtime_t time);
virtual void ChannelPressure(
uchar channel, uchar pressure, bigtime_t time);
virtual void PitchBend(
uchar channel, uchar lsb, uchar msb, bigtime_t time);
virtual void SystemExclusive(
void* data, size_t length, bigtime_t time);
virtual void SystemCommon(
uchar status, uchar data1, uchar data2, bigtime_t time);
virtual void SystemRealTime(uchar status, bigtime_t time);
virtual void TempoChange(int32 beatsPerMinute, bigtime_t time);
private:
BMidiPort* fMidiObject;
};
}
#endif