MidiMessage.common constructor

MidiMessage.common(
  1. int status,
  2. int data1, [
  3. int data2 = 0,
  4. MidiFileLoopType loopType = MidiFileLoopType.none,
])

Implementation

factory MidiMessage.common(int status, int data1,
    [int data2 = 0, MidiFileLoopType loopType = MidiFileLoopType.none]) {
  final channel = status & 0x0F;
  final command = status & 0xF0;

  if (command == 0xB0) {
    switch (loopType) {
      case MidiFileLoopType.rpgMaker:
        if (data1 == 111) {
          return MidiMessage.loopStart();
        }
        break;

      case MidiFileLoopType.incredibleMachine:
        if (data1 == 110) {
          return MidiMessage.loopStart();
        }
        if (data1 == 111) {
          return MidiMessage.loopEnd();
        }
        break;

      case MidiFileLoopType.finalFantasy:
        if (data1 == 116) {
          return MidiMessage.loopStart();
        }
        if (data1 == 117) {
          return MidiMessage.loopEnd();
        }
        break;

      default:
    }
  }

  return MidiMessage._(channel, command, data1, data2);
}