From 354b5d38ae561e5e5b6e09008ee90bbd072809d3 Mon Sep 17 00:00:00 2001 From: jules Date: Fri, 27 Sep 2013 19:43:43 +0100 Subject: [PATCH] Added method MidiMessage::keySignatureMetaEvent --- .../juce_audio_basics/midi/juce_MidiMessage.cpp | 15 ++++++++++----- modules/juce_audio_basics/midi/juce_MidiMessage.h | 8 ++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/modules/juce_audio_basics/midi/juce_MidiMessage.cpp b/modules/juce_audio_basics/midi/juce_MidiMessage.cpp index 5657a4436e..84f6efda75 100644 --- a/modules/juce_audio_basics/midi/juce_MidiMessage.cpp +++ b/modules/juce_audio_basics/midi/juce_MidiMessage.cpp @@ -777,22 +777,19 @@ MidiMessage MidiMessage::timeSignatureMetaEvent (const int numerator, const int ++powerOfTwo; } - const uint8 d[] = { 0xff, 0x58, 0x04, (uint8) numerator, - (uint8) powerOfTwo, 1, 96 }; - + const uint8 d[] = { 0xff, 0x58, 0x04, (uint8) numerator, (uint8) powerOfTwo, 1, 96 }; return MidiMessage (d, 7, 0.0); } MidiMessage MidiMessage::midiChannelMetaEvent (const int channel) noexcept { const uint8 d[] = { 0xff, 0x20, 0x01, (uint8) jlimit (0, 0xff, channel - 1) }; - return MidiMessage (d, 4, 0.0); } bool MidiMessage::isKeySignatureMetaEvent() const noexcept { - return getMetaEventType() == 89; + return getMetaEventType() == 0x59; } int MidiMessage::getKeySignatureNumberOfSharpsOrFlats() const noexcept @@ -805,6 +802,14 @@ bool MidiMessage::isKeySignatureMajorKey() const noexcept return getMetaEventData()[1] == 0; } +MidiMessage MidiMessage::keySignatureMetaEvent (int numberOfSharpsOrFlats, bool isMinorKey) +{ + jassert (numberOfSharpsOrFlats >= -7 && numberOfSharpsOrFlats <= 7); + + const uint8 d[] = { 0xff, 0x59, 0x02, (uint8) numberOfSharpsOrFlats, isMinorKey ? (uint8) 1 : (uint8) 0 }; + return MidiMessage (d, 5, 0.0); +} + MidiMessage MidiMessage::endOfTrack() noexcept { return MidiMessage (0xff, 0x2f, 0, 0.0); diff --git a/modules/juce_audio_basics/midi/juce_MidiMessage.h b/modules/juce_audio_basics/midi/juce_MidiMessage.h index 6582a9cbd7..a86bb5a282 100644 --- a/modules/juce_audio_basics/midi/juce_MidiMessage.h +++ b/modules/juce_audio_basics/midi/juce_MidiMessage.h @@ -622,6 +622,14 @@ public: */ bool isKeySignatureMajorKey() const noexcept; + /** Creates a key-signature meta-event. + @param numberOfSharpsOrFlats if positive, this indicates the number of sharps + in the key; if negative, the number of flats + @param isMinorKey if true, the key is minor; if false, it is major + @see isKeySignatureMetaEvent + */ + static MidiMessage keySignatureMetaEvent (int numberOfSharpsOrFlats, bool isMinorKey); + //============================================================================== /** Returns true if this is a 'channel' meta-event.