From a06c9b684a87186cfa9107b0198b499fb9c46796 Mon Sep 17 00:00:00 2001 From: mahlzeit Date: Mon, 17 Mar 2003 22:28:13 +0000 Subject: [PATCH] implemented Tempo Change event git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2933 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/midi2/MidiLocalConsumer.cpp | 17 ++++++++++++++++- src/kits/midi2/MidiLocalProducer.cpp | 12 +++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/kits/midi2/MidiLocalConsumer.cpp b/src/kits/midi2/MidiLocalConsumer.cpp index 62a4c8a6f0..9d0ce28834 100644 --- a/src/kits/midi2/MidiLocalConsumer.cpp +++ b/src/kits/midi2/MidiLocalConsumer.cpp @@ -243,7 +243,6 @@ void BMidiLocalConsumer::Data( case B_CONTINUE: case B_STOP: case B_ACTIVE_SENSING: - case B_SYSTEM_RESET: { if (length == 1) { @@ -251,6 +250,22 @@ void BMidiLocalConsumer::Data( } break; } + + case B_SYSTEM_RESET: + { + if (length == 1) + { + SystemRealTime(data[0], time); + } + else if ((length == 6) && (data[1] == 0x51) + && (data[2] == 0x03)) + { + int32 tempo = + (data[3] << 16) | (data[4] << 8) | data[5]; + + TempoChange(60000000/tempo, time); + } + } } break; } diff --git a/src/kits/midi2/MidiLocalProducer.cpp b/src/kits/midi2/MidiLocalProducer.cpp index 1d8679e6f0..3612d8d4b7 100644 --- a/src/kits/midi2/MidiLocalProducer.cpp +++ b/src/kits/midi2/MidiLocalProducer.cpp @@ -277,7 +277,17 @@ void BMidiLocalProducer::SpraySystemRealTime( void BMidiLocalProducer::SprayTempoChange( int32 beatsPerMinute, bigtime_t time) const { - // This method does nothing, just like the BeOS R5 Midi Kit. + int32 tempo = 60000000 / beatsPerMinute; + + uchar data[6]; + data[0] = 0xFF; + data[1] = 0x51; + data[2] = 0x03; + data[3] = tempo >> 16; + data[4] = tempo >> 8; + data[5] = tempo; + + SprayEvent(&data, 6, true, time); } //------------------------------------------------------------------------------