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