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