Skip to content

Commit

Permalink
Merge d8f624f into ede4c45
Browse files Browse the repository at this point in the history
  • Loading branch information
albertms10 committed Apr 8, 2023
2 parents ede4c45 + d8f624f commit 05dc49c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 86 deletions.
1 change: 0 additions & 1 deletion lib/music_notes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,5 @@ part 'src/note/note.dart';
part 'src/note/notes.dart';
part 'src/tonality/key_signature.dart';
part 'src/tonality/modes.dart';
part 'src/tonality/relative_tonalities.dart';
part 'src/tonality/tonality.dart';
part 'src/transposable.dart';
36 changes: 18 additions & 18 deletions lib/src/tonality/key_signature.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ part of '../../music_notes.dart';

@immutable
class KeySignature {
final int number;
final int accidentals;
final Accidental accidental;

const KeySignature(this.number, [this.accidental = Accidental.natural])
: assert(number >= 0, 'Provide a positive number or zero');
const KeySignature(this.accidentals, [this.accidental = Accidental.natural])
: assert(accidentals >= 0, 'Provide a positive number or zero');

KeySignature.fromDistance(int distance)
: this(
Expand All @@ -18,33 +18,33 @@ class KeySignature {
: Accidental.flat,
);

/// Returns [RelativeTonalities] with the two tonalities that are defined
/// Returns a [Set] with the two tonalities that are defined
/// by this [KeySignature].
///
/// Example:
/// ```dart
/// const KeySignature(2, Accidental.flat).tonalities
/// == RelativeTonalities({
/// const Tonality(Note.bFlat, Modes.major),
/// const Tonality(Note.g, Modes.minor),
/// })
/// const KeySignature(2, Accidental.flat).tonalities == {
/// const Tonality(Note.bFlat, Modes.major),
/// const Tonality(Note.g, Modes.minor),
/// }
/// ```
RelativeTonalities get tonalities => RelativeTonalities({
Tonality.fromAccidentals(number, Modes.major, accidental),
Tonality.fromAccidentals(number, Modes.minor, accidental),
Set<Tonality> get tonalities => SplayTreeSet.from({
Tonality.fromAccidentals(accidentals, Modes.major, accidental),
Tonality.fromAccidentals(accidentals, Modes.minor, accidental),
});

@override
String toString() {
if (number == 0) return '$number';
if (accidentals == 0) return '$accidentals';

final list = <String>[];
final notesValues = Notes.values.length;
final iterations = (number / notesValues).ceil();
final iterations = (accidentals / notesValues).ceil();

for (var i = 1; i <= iterations; i++) {
final n =
i == iterations ? nModExcludeZero(number, notesValues) : notesValues;
final n = i == iterations
? nModExcludeZero(accidentals, notesValues)
: notesValues;

list.add('$n × ${Accidental(accidental.semitones + i - 1).symbol}');
}
Expand All @@ -55,9 +55,9 @@ class KeySignature {
@override
bool operator ==(Object other) =>
other is KeySignature &&
number == other.number &&
accidentals == other.accidentals &&
accidental == other.accidental;

@override
int get hashCode => hash2(number, accidental);
int get hashCode => hash2(accidentals, accidental);
}
67 changes: 0 additions & 67 deletions lib/src/tonality/relative_tonalities.dart

This file was deleted.

0 comments on commit 05dc49c

Please sign in to comment.