Interval.fromSemitones constructor

Interval.fromSemitones(
  1. dynamic semitones, {
  2. int? number,
})

Implementation

factory Interval.fromSemitones(semitones, {int? number}) {
  if (semitones < 0 || 12 < semitones) semitones %= 12;
  var interval = Interval.parse(intervalNames[semitones]);
  if (number != null) {
    interval = new Interval(number: number);
    final qs = _numberIsPerfect(number) ? "dPA" : "dmMA";
    final i = semitones - interval.semitones + (qs.length ~/ 2);
    if (!(0 <= i && i < qs.length))
      throw new ArgumentError(
          "can't qualify $interval to $semitones semitone(s)");
    final q = qs[i];
    interval = new Interval(number: number, qualityName: q);
  }
  return interval;
}