music_notes 0.15.0
music_notes: ^0.15.0 copied to clipboard
Comprehensive set of utilities for working with music theory concepts.
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 - 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
- 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
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 - build(pubspec): ⬆️ bump
testto 1.25.0 #326 - test(interval): ⚡️ use
constfor literals #328 - fix(pitch_class): 🐛 return descending intervals in
intervalmethod #286
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 - 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
- docs(README): 📖 fix CI badge #277
- 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
- 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 - chore(deps): ⬆️ bump dart-lang/setup-dart from 1.5.1 to 1.6.0 #296
- docs: 📖 remove type parameter references in doc comments #297
- docs(note): 📖 use regular comments for variables #298
- chore(deps): bump actions/checkout from 4.1.0 to 4.1.1 #299
- feat(tuning): ✨ introduce new
Ratio,Centand move.centsto former class #300 - refactor(tuning_system)!: ♻️ move
referenceNotetoTuningSystem#301 - feat(tuning)!: 💥 add
PythagoreanTuningtuning system #273
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 - ⬆️ chore(deps): bump actions/checkout from 3.5.3 to 3.6.0 #263
- 📖 docs(README): write comprehensive API walkthrough #243
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 - chore(deps): bump coverallsapp/github-action from 2.2.0 to 2.2.1 #217
- ✨ 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
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
- ⬆️ 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
- 💥 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
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