operator - method

Interval operator -(
  1. dynamic other
)

Implementation

Interval operator -(dynamic other) {
  if (other is Pitch) {
    var semitones = this.semitones - other.semitones;
    var number =
        1 + letterIndex + 7 * octave - other.letterIndex - 7 * other.octave;
    // TODO enhance Interval to represent intervals greater than an octave
    while (number < 1) {
      number += 7;
      semitones += 12;
    }
    while (number > 8) {
      number -= 7;
      semitones -= 12;
    }
    return new Interval.fromSemitones(semitones, number: number);
  }
  throw new ArgumentError("can't subtract $other from $this");
}