Files
haiku-beta6/headers/os/midi/MidiPort.h
T

96 lines
2.1 KiB
C++
Raw Normal View History

2002-10-26 18:51:58 +00:00
#ifndef _MIDI_PORT_H
#define _MIDI_PORT_H
#include <Midi.h>
class BMidiLocalProducer;
class BMidiPortConsumer;
2002-11-01 16:11:03 +00:00
class BMidiPort : public BMidi
{
2002-10-26 18:51:58 +00:00
public:
2002-11-01 16:11:03 +00:00
BMidiPort(const char* name = NULL);
~BMidiPort();
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
status_t InitCheck() const;
status_t Open(const char* name);
void Close();
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
const char* PortName() const;
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void NoteOff(
uchar channel, uchar note, uchar velocity, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void NoteOn(
uchar channel, uchar note, uchar velocity, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void KeyPressure(
uchar channel, uchar note, uchar pressure, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void ControlChange(
uchar channel, uchar controlNumber, uchar controlValue,
uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void ProgramChange(
uchar channel, uchar programNumber, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void ChannelPressure(
uchar channel, uchar pressure, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void PitchBend(
uchar channel, uchar lsb, uchar msb, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void SystemExclusive(
void* data, size_t dataLength, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void SystemCommon(
uchar status, uchar data0, uchar data2, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void SystemRealTime(uchar status, uint32 time = B_NOW);
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual status_t Start();
virtual void Stop();
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
int32 CountDevices();
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
status_t GetDeviceName(
int32 n, char* name, size_t bufSize = B_OS_NAME_LENGTH);
2002-10-26 18:51:58 +00:00
private:
2002-11-01 16:11:03 +00:00
typedef BMidi _inherited;
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void _ReservedMidiPort1();
virtual void _ReservedMidiPort2();
virtual void _ReservedMidiPort3();
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
virtual void Run();
friend class BMidiPortConsumer;
2002-10-26 18:51:58 +00:00
2002-11-16 16:38:59 +00:00
//Can I do that?
// void Dispatch(
// const unsigned char* buffer, size_t size, bigtime_t when);
2002-10-26 18:51:58 +00:00
2002-11-16 16:38:59 +00:00
// ssize_t Read(void* buffer, size_t numBytes) const;
// ssize_t Write(void* buffer, size_t numBytes, uint32 time) const;
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
void ScanDevices();
// used to glue us to the new midi kit
BMidiProducer* remote_source;
BMidiConsumer* remote_sink;
BMidiLocalProducer* local_source;
BMidiPortConsumer* local_sink;
2002-10-26 18:51:58 +00:00
2002-11-01 16:11:03 +00:00
char* fName;
status_t fCStatus;
BList* _fDevices;
2002-11-16 16:38:59 +00:00
// uint8 _m_prev_cmd;
// bool _m_enhanced;
// uint8 _m_reserved[2];
uint8 _reserved[4];
2002-10-26 18:51:58 +00:00
};
2002-11-01 16:11:03 +00:00
#endif // _MIDI_PORT_H
2002-10-26 18:51:58 +00:00