49 const float pitchbendRange)
noexcept
52 jassert (std::abs (pitchbend) <= pitchbendRange);
54 return static_cast<uint16> (pitchbend > 0.0f
55 ?
jmap (pitchbend, 0.0f, pitchbendRange, 8192.0f, 16383.0f)
56 :
jmap (pitchbend, -pitchbendRange, 0.0f, 0.0f, 8192.0f));
67 const auto limit =
jmin (maxBytesToUse, 4);
69 for (
int numBytesUsed = 0; numBytesUsed <
limit; ++numBytesUsed)
71 const auto i =
data[numBytesUsed];
72 v = (
v << 7) + (
i & 0x7f);
75 return { (
int)
v, numBytesUsed + 1 };
94 if (++numBytesUsed > 6)
97 v = (
v << 7) + (
i & 0x7f);
107 jassert (firstByte >= 0x80 && firstByte != 0xf0 && firstByte != 0xf7);
109 static const char messageLengths[] =
111 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
112 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
113 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
114 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
115 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
116 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
117 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
118 1, 2, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
121 return messageLengths[firstByte & 0x7f];
191 double t,
bool sysexHasEmbeddedLength)
194 auto src =
static_cast<const uint8*
> (srcData);
195 auto byte = (
unsigned int) *src;
199 byte = (
unsigned int) lastStatusByte;
214 bool haveReadAllLengthBytes = ! sysexHasEmbeddedLength;
215 int numVariableLengthSysexBytes = 0;
227 if (haveReadAllLengthBytes)
230 ++numVariableLengthSysexBytes;
232 else if (! haveReadAllLengthBytes)
234 haveReadAllLengthBytes =
true;
235 ++numVariableLengthSysexBytes;
241 src += numVariableLengthSysexBytes;
245 *dest = (
uint8)
byte;
248 numBytesUsed += (numVariableLengthSysexBytes +
size);
250 else if (
byte == 0xff)
253 size =
jmin (sz + 1, bytesLeft.bytesUsed + 2 + bytesLeft.value);
256 *dest = (
uint8)
byte;
259 numBytesUsed +=
size;
268 packedData.asBytes[1] = (sz > 0 ? src[0] : 0);
271 packedData.asBytes[2] = (sz > 1 ? src[1] : 0);
274 numBytesUsed +=
jmin (
size, sz + 1);
292 : std::malloc ((
size_t) other.
size));
294 if (newStorage ==
nullptr)
295 throw std::bad_alloc{};
318 packedData.allocatedData = other.packedData.allocatedData;
324 packedData.allocatedData = other.packedData.allocatedData;
341 auto d =
static_cast<uint8*
> (std::malloc ((
size_t) bytes));
376 return { *
this, newTimestamp };
383 if ((
data[0] & 0xf0) != 0xf0)
384 return (
data[0] & 0xf) + 1;
391 jassert (channel > 0 && channel <= 16);
395 return ((
data[0] & 0xf) == channel - 1)
396 && ((
data[0] & 0xf0) != 0xf0);
401 jassert (channel > 0 && channel <= 16);
407 | (
uint8)(channel - 1));
414 return ((
data[0] & 0xf0) == 0x90)
415 && (returnTrueForVelocity0 ||
data[2] != 0);
422 return ((
data[0] & 0xf0) == 0x80)
423 || (returnTrueForNoteOnVelocity0 && (
data[2] == 0) && ((
data[0] & 0xf0) == 0x90));
429 return (
d == 0x90) || (
d == 0x80);
484 const int aftertouchValue)
noexcept
486 jassert (channel > 0 && channel <= 16);
492 aftertouchValue & 0x7f);
508 jassert (channel > 0 && channel <= 16);
537 jassert (channel > 0 && channel <= 16);
556 jassert (channel > 0 && channel <= 16);
560 position & 127, (position >> 7) & 127);
571 return (
data[0] & 0xf0) == 0xb0 &&
data[1] == controllerType;
589 jassert (channel > 0 && channel <= 16);
592 controllerType & 127,
value & 127);
597 jassert (channel > 0 && channel <= 16);
611 jassert (channel > 0 && channel <= 16);
625 jassert (channel > 0 && channel <= 16);
639 return (
data[0] & 0xf0) == 0xb0 &&
data[1] == 123;
650 return data[1] == 120 && (
data[0] & 0xf0) == 0xb0;
656 return (
data[0] & 0xf0) == 0xb0 &&
data[1] == 121;
668 return { 0xf0, 0x7f, 0x7f, 0x04, 0x01, vol & 0x7f, vol >> 7, 0xf7 };
682 memcpy (
m + 1, sysexData, (
size_t) dataSize);
683 m[dataSize + 1] = 0xf7;
727 return d +
var.bytesUsed;
736 return t > 0 &&
t < 16;
753 const size_t textSize =
text.text.sizeInBytes() - 1;
756 size_t n =
sizeof (header);
758 header[--
n] = (
uint8) (textSize & 0x7f);
760 for (
size_t i = textSize; (
i >>= 7) != 0;)
761 header[--
n] = (
uint8) ((
i & 0x7f) | 0x80);
766 const size_t headerLen =
sizeof (header) -
n;
767 const int totalSize = (
int) (headerLen + textSize);
769 auto dest =
result.allocateSpace (totalSize);
772 memcpy (dest, header +
n, headerLen);
773 memcpy (dest + headerLen,
text.text.getAddress(), textSize);
795 return (((
unsigned int)
d[0] << 16)
796 | ((
unsigned int)
d[1] << 8)
806 return 0.5 / timeFormat;
811 const int frameCode = (-timeFormat) >> 8;
812 double framesPerSecond;
816 case 24: framesPerSecond = 24.0;
break;
817 case 25: framesPerSecond = 25.0;
break;
818 case 29: framesPerSecond = 30.0 * 1000.0 / 1001.0;
break;
819 case 30: framesPerSecond = 30.0;
break;
820 default: framesPerSecond = 30.0;
break;
823 return (1.0 / framesPerSecond) / (timeFormat & 0xff);
828 return { 0xff, 81, 3,
829 (
uint8) (microsecondsPerQuarterNote >> 16),
830 (
uint8) (microsecondsPerQuarterNote >> 8),
831 (
uint8) microsecondsPerQuarterNote };
846 denominator = 1 <<
d[1];
860 while (
n < denominator)
866 return { 0xff, 0x58, 0x04, numerator, powerOfTwo, 1, 96 };
871 return { 0xff, 0x20, 0x01,
jlimit (0, 0xff, channel - 1) };
891 jassert (numberOfSharpsOrFlats >= -7 && numberOfSharpsOrFlats <= 7);
893 return { 0xff, 0x59, 0x02, numberOfSharpsOrFlats, isMinorKey ? 1 : 0 };
898 return { 0xff, 0x2f, 0x00 };
908 positionInMidiBeats & 127,
909 (positionInMidiBeats >> 7) & 127 };
937 return data[0] == 0xf0
951 hours =
data[5] & 0x1f;
960 return { 0xf0, 0x7f, 0x7f, 0x01, 0x01,
961 (hours & 0x01f) | (timecodeType << 5),
962 minutes, seconds, frames,
970 return data[0] == 0xf0
985 return { 0xf0, 0x7f, 0, 6, command, 0xf7 };
1001 hours =
data[7] % 24;
1014 return { 0xf0, 0x7f, 0, 6, 0x44, 6, 1, hours, minutes, seconds, frames, 0xf7 };
1020 static const char*
const sharpNoteNames[] = {
"C",
"C#",
"D",
"D#",
"E",
"F",
"F#",
"G",
"G#",
"A",
"A#",
"B" };
1021 static const char*
const flatNoteNames[] = {
"C",
"Db",
"D",
"Eb",
"E",
"F",
"Gb",
"G",
"Ab",
"A",
"Bb",
"B" };
1025 String s (useSharps ? sharpNoteNames[note % 12]
1026 : flatNoteNames [note % 12]);
1028 if (includeOctaveNumber)
1029 s << (note / 12 + (octaveNumForMiddleC - 5));
1039 return frequencyOfA * std::pow (2.0, (noteNumber - 69) / 12.0);
1044 return ((1 << (noteNumber % 12)) & 0x054a) != 0;
1049 static const char* names[] =
1090 static const char* names[] =
1103 static const char* names[] =
1119 return (
n >= 35 &&
n <= 81) ? names[
n - 35] :
nullptr;
1124 static const char* names[] =
1136 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
1142 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
1143 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
1150 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
1154 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
1155 nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
1167struct MidiMessageTest :
public UnitTest
1173 void runTest()
override
1178 beginTest (
"ReadVariableLengthValue should return valid, backward-compatible results");
1180 const std::vector<uint8> inputs[]
1188 { 0x81, 0x80, 0x00 },
1189 { 0xc0, 0x80, 0x00 },
1190 { 0xff, 0xff, 0x7f },
1191 { 0x81, 0x80, 0x80, 0x00 },
1192 { 0xc0, 0x80, 0x80, 0x00 },
1193 { 0xff, 0xff, 0xff, 0x7f }
1212 expectEquals (std::distance (begin (inputs), end (inputs)),
1213 std::distance (begin (outputs), end (outputs)));
1224 while (
copy.size() < 16)
1227 const auto result = MidiMessage::readVariableLengthValue (
copy.data(),
1230 expect (
result.isValid());
1231 expectEquals (
result.value, outputs[index]);
1232 expectEquals (
result.bytesUsed, (
int) inputs[index].size());
1234 int legacyNumUsed = 0;
1238 expectEquals (
result.value, legacyResult);
1239 expectEquals (
result.bytesUsed, legacyNumUsed);
1248 beginTest (
"ReadVariableLengthVal should return 0 if input is truncated");
1250 for (
size_t i = 0;
i != 16; ++
i)
1252 std::vector<uint8> input;
1253 input.resize (
i, 0xFF);
1255 const auto result = MidiMessage::readVariableLengthValue (input.data(),
1256 (
int) input.size());
1258 expect (!
result.isValid());
1259 expectEquals (
result.value, 0);
1260 expectEquals (
result.bytesUsed, 0);
1264 const std::vector<uint8> metaEvents[]
1268 { 0xff, 0x00, 0x02, 0x00, 0x00 },
1269 { 0xff, 0x01, 0x00 },
1270 { 0xff, 0x02, 0x00 },
1271 { 0xff, 0x03, 0x00 },
1272 { 0xff, 0x04, 0x00 },
1273 { 0xff, 0x05, 0x00 },
1274 { 0xff, 0x06, 0x00 },
1275 { 0xff, 0x07, 0x00 },
1276 { 0xff, 0x20, 0x01, 0x00 },
1277 { 0xff, 0x2f, 0x00 },
1278 { 0xff, 0x51, 0x03, 0x01, 0x02, 0x03 },
1279 { 0xff, 0x54, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05 },
1280 { 0xff, 0x58, 0x04, 0x01, 0x02, 0x03, 0x04 },
1281 { 0xff, 0x59, 0x02, 0x01, 0x02 },
1282 { 0xff, 0x7f, 0x00 },
1285 beginTest (
"MidiMessage data constructor works for well-formed meta-events");
1287 const auto status = (
uint8) 0x90;
1289 for (
const auto& input : metaEvents)
1292 const MidiMessage
msg (input.data(), (
int) input.size(), bytesUsed, status);
1294 expect (
msg.isMetaEvent());
1295 expectEquals (
msg.getMetaEventLength(), (
int) input.size() - 3);
1296 expectEquals (
msg.getMetaEventType(), (
int) input[1]);
1300 beginTest (
"MidiMessage data constructor works for malformed meta-events");
1302 const auto status = (
uint8) 0x90;
1304 const auto runTest = [&] (
const std::vector<uint8>& input)
1307 const MidiMessage
msg (input.data(), (
int) input.size(), bytesUsed, status);
1309 expect (
msg.isMetaEvent());
1310 expectEquals (
msg.getMetaEventLength(),
jmax (0, (
int) input.size() - 3));
1311 expectEquals (
msg.getMetaEventType(), input.size() >= 2 ? input[1] : -1);
1316 for (
const auto& input : metaEvents)
1327static MidiMessageTest midiMessageTests;
#define copy(x)
Definition ADnoteParameters.cpp:1011
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define noexcept
Definition DistrhoDefines.h:72
T limit(T val, T min, T max)
Definition Util.h:78
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
uint8_t uint8
Definition basics.h:86
bool isNoteOnOrOff() const noexcept
Definition MidiMessage.cpp:354
bool isSongPositionPointer() const noexcept
Definition MidiMessage.cpp:785
bool isForChannel(int channelNumber) const noexcept
Definition MidiMessage.cpp:317
static double getMidiNoteInHertz(int noteNumber, double frequencyOfA=440.0) noexcept
Definition MidiMessage.cpp:913
bool isSostenutoPedalOff() const noexcept
Definition MidiMessage.cpp:448
int getKeySignatureNumberOfSharpsOrFlats() const noexcept
Definition MidiMessage.cpp:766
static MidiMessage midiMachineControlGoto(int hours, int minutes, int seconds, int frames)
Definition MidiMessage.cpp:900
bool isProgramChange() const noexcept
Definition MidiMessage.cpp:454
void getTimeSignatureInfo(int &numerator, int &denominator) const noexcept
Definition MidiMessage.cpp:725
const uint8 * getSysExData() const noexcept
Definition MidiMessage.cpp:618
static MidiMessage allControllersOff(int channel) noexcept
Definition MidiMessage.cpp:583
bool isMetaEvent() const noexcept
Definition MidiMessage.cpp:629
static MidiMessage createSysExMessage(const void *sysexData, int dataSize)
Definition MidiMessage.cpp:606
bool isAftertouch() const noexcept
Definition MidiMessage.cpp:401
bool isMidiMachineControlGoto(int &hours, int &minutes, int &seconds, int &frames) const noexcept
Definition MidiMessage.cpp:878
static MidiMessage noteOn(int channel, int noteNumber, float velocity) noexcept
Definition MidiMessage.cpp:534
static MidiMessage aftertouchChange(int channel, int noteNumber, int aftertouchAmount) noexcept
Definition MidiMessage.cpp:412
int getMidiChannelMetaEventChannel() const noexcept
Definition MidiMessage.cpp:663
bool isAllSoundOff() const noexcept
Definition MidiMessage.cpp:577
void setChannel(int newChannelNumber) noexcept
Definition MidiMessage.cpp:327
static MidiMessage midiStart() noexcept
Definition MidiMessage.cpp:796
static MidiMessage midiContinue() noexcept
Definition MidiMessage.cpp:799
bool isSostenutoPedalOn() const noexcept
Definition MidiMessage.cpp:447
bool isFullFrame() const noexcept
Definition MidiMessage.cpp:816
float getFloatVelocity() const noexcept
Definition MidiMessage.cpp:381
MidiMessage & operator=(const MidiMessage &other)
Definition MidiMessage.cpp:261
static MidiMessage noteOff(int channel, int noteNumber, float velocity) noexcept
Definition MidiMessage.cpp:548
static MidiMessage songPositionPointer(int positionInMidiBeats) noexcept
Definition MidiMessage.cpp:788
static MidiMessage allSoundOff(int channel) noexcept
Definition MidiMessage.cpp:572
static uint8 floatValueToMidiByte(float valueBetween0and1) noexcept
Definition MidiMessage.cpp:46
static uint16 pitchbendToPitchwheelPos(float pitchbendInSemitones, float pitchbendRangeInSemitones) noexcept
Definition MidiMessage.cpp:51
bool isTimeSignatureMetaEvent() const noexcept
Definition MidiMessage.cpp:719
bool isActiveSense() const noexcept
Definition MidiMessage.cpp:630
bool isTempoMetaEvent() const noexcept
Definition MidiMessage.cpp:660
int getControllerNumber() const noexcept
Definition MidiMessage.cpp:504
bool isKeySignatureMajorKey() const noexcept
Definition MidiMessage.cpp:771
bool isMidiStart() const noexcept
Definition MidiMessage.cpp:795
static MidiMessage controllerEvent(int channel, int controllerType, int value) noexcept
Definition MidiMessage.cpp:516
void setVelocity(float newVelocity) noexcept
Definition MidiMessage.cpp:386
void getFullFrameParameters(int &hours, int &minutes, int &seconds, int &frames, SmpteTimecodeType &timecodeType) const noexcept
Definition MidiMessage.cpp:827
void setNoteNumber(int newNoteNumber) noexcept
Definition MidiMessage.cpp:367
int getSysExDataSize() const noexcept
Definition MidiMessage.cpp:623
int getMetaEventLength() const noexcept
Definition MidiMessage.cpp:638
bool isKeySignatureMetaEvent() const noexcept
Definition MidiMessage.cpp:761
int getControllerValue() const noexcept
Definition MidiMessage.cpp:510
static MidiMessage midiStop() noexcept
Definition MidiMessage.cpp:802
MidiMachineControlCommand getMidiMachineControlCommand() const noexcept
Definition MidiMessage.cpp:863
static MidiMessage channelPressureChange(int channel, int pressure) noexcept
Definition MidiMessage.cpp:436
static MidiMessage pitchWheel(int channel, int position) noexcept
Definition MidiMessage.cpp:484
uint8 * allocateSpace(int)
Definition MidiMessage.cpp:295
int getNoteNumber() const noexcept
Definition MidiMessage.cpp:362
bool isMidiChannelMetaEvent() const noexcept
Definition MidiMessage.cpp:661
bool isMidiMachineControlMessage() const noexcept
Definition MidiMessage.cpp:854
static MidiMessage programChange(int channel, int programNumber) noexcept
Definition MidiMessage.cpp:465
static int readVariableLengthVal(const uint8 *data, int &numBytesUsed) noexcept
Definition MidiMessage.cpp:63
static MidiMessage midiChannelMetaEvent(int channel) noexcept
Definition MidiMessage.cpp:755
bool isSysEx() const noexcept
Definition MidiMessage.cpp:601
MidiMessage() noexcept
Definition MidiMessage.cpp:103
int getChannel() const noexcept
Definition MidiMessage.cpp:307
double getTempoMetaEventTickLength(short timeFormat) const noexcept
Definition MidiMessage.cpp:682
const uint8 * getMetaEventData() const noexcept
Definition MidiMessage.cpp:650
int getSongPositionPointerMidiBeat() const noexcept
Definition MidiMessage.cpp:786
bool isSustainPedalOn() const noexcept
Definition MidiMessage.cpp:444
static int getMessageLengthFromFirstByte(uint8 firstByte) noexcept
Definition MidiMessage.cpp:82
int getQuarterFrameSequenceNumber() const noexcept
Definition MidiMessage.cpp:808
double getTempoSecondsPerQuarterNote() const noexcept
Definition MidiMessage.cpp:669
bool isAllNotesOff() const noexcept
Definition MidiMessage.cpp:566
int getQuarterFrameValue() const noexcept
Definition MidiMessage.cpp:809
bool isSustainPedalOff() const noexcept
Definition MidiMessage.cpp:445
bool isMidiContinue() const noexcept
Definition MidiMessage.cpp:798
static bool isMidiNoteBlack(int noteNumber) noexcept
Definition MidiMessage.cpp:918
static MidiMessage timeSignatureMetaEvent(int numerator, int denominator)
Definition MidiMessage.cpp:740
bool isChannelPressure() const noexcept
Definition MidiMessage.cpp:425
~MidiMessage() noexcept
Definition MidiMessage.cpp:289
bool isControllerOfType(int controllerType) const noexcept
Definition MidiMessage.cpp:498
static MidiMessage midiMachineControlCommand(MidiMachineControlCommand command)
Definition MidiMessage.cpp:870
static MidiMessage midiClock() noexcept
Definition MidiMessage.cpp:805
static MidiMessage allNotesOff(int channel) noexcept
Definition MidiMessage.cpp:561
bool isSoftPedalOff() const noexcept
Definition MidiMessage.cpp:451
bool isNoteOff(bool returnTrueForNoteOnVelocity0=true) const noexcept
Definition MidiMessage.cpp:346
void multiplyVelocity(float scaleFactor) noexcept
Definition MidiMessage.cpp:392
bool isMidiStop() const noexcept
Definition MidiMessage.cpp:801
static MidiMessage quarterFrame(int sequenceNumber, int value) noexcept
Definition MidiMessage.cpp:811
int getProgramChangeNumber() const noexcept
Definition MidiMessage.cpp:459
bool isNoteOn(bool returnTrueForVelocity0=false) const noexcept
Definition MidiMessage.cpp:338
static MidiMessage masterVolume(float volume)
Definition MidiMessage.cpp:588
bool isSoftPedalOn() const noexcept
Definition MidiMessage.cpp:450
static MidiMessage fullFrame(int hours, int minutes, int seconds, int frames, SmpteTimecodeType timecodeType)
Definition MidiMessage.cpp:840
bool isQuarterFrame() const noexcept
Definition MidiMessage.cpp:807
static MidiMessage keySignatureMetaEvent(int numberOfSharpsOrFlats, bool isMinorKey)
Definition MidiMessage.cpp:776
int getPitchWheelValue() const noexcept
Definition MidiMessage.cpp:477
bool isMidiClock() const noexcept
Definition MidiMessage.cpp:804
int getChannelPressureValue() const noexcept
Definition MidiMessage.cpp:430
bool isPitchWheel() const noexcept
Definition MidiMessage.cpp:472
int getMetaEventType() const noexcept
Definition MidiMessage.cpp:632
bool isController() const noexcept
Definition MidiMessage.cpp:493
int getAfterTouchValue() const noexcept
Definition MidiMessage.cpp:406
static MidiMessage tempoMetaEvent(int microsecondsPerQuarterNote) noexcept
Definition MidiMessage.cpp:709
uint8 getVelocity() const noexcept
Definition MidiMessage.cpp:373
static String toHexString(int number)
Definition String.cpp:1830
Definition juce_CharPointer_UTF8.h:35
Definition juce_HeapBlock.h:87
bool isTrackMetaEvent() const noexcept
Definition juce_MidiMessage.cpp:730
uint8 * getData() const noexcept
Definition juce_MidiMessage.h:982
String getDescription() const
Definition juce_MidiMessage.cpp:349
static const char * getGMInstrumentBankName(int midiBankNumber)
Definition juce_MidiMessage.cpp:1088
bool isAftertouch() const noexcept
Definition juce_MidiMessage.cpp:471
bool isNoteOn(bool returnTrueForVelocity0=false) const noexcept
Definition juce_MidiMessage.cpp:410
bool isMidiMachineControlMessage() const noexcept
Definition juce_MidiMessage.cpp:966
int getChannel() const noexcept
Definition juce_MidiMessage.cpp:379
int size
Definition juce_MidiMessage.h:978
const uint8 * getRawData() const noexcept
Definition juce_MidiMessage.h:134
bool isTextMetaEvent() const noexcept
Definition juce_MidiMessage.cpp:733
int getMetaEventType() const noexcept
Definition juce_MidiMessage.cpp:702
bool isProgramChange() const noexcept
Definition juce_MidiMessage.cpp:524
bool isController() const noexcept
Definition juce_MidiMessage.cpp:563
bool isAllSoundOff() const noexcept
Definition juce_MidiMessage.cpp:647
int getControllerNumber() const noexcept
Definition juce_MidiMessage.cpp:574
bool isTrackNameEvent() const noexcept
Definition juce_MidiMessage.cpp:778
int getChannelPressureValue() const noexcept
Definition juce_MidiMessage.cpp:500
bool isNoteOff(bool returnTrueForNoteOnVelocity0=true) const noexcept
Definition juce_MidiMessage.cpp:418
const uint8 * getMetaEventData() const noexcept
Definition juce_MidiMessage.cpp:721
static MidiMessage noteOn(int channel, int noteNumber, float velocity) noexcept
Definition juce_MidiMessage.cpp:604
bool isPitchWheel() const noexcept
Definition juce_MidiMessage.cpp:542
int getNoteNumber() const noexcept
Definition juce_MidiMessage.cpp:432
int getProgramChangeNumber() const noexcept
Definition juce_MidiMessage.cpp:529
static const char * getGMInstrumentName(int midiInstrumentNumber)
Definition juce_MidiMessage.cpp:1047
MidiMessage(int byte1, int byte2, int byte3, double timeStamp=0) noexcept
Definition juce_MidiMessage.cpp:161
MidiMachineControlCommand
Definition juce_MidiMessage.h:801
bool isTimeSignatureMetaEvent() const noexcept
Definition juce_MidiMessage.cpp:834
static MidiMessage controllerEvent(int channel, int controllerType, int value) noexcept
Definition juce_MidiMessage.cpp:586
bool isControllerOfType(int controllerType) const noexcept
Definition juce_MidiMessage.cpp:568
uint8 * allocateSpace(int)
Definition juce_MidiMessage.cpp:337
bool isTempoMetaEvent() const noexcept
Definition juce_MidiMessage.cpp:779
static uint8 floatValueToMidiByte(float valueBetween0and1) noexcept
Definition juce_MidiMessage.cpp:40
bool isResetAllControllers() const noexcept
Definition juce_MidiMessage.cpp:653
int getMetaEventLength() const noexcept
Definition juce_MidiMessage.cpp:708
double getTempoSecondsPerQuarterNote() const noexcept
Definition juce_MidiMessage.cpp:788
PackedData packedData
Definition juce_MidiMessage.h:976
int getAfterTouchValue() const noexcept
Definition juce_MidiMessage.cpp:476
static MidiMessage textMetaEvent(int type, StringRef text)
Definition juce_MidiMessage.cpp:747
bool isFullFrame() const noexcept
Definition juce_MidiMessage.cpp:933
static int getMessageLengthFromFirstByte(uint8 firstByte) noexcept
Definition juce_MidiMessage.cpp:104
bool isEndOfTrackMetaEvent() const noexcept
Definition juce_MidiMessage.cpp:731
bool isNoteOnOrOff() const noexcept
Definition juce_MidiMessage.cpp:426
int getControllerValue() const noexcept
Definition juce_MidiMessage.cpp:580
static String getMidiNoteName(int noteNumber, bool useSharps, bool includeOctaveNumber, int octaveNumForMiddleC)
Definition juce_MidiMessage.cpp:1018
bool isAllNotesOff() const noexcept
Definition juce_MidiMessage.cpp:636
static MidiMessage noteOff(int channel, int noteNumber, float velocity) noexcept
Definition juce_MidiMessage.cpp:618
bool isMidiChannelMetaEvent() const noexcept
Definition juce_MidiMessage.cpp:780
bool isMetaEvent() const noexcept
Definition juce_MidiMessage.cpp:699
uint8 getVelocity() const noexcept
Definition juce_MidiMessage.cpp:443
static const char * getRhythmInstrumentName(int midiNoteNumber)
Definition juce_MidiMessage.cpp:1101
double timeStamp
Definition juce_MidiMessage.h:977
bool isChannelPressure() const noexcept
Definition juce_MidiMessage.cpp:495
bool isHeapAllocated() const noexcept
Definition juce_MidiMessage.h:981
bool isSysEx() const noexcept
Definition juce_MidiMessage.cpp:672
static MidiMessage endOfTrack() noexcept
Definition juce_MidiMessage.cpp:896
String getTextFromTextMetaEvent() const
Definition juce_MidiMessage.cpp:739
SmpteTimecodeType
Definition juce_MidiMessage.h:767
static VariableLengthValue readVariableLengthValue(const uint8 *data, int maxBytesToUse) noexcept
Definition juce_MidiMessage.cpp:60
static const char * getControllerName(int controllerNumber)
Definition juce_MidiMessage.cpp:1122
int getRawDataSize() const noexcept
Definition juce_MidiMessage.h:139
MidiMessage withTimeStamp(double newTimestamp) const
Definition juce_MidiMessage.cpp:374
int getPitchWheelValue() const noexcept
Definition juce_MidiMessage.cpp:547
Definition juce_String.h:53
Definition juce_StringRef.h:62
Definition juce_UnitTest.h:70
Definition juce_Variant.h:42
ValueUnion value
Definition juce_Variant.h:314
unsigned * m
Definition inflate.c:1559
struct huft * t
Definition inflate.c:943
unsigned v[N_MAX]
Definition inflate.c:1584
unsigned d
Definition inflate.c:940
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
static PuglViewHint int value
Definition pugl.h:1708
static const char * name
Definition pugl.h:1582
JSAMPIMAGE data
Definition jpeglib.h:945
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings)
Definition juce_CompilerWarnings.h:198
#define JUCE_END_IGNORE_WARNINGS_MSVC
Definition juce_CompilerWarnings.h:199
#define NEEDS_TRANS(stringLiteral)
Definition juce_LocalisedStrings.h:218
const char * msg
Definition missing_descriptor.c:20
Definition juce_MidiMessage.cpp:27
uint8 initialByte(const int type, const int channel) noexcept
Definition juce_MidiMessage.cpp:28
uint8 validVelocity(const int v) noexcept
Definition juce_MidiMessage.cpp:33
Definition juce_UnitTestCategories.h:27
Definition carla_juce.cpp:31
unsigned short uint16
Definition juce_MathsFunctions.h:41
constexpr Type jmap(Type value0To1, Type targetRangeMin, Type targetRangeMax)
Definition juce_MathsFunctions.h:120
constexpr Type jmin(Type a, Type b)
Definition juce_MathsFunctions.h:106
unsigned int uint32
Definition juce_MathsFunctions.h:45
Type jlimit(Type lowerLimit, Type upperLimit, Type valueToConstrain) noexcept
Definition juce_MathsFunctions.h:262
signed char int8
Definition juce_MathsFunctions.h:35
bool isPositiveAndBelow(Type1 valueToTest, Type2 upperLimit) noexcept
Definition juce_MathsFunctions.h:279
unsigned char uint8
Definition juce_MathsFunctions.h:37
int roundToInt(const FloatType value) noexcept
Definition juce_MathsFunctions.h:465
constexpr int numElementsInArray(Type(&)[N]) noexcept
Definition juce_MathsFunctions.h:344
static float volume(float level)
Definition nekobee_voice_render.c:99
Definition juce_MidiMessage.h:877
const char * text
Definition swell-functions.h:167
uint8 * allocatedData
Definition juce_MidiMessage.h:972
int n
Definition crypt.c:458
for(n=0;n< RAND_HEAD_LEN;n++)
Definition crypt.c:467
memcpy(hh, h, RAND_HEAD_LEN)
int result
Definition process.c:1455
typedef int(UZ_EXP MsgFn)()
#define const
Definition zconf.h:137