music_notes 0.24.0
music_notes: ^0.24.0 copied to clipboard
A comprehensive Dart library for effortlessly working with music theory concepts.
0.24.0 #
- build(pubspec): 🚚 bump Dart SDK 3.9 #644
- refactor(base_note): ♻️ extract constant values and reuse base note lists #649
- refactor(hearing_range): ♻️ rewrite as an extension of
Range<E>#650 - refactor: ♻️ extract
_parsersdefault value static constant for all.parsefactory methods #651 - feat(tuning_fork): ✨ allow Helmholtz for the scientific notation and rewrite
Frequencynotation system #652 - refactor!(note_name): 💥 rename
BaseNote→NoteName#653 - refactor: ♻️ scope
switchcase variables #654 - refactor(range_extension): ♻️ rewrite
toStringparameter in favor offormatter#655 - refactor: ♻️ make
chainParsersa public static constant #656 - feat(range_extension): ✨ add
RangeIterableExtension.parsemethod #657 - build(pubspec): 🚚 bump Dart SDK 3.10 and use dot shorthands #666
- refactor(note): ♻️ rewrite
GermanNoteNotation.parsemethod #669 - feat(pitch): ✨ add support for numbered Helmholtz pitch notation #670
- test(pitch): 🧪 add test case for repeated zeros in numbered Helmholtz notation #671
- refactor(notation_system): ♻️ split string match responsibilities from
NotationSystem#675
Dependabot updates #
- chore(deps): ⬆️ bump github/codeql-action from 3.30.1 to 3.30.3 in the minor-actions-dependencies group #645
- chore(deps): ⬆️ bump very_good_analysis from 9.0.0 to 10.0.0 #646
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 2 updates #647
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 2 updates #648
- chore(deps): ⬆️ bump github/codeql-action from 3.30.6 to 4.30.8 #658
- chore(deps): ⬆️ bump github/codeql-action from 4.30.8 to 4.30.9 in the minor-actions-dependencies group #660
- chore(deps): ⬆️ bump github/codeql-action from 4.30.9 to 4.31.0 in the minor-actions-dependencies group #662
- chore(deps): ⬆️ bump actions/upload-artifact from 4.6.2 to 5.0.0 #661
- chore(deps): ⬆️ bump github/codeql-action from 4.31.0 to 4.31.2 in the minor-actions-dependencies group #663
- chore(deps): ⬆️ bump actions/checkout from 5.0.0 to 6.0.0 #665
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 2 updates #664
- chore(deps): ⬆️ bump github/codeql-action from 4.31.4 to 4.31.5 in the minor-actions-dependencies group #667
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 2 updates #668
- chore(deps): ⬆️ bump actions/cache from 4.3.0 to 5.0.1 #673
- chore(deps): ⬆️ bump github/codeql-action from 4.31.7 to 4.31.8 in the minor-actions-dependencies group #672
- chore(deps): ⬆️ bump actions/upload-artifact from 5.0.0 to 6.0.0 #674
Full Changelog: v0.23.0...v0.24.0
0.23.0 #
- build(pubspec): 🚚 bump Dart SDK 3.8 #603
- feat(scale_pattern): ✨ add Lydian augmented
name#610 - refactor(note): ♻️ simplify
GermanNoteNotation.noteformatter switch #611 - refactor(equal_temperament): ♻️ move
chromaticDivisionsfrommusic.dart#616 - refactor: ♻️ rename formatters to
*Notation#608 - refactor(pitch): ♻️ rewrite using
NotationSystem#617 - refactor(chord_pattern): ♻️ rewrite clearer formatter for intervals #619
- feat(interval): ✨ override subtract operator and add
intervalStepsextension method #621 - feat(chord_pattern): ✨ add
undermethod #620 - refactor(pitch_class): ♻️ rewrite formatter using
NotationSystem#622 - refactor(tuning_fork): ♻️ rewrite formatter using
NotationSystem#623 - refactor(scale_degree): ♻️ rewrite formatter using
NotationSystem#624 - feat(accidental): ✨ allow using ASCII characters for
SymbolAccidentalNotation#625 - feat(pitch): ✨ allow using ASCII characters for
HelmholtzPitchNotation#626 - feat(pitch): ✨ allow using ASCII characters for
ScientificPitchNotation#627 - feat(closest_pitch): ✨ allow using ASCII characters for
StandardClosestPitchNotation#628 - refactor(notation_system): ♻️ use named groups for regular expressions #629
- refactor(notation_system): ♻️ use regular expressions consistently #632
- feat(note): ✨ add
.textualconstructor toNoteNotationsystems #635 - refactor: ♻️ make textual string representations the default and add
symbolconstructors #636 - perf: ⚡ replace
.toStringcalls in favor of.formatinsideFormatterimplementations #637 - refactor(interval): ♻️ use
sizeNotationRegExp pattern to match theInterval.size#639 - fix(pitch): 🐛 use
noteNotationRegExp to correctly match the note pattern (e.g., German as well) #640 - feat(size): ✨ add
Size.parsefactory method #641
Dependabot updates #
- chore(deps): ⬆️ bump ossf/scorecard-action from 2.4.1 to 2.4.2 in the minor-actions-dependencies group #604
- chore(deps): ⬆️ bump github/codeql-action from 3.28.18 to 3.28.19 in the minor-actions-dependencies group #607
- chore(deps): ⬆️ bump very_good_analysis from 7.0.0 to 9.0.0 #606
- chore(deps): ⬆️ bump github/codeql-action from 3.28.19 to 3.29.0 in the minor-actions-dependencies group #609
- chore(deps): ⬆️ bump github/codeql-action from 3.29.0 to 3.29.1 in the minor-actions-dependencies group #612
- chore(deps): ⬆️ bump github/codeql-action from 3.29.1 to 3.29.2 in the minor-actions-dependencies group #613
- chore(deps): ⬆️ bump github/codeql-action from 3.29.2 to 3.29.4 in the minor-actions-dependencies group #614
- chore(deps): ⬆️ bump github/codeql-action from 3.29.4 to 3.29.5 in the minor-actions-dependencies group #615
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 2 updates #618
- chore(deps): ⬆️ bump actions/checkout from 4.2.2 to 5.0.0 #631
- chore(deps): ⬆️ bump github/codeql-action from 3.29.8 to 3.29.9 in the minor-actions-dependencies group #630
- chore(deps): ⬆️ bump github/codeql-action from 3.29.9 to 3.29.11 in the minor-actions-dependencies group #633
- chore(deps): ⬆️ bump github/codeql-action from 3.29.11 to 3.30.1 in the minor-actions-dependencies group #638
Full Changelog: v0.22.0...v0.23.0
0.22.0 #
- docs(README): 📖 add examples for
Frequency.attemperature method #581 - refactor(map_extension): 🔥 remove unused
recordEntriesutility method #582 - refactor(note): 💥 rewrite
harmonicsmethods to return anIterable#584 - refactor: ♻️ use
Sizeconstants where appropriate #583 - refactor: ♻️ use patterns to succinctly destructure objects #585
- docs(README): 📖 add more similar projects in other languages #588
- docs: 📖 use consistent wording for documentation comments #593
- build(pubspec): 🚚 bump Dart SDK 3.7 #591
- refactor(quality): ♻️ rewrite
compareTowithout relying onruntimeType#594 - test(quality): 🧪 add missing test case for
compareTomethod #600 - feat(note): ✨ add
inOctaveextension methods forNoteandPitchlists #586 - feat(scalable): ✨ add
isStepwisegetter #446 - refactor(interval): ♻️ rewrite notation systems using
Formatter#416 - feat(chord_pattern): ✨ implement the
ChordPatternFormatter#256
Dependabot updates #
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 2 updates #587
- chore(deps): ⬆️ bump github/codeql-action from 3.28.5 to 3.28.8 in the minor-actions-dependencies group #589
- chore(deps): ⬆️ bump github/codeql-action from 3.28.8 to 3.28.9 in the minor-actions-dependencies group #590
- chore(deps): ⬆️ bump dart-lang/setup-dart from 1.7.0 to 1.7.1 in the minor-actions-dependencies group #592
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 4 updates #595
- chore(deps): ⬆️ bump the minor-actions-dependencies group across 1 directory with 3 updates #598
- chore(deps): ⬆️ bump github/codeql-action from 3.28.12 to 3.28.17 in the minor-actions-dependencies group #599
- chore(deps): ⬆️ bump github/codeql-action from 3.28.17 to 3.28.18 in the minor-actions-dependencies group #601
Full Changelog: v0.21.0...v0.22.0
0.21.0 #
- docs(size): 📖 move implementation comments from method documentation #571
- feat(scale_pattern): ✨ add
excludeIntervals method #570 - refactor(scale_pattern): ♻️ use proper
Setargument forexclude#572 - refactor(interval): 💥 simplify
circleFrommethod dropping thedistanceargument #573 - refactor(note): 💥 rewrite
splitCircleOfFifthsmethod to returnIterables #574 - fix(size): 🐛 rewrite
simplegetter without impreciseabsShiftcalc #575 - docs(size): 📖 add clearer binary documentation about
isPerfectimplementation #576 - fix(size): 🐛 rewrite
semitonesgetter without relying on deprecatedabsShift#577 - fix(size): 🐛 use correct
isPerfectassert condition in constructor #578 - ci(analysis): 💚 bump Dart SDK 3.6 #580
- refactor(note): ♻️ rewrite
transposeBymethod withoutabsShift#579
Dependabot updates #
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 2 updates #568
- chore(deps): ⬆️ bump the minor-actions-dependencies group with 2 updates #569
Full Changelog: v0.20.0...v0.21.0
0.20.0 #
- refactor(scale_pattern): ♻️ rename
BinarySequenceextension methods #529 - feat(note): ✨ add
flat,sharp, andnaturalextension methods ofList<Note>#528 - refactor(interval): ♻️ rename
distanceBetweenparameters and simplify return signature #531 - refactor!(interval): 💥 rename
distanceBetween→circleDistance#532 - refactor!(note): 💥 rename
flatCircleOfFifths→circleOfFifthsmethod #533 - fix(pitch): 🐛 address descending intervals in
intervalmethod #285 - feat(interval): ✨ make the class
Respellable#539 - feat(iterable_extension): ✨ add
compact,explodeandformatextension methods #535 - refactor(iterable_extension): ♻️ simplify
compactmethod #541 - perf(iterable_extension): ⚡️ rewrite
closestTowith extension methods #542 - perf: ⚡️ mark
toListcalls as non-growable#540 - fix(size): 🐛 address longstanding issue with
isPerfectin large interval sizes #544
Dependabot updates #
- chore(deps): ⬆️ bump actions/upload-artifact from 4.3.5 to 4.3.6 #526
- chore(deps): ⬆️ bump github/codeql-action from 3.25.15 to 3.26.0 #527
- chore(deps): ⬆️ bump github/codeql-action from 3.26.0 to 3.26.5 #534
- chore(deps): ⬆️ bump actions/upload-artifact from 4.3.6 to 4.4.0 #536
- chore(deps): ⬆️ bump github/codeql-action from 3.26.5 to 3.26.7 #538
- chore(deps): ⬆️ bump actions/checkout from 4.1.7 to 4.2.0 #546
- chore(deps): ⬆️ bump github/codeql-action from 3.26.7 to 3.26.9 #547
- chore(deps): ⬆️ bump github/codeql-action from 3.26.9 to 3.27.0 #558
- chore(deps): ⬆️ bump coverallsapp/github-action from 2.3.0 to 2.3.4 #559
- chore(deps): ⬆️ bump actions/cache from 4.0.2 to 4.1.2 #557
- chore(deps): ⬆️ bump the minor-actions-dependencies group across 1 directory with 2 updates #561
- chore(deps): ⬆️ bump github/codeql-action from 3.27.0 to 3.27.1 in the minor-actions-dependencies group #562
- chore(deps): ⬆️ bump github/codeql-action from 3.27.1 to 3.27.4 in the minor-actions-dependencies group #563
- chore(deps): ⬆️ bump the minor-actions-dependencies group across 1 directory with 2 updates #565
- chore(deps): ⬆️ bump the minor-actions-dependencies group across 1 directory with 2 updates #567
Full Changelog: v0.19.1...v0.20.0](https://github.com/albertms10/music_notes/compare/v0.19.1...v0.20.0)
0.19.1 #
- refactor(interval): 📖 remove ignored
prefer_const_constructorslint #524 - docs(CHANGELOG): 🔖 fix typos and address linked Pull requests #525
Full Changelog: v0.19.0...v0.19.1
0.19.0 #
- chore(pubspec): 🏗️ bump Dart SDK 3.4.0 #499
- chore(analysis_options): 🕵️ enable new lints and fix
unnecessary_library_name#500 - feat!(scalable): 💥 allow providing
referenceinnumericRepresentation#501 - feat!(pitch): 💥 use double, triple, and quadruple prime symbols for Helmholtz notation #502
- refactor(tuning): ♻️ remove
Ratioextension type in favor ofCent.fromRatioconstructor #510 - refactor(utils): ♻️ move
nonZeroSignmethod frominttonumextension #511 - refactor!(interval): 💥 make
isDescendingparameter indescendingmethod positional #521 - chore(pubspec): ⬇️ lower the Dart SDK bound to version 3.3 and upgrade analysis CI to 3.5 #522
- refactor(analysis): 🕵️ add more lint rules and explain ignored diagnostics #523
- feat(utils): ✨ add
Rationalclass representation and test cases #493 - feat!: 💥 make comparator operators agree with
compareToand==#498
Dependabot updates #
- chore(deps): ⬆️ bump github/codeql-action from 3.25.4 to 3.25.5 #504
- chore(deps): ⬆️ bump actions/checkout from 4.1.5 to 4.1.6 #503
- chore(deps): ⬆️ bump github/codeql-action from 3.25.5 to 3.25.8 #507
- chore(deps): ⬆️ bump actions/checkout from 4.1.6 to 4.1.7 #508
- chore(deps): ⬆️ bump github/codeql-action from 3.25.8 to 3.25.10 #509
- chore(deps): ⬆️ bump github/codeql-action from 3.25.10 to 3.25.11 #513
- chore(deps): ⬆️ bump dart-lang/setup-dart from 1.6.4 to 1.6.5 #512
- chore(deps): ⬆️ bump very_good_analysis from 5.1.0 to 6.0.0 #514
- chore(deps): ⬆️ bump actions/upload-artifact from 4.3.3 to 4.3.4 #515
- chore(deps): ⬆️ bump github/codeql-action from 3.25.11 to 3.25.12 #516
- chore(deps): ⬆️ bump github/codeql-action from 3.25.12 to 3.25.15 #518
- chore(deps): ⬆️ bump ossf/scorecard-action from 2.3.3 to 2.4.0 #519
- chore(deps): ⬆️ bump actions/upload-artifact from 4.3.4 to 4.3.5 #520
Full Changelog: v0.18.0...v0.19.0
0.18.0 #
- refactor(note): ♻️ rename
respellByOrdinalDistancemethods #442 - feat(note): ✨ return the next closest spelling in
respellByAccidentalwhen no respelling is possible #443 - refactor(quality): ♻️ move
isDissonantcheck fromInterval#444 - feat(base_note): ✨ add
nextandpreviousgetters #445 - test(interval): 🧪 use shorthand
Sizeconstructors #447 - fix(quality): 🐛 address wrong
isDissonantcondition forImperfectQuality#449 - refactor(scale_pattern): ♻️ extract static bit-related methods #451
- refactor(enharmonic): ♻️ rename
ClassMixin→Enharmonicmixin #452 - refactor(frequency): ♻️ extract
referenceas 440 Hz #454 - feat(note): ✨ take
temperatureinto account when dealing withFrequency#455 - fix(pitch): 🐛 address
harmonicswrongly forwarding parameters #456 - ci(scorecards-analysis): 🧑⚕️ add OSSF Scorecards analysis workflow #458
- test(frequency): 🧪 add test case for chained
closestPitchwithtemperature#459 - refactor(scalable, interval): ♻️ consistently rename
inverse,inverted→inversion#460 - docs(README): 📖 add examples for new methods #461
- fix(pitch): 🐛 address
isEnharmonicWithnot takingoctaveinto account #462 - refactor(pitch): ♻️ extract
referencestatic constant #463 - refactor: ♻️ remove unnecessary
@immutableannotation on extension types #464 - docs(README): 📖 address
BaseNotestring representation examples #465 - feat!(tuning): ✨ add new
TuningForkclass and refactorTuningSystemaccordingly #466 - refactor(frequency): ♻️ move
atand extractCelsius.ratiomethods #467 - refactor(cent): ♻️ extract
divisionsPerSemitoneand renameoctave#471 - refactor(frequency): ♻️ expose
referenceTemperatureparameter #472 - feat(closest_pitch): ✨ add
respelledSimplegetter #473 - feat(closest_pitch): ✨ add
+,-operators #474 - refactor(scale_pattern): ♻️ extract bit-related methods into
BinarySequenceextension #479 - feat(scale_pattern): ✨ add double harmonic major scale #482
- refactor(scale_pattern): ♻️ extract bit-related methods into
BinarySequenceextension #489 - test(closest_pitch): 🧪 add test cases for
toStringrounding #491 - chore(pubspec): 🚚 use correct
repositoryURL #492 - fix(pitch): 🐛 address large
ClosestPitchspellings forharmonicswithtemperature#470 - feat!(interval): ✨ add
fromSemitones(int)and renamefromSizeAndSemitonesfactory constructors #476 - refactor(hearing_range): ♻️ rename
isAudibleAtmethod #457
Dependabot updates #
- chore(deps): ⬆️ bump actions/checkout from 4.1.1 to 4.1.2 #448
- chore(deps): ⬆️ bump actions/cache from 4.0.1 to 4.0.2 #450
- chore(deps): ⬆️ bump actions/upload-artifact from 4.1.0 to 4.3.1 #469
- chore(deps): ⬆️ bump github/codeql-action from 3.24.9 to 3.24.10 #478
- chore(deps): ⬆️ bump dart-lang/setup-dart from 1.6.2 to 1.6.4 #480
- chore(deps): ⬆️ bump actions/upload-artifact from 4.3.1 to 4.3.3 #487
- chore(deps): ⬆️ bump actions/checkout from 4.1.1 to 4.1.4 #486
- chore(deps): ⬆️ bump github/codeql-action from 3.24.10 to 3.25.3 #488
- chore(deps): ⬆️ bump actions/checkout from 4.1.4 to 4.1.5 #497
- chore(deps): ⬆️ bump ossf/scorecard-action from 2.3.1 to 2.3.3 #495
- chore(deps): ⬆️ bump coverallsapp/github-action from 2.2.3 to 2.3.0 #496
- chore(deps): ⬆️ bump github/codeql-action from 3.25.3 to 3.25.4 #494
Full Changelog: v0.17.1...v0.18.0
0.17.1 #
- fix(deps): 🚚 move
testto dev_dependencies #441
Full Changelog: v0.17.0...v0.17.1
0.17.0 #
- refactor!(key_signature): ♻️ rewrite
keysmethod to return a Map #401 - docs(README): 📖 remove unit symbol from
Frequencyexamples #402 - feat!(interval): ✨ use negative
Sizeas descending string representation #403 - refactor(interval): ♻️ extract
IntervalNotationsystem #404 - feat!(note): 🔥 use
RomanceNoteNotationinstead of Italian and French #405 - refactor(note): ♻️ allow overriding
accidentalfromNoteNotation#406 - test(closest_pitch): 🧪 add more tests for
parseconstructor #407 - refactor(note): ♻️ extract common
GermanNoteNotationsystem into the dedicatedaccidentalmethod #408 - docs: 📖 simplify public API return documentation #409
- refactor(interval): ♻️ rename
StandardIntervalNotation#410 - refactor(scale_degree): ♻️ extract
StandardScaleDegreeNotation#411 - feat(scale_degree): 🥅 assert
ordinalandinversioninteger values #412 - refactor!(mode): ♻️ rename
opposite→parallelmethod #414 - refactor(note): ♻️ simplify
GermanNoteNotation.accidental#415 - refactor: ♻️ rewrite unnecessary
switchexpressions withifstatements #419 - fix(key): 🐛 use lowercased
TonalModeinNoteNotation.germankeys #421 - feat(scale_degree): ✨ add
invertedgetter #422 - refactor(scale_degree): ♻️ extract
romanNumeralgetter #423 - docs: 📖 comprehensively document common
toStringmethods and theirsystems #424 - refactor(scale_degree): ♻️ use new
copyWithmethod to update individual properties #425 - feat(interval): ✨ add comparison operators
<,<=,>, and>=#426 - test(just_intonation): 🧪 use
closeTowith ideal ratio inratiouse cases #427 - feat(key_signature): ✨ add
incrementBymethod #428 - feat!: 💥 make main entity collections unmodifiable #429
- feat(scale_pattern): ✨ make equality enharmonic #394
- refactor(scalable): ♻️ extract
isEnharmonicWithextension method #430 - feat(scale_pattern): ✨ add binary representation methods #392
- refactor(scale_pattern): ♻️ simplify binary to integer conversion #431
- feat(iterable_extension): ✨ allow overriding
differenceinclosestTomethod #327 - feat(pitch): ✨ add helper
harmonicsmethod #432 - feat(pitch): ✨ add Helmholtz notation German and Romance variants #433
- feat(interval): ✨ make
perfectconstructor default toPerfectQuality.perfect#435 - feat(size): ✨ add shorthand getters to create an
Interval#436 - refactor(size): ♻️ split
PerfectSizeandImperfectSizesub-extension types #437 - refactor(size): ♻️ redeclare
simplein extension types to allow chaining #438 - feat(size): ✨ add
inverted,isDissonantgetters moved fromInterval#439
Dependabot updates #
- chore(deps): ⬆️ bump actions/cache from 4.0.0 to 4.0.1 #418
Full Changelog: v0.16.0...v0.17.0
0.16.0 #
- test: ♻️ shorten test descriptions by dropping should #372
- refactor!(key_signature): ♻️ change operator
+→|#373 - feat(closest_pitch): ✨ add
frequencymethod #374 - test(note): 🧪 add edge test cases for
circleOfFifthsDistance#375 - refactor(pitch): ♻️ reuse default
Note.toStringreturn value forScientificPitchNotation#376 - feat(tonality): ✨ add
isTheoreticalgetter #377 - feat(pitch): ✨ add comparison operators
<,<=,>, and>=#379 - feat(pitch): ✨ add
midiNumbergetter #378 - refactor!(key): ♻️ rename
Tonality→Key#380 - docs(key): 📖 addendum to rename
Tonality→Key#381 - test(note): 🧪
skipfailing tests #382 - feat(scale): ✨ add
lengthgetter #383 - feat(note): ✨ rename
toPitchClassand createPitch.toClassmethods #385 - refactor: ♻️ enforce
@immutableand declarefinalNotation classes #386 - refactor: ♻️ rewrite
part ofdirectives in mini libraries #387 - test: 🧪 remove unnecessary
equalsmatcher #388 - refactor(scalable): ♻️ move
toClassmethod fromPitch#391 - feat(scale): ✨ add
isEnharmonicWithmethods #393 - build(pubspec): 🏗️ bump Dart SDK 3.3 #395
- perf(tuning): ⚡️ rewrite
Cent,Ratioas extension types #312 - docs(pitch_class): 📖 add more examples for
operator *#396 - feat!(equal_temperament): 💥 remove default parameter value from
ratioFromSemitones#397 - docs(tuning_system): 📖 rename old
ratioFromNoteexamples #398 - docs(README): 🌟 add Star History Chart #399
- perf(frequency): ⚡️ rewrite as extension type #349
- refactor(interval): ♻️ rewrite
Sizeas extension type #311 - test(scalable): ⚡️ use
constcollection literals whenever possible #400
Dependabot updates #
- chore(deps): ⬆️ bump actions/cache from 3.3.3 to 4.0.0 #384
- chore(deps): ⬆️ bump dart-lang/setup-dart from 1.6.1 to 1.6.2 #390
Full Changelog: v0.15.0...v0.16.0
0.15.0 #
- refactor(tonality): ♻️ rewrite
toStringmethod intoNoteNotation#329 - refactor: ♻️ rename methods from
Notationsystems #330 - perf(key_signature): ⚡️ use
emptywhenever possible #331 - feat(accidental): ✨ add
isNaturalgetter #332 - docs(key_signature): 📖 address wrong
constkeyword #333 - docs: 📖 add examples to
spellingsmethods #334 - feat(note): ✨ compare
spellingsby closest distance #335 - refactor(note): ♻️ extract
switchexpression to a local variable inGermanNoteNotation.tonality#336 - refactor(interval): ♻️ use
descendingincircleFrom#337 - refactor(frequency): ♻️ rewrite
ClosestPitchrecord into a class #339 - refactor(frequency): ♻️ extract
humanHearingRangerecord #338 - refactor(closest_pitch): ♻️ move class to a new file #341
- feat(cent): ✨ override negation operator #342
- feat!(closest_pitch): 💥 remove
hertzmember #343 - feat(pitch): ✨ add
+,-operators #344 - refactor(frequency): ♻️ rewrite
HearingRangerecord into a class #340 - refactor!(cent): ♻️ rename redundant
unitSymbolstatic constant #345 - refactor: ♻️ infer types from
static constmembers #346 - chore(gitignore): 🙈 ignore the
tooldirectory instead ofbin#347 - refactor(frequency): ♻️ use
numforhertz#348 - refactor(tuning_system): ♻️ rename
pitchparameter fromratio#350 - feat(closest_pitch): ✨ add
parsefactory constructor #351 - docs(tuning_system): 📖 rename
generatorgetter examples #352 - refactor(quality): ♻️ extract symbols to static constants #353
- refactor(quality): ♻️ move diminished and augmented symbols to
Quality#354 - refactor(interval): ♻️ rename
fromQualitySemitonesfactory constructor #355 - refactor!(quality): ♻️ rename
abbreviation→symbolgetter #356 - refactor(frequency): ♻️ use
accidental.isSharpto check whetherisCloserToUpwardsSpelling#357 - docs(key_signature): 📖 add examples to
fromDistancefactory constructor #358 - feat(key_signature): ✨ add
cleangetter to support cancellation naturals #359 - feat(note): ✨ add
naturalgetter #360 - docs: 📖 remove wrong const keywords #361
- docs(accidental): 📖 add symbols to
static constmembers #366 - feat(note): ✨ add
showNaturaloption toEnglishNoteNotation#365 - feat(key_signature): ✨ override
+operator #362 - feat(key_signature): ✨ show cautionary accidentals in
+when not present inother#367 - feat(tonality): ✨ add
parallelgetter #368 - fix(key_signature): 🐛 show each cancelled accidental once in edge key signatures #369
- perf(interval): ⚡️ rewrite
circleFromas a sync generator #370 - feat!(key_signature): 💥 check for
isCanonicalbefore evaluatingdistance#371
Dependabot updates #
- chore(deps): ⬆️ bump dart-lang/setup-dart from 1.6.0 to 1.6.1 #363
- chore(deps): ⬆️ bump actions/cache from 3.3.2 to 3.3.3 #364
Full Changelog: v0.14.0...v0.15.0
0.14.0 #
- feat(equal_temperament): ✨ override
toString,operator ==, andhashCode#302 - refactor(equal_temperament)!: ♻️ rewrite octave divisions #304
- refactor(interval): ♻️ declare and reassign dynamic
notesin record #305 - feat(accidental): ✨ add
namecases for all accidentals #306 - refactor(pitch): ♻️ rename
PositionedNote→Pitch#308 - docs: 📖 add related entities in class documentation #309
- feat(note): ✨ add optional
NotationSystemtotoStringmethods #307 - build(pubspec): ⬆️ upgrade Dart SDK 3.2 #310
- feat!(pitch): 💥 move
scientificNameandhelmholtzNametotoString#313 - refactor!(note): ♻️ rename
NotationSystem→NoteNotation#314 - refactor!(pitch_class): ♻️ move
integerNotationtotoString#315 - refactor(note): ♻️ use
majorgetter incircleOfFifthsDistance#317 - docs(transposable): 📖 simplify
transposeBydocumentation #318 - feat(accidental): ✨ add
isFlat,isSharpgetters #319 - refactor(note): ♻️ rewrite notation systems to allow extending behavior #316
- refactor: ♻️ rename
toClassmethods #320 - docs(README): 📖 use varied descending
Intervalexample #323 - refactor(scalable): ♻️ move
semitonesto abstract class #324 - feat!(scalable): 💥 make
differencereturn the closest number of semitones #325 - feat(scalable): ✨ add
inverse,retrogradegetters toScalableIterable#287 - test(interval): ⚡️ use
constfor literals #328 - fix(pitch_class): 🐛 return descending intervals in
intervalmethod #286
Dependabot updates #
- build(pubspec): ⬆️ bump
testto 1.25.0 #326
Full Changelog: v0.13.0...v0.14.0
0.13.0 #
- fix(note)!: 💥 remove
semitoneschromatic modulo #265 - feat(positioned_note): ✨ add respelling methods #266
- feat(frequency)!: ✨ improve
closestPositionedNoteenharmonic spelling #267 - feat(frequency): ✨ add
harmonicsrelated methods #268 - feat(frequency): ✨ add
displayStringextension method onClosestPositionedNote#269 - docs(README): 📖 update recently added methods #270
- feat(positioned_note): ✨ rename frequency method and expose
tuningSystem#271 - feat(interval)!: ✨ include
notesindistanceBetweenrecord #272 - docs(README): 📖 fix CI badge #277
- refactor(chordable): ♻️ expect a
SetforreplaceSizes#280 - perf(scalable): ⚡️ rewrite extension methods to return
Iterable#281 - refactor(scalable): ♻️ override
differenceand implement inPitchClass#283 - refactor(interval_class): ♻️ rewrite
Interval.fromSemitonesQualityasresolveClosestSpelling#284 - docs(note): 📖 improve overall methods documentation #288
- refactor(interval): ♻️ call
fromDeltainfromSemitonesconstructor #289 - refactor(quality): ♻️ move
fromIntervalintoInterval.fromQualityDelta#290 - feat(note): ✨ add
isEnharmonicWithmethod #291 - refactor(test): ♻️ create a
SplayTreeSetof a Set instead of a List #292 - refactor(int_extension): ♻️ extract
nonZeroSignmethod #293 - docs(positioned_note): 📖 address documentation examples #295
- perf(key_signature): ⚡️ remove unneeded variable declaration in
tonality#294 - docs: 📖 remove type parameter references in doc comments #297
- docs(note): 📖 use regular comments for variables #298
- feat(tuning): ✨ introduce new
Ratio,Centand move.centsto former class #300 - refactor(tuning_system)!: ♻️ move
referenceNotetoTuningSystem#301 - feat(tuning)!: 💥 add
PythagoreanTuningtuning system #273
Dependabot updates #
- chore(deps): ⬆️ bump actions/cache from 3.3.1 to 3.3.2 #274
- chore(deps): ⬆️ bump coverallsapp/github-action from 2.2.1 to 2.2.3 #275
- chore(deps): ⬆️ bump actions/checkout from 3.6.0 to 4.0.0 #276
- chore(deps): ⬆️ bump dart-lang/setup-dart from 1.5.0 to 1.5.1 #278
- chore(deps): ⬆️ bump actions/checkout from 4.0.0 to 4.1.0 #279
- chore(deps): ⬆️ bump dart-lang/setup-dart from 1.5.1 to 1.6.0 #296
- chore(deps): ⬆️ bump actions/checkout from 4.1.0 to 4.1.1 #299
Full Changelog: v0.12.0...v0.13.0
0.12.0 #
- ⚡️ perf(chord_pattern): call
sortinstead of creating aSplayTreeSet#232 - ♻️ refactor(chord): reuse
augmented,major,minor,diminishedmethods fromChordPattern#233 - ♻️ refactor(scalable): extract private
_ScalableIterableextension #234 - 📖 docs(music_notes): add library-level documentation comment #235
- ♻️ refactor: sort members following
diminished..augmentedorder #236 - 📖 docs: add full public member API documentation #237
- ✨ feat(interval)!: simplify
toStringandQuality.abbreviation#238 - 🥅 feat(quality): strengthen
parseexception cases #239 - 🥅 feat(positioned_note): strengthen
parseexception cases #240 - ♻️ refactor(iterable): rename
comparatorvariable #241 - ♻️ refactor(positioned_note): extract
octavevariable inparseto improve readability #242 - ✨ refactor(pitch_class)!: rename
EnharmonicNote→PitchClass#244 - ✨ feat(pitch_class): add
integerNotationgetter #245 - ✨ feat(pitch_class): move modulo operation to the constructor #246
- ✨ feat(interval_class)!: rename
EnharmonicInterval→IntervalClass#247 - ♻️ refactor(int_extension): simplify modulo methods #249
- ♻️ refactor(enharmonic): remove unnecessary interface #250
- 💥 feat(tuning_system): generalize
centsmethod expectingratioinstead ofsemitones#251 - 🚀 feat(frequency): add
closestPositionedNotemethod #252 - ♻️ refactor(positioned_note): rename
equalTemperamentFrequencyreference parameters consistently #253 - ✨ feat: add
toPitchClassandtoIntervalClassmethods #254 - ♻️ refactor(base_note): rewrite
transposeBySizeusingincrementBy#255 - ♻️ refactor(chord_pattern): rename
fromIntervalStepsfactory constructor #257 - ♻️ refactor(scalable): rename
_intervalStepsgetters from_ScalableIterable#258 - ⚡️ perf(interval_class): remove unnecessary
abscall onoperator *#259 - ✨ feat(accidental): add
operator +-#260 - ⚡️ perf: rewrite
mapcalls in favor offorloops #261 - 📖 docs(README): write comprehensive API walkthrough #243
Dependabot updates #
- ⬆️ chore(deps): bump actions/checkout from 3.5.3 to 3.6.0 #263
Full Changelog: v0.11.1...v0.12.0
0.11.1 #
- 📌 chore(pubspec): downgrade
testto 1.24.1 to keep Flutter compatibility #231
Full Changelog: v0.11.0...v0.11.1
0.11.0 #
- 📄 docs(README): update license badge #207
- 📖 docs(README): fix typo in C♯ example #208
- ♻️ refactor(positioned_note)!: make
octaveargument required #209 - 📖 docs(note): update missing
inOctaveexamples #210 - ♻️ refactor: use
incrementBymethod #211 - ♻️ refactor(interval): remove redundant
Scalable<T>types #212 - 📖 docs(scale): fix wrong
functionChordexamples #213 - ✨ feat(note): add
respellByBaseNoteDistancemethod #214 - ✨ feat(enharmonic): allow providing
distancetospellings#215 - ♻️ refactor(accidental): extract parsable symbols from
parse#216 - ✨ feat(enharmonic): remove semitones from
toStringoutput #218 - ✨ feat(enharmonic): use pipe
|intoStringoutput #219 - 💥 refactor(note)!: rewrite semitones starting from 0 instead of 1 #220
- ⚡ perf(positioned_note): extract
parseexpressions to static finals #221 - 💥 feat(interval)!: move
isDissonantgetter fromIntervalSizeExtension#222 - ♻️ refactor(interval)!: move
invertedlogic fromIntervalSizeExtension#223 - ♻️ refactor(interval): move
simplifiedfromIntervalSizeExtension#224 - ♻️ refactor(interval): move
isCompoundfromIntervalSizeExtension#225 - 📖 docs(interval_size_extension): improve
semitonesandisPerfectcomments #226 - 📌 chore(pubspec): downgrade
collectionto 1.17.1 to keep Flutter compatibility #228 - ➖ chore(pubspec): remove
dart_code_metricsdependency #229 - 💥 refactor(interval)!: rewrite
IntervalSizeExtensionmethods as private #227
Dependabot updates #
- ⬆️ chore(deps): bump coverallsapp/github-action from 2.2.0 to 2.2.1 #217
Full Changelog: v0.10.1...v0.11.0
0.10.1 #
- ✨ feat(interval): take
distancesign into account incircleFrom#199 - ✨ feat(enharmonic_note): add pitch-class multiplication operator #200
- ♻️ refactor(base_note): rename
fromSemitonesstatic method #201 - 🔥 refactor(enharmonic_note)!: remove
shortestFifthsDistancemethods #202 - ✨ feat(tuning_system): add class and test cases #203
- 📖 docs(README): write main library documentation #204
- 📌 chore(pubspec): pin dependencies versions #205
- 📖 docs(README): remove publisher badge #206
Full Changelog: v0.10.0...v0.10.1
0.10.0 #
Note: the published versioned erroneously contained some changes from 0.10.1.
- ♻️ refactor(interval): rename shorter static constants #177
- ✨ feat(string_extension): add
isUpperCaseandisLowerCasegetters #179 - ✨ feat: add
parsefactory constructors to Note and Interval classes #180 - 🔧 chore(dependabot): add configuration file #181
- 💥 feat(key_signature)!: rewrite based on a list of Notes #184
- ♻️ refactor(key_signature): declare static
emptyconstant #185 - ♻️ refactor(key_signature): simplify tonality methods #186
- 🐛 fix(note): return correct distance for extreme Note spellings #187
- ⚡ perf(interval): rewrite
distanceBetweenmethod avoiding unnecessary iterations #188 - ♻️ refactor(base_note): rewrite
parsemethod usingbyName#189 - ✨ feat(note): add respelling methods #190
- ✨ feat(note): add
respelledSimplegetter #191 - ✨ feat(int_extension): add
incrementBymethod #192 - ✨ feat(interval): add
circleFromand related methods onNote#193 - ✨ feat(interval): add
respellBySizemethod #195 - ✨ feat(key_signature)!: rewrite
toStringmethod #196 - ♻️ refactor(analysis): enable ignored lints #197
- ✨ feat(interval): rewrite distance methods expecting
Scalablearguments #198
Dependabot updates #
- ⬆️ chore(deps): bump actions/checkout from 3.5.0 to 3.5.3 #182
- ⬆️ chore(deps): bump coverallsapp/github-action from 2.0.0 to 2.2.0 #183
Full Changelog: v0.9.0...v0.10.0
0.9.0 #
- fix(scale): take descending items into account for
hashCode#151 - test(note): add test cases for
sharp,flat,major,minorgetters #152 - test(enharmonic): move each
toStringtest cases to implementation #153 - feat(harmony): add
ChordandChordPatternclasses #154 - fix(positioned_note): use correct
hashCodevalues #155 - fix(interval_size_extension): return correct
semitonesfor large intervals #156 - fix(note): correctly handle compound intervals in
transposeBy#157 - feat(chord): implement
Transposable#158 - feat(chord_pattern): add
intervalStepsfactory constructor #159 - test(interval): add compound intervals test cases for
semitones#160 - feat(interval): add
simplifiedgetter #161 - refactor: rename
from→on#162 - feat(note): add Chord triad getters #163
- feat(scale): add
ScaleDegreeclass and methods onScale#164 - feat(chord_pattern): add
fromQualityfactory constructor #165 - feat(scale_degree): add
raised,lowered,major, andminorgetters #167 - feat(scale_pattern): take
ScaleDegree.qualityinto account indegreePattern#166 - feat(scale_pattern): add
fromChordPatternfactory constructor #168 - feat(scale): add
degreeand renamedegreeChordmethods #169 - refactor(scale): rename
items→degrees#170 - refactor(scale_degree): rename
degree→ordinal#171 - refactor(scale_pattern): extract helper functions to simplify
degreePatternmethod #172 - feat(chord_pattern): add
augmented,major,minor, anddiminishedgetters #173 - fix(chord): correctly identify compound intervals in
patterngetter #174 - feat(harmony): make
Chordimplement extractedChordablemixin methods #175 - chore(pubspec): bump version 0.9.0 #178
- feat(harmonic_function): add class and
Scalemethod #176
Full Changelog: v0.8.0...v0.9.0
0.8.0 #
- refactor(scale_pattern): rename class #128
- refactor(scale_pattern): rename test file #129
- feat(frequency): add
+,-,*,/operators #130 - test(interval_size_extension): add test cases for large
semitones#131 - feat(interval): show quality semitones on
nullabbreviation intoString#133 - feat(base_note)!: remove support for
intervalSizeisDescendingargument #134 - feat(scalable): add abstract interface with
intervalmethod #135 - feat(interval): add
+operator #136 - fix(scale_pattern): check for
descendingIntervalStepsin==#137 - feat(scale_pattern): include descending steps in
toString#138 - fix(scale_pattern): return
mirroredScale with descending steps #141 - feat(scale)!: add new class with
patternandreversedgetters #139 - fix(scale_pattern): return correct descending
PositionedNotescale infrom#142 - refactor(scalable): move to root
libdirectory #143 - feat(enharmonic_interval): add
isDescending,descendingmethods #144 - test(enharmonic_interval): add test cases for
isDescending,descendingmethods #145 - chore(pubspec): bump versions as of
very_good_analysis5.0.0+1 #146 - feat(positioned_note): add reference
noteforequalTemperamentFrequency#147 - refactor(note): rename
fifthsDistanceWithmethod #148 - test(note): reference failing tests related to #149 #150
Full Changelog: v0.7.0...v0.8.0
0.7.0 #
- refactor: Extract Frequency #112
- refactor: normalize
isNegativecondition #116 - feat(frequency): override
toString,==,hashCode, andcompareTomethods #117 - feat(frequency): assert positive
hertzvalue #118 - refactor(positioned_note)!: use
Frequencyas a reference #119 - refactor: remove
MusicIteminterface #115 - refactor: PositionedNote composition with Note instead of inheritance #113
- test(positioned_note): add more test cases for
semitonesFromRootHeight#120 - refactor(transposable): add generic constraint #99
- refactor(base_notes): rename
Notes→BaseNote#121 - refactor(enharmonic_note): remove redirecting method on
enharmonicIntervalDistance#122 - refactor!: consistently rename
isDescending#123 - feat(note): add Tonality
majorandminorgetters #124 - refactor(base_note): rename
transposeBySizemethod #125 - docs(note): migrate missing
PositionedNotedocumentation #126 - feat(note): add
sharp,flatgetters #127
Full Changelog: v0.6.0...v0.7.0
0.6.0 #
- refactor(interval): extract and reuse
_sizeAbsShiftgetter #97 - refactor(mode): rename
comparestatic method #98 - feat(positioned_note)!: allow passing
a4HertzstoisHumanAudibleAt#100 - feat(note): add
circleOfFifthsDistancegetter #101 - feat(note): add
compareByFifthsDistancestatic comparator #102 - feat(interval): add
descendingmethod #103 - feat(scale): add
descendingIntervalSteps#104 - chore: bump versions as of Dart SDK 3.0 #105
Full Changelog: v0.5.1...v0.6.0
0.5.1 #
- feat(scale): allow passing
EnharmonicNotetofromNote#91 - fix(enharmonic_interval): handle descending intervals in
items#92 - refactor(quality)!: rename
doubletodoubly#93 - refactor(enharmonic): rename
items→spellings#94 - fix(interval_size_extension): address
simplifiedcompound interval sizes #95 - feat(interval): show simplified interval in
toString#96
Full Changelog: v0.5.0...v0.5.1
0.5.0 #
- feat(enharmonic_interval): suppress semitones limit #64
- perf(interval): simplify
isPerfectlogic #65 - refactor(accidental): rewrite
symbolgetter using explanatory variables #66 - feat(int_interval_extension): allow compound intervals in
fromSemitones#67 - feat(enharmonic_interval)!: rewrite distance
semitonesstarting from 0 #68 - refactor(enharmonic_interval): change
Transposablewith add/subtract operators #69 - feat(note): implement
Transposable#70 - refactor(interval): add static const constructors #71
- feat(scale): add class and
fromNotemethod #72 - feat(interval)!: change
descendingwith negativesize#73 - refactor(interval_size_extension): rename extension #74
- feat(interval): add negation and multiplication operators #75
- feat(key_signature): throw an assertion error when passing a wrong
Accidental#77 - feat(scale): add
mirrored,namemethods and override==#79 - feat(mode)!: rewrite
Modeenums #78 - feat(tonality): add
scaleNotesgetter #80 - feat(positioned_note): override
transposeBymethod #81 - docs: add Wikipedia links to
ScaleandMode#82 - feat(mode)!: use
brightnessas the Dorian Brightness Quotient #83 - refactor(positioned_note): improve
helmholtzNamegetter legibility #84 - refactor: replace
quiverpackage with nativeObject.hash#85 - chore(vscode): add
.lockfile association with YAML #86 - feat(interval): add
isDescendinggetter #87 - test(interval): add more test cases for descending
Interval#76 - refactor: replace
EnharmonicNotewithNotefortransposeBy#88 - fix(key_signature): use XOR in 0 accidentals assertions #89
- refactor(note): rewrite
fromRawAccidentalsintoKeySignature.majorNote#90
Full Changelog: v0.4.0...v0.5.0
0.4.0 #
- test: consistently group test cases by content #22
- fix(enharmonic_note): address edge cases for
itemsgetter #23 - feat(accidental): bring
incrementmethod back #24 - test: add test cases for
toStringmethods #25 - test(key_signature): add test cases for
tonalitiesgetter #26 - test(key_signature): add test cases for
fromDistancemethod #27 - feat: implement and test Comparable #28
- feat(accidental): show positive sign in
toString#29 - feat(key_signature): remove × sign in
toString#30 - test(music): add test case for
circleOfFifths#31 - test(enharmonic): add test cases for
toString#32 - test(interval): add test cases for
toString#33 - test(enharmonic_interval): add test cases for
transposeBy#34 - refactor(music_item): implement
Comparableand mark as immutable #35 - test: compare
.hashCodeSet as a List #36 - feat(tonality): improve
compareTosorting by note and mode #37 - test(interval): add test cases for interval-related members #39
- feat(intervals): add
isCompoundgetter #40 - test(intervals): add test cases for
fromSemitones#41 - feat!: rewrite
Qualitiesenum with properQualityclass #42 - feat(intervals): add
isDissonantgetter #43 - refactor(enharmonic_interval): add static const constructors #44
- feat(interval)!: replace
Intervalsenum withintvalue #45 - docs: document
Qualityclass and rewrite Example consistently #46 - feat(accidental): add
namegetter #47 - feat(enharmonic_note): add
toClosestNotemethod #48 - fix(note): simplify
fromRawAccidentalsaccidental increment #49 - refactor(quality): move
qualityFromDeltatoQuality.fromIntervalfactory constructor #51 - refactor(interval): move
EnharmonicInterval.fromDesiredSemitones#52 - test(interval): add test cases for
inverted#53 - refactor(notes): address
intervalSizedescending logic #54 - test(note): add test cases for
difference#55 - refactor(tonality): add static const constructors #56
- feat(note): add
octavemember #57 - feat(note): add scientific and Helmholtz notation getters #58
- feat(note): add
equalTemperamentFrequency#59 - feat(note): add
isHumanAudiblemethod #60 - refactor(positioned_note): move
Notemethods to subclass #61 - test(tonality): add test cases for
relative,keySignaturemethods #62 - refactor(music_item): remove unnecessary private constructors #63
Full Changelog: v0.3.0...v0.4.0
0.3.0 #
- chore: bump versions as of Dart SDK 2.19 #7
- refactor(accidental): rewrite new
Accidentalclass #8 - docs: reference new
Accidentalclass instead of enum #9 - refactor: make
Accidental.naturaldefault #10 - refactor(enharmonic): rewrite based on
semitones#11 - refactor(notes): rename notes using the English convention #12
- refactor(accidental): rename
value→semitones#13 - refactor(note): add static const constructors #14
- refactor(src): reorganize directories by content #15
- refactor: rewrite
enummembers #16 - refactor(relative_tonalities): remove class #17
- refactor(int_mod_extension): rewrite mod functions into extension methods #18
- refactor(note): move fifths distance functions to class methods #19
- perf(tests): run tests from index
main.dartfile #20 - chore(pubspec): bump version 0.3.0 #21
Full Changelog: v0.2.0...v0.3.0
0.2.0 #
Music #
- (feat) Add
hashCodemethods 528010d
Note
- (fix) Add
fromRawAccidentalsmethod 5c2f663
Accidentals
- (feat) Added methods for incrementing and decrementing Accidentals value 54c107e 092a5fc
- (feat) Added Accidentals symbols 9ebbd18
Codebase #
- (feat) Coveralls integration 12fc7fa
- (style) Adopt
very_good_analysis’ strict lint rules 9508807 9139c38 2577579 - (refactor) Migrate to
null-safety#1 15d1eab - (refactor) Rename and translate enum values b481ef5
- chore(deps): override
metav1.6.0 #3 - chore(deps): bump versions as of Dart SDK 2.16 #5
- refactor(enums): replace
toTextwith nativenamegetter #6
Full Changelog: v0.1.0...v0.2.0