xref: /haiku/src/kits/midi2/MidiLocalConsumer.cpp (revision abe999d807308487134efaf8e343adaa1295bc85)
1*abe999d8Smahlzeit /*
2*abe999d8Smahlzeit  * Copyright (c) 2002-2003 Matthijs Hollemans
3a4e33e10Smahlzeit  */
46ac523eaSmahlzeit 
56ac523eaSmahlzeit #include "debug.h"
66ac523eaSmahlzeit #include "MidiConsumer.h"
753284a9fSmahlzeit #include "MidiRoster.h"
853284a9fSmahlzeit #include "protocol.h"
96ac523eaSmahlzeit 
106ac523eaSmahlzeit //------------------------------------------------------------------------------
116ac523eaSmahlzeit 
126ac523eaSmahlzeit BMidiLocalConsumer::BMidiLocalConsumer(const char* name)
1396462df1Sjerl1 	: BMidiConsumer(name)
146ac523eaSmahlzeit {
1553284a9fSmahlzeit 	TRACE(("BMidiLocalConsumer::BMidiLocalConsumer"))
1653284a9fSmahlzeit 
1753284a9fSmahlzeit 	isLocal = true;
1853284a9fSmahlzeit 	refCount = 1;
1953284a9fSmahlzeit 
2053284a9fSmahlzeit 	BMidiRoster::MidiRoster()->CreateLocal(this);
216ac523eaSmahlzeit }
226ac523eaSmahlzeit 
236ac523eaSmahlzeit //------------------------------------------------------------------------------
246ac523eaSmahlzeit 
256ac523eaSmahlzeit BMidiLocalConsumer::~BMidiLocalConsumer()
266ac523eaSmahlzeit {
2753284a9fSmahlzeit 	TRACE(("BMidiLocalConsumer::~BMidiLocalConsumer"))
2853284a9fSmahlzeit 
2953284a9fSmahlzeit 	BMidiRoster::MidiRoster()->DeleteLocal(this);
306ac523eaSmahlzeit }
316ac523eaSmahlzeit 
326ac523eaSmahlzeit //------------------------------------------------------------------------------
336ac523eaSmahlzeit 
3453284a9fSmahlzeit void BMidiLocalConsumer::SetLatency(bigtime_t latency_)
356ac523eaSmahlzeit {
3653284a9fSmahlzeit 	if (latency_ < 0)
3753284a9fSmahlzeit 	{
3853284a9fSmahlzeit 		WARN("SetLatency() does not accept negative values");
3953284a9fSmahlzeit 		return;
4053284a9fSmahlzeit 	}
4153284a9fSmahlzeit 	else if (!IsValid())
4253284a9fSmahlzeit 	{
4353284a9fSmahlzeit 		return;
4453284a9fSmahlzeit 	}
4553284a9fSmahlzeit 	else if (latency != latency_)
4653284a9fSmahlzeit 	{
4753284a9fSmahlzeit 		BMessage msg;
4853284a9fSmahlzeit 		msg.AddInt64("midi:latency", latency_);
4953284a9fSmahlzeit 
5053284a9fSmahlzeit 		if (SendChangeRequest(&msg) == B_OK)
5153284a9fSmahlzeit 		{
5253284a9fSmahlzeit 			if (LockLooper())
5353284a9fSmahlzeit 			{
5453284a9fSmahlzeit 				latency = latency_;
5553284a9fSmahlzeit 				UnlockLooper();
5653284a9fSmahlzeit 			}
5753284a9fSmahlzeit 		}
5853284a9fSmahlzeit 	}
596ac523eaSmahlzeit }
606ac523eaSmahlzeit 
616ac523eaSmahlzeit //------------------------------------------------------------------------------
626ac523eaSmahlzeit 
636ac523eaSmahlzeit int32 BMidiLocalConsumer::GetProducerID(void)
646ac523eaSmahlzeit {
6553284a9fSmahlzeit 	UNIMPLEMENTED
6653284a9fSmahlzeit 	return 0;
676ac523eaSmahlzeit }
686ac523eaSmahlzeit 
696ac523eaSmahlzeit //------------------------------------------------------------------------------
706ac523eaSmahlzeit 
716ac523eaSmahlzeit void BMidiLocalConsumer::SetTimeout(bigtime_t when, void* data)
726ac523eaSmahlzeit {
7353284a9fSmahlzeit 	UNIMPLEMENTED
746ac523eaSmahlzeit }
756ac523eaSmahlzeit 
766ac523eaSmahlzeit //------------------------------------------------------------------------------
776ac523eaSmahlzeit 
786ac523eaSmahlzeit void BMidiLocalConsumer::Timeout(void* data)
796ac523eaSmahlzeit {
806ac523eaSmahlzeit 	UNIMPLEMENTED
816ac523eaSmahlzeit }
826ac523eaSmahlzeit 
836ac523eaSmahlzeit //------------------------------------------------------------------------------
846ac523eaSmahlzeit 
856ac523eaSmahlzeit void BMidiLocalConsumer::Data(
866ac523eaSmahlzeit 	uchar* data, size_t length, bool atomic, bigtime_t time)
876ac523eaSmahlzeit {
886ac523eaSmahlzeit 	UNIMPLEMENTED
896ac523eaSmahlzeit }
906ac523eaSmahlzeit 
916ac523eaSmahlzeit //------------------------------------------------------------------------------
926ac523eaSmahlzeit 
936ac523eaSmahlzeit void BMidiLocalConsumer::NoteOff(
946ac523eaSmahlzeit 	uchar channel, uchar note, uchar velocity, bigtime_t time)
956ac523eaSmahlzeit {
966ac523eaSmahlzeit 	UNIMPLEMENTED
976ac523eaSmahlzeit }
986ac523eaSmahlzeit 
996ac523eaSmahlzeit //------------------------------------------------------------------------------
1006ac523eaSmahlzeit 
1016ac523eaSmahlzeit void BMidiLocalConsumer::NoteOn(
1026ac523eaSmahlzeit 	uchar channel, uchar note, uchar velocity, bigtime_t time)
1036ac523eaSmahlzeit {
1046ac523eaSmahlzeit 	UNIMPLEMENTED
1056ac523eaSmahlzeit }
1066ac523eaSmahlzeit 
1076ac523eaSmahlzeit //------------------------------------------------------------------------------
1086ac523eaSmahlzeit 
1096ac523eaSmahlzeit void BMidiLocalConsumer::KeyPressure(
1106ac523eaSmahlzeit 	uchar channel, uchar note, uchar pressure, bigtime_t time)
1116ac523eaSmahlzeit {
1126ac523eaSmahlzeit 	UNIMPLEMENTED
1136ac523eaSmahlzeit }
1146ac523eaSmahlzeit 
1156ac523eaSmahlzeit //------------------------------------------------------------------------------
1166ac523eaSmahlzeit 
1176ac523eaSmahlzeit void BMidiLocalConsumer::ControlChange(
1186ac523eaSmahlzeit 	uchar channel, uchar controlNumber, uchar controlValue, bigtime_t time)
1196ac523eaSmahlzeit {
1206ac523eaSmahlzeit 	UNIMPLEMENTED
1216ac523eaSmahlzeit }
1226ac523eaSmahlzeit 
1236ac523eaSmahlzeit //------------------------------------------------------------------------------
1246ac523eaSmahlzeit 
1256ac523eaSmahlzeit void BMidiLocalConsumer::ProgramChange(
1266ac523eaSmahlzeit 	uchar channel, uchar programNumber, bigtime_t time)
1276ac523eaSmahlzeit {
1286ac523eaSmahlzeit 	UNIMPLEMENTED
1296ac523eaSmahlzeit }
1306ac523eaSmahlzeit 
1316ac523eaSmahlzeit //------------------------------------------------------------------------------
1326ac523eaSmahlzeit 
1336ac523eaSmahlzeit void BMidiLocalConsumer::ChannelPressure(
1346ac523eaSmahlzeit 	uchar channel, uchar pressure, bigtime_t time)
1356ac523eaSmahlzeit {
1366ac523eaSmahlzeit 	UNIMPLEMENTED
1376ac523eaSmahlzeit }
1386ac523eaSmahlzeit 
1396ac523eaSmahlzeit //------------------------------------------------------------------------------
1406ac523eaSmahlzeit 
1416ac523eaSmahlzeit void BMidiLocalConsumer::PitchBend(
1426ac523eaSmahlzeit 	uchar channel, uchar lsb, uchar msb, bigtime_t time)
1436ac523eaSmahlzeit {
1446ac523eaSmahlzeit 	UNIMPLEMENTED
1456ac523eaSmahlzeit }
1466ac523eaSmahlzeit 
1476ac523eaSmahlzeit //------------------------------------------------------------------------------
1486ac523eaSmahlzeit 
1496ac523eaSmahlzeit void BMidiLocalConsumer::SystemExclusive(
1506ac523eaSmahlzeit 	void* data, size_t dataLength, bigtime_t time)
1516ac523eaSmahlzeit {
1526ac523eaSmahlzeit 	UNIMPLEMENTED
1536ac523eaSmahlzeit }
1546ac523eaSmahlzeit 
1556ac523eaSmahlzeit //------------------------------------------------------------------------------
1566ac523eaSmahlzeit 
1576ac523eaSmahlzeit void BMidiLocalConsumer::SystemCommon(
1586ac523eaSmahlzeit 	uchar statusByte, uchar data1, uchar data2, bigtime_t time)
1596ac523eaSmahlzeit {
1606ac523eaSmahlzeit 	UNIMPLEMENTED
1616ac523eaSmahlzeit }
1626ac523eaSmahlzeit 
1636ac523eaSmahlzeit //------------------------------------------------------------------------------
1646ac523eaSmahlzeit 
1656ac523eaSmahlzeit void BMidiLocalConsumer::SystemRealTime(uchar statusByte, bigtime_t time)
1666ac523eaSmahlzeit {
1676ac523eaSmahlzeit 	UNIMPLEMENTED
1686ac523eaSmahlzeit }
1696ac523eaSmahlzeit 
1706ac523eaSmahlzeit //------------------------------------------------------------------------------
1716ac523eaSmahlzeit 
1726ac523eaSmahlzeit void BMidiLocalConsumer::TempoChange(int32 bpm, bigtime_t time)
1736ac523eaSmahlzeit {
1746ac523eaSmahlzeit 	UNIMPLEMENTED
1756ac523eaSmahlzeit }
1766ac523eaSmahlzeit 
1776ac523eaSmahlzeit //------------------------------------------------------------------------------
1786ac523eaSmahlzeit 
1796ac523eaSmahlzeit void BMidiLocalConsumer::AllNotesOff(bool justChannel, bigtime_t time)
1806ac523eaSmahlzeit {
1816ac523eaSmahlzeit 	UNIMPLEMENTED
1826ac523eaSmahlzeit }
1836ac523eaSmahlzeit 
1846ac523eaSmahlzeit //------------------------------------------------------------------------------
1856ac523eaSmahlzeit 
1866ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved1() { }
1876ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved2() { }
1886ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved3() { }
1896ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved4() { }
1906ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved5() { }
1916ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved6() { }
1926ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved7() { }
1936ac523eaSmahlzeit void BMidiLocalConsumer::_Reserved8() { }
1946ac523eaSmahlzeit 
1956ac523eaSmahlzeit //------------------------------------------------------------------------------
196