1218885Sdim/*
2218885Sdim * Copyright 2006, Haiku.
3353358Sdim *
4353358Sdim * Copyright (c) 2003 Matthijs Hollemans
5353358Sdim * Copyright (c) 2002 Jerome Leveque
6218885Sdim * Distributed under the terms of the MIT License.
7218885Sdim *
8218885Sdim * Authors:
9218885Sdim *		Matthijs Hollemans
10218885Sdim *		J��r��me Leveque
11218885Sdim */
12218885Sdim
13249423Sdim#include <Midi.h>
14249423Sdim#include "MidiGlue.h"
15218885Sdim#include <MidiPort.h>
16251662Sdim
17327952Sdimusing namespace BPrivate;
18327952Sdim
19341825Sdim
20280031SdimBMidiGlue::BMidiGlue(BMidi* midiObject_, const char* name)
21276479Sdim	: BMidiLocalConsumer(name)
22218885Sdim{
23218885Sdim	fMidiObject = midiObject_;
24218885Sdim}
25218885Sdim
26261991Sdim
27261991Sdimvoid
28261991SdimBMidiGlue::NoteOff(
29261991Sdim	uchar channel, uchar note, uchar velocity, bigtime_t time)
30341825Sdim{
31261991Sdim	fMidiObject->NoteOff(channel + 1, note, velocity, MAKE_TIME(time));
32261991Sdim}
33218885Sdim
34341825Sdim
35341825Sdimvoid
36341825SdimBMidiGlue::NoteOn(
37261991Sdim	uchar channel, uchar note, uchar velocity, bigtime_t time)
38341825Sdim{
39341825Sdim	fMidiObject->NoteOn(channel + 1, note, velocity, MAKE_TIME(time));
40261991Sdim}
41218885Sdim
42341825Sdim
43341825Sdimvoid
44341825SdimBMidiGlue::KeyPressure(
45309124Sdim	uchar channel, uchar note, uchar pressure, bigtime_t time)
46341825Sdim{
47341825Sdim	fMidiObject->KeyPressure(channel + 1, note, pressure, MAKE_TIME(time));
48218885Sdim}
49341825Sdim
50341825Sdim
51218885Sdimvoid
52341825SdimBMidiGlue::ControlChange(
53341825Sdim	uchar channel, uchar controlNumber, uchar controlValue, bigtime_t time)
54218885Sdim{
55341825Sdim	fMidiObject->ControlChange(
56276479Sdim		channel + 1, controlNumber, controlValue, MAKE_TIME(time));
57280031Sdim}
58276479Sdim
59276479Sdim
60276479Sdimvoid
61280031SdimBMidiGlue::ProgramChange(
62280031Sdim	uchar channel, uchar programNumber, bigtime_t time)
63280031Sdim{
64280031Sdim	fMidiObject->ProgramChange(channel + 1, programNumber, MAKE_TIME(time));
65280031Sdim}
66280031Sdim
67280031Sdim
68280031Sdimvoid
69327952SdimBMidiGlue::ChannelPressure(
70261991Sdim	uchar channel, uchar pressure, bigtime_t time)
71276479Sdim{
72276479Sdim	fMidiObject->ChannelPressure(channel + 1, pressure, MAKE_TIME(time));
73261991Sdim}
74276479Sdim
75276479Sdim
76261991Sdimvoid
77261991SdimBMidiGlue::PitchBend(
78261991Sdim	uchar channel, uchar lsb, uchar msb, bigtime_t time)
79261991Sdim{
80261991Sdim	fMidiObject->PitchBend(channel + 1, lsb, msb, MAKE_TIME(time));
81276479Sdim}
82276479Sdim
83276479Sdim
84327952Sdimvoid
85261991SdimBMidiGlue::SystemExclusive(
86261991Sdim	void* data, size_t length, bigtime_t time)
87261991Sdim{
88261991Sdim	fMidiObject->SystemExclusive(data, length, MAKE_TIME(time));
89261991Sdim}
90309124Sdim
91341825Sdim
92218885Sdimvoid
93341825SdimBMidiGlue::SystemCommon(
94341825Sdim	uchar status, uchar data1, uchar data2, bigtime_t time)
95341825Sdim{
96341825Sdim	fMidiObject->SystemCommon(status, data1, data2, MAKE_TIME(time));
97341825Sdim}
98327952Sdim
99327952Sdim
100327952Sdimvoid
101327952SdimBMidiGlue::SystemRealTime(uchar status, bigtime_t time)
102327952Sdim{
103327952Sdim	fMidiObject->SystemRealTime(status, MAKE_TIME(time));
104327952Sdim}
105327952Sdim
106327952Sdim
107261991Sdimvoid
108261991SdimBMidiGlue::TempoChange(int32 beatsPerMinute, bigtime_t time)
109261991Sdim{
110261991Sdim	fMidiObject->TempoChange(beatsPerMinute, MAKE_TIME(time));
111327952Sdim}
112218885Sdim
113218885Sdim
114218885SdimBMidiPortGlue::BMidiPortGlue(BMidiPort* midiObject_, const char* name)
115276479Sdim	: BMidiLocalConsumer(name)
116276479Sdim{
117276479Sdim	fMidiObject = midiObject_;
118218885Sdim}
119276479Sdim
120218885Sdim
121261991Sdimvoid
122261991SdimBMidiPortGlue::NoteOff(
123327952Sdim	uchar channel, uchar note, uchar velocity, bigtime_t time)
124327952Sdim{
125327952Sdim	fMidiObject->SprayNoteOff(channel + 1, note, velocity, MAKE_TIME(time));
126341825Sdim}
127341825Sdim
128327952Sdim
129327952Sdimvoid
130327952SdimBMidiPortGlue::NoteOn(
131327952Sdim	uchar channel, uchar note, uchar velocity, bigtime_t time)
132261991Sdim{
133261991Sdim	fMidiObject->SprayNoteOn(channel + 1, note, velocity, MAKE_TIME(time));
134261991Sdim}
135327952Sdim
136341825Sdim
137341825Sdimvoid
138341825SdimBMidiPortGlue::KeyPressure(
139341825Sdim	uchar channel, uchar note, uchar pressure, bigtime_t time)
140341825Sdim{
141327952Sdim	fMidiObject->SprayKeyPressure(
142261991Sdim		channel + 1, note, pressure, MAKE_TIME(time));
143280031Sdim}
144280031Sdim
145280031Sdim
146280031Sdimvoid
147280031SdimBMidiPortGlue::ControlChange(
148280031Sdim	uchar channel, uchar controlNumber, uchar controlValue, bigtime_t time)
149280031Sdim{
150280031Sdim	fMidiObject->SprayControlChange(
151280031Sdim		channel + 1, controlNumber, controlValue, MAKE_TIME(time));
152280031Sdim}
153280031Sdim
154280031Sdim
155280031Sdimvoid
156280031SdimBMidiPortGlue::ProgramChange(
157280031Sdim	uchar channel, uchar programNumber, bigtime_t time)
158280031Sdim{
159280031Sdim	fMidiObject->SprayProgramChange(
160280031Sdim		channel + 1, programNumber, MAKE_TIME(time));
161280031Sdim}
162280031Sdim
163280031Sdim
164280031Sdimvoid
165280031SdimBMidiPortGlue::ChannelPressure(
166280031Sdim	uchar channel, uchar pressure, bigtime_t time)
167280031Sdim{
168280031Sdim	fMidiObject->SprayChannelPressure(channel + 1, pressure, MAKE_TIME(time));
169280031Sdim}
170280031Sdim
171280031Sdim
172280031Sdimvoid
173280031SdimBMidiPortGlue::PitchBend(
174280031Sdim	uchar channel, uchar lsb, uchar msb, bigtime_t time)
175280031Sdim{
176280031Sdim	fMidiObject->SprayPitchBend(channel + 1, lsb, msb, MAKE_TIME(time));
177261991Sdim}
178261991Sdim
179261991Sdim
180261991Sdimvoid
181261991SdimBMidiPortGlue::SystemExclusive(
182261991Sdim	void* data, size_t length, bigtime_t time)
183261991Sdim{
184261991Sdim	fMidiObject->SpraySystemExclusive(data, length, MAKE_TIME(time));
185261991Sdim}
186261991Sdim
187261991Sdim
188261991Sdimvoid
189261991SdimBMidiPortGlue::SystemCommon(
190261991Sdim	uchar status, uchar data1, uchar data2, bigtime_t time)
191261991Sdim{
192276479Sdim	fMidiObject->SpraySystemCommon(status, data1, data2, MAKE_TIME(time));
193276479Sdim}
194276479Sdim
195261991Sdim
196218885Sdimvoid
197341825SdimBMidiPortGlue::SystemRealTime(uchar status, bigtime_t time)
198341825Sdim{
199341825Sdim	fMidiObject->SpraySystemRealTime(status, MAKE_TIME(time));
200341825Sdim}
201341825Sdim
202341825Sdim
203341825Sdimvoid
204341825SdimBMidiPortGlue::TempoChange(int32 beatsPerMinute, bigtime_t time)
205261991Sdim{
206218885Sdim	fMidiObject->SprayTempoChange(beatsPerMinute, MAKE_TIME(time));
207218885Sdim}
208218885Sdim
209