fromMidiNumber static method

Pitch fromMidiNumber(
  1. int midiNumber, {
  2. AccidentalType preferredAccidental = AccidentalType.sharp,
})

Converte um nĂºmero MIDI para Pitch

Implementation

static Pitch fromMidiNumber(
  int midiNumber, {
  AccidentalType preferredAccidental = AccidentalType.sharp,
}) {
  final octave = (midiNumber ~/ 12) - 1;
  final semitone = midiNumber % 12;

  const sharpNames = [
    'C',
    'C',
    'D',
    'D',
    'E',
    'F',
    'F',
    'G',
    'G',
    'A',
    'A',
    'B',
  ];
  const flatNames = [
    'C',
    'D',
    'D',
    'E',
    'E',
    'F',
    'G',
    'G',
    'A',
    'A',
    'B',
    'B',
  ];
  const isSharp = [
    false,
    true,
    false,
    true,
    false,
    false,
    true,
    false,
    true,
    false,
    true,
    false,
  ];

  if (!isSharp[semitone]) {
    return Pitch(step: sharpNames[semitone], octave: octave);
  }

  if (preferredAccidental == AccidentalType.sharp) {
    return Pitch(
      step: sharpNames[semitone],
      octave: octave,
      alter: 1.0,
      accidentalType: AccidentalType.sharp,
    );
  } else {
    return Pitch(
      step: flatNames[semitone],
      octave: octave,
      alter: -1.0,
      accidentalType: AccidentalType.flat,
    );
  }
}