diff --git a/lib/src/interval/interval.dart b/lib/src/interval/interval.dart index d8cd1c9e..5cf5d923 100644 --- a/lib/src/interval/interval.dart +++ b/lib/src/interval/interval.dart @@ -19,6 +19,53 @@ class Interval implements MusicItem { const Interval._(this.size, this.quality, {this.descending = false}) : assert(size != 0, 'Size must be non-zero'); + static const diminishedUnison = + Interval.perfect(1, PerfectQuality.diminished); + static const perfectUnison = Interval.perfect(1, PerfectQuality.perfect); + static const augmentedUnison = Interval.perfect(1, PerfectQuality.augmented); + + static const diminishedSecond = + Interval.imperfect(2, ImperfectQuality.diminished); + static const minorSecond = Interval.imperfect(2, ImperfectQuality.minor); + static const majorSecond = Interval.imperfect(2, ImperfectQuality.major); + static const augmentedSecond = + Interval.imperfect(2, ImperfectQuality.augmented); + + static const diminishedThird = + Interval.imperfect(3, ImperfectQuality.diminished); + static const minorThird = Interval.imperfect(3, ImperfectQuality.minor); + static const majorThird = Interval.imperfect(3, ImperfectQuality.major); + static const augmentedThird = + Interval.imperfect(3, ImperfectQuality.augmented); + + static const diminishedFourth = + Interval.perfect(4, PerfectQuality.diminished); + static const perfectFourth = Interval.perfect(4, PerfectQuality.perfect); + static const augmentedFourth = Interval.perfect(4, PerfectQuality.augmented); + + static const diminishedFifth = Interval.perfect(5, PerfectQuality.diminished); + static const perfectFifth = Interval.perfect(5, PerfectQuality.perfect); + static const augmentedFifth = Interval.perfect(5, PerfectQuality.augmented); + + static const diminishedSixth = + Interval.imperfect(6, ImperfectQuality.diminished); + static const minorSixth = Interval.imperfect(6, ImperfectQuality.minor); + static const majorSixth = Interval.imperfect(6, ImperfectQuality.major); + static const augmentedSixth = + Interval.imperfect(6, ImperfectQuality.augmented); + + static const diminishedSeventh = + Interval.imperfect(7, ImperfectQuality.diminished); + static const minorSeventh = Interval.imperfect(7, ImperfectQuality.minor); + static const majorSeventh = Interval.imperfect(7, ImperfectQuality.major); + static const augmentedSeventh = + Interval.imperfect(7, ImperfectQuality.augmented); + + static const diminishedOctave = + Interval.perfect(8, PerfectQuality.diminished); + static const perfectOctave = Interval.perfect(8, PerfectQuality.perfect); + static const augmentedOctave = Interval.perfect(8, PerfectQuality.augmented); + /// Creates a new [Interval] allowing only perfect quality [size]s. const Interval.perfect( this.size, @@ -52,14 +99,10 @@ class Interval implements MusicItem { /// /// Example: /// ```dart - /// Interval.fromSemitonesQuality(4) - /// == const Interval.imperfect(3, ImperfectQuality.minor) - /// - /// Interval.fromSemitonesQuality(7) - /// == const Interval.perfect(4, PerfectQuality.augmented) - /// + /// Interval.fromSemitonesQuality(4) == Interval.minorThird + /// Interval.fromSemitonesQuality(7) == Interval.augmentedFourth /// Interval.fromSemitonesQuality(7, PerfectQuality.diminished) - /// == const Interval.perfect(5, PerfectQuality.diminished) + /// == Interval.diminishedFifth /// ``` factory Interval.fromSemitonesQuality( int semitones, [ @@ -87,10 +130,10 @@ class Interval implements MusicItem { /// /// Example: /// ```dart - /// const Interval.imperfect(2, ImperfectQuality.major).semitones == 2 + /// Interval.majorSecond.semitones == 2 /// - /// const Interval.perfect(5, PerfectQuality.diminished).semitones - /// == const Interval.perfect(4, PerfectQuality.augmented).semitones + /// Interval.diminishedFifth.semitones + /// == Interval.augmentedFourth.semitones /// == 6 /// ``` @override @@ -101,11 +144,8 @@ class Interval implements MusicItem { /// /// Example: /// ```dart - /// const Interval.imperfect(3, ImperfectQuality.minor).inverted - /// == const Interval.imperfect(6, ImperfectQuality.major) - /// - /// const Interval.perfect(1, PerfectQuality.perfect).inverted - /// == const Interval.perfect(8, PerfectQuality.perfect) + /// Interval.minorThird.inverted == Interval.majorSixth + /// Interval.perfectUnison.inverted == Interval.perfectOctave /// ``` Interval get inverted => Interval._(size.inverted, quality.inverted); diff --git a/lib/src/interval/quality.dart b/lib/src/interval/quality.dart index 7a4531ff..92c0c976 100644 --- a/lib/src/interval/quality.dart +++ b/lib/src/interval/quality.dart @@ -29,6 +29,7 @@ abstract class Quality implements MusicItem { /// The textual abbreviation of this [Quality]. String? get abbreviation; + /// Returns the inverted version of this [Quality]. Quality get inverted; @override diff --git a/lib/src/music.dart b/lib/src/music.dart index cf387cbc..c1046cb7 100644 --- a/lib/src/music.dart +++ b/lib/src/music.dart @@ -14,7 +14,6 @@ final Set chromaticScale = SplayTreeSet.of({ final List circleOfFifths = [ for (var i = -1; i < chromaticDivisions - 1; i++) chromaticScale.elementAt( - (i * const Interval.perfect(5, PerfectQuality.perfect).semitones) - .chromaticMod, + (i * Interval.perfectFifth.semitones).chromaticMod, ), ]; diff --git a/lib/src/note/enharmonic_note.dart b/lib/src/note/enharmonic_note.dart index 414c3f5d..322cc676 100644 --- a/lib/src/note/enharmonic_note.dart +++ b/lib/src/note/enharmonic_note.dart @@ -135,10 +135,8 @@ class EnharmonicNote extends Enharmonic /// EnharmonicNote.dSharp.shortestFifthsDistance(EnharmonicNote.g) == 4 /// ``` int shortestFifthsDistance(EnharmonicNote other) { - final distanceAbove = enharmonicIntervalDistance( - other, - const Interval.perfect(5, PerfectQuality.perfect), - ); + final distanceAbove = + enharmonicIntervalDistance(other, Interval.perfectFifth); final distanceBelow = enharmonicIntervalDistance( other, const Interval.perfect(5, PerfectQuality.perfect, descending: true), @@ -179,16 +177,12 @@ class EnharmonicNote extends Enharmonic /// ```dart /// EnharmonicNote.e.enharmonicIntervalDistance( /// EnharmonicNote.d, - /// const Interval.perfect(5, PerfectQuality.perfect), + /// Interval.perfectFifth, /// ) == 10 /// /// EnharmonicNote.e.enharmonicIntervalDistance( /// EnharmonicNote.d, - /// const Interval( - /// 5, - /// PerfectQuality.perfect, - /// descending: true - /// ), + /// const Interval(5, PerfectQuality.perfect, descending: true), /// ) == 2 /// ``` int enharmonicIntervalDistance( diff --git a/lib/src/note/note.dart b/lib/src/note/note.dart index 0e126694..f27b08cd 100644 --- a/lib/src/note/note.dart +++ b/lib/src/note/note.dart @@ -116,20 +116,15 @@ class Note implements MusicItem, Transposable { /// Note.aFlat.exactFifthsDistance(Note.cSharp) == 11 /// Note.aFlat.exactFifthsDistance(Note.dFlat) == -1 /// ``` - int exactFifthsDistance(Note other) => intervalDistance( - other, - const Interval.perfect(5, PerfectQuality.perfect), - ); + int exactFifthsDistance(Note other) => + intervalDistance(other, Interval.perfectFifth); /// Returns the iteration distance of an [interval] between /// this [Note] and [other]. /// /// Example: /// ```dart - /// Note.c.intervalDistance( - /// Note.d, - /// const Interval.perfect(5, PerfectQuality.perfect), - /// ) == 2 + /// Note.c.intervalDistance(Note.d, Interval.perfectFifth) == 2 /// ``` int intervalDistance(Note other, Interval interval) { final distanceFlat = _runSemitonesDistance( @@ -177,11 +172,8 @@ class Note implements MusicItem, Transposable { /// /// Example: /// ```dart - /// Note.c.exactInterval(Note.d) - /// == const Interval.imperfect(2, ImperfectQuality.minor) - /// - /// Note.d.exactInterval(Note.aFlat) - /// == const Interval.perfect(5, PerfectQuality.diminished) + /// Note.c.exactInterval(Note.d) == Interval.minorSecond + /// Note.d.exactInterval(Note.aFlat) == Interval.diminishedFifth /// ``` Interval exactInterval(Note other) { final intervalSize = note.intervalSize(other.note); diff --git a/test/src/interval/enharmonic_interval_test.dart b/test/src/interval/enharmonic_interval_test.dart index 87a95695..41350974 100644 --- a/test/src/interval/enharmonic_interval_test.dart +++ b/test/src/interval/enharmonic_interval_test.dart @@ -10,69 +10,66 @@ void main() { 'should return the correct Interval items for this EnharmonicInterval', () { expect(EnharmonicInterval.perfectUnison.items, { - const Interval.perfect(1, PerfectQuality.perfect), - const Interval.imperfect(2, ImperfectQuality.diminished), + Interval.perfectUnison, + Interval.diminishedSecond, }); expect(EnharmonicInterval.minorSecond.items, { - const Interval.perfect(1, PerfectQuality.augmented), - const Interval.imperfect(2, ImperfectQuality.minor), + Interval.augmentedUnison, + Interval.minorSecond, const Interval.imperfect(3, ImperfectQuality.doubleDiminished), }); expect(EnharmonicInterval.majorSecond.items, { - const Interval.imperfect(2, ImperfectQuality.major), - const Interval.imperfect(3, ImperfectQuality.diminished), + Interval.majorSecond, + Interval.diminishedThird, }); expect(EnharmonicInterval.minorThird.items, { - const Interval.imperfect(2, ImperfectQuality.augmented), - const Interval.imperfect(3, ImperfectQuality.minor), + Interval.augmentedSecond, + Interval.minorThird, const Interval.perfect(4, PerfectQuality.doubleDiminished), }); expect(EnharmonicInterval.majorThird.items, { - const Interval.imperfect(3, ImperfectQuality.major), - const Interval.perfect(4, PerfectQuality.diminished), + Interval.majorThird, + Interval.diminishedFourth, }); expect(EnharmonicInterval.perfectFourth.items, { - const Interval.imperfect(3, ImperfectQuality.augmented), - const Interval.perfect(4, PerfectQuality.perfect), + Interval.augmentedThird, + Interval.perfectFourth, const Interval.perfect(5, PerfectQuality.doubleDiminished), }); expect(EnharmonicInterval.tritone.items, { - const Interval.perfect(4, PerfectQuality.augmented), - const Interval.perfect(5, PerfectQuality.diminished), + Interval.augmentedFourth, + Interval.diminishedFifth, }); expect(EnharmonicInterval.perfectFifth.items, { const Interval.perfect(4, PerfectQuality.doubleAugmented), - const Interval.perfect(5, PerfectQuality.perfect), - const Interval.imperfect(6, ImperfectQuality.diminished), + Interval.perfectFifth, + Interval.diminishedSixth, }); expect(EnharmonicInterval.minorSixth.items, { - const Interval.perfect(5, PerfectQuality.augmented), - const Interval.imperfect(6, ImperfectQuality.minor), - const Interval.imperfect( - 7, - ImperfectQuality.doubleDiminished, - ), + Interval.augmentedFifth, + Interval.minorSixth, + const Interval.imperfect(7, ImperfectQuality.doubleDiminished), }); expect(EnharmonicInterval.majorSixth.items, { - const Interval.imperfect(6, ImperfectQuality.major), - const Interval.imperfect(7, ImperfectQuality.diminished), + Interval.majorSixth, + Interval.diminishedSeventh, }); expect(EnharmonicInterval.minorSeventh.items, { - const Interval.imperfect(6, ImperfectQuality.augmented), - const Interval.imperfect(7, ImperfectQuality.minor), + Interval.augmentedSixth, + Interval.minorSeventh, const Interval.perfect(8, PerfectQuality.doubleDiminished), }); expect(EnharmonicInterval.majorSeventh.items, { - const Interval.imperfect(7, ImperfectQuality.major), - const Interval.perfect(8, PerfectQuality.diminished), + Interval.majorSeventh, + Interval.diminishedOctave, }); expect(EnharmonicInterval.perfectOctave.items, { - const Interval.imperfect(7, ImperfectQuality.augmented), - const Interval.perfect(8, PerfectQuality.perfect), + Interval.augmentedSeventh, + Interval.perfectOctave, const Interval.imperfect(9, ImperfectQuality.diminished), }); expect(const EnharmonicInterval(13).items, { - const Interval.perfect(8, PerfectQuality.augmented), + Interval.augmentedOctave, const Interval.imperfect(9, ImperfectQuality.minor), const Interval.imperfect(10, ImperfectQuality.doubleDiminished), }); diff --git a/test/src/interval/interval_test.dart b/test/src/interval/interval_test.dart index c054f509..bccaa631 100644 --- a/test/src/interval/interval_test.dart +++ b/test/src/interval/interval_test.dart @@ -28,315 +28,126 @@ void main() { group('.fromSemitones()', () { test('should create a new Interval from semitones', () { - expect( - Interval.fromSemitones(1, -1), - const Interval.perfect(1, PerfectQuality.diminished), - ); - expect( - Interval.fromSemitones(1, 0), - const Interval.perfect(1, PerfectQuality.perfect), - ); - expect( - Interval.fromSemitones(1, 1), - const Interval.perfect(1, PerfectQuality.augmented), - ); + expect(Interval.fromSemitones(1, -1), Interval.diminishedUnison); + expect(Interval.fromSemitones(1, 0), Interval.perfectUnison); + expect(Interval.fromSemitones(1, 1), Interval.augmentedUnison); - expect( - Interval.fromSemitones(2, 0), - const Interval.imperfect(2, ImperfectQuality.diminished), - ); - expect( - Interval.fromSemitones(2, 1), - const Interval.imperfect(2, ImperfectQuality.minor), - ); - expect( - Interval.fromSemitones(2, 2), - const Interval.imperfect(2, ImperfectQuality.major), - ); - expect( - Interval.fromSemitones(2, 3), - const Interval.imperfect(2, ImperfectQuality.augmented), - ); + expect(Interval.fromSemitones(2, 0), Interval.diminishedSecond); + expect(Interval.fromSemitones(2, 1), Interval.minorSecond); + expect(Interval.fromSemitones(2, 2), Interval.majorSecond); + expect(Interval.fromSemitones(2, 3), Interval.augmentedSecond); - expect( - Interval.fromSemitones(3, 2), - const Interval.imperfect(3, ImperfectQuality.diminished), - ); - expect( - Interval.fromSemitones(3, 3), - const Interval.imperfect(3, ImperfectQuality.minor), - ); - expect( - Interval.fromSemitones(3, 4), - const Interval.imperfect(3, ImperfectQuality.major), - ); - expect( - Interval.fromSemitones(3, 5), - const Interval.imperfect(3, ImperfectQuality.augmented), - ); + expect(Interval.fromSemitones(3, 2), Interval.diminishedThird); + expect(Interval.fromSemitones(3, 3), Interval.minorThird); + expect(Interval.fromSemitones(3, 4), Interval.majorThird); + expect(Interval.fromSemitones(3, 5), Interval.augmentedThird); - expect( - Interval.fromSemitones(4, 4), - const Interval.perfect(4, PerfectQuality.diminished), - ); - expect( - Interval.fromSemitones(4, 5), - const Interval.perfect(4, PerfectQuality.perfect), - ); - expect( - Interval.fromSemitones(4, 6), - const Interval.perfect(4, PerfectQuality.augmented), - ); + expect(Interval.fromSemitones(4, 4), Interval.diminishedFourth); + expect(Interval.fromSemitones(4, 5), Interval.perfectFourth); + expect(Interval.fromSemitones(4, 6), Interval.augmentedFourth); - expect( - Interval.fromSemitones(5, 6), - const Interval.perfect(5, PerfectQuality.diminished), - ); - expect( - Interval.fromSemitones(5, 7), - const Interval.perfect(5, PerfectQuality.perfect), - ); - expect( - Interval.fromSemitones(5, 8), - const Interval.perfect(5, PerfectQuality.augmented), - ); + expect(Interval.fromSemitones(5, 6), Interval.diminishedFifth); + expect(Interval.fromSemitones(5, 7), Interval.perfectFifth); + expect(Interval.fromSemitones(5, 8), Interval.augmentedFifth); - expect( - Interval.fromSemitones(6, 8), - const Interval.imperfect(6, ImperfectQuality.minor), - ); - expect( - Interval.fromSemitones(6, 9), - const Interval.imperfect(6, ImperfectQuality.major), - ); + expect(Interval.fromSemitones(6, 8), Interval.minorSixth); + expect(Interval.fromSemitones(6, 9), Interval.majorSixth); - expect( - Interval.fromSemitones(7, 10), - const Interval.imperfect(7, ImperfectQuality.minor), - ); - expect( - Interval.fromSemitones(7, 11), - const Interval.imperfect(7, ImperfectQuality.major), - ); + expect(Interval.fromSemitones(7, 10), Interval.minorSeventh); + expect(Interval.fromSemitones(7, 11), Interval.majorSeventh); - expect( - Interval.fromSemitones(8, 11), - const Interval.perfect(8, PerfectQuality.diminished), - ); - expect( - Interval.fromSemitones(8, 12), - const Interval.perfect(8, PerfectQuality.perfect), - ); - expect( - Interval.fromSemitones(8, 13), - const Interval.perfect(8, PerfectQuality.augmented), - ); + expect(Interval.fromSemitones(8, 11), Interval.diminishedOctave); + expect(Interval.fromSemitones(8, 12), Interval.perfectOctave); + expect(Interval.fromSemitones(8, 13), Interval.augmentedOctave); }); }); group('.fromSemitonesQuality()', () { test('should return the correct Interval from semitones and Quality', () { - expect( - Interval.fromSemitonesQuality(3), - const Interval.imperfect(3, ImperfectQuality.minor), - ); - expect( - Interval.fromSemitonesQuality(6), - const Interval.perfect(4, PerfectQuality.augmented), - ); + expect(Interval.fromSemitonesQuality(3), Interval.minorThird); + expect(Interval.fromSemitonesQuality(6), Interval.augmentedFourth); expect( Interval.fromSemitonesQuality(6, PerfectQuality.augmented), - const Interval.perfect(4, PerfectQuality.augmented), + Interval.augmentedFourth, ); expect( Interval.fromSemitonesQuality(6, PerfectQuality.diminished), - const Interval.perfect(5, PerfectQuality.diminished), + Interval.diminishedFifth, ); }); }); group('.semitones', () { test('should return the number of semitones of this Interval', () { - expect( - const Interval.perfect(1, PerfectQuality.diminished).semitones, - -1, - ); - expect( - const Interval.perfect(1, PerfectQuality.perfect).semitones, - 0, - ); - expect( - const Interval.perfect(1, PerfectQuality.augmented).semitones, - 1, - ); - - expect( - const Interval.imperfect(2, ImperfectQuality.diminished).semitones, - 0, - ); - expect( - const Interval.imperfect(2, ImperfectQuality.minor).semitones, - 1, - ); - expect( - const Interval.imperfect(2, ImperfectQuality.major).semitones, - 2, - ); - expect( - const Interval.imperfect(2, ImperfectQuality.augmented).semitones, - 3, - ); - - expect( - const Interval.imperfect(3, ImperfectQuality.diminished).semitones, - 2, - ); - expect( - const Interval.imperfect(3, ImperfectQuality.minor).semitones, - 3, - ); - expect( - const Interval.imperfect(3, ImperfectQuality.major).semitones, - 4, - ); - expect( - const Interval.imperfect(3, ImperfectQuality.augmented).semitones, - 5, - ); - - expect( - const Interval.perfect(4, PerfectQuality.diminished).semitones, - 4, - ); - expect( - const Interval.perfect(4, PerfectQuality.perfect).semitones, - 5, - ); - expect( - const Interval.perfect(4, PerfectQuality.augmented).semitones, - 6, - ); - - expect( - const Interval.perfect(5, PerfectQuality.diminished).semitones, - 6, - ); - expect( - const Interval.perfect(5, PerfectQuality.perfect).semitones, - 7, - ); - expect( - const Interval.perfect(5, PerfectQuality.augmented).semitones, - 8, - ); - - expect( - const Interval.imperfect(6, ImperfectQuality.diminished).semitones, - 7, - ); - expect( - const Interval.imperfect(6, ImperfectQuality.minor).semitones, - 8, - ); - expect( - const Interval.imperfect(6, ImperfectQuality.major).semitones, - 9, - ); - expect( - const Interval.imperfect(6, ImperfectQuality.augmented).semitones, - 10, - ); - - expect( - const Interval.imperfect(7, ImperfectQuality.diminished).semitones, - 9, - ); - expect( - const Interval.imperfect(7, ImperfectQuality.minor).semitones, - 10, - ); - expect( - const Interval.imperfect(7, ImperfectQuality.major).semitones, - 11, - ); - expect( - const Interval.imperfect(7, ImperfectQuality.augmented).semitones, - 12, - ); - - expect( - const Interval.perfect(8, PerfectQuality.diminished).semitones, - 11, - ); - expect( - const Interval.perfect(8, PerfectQuality.perfect).semitones, - 12, - ); - expect( - const Interval.perfect(8, PerfectQuality.augmented).semitones, - 13, - ); + expect(Interval.diminishedUnison.semitones, -1); + expect(Interval.perfectUnison.semitones, 0); + expect(Interval.augmentedUnison.semitones, 1); + + expect(Interval.diminishedSecond.semitones, 0); + expect(Interval.minorSecond.semitones, 1); + expect(Interval.majorSecond.semitones, 2); + expect(Interval.augmentedSecond.semitones, 3); + + expect(Interval.diminishedThird.semitones, 2); + expect(Interval.minorThird.semitones, 3); + expect(Interval.majorThird.semitones, 4); + expect(Interval.augmentedThird.semitones, 5); + + expect(Interval.diminishedFourth.semitones, 4); + expect(Interval.perfectFourth.semitones, 5); + expect(Interval.augmentedFourth.semitones, 6); + + expect(Interval.diminishedFifth.semitones, 6); + expect(Interval.perfectFifth.semitones, 7); + expect(Interval.augmentedFifth.semitones, 8); + + expect(Interval.diminishedSixth.semitones, 7); + expect(Interval.minorSixth.semitones, 8); + expect(Interval.majorSixth.semitones, 9); + expect(Interval.augmentedSixth.semitones, 10); + + expect(Interval.diminishedSeventh.semitones, 9); + expect(Interval.minorSeventh.semitones, 10); + expect(Interval.majorSeventh.semitones, 11); + expect(Interval.augmentedSeventh.semitones, 12); + + expect(Interval.diminishedOctave.semitones, 11); + expect(Interval.perfectOctave.semitones, 12); + expect(Interval.augmentedOctave.semitones, 13); }); }); group('.inverted', () { test('should return the inverted of this Interval', () { - expect( - const Interval.perfect(1, PerfectQuality.augmented).inverted, - const Interval.perfect(8, PerfectQuality.diminished), - ); - expect( - const Interval.perfect(1, PerfectQuality.perfect).inverted, - const Interval.perfect(8, PerfectQuality.perfect), - ); - expect( - const Interval.imperfect(2, ImperfectQuality.major).inverted, - const Interval.imperfect(7, ImperfectQuality.minor), - ); - expect( - const Interval.imperfect(3, ImperfectQuality.minor).inverted, - const Interval.imperfect(6, ImperfectQuality.major), - ); - expect( - const Interval.perfect(5, PerfectQuality.diminished).inverted, - const Interval.perfect(4, PerfectQuality.augmented), - ); - expect( - const Interval.perfect(4, PerfectQuality.diminished).inverted, - const Interval.perfect(5, PerfectQuality.augmented), - ); + expect(Interval.augmentedUnison.inverted, Interval.diminishedOctave); + expect(Interval.perfectUnison.inverted, Interval.perfectOctave); + expect(Interval.majorSecond.inverted, Interval.minorSeventh); + expect(Interval.minorThird.inverted, Interval.majorSixth); + expect(Interval.diminishedFifth.inverted, Interval.augmentedFourth); + expect(Interval.diminishedFourth.inverted, Interval.augmentedFifth); }); }); group('.toString()', () { test('should return the string representation of this Interval', () { - expect( - const Interval.imperfect(2, ImperfectQuality.major).toString(), - 'M2', - ); - expect( - const Interval.perfect(5, PerfectQuality.perfect).toString(), - 'P5', - ); - expect( - const Interval.imperfect(7, ImperfectQuality.diminished).toString(), - 'd7', - ); + expect(Interval.majorSecond.toString(), 'M2'); + expect(Interval.perfectFifth.toString(), 'P5'); + expect(Interval.diminishedSeventh.toString(), 'd7'); }); }); group('.hashCode', () { test('should ignore equal Interval instances in a Set', () { final collection = { - const Interval.imperfect(2, ImperfectQuality.major), - const Interval.imperfect(3, ImperfectQuality.diminished), - const Interval.perfect(4, PerfectQuality.perfect), + Interval.majorSecond, + Interval.diminishedThird, + Interval.perfectFourth, }; collection.addAll(collection); expect(collection.toList(), const [ - Interval.imperfect(2, ImperfectQuality.major), - Interval.imperfect(3, ImperfectQuality.diminished), - Interval.perfect(4, PerfectQuality.perfect), + Interval.majorSecond, + Interval.diminishedThird, + Interval.perfectFourth, ]); }); }); @@ -344,16 +155,16 @@ void main() { group('.compareTo()', () { test('should correctly sort Interval items in a collection', () { final orderedSet = SplayTreeSet.of(const [ - Interval.imperfect(2, ImperfectQuality.minor), - Interval.perfect(8, PerfectQuality.perfect), - Interval.perfect(1, PerfectQuality.perfect), - Interval.perfect(1, PerfectQuality.augmented), + Interval.minorSecond, + Interval.perfectOctave, + Interval.perfectUnison, + Interval.augmentedUnison, ]); expect(orderedSet.toList(), const [ - Interval.perfect(1, PerfectQuality.perfect), - Interval.perfect(1, PerfectQuality.augmented), - Interval.imperfect(2, ImperfectQuality.minor), - Interval.perfect(8, PerfectQuality.perfect), + Interval.perfectUnison, + Interval.augmentedUnison, + Interval.minorSecond, + Interval.perfectOctave, ]); }); }); diff --git a/test/src/note/note_test.dart b/test/src/note/note_test.dart index d52bb23e..ec264b62 100644 --- a/test/src/note/note_test.dart +++ b/test/src/note/note_test.dart @@ -66,104 +66,53 @@ void main() { group('.exactInterval()', () { test('should return the Interval between this Note and other', () { - expect( - Note.c.exactInterval(Note.c), - const Interval.perfect(1, PerfectQuality.perfect), - ); - expect( - Note.c.exactInterval(Note.cSharp), - const Interval.perfect(1, PerfectQuality.augmented), - ); + expect(Note.c.exactInterval(Note.c), Interval.perfectUnison); + expect(Note.c.exactInterval(Note.cSharp), Interval.augmentedUnison); expect( Note.c.exactInterval(const Note(Notes.d, Accidental.doubleFlat)), - const Interval.imperfect(2, ImperfectQuality.diminished), - ); - expect( - Note.c.exactInterval(Note.dFlat), - const Interval.imperfect(2, ImperfectQuality.minor), - ); - expect( - Note.c.exactInterval(Note.d), - const Interval.imperfect(2, ImperfectQuality.major), - ); - expect( - Note.c.exactInterval(Note.dSharp), - const Interval.imperfect(2, ImperfectQuality.augmented), + Interval.diminishedSecond, ); + expect(Note.c.exactInterval(Note.dFlat), Interval.minorSecond); + expect(Note.c.exactInterval(Note.d), Interval.majorSecond); + expect(Note.c.exactInterval(Note.dSharp), Interval.augmentedSecond); expect( Note.c.exactInterval(const Note(Notes.e, Accidental.doubleFlat)), - const Interval.imperfect(3, ImperfectQuality.diminished), - ); - expect( - Note.c.exactInterval(Note.eFlat), - const Interval.imperfect(3, ImperfectQuality.minor), - ); - expect( - Note.c.exactInterval(Note.e), - const Interval.imperfect(3, ImperfectQuality.major), + Interval.diminishedThird, ); + expect(Note.c.exactInterval(Note.eFlat), Interval.minorThird); + expect(Note.c.exactInterval(Note.e), Interval.majorThird); expect( Note.c.exactInterval(const Note(Notes.e, Accidental.sharp)), - const Interval.imperfect(3, ImperfectQuality.augmented), + Interval.augmentedThird, ); expect( Note.c.exactInterval(const Note(Notes.f, Accidental.flat)), - const Interval.perfect(4, PerfectQuality.diminished), - ); - expect( - Note.c.exactInterval(Note.f), - const Interval.perfect(4, PerfectQuality.perfect), - ); - expect( - Note.c.exactInterval(Note.fSharp), - const Interval.perfect(4, PerfectQuality.augmented), + Interval.diminishedFourth, ); + expect(Note.c.exactInterval(Note.f), Interval.perfectFourth); + expect(Note.c.exactInterval(Note.fSharp), Interval.augmentedFourth); - expect( - Note.c.exactInterval(Note.gFlat), - const Interval.perfect(5, PerfectQuality.diminished), - ); - expect( - Note.c.exactInterval(Note.g), - const Interval.perfect(5, PerfectQuality.perfect), - ); - expect( - Note.c.exactInterval(Note.gSharp), - const Interval.perfect(5, PerfectQuality.augmented), - ); + expect(Note.c.exactInterval(Note.gFlat), Interval.diminishedFifth); + expect(Note.c.exactInterval(Note.g), Interval.perfectFifth); + expect(Note.c.exactInterval(Note.gSharp), Interval.augmentedFifth); expect( Note.c.exactInterval(const Note(Notes.a, Accidental.doubleFlat)), - const Interval.imperfect(6, ImperfectQuality.diminished), - ); - expect( - Note.c.exactInterval(Note.aFlat), - const Interval.imperfect(6, ImperfectQuality.minor), - ); - expect( - Note.c.exactInterval(Note.a), - const Interval.imperfect(6, ImperfectQuality.major), - ); - expect( - Note.c.exactInterval(Note.aSharp), - const Interval.imperfect(6, ImperfectQuality.augmented), + Interval.diminishedSixth, ); + expect(Note.c.exactInterval(Note.aFlat), Interval.minorSixth); + expect(Note.c.exactInterval(Note.a), Interval.majorSixth); + expect(Note.c.exactInterval(Note.aSharp), Interval.augmentedSixth); expect( Note.c.exactInterval(const Note(Notes.b, Accidental.doubleFlat)), - const Interval.imperfect(7, ImperfectQuality.diminished), - ); - expect( - Note.c.exactInterval(Note.bFlat), - const Interval.imperfect(7, ImperfectQuality.minor), - ); - expect( - Note.c.exactInterval(Note.b), - const Interval.imperfect(7, ImperfectQuality.major), + Interval.diminishedSeventh, ); + expect(Note.c.exactInterval(Note.bFlat), Interval.minorSeventh); + expect(Note.c.exactInterval(Note.b), Interval.majorSeventh); // TODO(albertms10): add test case for: // `Note.c.exactInterval(const Note(Notes.b, Accidental.sharp))`. }); @@ -172,147 +121,51 @@ void main() { group('.transposeBy()', () { test('should return this Note transposed by Interval', () { expect( - Note.c.transposeBy( - const Interval.perfect(1, PerfectQuality.diminished), - ), + Note.c.transposeBy(Interval.diminishedUnison), const Note(Notes.c, Accidental.flat), ); - expect( - Note.c.transposeBy(const Interval.perfect(1, PerfectQuality.perfect)), - Note.c, - ); - expect( - Note.c - .transposeBy(const Interval.perfect(1, PerfectQuality.augmented)), - Note.cSharp, - ); + expect(Note.c.transposeBy(Interval.perfectUnison), Note.c); + expect(Note.c.transposeBy(Interval.augmentedUnison), Note.cSharp); expect( - Note.c.transposeBy( - const Interval.imperfect(2, ImperfectQuality.diminished), - ), + Note.c.transposeBy(Interval.diminishedSecond), const Note(Notes.d, Accidental.doubleFlat), ); - expect( - Note.c - .transposeBy(const Interval.imperfect(2, ImperfectQuality.minor)), - Note.dFlat, - ); - expect( - Note.c - .transposeBy(const Interval.imperfect(2, ImperfectQuality.major)), - Note.d, - ); - expect( - Note.c.transposeBy( - const Interval.imperfect(2, ImperfectQuality.augmented), - ), - Note.dSharp, - ); + expect(Note.c.transposeBy(Interval.minorSecond), Note.dFlat); + expect(Note.c.transposeBy(Interval.majorSecond), Note.d); + expect(Note.c.transposeBy(Interval.augmentedSecond), Note.dSharp); + expect(Note.e.transposeBy(Interval.minorThird), Note.g); + expect(Note.e.transposeBy(Interval.majorThird), Note.gSharp); expect( - Note.e - .transposeBy(const Interval.imperfect(3, ImperfectQuality.minor)), - Note.g, - ); - expect( - Note.e - .transposeBy(const Interval.imperfect(3, ImperfectQuality.major)), - Note.gSharp, - ); - expect( - Note.aFlat - .transposeBy(const Interval.imperfect(3, ImperfectQuality.minor)), + Note.aFlat.transposeBy(Interval.minorThird), const Note(Notes.c, Accidental.flat), ); - expect( - Note.aFlat - .transposeBy(const Interval.imperfect(3, ImperfectQuality.major)), - Note.c, - ); + expect(Note.aFlat.transposeBy(Interval.majorThird), Note.c); expect( - Note.f.transposeBy( - const Interval.perfect(4, PerfectQuality.diminished), - ), + Note.f.transposeBy(Interval.diminishedFourth), const Note(Notes.b, Accidental.doubleFlat), ); - expect( - Note.f.transposeBy(const Interval.perfect(4, PerfectQuality.perfect)), - Note.bFlat, - ); - expect( - Note.f - .transposeBy(const Interval.perfect(4, PerfectQuality.augmented)), - Note.b, - ); - expect( - Note.a.transposeBy( - const Interval.perfect(4, PerfectQuality.diminished), - ), - Note.dFlat, - ); - expect( - Note.a.transposeBy(const Interval.perfect(4, PerfectQuality.perfect)), - Note.d, - ); - expect( - Note.a - .transposeBy(const Interval.perfect(4, PerfectQuality.augmented)), - Note.dSharp, - ); + expect(Note.f.transposeBy(Interval.perfectFourth), Note.bFlat); + expect(Note.f.transposeBy(Interval.augmentedFourth), Note.b); + expect(Note.a.transposeBy(Interval.diminishedFourth), Note.dFlat); + expect(Note.a.transposeBy(Interval.perfectFourth), Note.d); + expect(Note.a.transposeBy(Interval.augmentedFourth), Note.dSharp); - expect( - Note.d.transposeBy( - const Interval.perfect(5, PerfectQuality.diminished), - ), - Note.aFlat, - ); - expect( - Note.d.transposeBy(const Interval.perfect(5, PerfectQuality.perfect)), - Note.a, - ); - expect( - Note.d - .transposeBy(const Interval.perfect(5, PerfectQuality.augmented)), - Note.aSharp, - ); + expect(Note.d.transposeBy(Interval.diminishedFifth), Note.aFlat); + expect(Note.d.transposeBy(Interval.perfectFifth), Note.a); + expect(Note.d.transposeBy(Interval.augmentedFifth), Note.aSharp); - expect( - Note.d - .transposeBy(const Interval.imperfect(6, ImperfectQuality.minor)), - Note.bFlat, - ); - expect( - Note.d - .transposeBy(const Interval.imperfect(6, ImperfectQuality.major)), - Note.b, - ); - expect( - Note.fSharp - .transposeBy(const Interval.imperfect(6, ImperfectQuality.minor)), - Note.d, - ); - expect( - Note.fSharp - .transposeBy(const Interval.imperfect(6, ImperfectQuality.major)), - Note.dSharp, - ); + expect(Note.d.transposeBy(Interval.minorSixth), Note.bFlat); + expect(Note.d.transposeBy(Interval.majorSixth), Note.b); + expect(Note.fSharp.transposeBy(Interval.minorSixth), Note.d); + expect(Note.fSharp.transposeBy(Interval.majorSixth), Note.dSharp); + expect(Note.c.transposeBy(Interval.minorSeventh), Note.bFlat); + expect(Note.c.transposeBy(Interval.majorSeventh), Note.b); expect( - Note.c - .transposeBy(const Interval.imperfect(7, ImperfectQuality.minor)), - Note.bFlat, - ); - expect( - Note.c - .transposeBy(const Interval.imperfect(7, ImperfectQuality.major)), - Note.b, - ); - expect( - Note.c.transposeBy( - const Interval.imperfect(7, ImperfectQuality.augmented), - ), + Note.c.transposeBy(Interval.augmentedSeventh), const Note(Notes.b, Accidental.sharp), ); });