Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(interval): ♻️ rewrite Size as extension type #311

Merged
merged 27 commits into from
Feb 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
bb0966d
perf(interval): :zap: rewrite `Size` as extension type
albertms10 Nov 24, 2023
247cf51
feat(size): ✨ implement `int` to inherit common operators
albertms10 Jan 7, 2024
0e6289a
refactor(size): ♻️ remove overridden operators to allow const
albertms10 Jan 7, 2024
c41a43e
refactor(size): ♻️ ensure `simplified` returns a copy
albertms10 Jan 7, 2024
1239953
Merge branch 'main' into perf/rewrite-interval-size-as-extension-type
albertms10 Jan 7, 2024
6c5ab81
ci(analysis): 💚 use `dev` channel for Dart SDK
albertms10 Jan 7, 2024
a5ec1d3
refactor(size): ♻️ redeclare `operator -()`
albertms10 Jan 7, 2024
216e31e
style(size): 🎨 reformat file
albertms10 Jan 7, 2024
516e124
docs(size): 📖 fix wrong `const` usages in examples
albertms10 Jan 7, 2024
10d69a5
refactor(size): ♻️ use `Size.octave` static constant
albertms10 Jan 7, 2024
bd1b0b6
test(harmonic_function): 🧪 revert changes
albertms10 Jan 7, 2024
1423892
refactor: ♻️ remove unnecessary `.value` access on `Size`
albertms10 Jan 8, 2024
af107af
test(interval): 🧪 address wrong `const` usages
albertms10 Jan 8, 2024
ce38e11
docs(README): 📖 update `Interval` usage with `Size`
albertms10 Jan 8, 2024
38e78e6
build(pubspec): 🛠️ require Dart SDK `3.3.0-277.0.dev` temporarily
albertms10 Jan 8, 2024
62febc8
Merge branch 'main' into perf/rewrite-interval-size-as-extension-type
albertms10 Jan 8, 2024
5279983
Merge branch 'main' into perf/rewrite-interval-size-as-extension-type
albertms10 Jan 12, 2024
6935275
docs(size): 📖 reference `octave` where possible
albertms10 Jan 12, 2024
0132035
Merge branch 'main' into perf/rewrite-interval-size-as-extension-type
albertms10 Jan 21, 2024
e6d4d7b
Merge branch 'main' into perf/rewrite-interval-size-as-extension-type
albertms10 Jan 27, 2024
1d8feb6
fix(pitch): 🐛 use `Size` wrapper
albertms10 Jan 27, 2024
f0cbf4c
refactor(size): ♻️ move `fromSemitones` static method
albertms10 Jan 27, 2024
ebf20d5
refactor(size): ♻️ rename private `_sizeToSemitones` static const
albertms10 Jan 27, 2024
7859389
refactor(size): ♻️ remove redundant `value` accessor
albertms10 Jan 27, 2024
4a7c80d
test(size): 🧪 include test in `main.dart`
albertms10 Jan 28, 2024
c31b1e0
Merge branch 'main' into perf/rewrite-interval-size-as-extension-type
albertms10 Feb 21, 2024
036a4de
test(interval): 🐛 address invocation of non-const extension type memb…
albertms10 Feb 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ Pitch.parse('Eb3'); // E♭3
Create an `Interval`:

```dart
const Interval.perfect(5, PerfectQuality.perfect); // P5
Interval.P4; // P4
const Interval.perfect(Size.twelfth, PerfectQuality.perfect); // P12
```

Or turn it descending:
Expand Down
2 changes: 1 addition & 1 deletion example/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ void main() {
Pitch.parse('Eb3'); // E♭3

// Intervals
const Interval.perfect(15, PerfectQuality.perfect); // P15
Interval.P4; // P4
const Interval.perfect(Size.twelfth, PerfectQuality.perfect); // P12

-Interval.m6; // desc m6
Interval.M3.descending(); // desc M3
Expand Down
1 change: 1 addition & 0 deletions lib/music_notes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export 'src/harmony/harmonic_function.dart';
export 'src/interval/interval.dart';
export 'src/interval/interval_class.dart';
export 'src/interval/quality.dart';
export 'src/interval/size.dart';
export 'src/key/key.dart';
export 'src/key/key_signature.dart';
export 'src/key/mode.dart';
Expand Down
11 changes: 6 additions & 5 deletions lib/src/chordable.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'harmony/chord.dart';
import 'interval/interval.dart';
import 'interval/quality.dart';
import 'interval/size.dart';

/// A mixin for items that can form chords.
///
Expand Down Expand Up @@ -28,23 +29,23 @@ mixin Chordable<T> {

/// Returns a new [T] adding a [quality] 6th.
T add6([ImperfectQuality quality = ImperfectQuality.major]) =>
add(Interval.imperfect(6, quality));
add(Interval.imperfect(Size.sixth, quality));

/// Returns a new [T] adding a [quality] 7th.
T add7([ImperfectQuality quality = ImperfectQuality.minor]) =>
add(Interval.imperfect(7, quality));
add(Interval.imperfect(Size.seventh, quality));

/// Returns a new [T] adding a [quality] 9th.
T add9([ImperfectQuality quality = ImperfectQuality.major]) =>
add(Interval.imperfect(9, quality));
add(Interval.imperfect(Size.ninth, quality));

/// Returns a new [T] adding an [quality] 11th.
T add11([PerfectQuality quality = PerfectQuality.perfect]) =>
add(Interval.perfect(11, quality));
add(Interval.perfect(Size.eleventh, quality));

/// Returns a new [T] adding a [quality] 13th.
T add13([ImperfectQuality quality = ImperfectQuality.major]) =>
add(Interval.imperfect(13, quality));
add(Interval.imperfect(Size.thirteenth, quality));

/// Returns a new [T] adding [interval].
T add(Interval interval, {Set<int>? replaceSizes});
Expand Down
Loading