xref: /haiku/src/kits/midi2/MidiLocalConsumer.cpp (revision 53284a9fdba431c73476c6354a9cc999f7a12e9f)
1a4e33e10Smahlzeit /**
2a4e33e10Smahlzeit  * @file MidiLocalConsumer.cpp
3a4e33e10Smahlzeit  *
4*53284a9fSmahlzeit  * Implementation of the BMidiLocalConsumer class.
5*53284a9fSmahlzeit  *
6a4e33e10Smahlzeit  * @author Matthijs Hollemans
7a4e33e10Smahlzeit  */
86ac523eaSmahlzeit 
96ac523eaSmahlzeit #include "debug.h"
106ac523eaSmahlzeit #include "MidiConsumer.h"
11*53284a9fSmahlzeit #include "MidiRoster.h"
12*53284a9fSmahlzeit #include "protocol.h"
136ac523eaSmahlzeit 
146ac523eaSmahlzeit //------------------------------------------------------------------------------
156ac523eaSmahlzeit 
166ac523eaSmahlzeit BMidiLocalConsumer::BMidiLocalConsumer(const char* name)
1796462df1Sjerl1 	: BMidiConsumer(name)
186ac523eaSmahlzeit {
19*53284a9fSmahlzeit 	TRACE(("BMidiLocalConsumer::BMidiLocalConsumer"))
20*53284a9fSmahlzeit 
21*53284a9fSmahlzeit 	isLocal = true;
22*53284a9fSmahlzeit 	refCount = 1;
23*53284a9fSmahlzeit 
24*53284a9fSmahlzeit 	BMidiRoster::MidiRoster()->CreateLocal(this);
256ac523eaSmahlzeit }
266ac523eaSmahlzeit 
276ac523eaSmahlzeit //------------------------------------------------------------------------------
286ac523eaSmahlzeit 
296ac523eaSmahlzeit BMidiLocalConsumer::~BMidiLocalConsumer()
306ac523eaSmahlzeit {
31*53284a9fSmahlzeit 	TRACE(("BMidiLocalConsumer::~BMidiLocalConsumer"))
32*53284a9fSmahlzeit 
33*53284a9fSmahlzeit 	BMidiRoster::MidiRoster()->DeleteLocal(this);
346ac523eaSmahlzeit }
356ac523eaSmahlzeit 
366ac523eaSmahlzeit //------------------------------------------------------------------------------
376ac523eaSmahlzeit 
38*53284a9fSmahlzeit void BMidiLocalConsumer::SetLatency(bigtime_t latency_)
396ac523eaSmahlzeit {
40*53284a9fSmahlzeit 	if (latency_ < 0)
41*53284a9fSmahlzeit 	{
42*53284a9fSmahlzeit 		WARN("SetLatency() does not accept negative values");
43*53284a9fSmahlzeit 		return;
44*53284a9fSmahlzeit 	}
45*53284a9fSmahlzeit 	else if (!IsValid())
46*53284a9fSmahlzeit 	{
47*53284a9fSmahlzeit 		return;
48*53284a9fSmahlzeit 	}
49*53284a9fSmahlzeit 	else if (latency != latency_)
50*53284a9fSmahlzeit 	{
51*53284a9fSmahlzeit 		BMessage msg;
52*53284a9fSmahlzeit 		msg.AddInt64("midi:latency", latency_);
53*53284a9fSmahlzeit 
54*53284a9fSmahlzeit 		if (SendChangeRequest(&msg) == B_OK)
55*53284a9fSmahlzeit 		{
56*53284a9fSmahlzeit 			if (LockLooper())
57*53284a9fSmahlzeit 			{
58*53284a9fSmahlzeit 				latency = latency_;
59*53284a9fSmahlzeit 				UnlockLooper();
60*53284a9fSmahlzeit 			}
61*53284a9fSmahlzeit 		}
62*53284a9fSmahlzeit 	}
636ac523eaSmahlzeit }
646ac523eaSmahlzeit 
656ac523eaSmahlzeit //------------------------------------------------------------------------------
666ac523eaSmahlzeit 
676ac523eaSmahlzeit int32 BMidiLocalConsumer::GetProducerID(void)
686ac523eaSmahlzeit {
69*53284a9fSmahlzeit 	UNIMPLEMENTED
70*53284a9fSmahlzeit 	return 0;
716ac523eaSmahlzeit }
726ac523eaSmahlzeit 
736ac523eaSmahlzeit //------------------------------------------------------------------------------
746ac523eaSmahlzeit 
756ac523eaSmahlzeit void BMidiLocalConsumer::SetTimeout(bigtime_t when, void* data)
766ac523eaSmahlzeit {
77*53284a9fSmahlzeit 	UNIMPLEMENTED
786ac523eaSmahlzeit }
796ac523eaSmahlzeit 
806ac523eaSmahlzeit //------------------------------------------------------------------------------
816ac523eaSmahlzeit 
826ac523eaSmahlzeit void BMidiLocalConsumer::Timeout(void* data)
836ac523eaSmahlzeit {
846ac523eaSmahlzeit 	UNIMPLEMENTED
856ac523eaSmahlzeit }
866ac523eaSmahlzeit 
876ac523eaSmahlzeit //------------------------------------------------------------------------------
886ac523eaSmahlzeit 
896ac523eaSmahlzeit void BMidiLocalConsumer::Data(
906ac523eaSmahlzeit 	uchar* data, size_t length, bool atomic, bigtime_t time)
916ac523eaSmahlzeit {
926ac523eaSmahlzeit 	UNIMPLEMENTED
936ac523eaSmahlzeit }
946ac523eaSmahlzeit 
956ac523eaSmahlzeit //------------------------------------------------------------------------------
966ac523eaSmahlzeit 
976ac523eaSmahlzeit void BMidiLocalConsumer::NoteOff(
986ac523eaSmahlzeit 	uchar channel, uchar note, uchar velocity, bigtime_t time)
996ac523eaSmahlzeit {
1006ac523eaSmahlzeit 	UNIMPLEMENTED
1016ac523eaSmahlzeit }
1026ac523eaSmahlzeit 
1036ac523eaSmahlzeit //------------------------------------------------------------------------------
1046ac523eaSmahlzeit 
1056ac523eaSmahlzeit void BMidiLocalConsumer::NoteOn(
1066ac523eaSmahlzeit 	uchar channel, uchar note, uchar velocity, bigtime_t time)
1076ac523eaSmahlzeit {
1086ac523eaSmahlzeit 	UNIMPLEMENTED
1096ac523eaSmahlzeit }
1106ac523eaSmahlzeit 
1116ac523eaSmahlzeit //------------------------------------------------------------------------------
1126ac523eaSmahlzeit 
1136ac523eaSmahlzeit void BMidiLocalConsumer::KeyPressure(
1146ac523eaSmahlzeit 	uchar channel, uchar note, uchar pressure, bigtime_t time)
1156ac523eaSmahlzeit {
1166ac523eaSmahlzeit 	UNIMPLEMENTED
1176ac523eaSmahlzeit }
1186ac523eaSmahlzeit 
1196ac523eaSmahlzeit //------------------------------------------------------------------------------
1206ac523eaSmahlzeit 
1216ac523eaSmahlzeit void BMidiLocalConsumer::ControlChange(
1226ac523eaSmahlzeit 	uchar channel, uchar controlNumber, uchar controlValue, bigtime_t time)
1236ac523eaSmahlzeit {
1246ac523eaSmahlzeit 	UNIMPLEMENTED
1256ac523eaSmahlzeit }
1266ac523eaSmahlzeit 
1276ac523eaSmahlzeit //------------------------------------------------------------------------------
1286ac523eaSmahlzeit 
1296ac523eaSmahlzeit void BMidiLocalConsumer::ProgramChange(
1306ac523eaSmahlzeit 	uchar channel, uchar programNumber, bigtime_t time)
1316ac523eaSmahlzeit {
1326ac523eaSmahlzeit 	UNIMPLEMENTED
1336ac523eaSmahlzeit }
1346ac523eaSmahlzeit 
1356ac523eaSmahlzeit //------------------------------------------------------------------------------
1366ac523eaSmahlzeit 
1376ac523eaSmahlzeit void BMidiLocalConsumer::ChannelPressure(
1386ac523eaSmahlzeit 	uchar channel, uchar pressure, bigtime_t time)
1396ac523eaSmahlzeit {
1406ac523eaSmahlzeit 	UNIMPLEMENTED
1416ac523eaSmahlzeit }
1426ac523eaSmahlzeit 
1436ac523eaSmahlzeit //------------------------------------------------------------------------------
1446ac523eaSmahlzeit 
1456ac523eaSmahlzeit void BMidiLocalConsumer::PitchBend(
1466ac523eaSmahlzeit 	uchar channel, uchar lsb, uchar msb, bigtime_t time)
1476ac523eaSmahlzeit {
1486ac523eaSmahlzeit 	UNIMPLEMENTED
1496ac523eaSmahlzeit }
1506ac523eaSmahlzeit 
1516ac523eaSmahlzeit //------------------------------------------------------------------------------
1526ac523eaSmahlzeit 
1536ac523eaSmahlzeit void BMidiLocalConsumer::SystemExclusive(
1546ac523eaSmahlzeit 	void* data, size_t dataLength, bigtime_t time)
1556ac523eaSmahlzeit {
1566ac523eaSmahlzeit 	UNIMPLEMENTED
1576ac523eaSmahlzeit }
1586ac523eaSmahlzeit 
1596ac523eaSmahlzeit //------------------------------------------------------------------------------
1606ac523eaSmahlzeit 
1616ac523eaSmahlzeit void BMidiLocalConsumer::SystemCommon(
1626ac523eaSmahlzeit 	uchar statusByte, uchar data1, uchar data2, bigtime_t time)
1636ac523eaSmahlzeit {
1646ac523eaSmahlzeit 	UNIMPLEMENTED
1656ac523eaSmahlzeit }
1666ac523eaSmahlzeit 
1676ac523eaSmahlzeit //------------------------------------------------------------------------------
1686ac523eaSmahlzeit 
1696ac523eaSmahlzeit void BMidiLocalConsumer::SystemRealTime(uchar statusByte, bigtime_t time)
1706ac523eaSmahlzeit {
1716ac523eaSmahlzeit 	UNIMPLEMENTED
1726ac523eaSmahlzeit }
1736ac523eaSmahlzeit 
1746ac523eaSmahlzeit //------------------------------------------------------------------------------
1756ac523eaSmahlzeit 
1766ac523eaSmahlzeit void BMidiLocalConsumer::TempoChange(int32 bpm, bigtime_t time)
1776ac523eaSmahlzeit {
1786ac523eaSmahlzeit 	UNIMPLEMENTED
1796ac523eaSmahlzeit }
1806ac523eaSmahlzeit 
1816ac523eaSmahlzeit //------------------------------------------------------------------------------
1826ac523eaSmahlzeit 
1836ac523eaSmahlzeit void BMidiLocalConsumer::AllNotesOff(bool justChannel, bigtime_t time)
1846ac523eaSmahlzeit {
1856ac523eaSmahlzeit 	UNIMPLEMENTED
1866ac523eaSmahlzeit }
1876ac523eaSmahlzeit 
1886ac523eaSmahlzeit //------------------------------------------------------------------------------
1896ac523eaSmahlzeit 
1906ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved1() { }
1916ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved2() { }
1926ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved3() { }
1936ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved4() { }
1946ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved5() { }
1956ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved6() { }
1966ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved7() { }
1976ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved8() { }
1986ac523eaSmahlzeit 
1996ac523eaSmahlzeit //------------------------------------------------------------------------------
200