Skip to content

Latest commit

 

History

History
650 lines (551 loc) · 62.4 KB

CHANGELOG.md

File metadata and controls

650 lines (551 loc) · 62.4 KB

0.19.1

  • refactor(interval): 📖 remove ignored prefer_const_constructors lint #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 reference in numericRepresentation #501
  • feat!(pitch): 💥 use double, triple, and quadruple prime symbols for Helmholtz notation #502
  • refactor(tuning): ♻️ remove Ratio extension type in favor of Cent.fromRatio constructor #510
  • refactor(utils): ♻️ move nonZeroSign method from int to num extension #511
  • refactor!(interval): 💥 make isDescending parameter in descending method 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 Rational class representation and test cases #493
  • feat!: 💥 make comparator operators agree with compareTo and == #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 respellByOrdinalDistance methods #442
  • feat(note): ✨ return the next closest spelling in respellByAccidental when no respelling is possible #443
  • refactor(quality): ♻️ move isDissonant check from Interval #444
  • feat(base_note): ✨ add next and previous getters #445
  • test(interval): 🧪 use shorthand Size constructors #447
  • fix(quality): 🐛 address wrong isDissonant condition for ImperfectQuality #449
  • refactor(scale_pattern): ♻️ extract static bit-related methods #451
  • refactor(enharmonic): ♻️ rename ClassMixinEnharmonic mixin #452
  • refactor(frequency): ♻️ extract reference as 440 Hz #454
  • feat(note): ✨ take temperature into account when dealing with Frequency #455
  • fix(pitch): 🐛 address harmonics wrongly forwarding parameters #456
  • ci(scorecards-analysis): 🧑‍⚕️ add OSSF Scorecards analysis workflow #458
  • test(frequency): 🧪 add test case for chained closestPitch with temperature #459
  • refactor(scalable, interval): ♻️ consistently rename inverse, invertedinversion #460
  • docs(README): 📖 add examples for new methods #461
  • fix(pitch): 🐛 address isEnharmonicWith not taking octave into account #462
  • refactor(pitch): ♻️ extract reference static constant #463
  • refactor: ♻️ remove unnecessary @immutable annotation on extension types #464
  • docs(README): 📖 address BaseNote string representation examples #465
  • feat!(tuning): ✨ add new TuningFork class and refactor TuningSystem accordingly #466
  • refactor(frequency): ♻️ move at and extract Celsius.ratio methods #467
  • refactor(cent): ♻️ extract divisionsPerSemitone and rename octave #471
  • refactor(frequency): ♻️ expose referenceTemperature parameter #472
  • feat(closest_pitch): ✨ add respelledSimple getter #473
  • feat(closest_pitch): ✨ add +, - operators #474
  • refactor(scale_pattern): ♻️ extract bit-related methods into BinarySequence extension #479
  • feat(scale_pattern): ✨ add double harmonic major scale #482
  • refactor(scale_pattern): ♻️ extract bit-related methods into BinarySequence extension #489
  • test(closest_pitch): 🧪 add test cases for toString rounding #491
  • chore(pubspec): 🚚 use correct repository URL #492
  • fix(pitch): 🐛 address large ClosestPitch spellings for harmonics with temperature #470
  • feat!(interval): ✨ add fromSemitones(int) and rename fromSizeAndSemitones factory constructors #476
  • refactor(hearing_range): ♻️ rename isAudibleAt method #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 test to dev_dependencies #441

Full Changelog: v0.17.0...v0.17.1

0.17.0

  • refactor!(key_signature): ♻️ rewrite keys method to return a Map #401
  • docs(README): 📖 remove unit symbol from Frequency examples #402
  • feat!(interval): ✨ use negative Size as descending string representation #403
  • refactor(interval): ♻️ extract IntervalNotation system #404
  • feat!(note): 🔥 use RomanceNoteNotation instead of Italian and French #405
  • refactor(note): ♻️ allow overriding accidental from NoteNotation #406
  • test(closest_pitch): 🧪 add more tests for parse constructor #407
  • refactor(note): ♻️ extract common GermanNoteNotation system into the dedicated accidental method #408
  • docs: 📖 simplify public API return documentation #409
  • refactor(interval): ♻️ rename StandardIntervalNotation #410
  • refactor(scale_degree): ♻️ extract StandardScaleDegreeNotation #411
  • feat(scale_degree): 🥅 assert ordinal and inversion integer values #412
  • refactor!(mode): ♻️ rename oppositeparallel method #414
  • refactor(note): ♻️ simplify GermanNoteNotation.accidental #415
  • refactor: ♻️ rewrite unnecessary switch expressions with if statements #419
  • fix(key): 🐛 use lowercased TonalMode in NoteNotation.german keys #421
  • feat(scale_degree): ✨ add inverted getter #422
  • refactor(scale_degree): ♻️ extract romanNumeral getter #423
  • docs: 📖 comprehensively document common toString methods and their systems #424
  • refactor(scale_degree): ♻️ use new copyWith method to update individual properties #425
  • feat(interval): ✨ add comparison operators <, <=, >, and >= #426
  • test(just_intonation): 🧪 use closeTo with ideal ratio in ratio use cases #427
  • feat(key_signature): ✨ add incrementBy method #428
  • feat!: 💥 make main entity collections unmodifiable #429
  • feat(scale_pattern): ✨ make equality enharmonic #394
  • refactor(scalable): ♻️ extract isEnharmonicWith extension method #430
  • feat(scale_pattern): ✨ add binary representation methods #392
  • refactor(scale_pattern): ♻️ simplify binary to integer conversion #431
  • feat(iterable_extension): ✨ allow overriding difference in closestTo method #327
  • feat(pitch): ✨ add helper harmonics method #432
  • feat(pitch): ✨ add Helmholtz notation German and Romance variants #433
  • feat(interval): ✨ make perfect constructor default to PerfectQuality.perfect #435
  • feat(size): ✨ add shorthand getters to create an Interval #436
  • refactor(size): ♻️ split PerfectSize and ImperfectSize sub-extension types #437
  • refactor(size): ♻️ redeclare simple in extension types to allow chaining #438
  • feat(size): ✨ add inverted, isDissonant getters moved from Interval #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 frequency method #374
  • test(note): 🧪 add edge test cases for circleOfFifthsDistance #375
  • refactor(pitch): ♻️ reuse default Note.toString return value for ScientificPitchNotation #376
  • feat(tonality): ✨ add isTheoretical getter #377
  • feat(pitch): ✨ add comparison operators <, <=, >, and >= #379
  • feat(pitch): ✨ add midiNumber getter #378
  • refactor!(key): ♻️ rename TonalityKey #380
  • docs(key): 📖 addendum to rename TonalityKey #381
  • test(note): 🧪 skip failing tests #382
  • feat(scale): ✨ add length getter #383
  • feat(note): ✨ rename toPitchClass and create Pitch.toClass methods #385
  • refactor: ♻️ enforce @immutable and declare final Notation classes #386
  • refactor: ♻️ rewrite part of directives in mini libraries #387
  • test: 🧪 remove unnecessary equals matcher #388
  • refactor(scalable): ♻️ move toClass method from Pitch #391
  • feat(scale): ✨ add isEnharmonicWith methods #393
  • build(pubspec): 🏗️ bump Dart SDK 3.3 #395
  • perf(tuning): ⚡️ rewrite Cent, Ratio as 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 ratioFromNote examples #398
  • docs(README): 🌟 add Star History Chart #399
  • perf(frequency): ⚡️ rewrite as extension type #349
  • refactor(interval): ♻️ rewrite Size as extension type #311
  • test(scalable): ⚡️ use const collection 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 toString method into NoteNotation #329
  • refactor: ♻️ rename methods from Notation systems #330
  • perf(key_signature): ⚡️ use empty whenever possible #331
  • feat(accidental): ✨ add isNatural getter #332
  • docs(key_signature): 📖 address wrong const keyword #333
  • docs: 📖 add examples to spellings methods #334
  • feat(note): ✨ compare spellings by closest distance #335
  • refactor(note): ♻️ extract switch expression to a local variable in GermanNoteNotation.tonality #336
  • refactor(interval): ♻️ use descending in circleFrom #337
  • refactor(frequency): ♻️ rewrite ClosestPitch record into a class #339
  • refactor(frequency): ♻️ extract humanHearingRange record #338
  • refactor(closest_pitch): ♻️ move class to a new file #341
  • feat(cent): ✨ override negation operator #342
  • feat!(closest_pitch): 💥 remove hertz member #343
  • feat(pitch): ✨ add +, - operators #344
  • refactor(frequency): ♻️ rewrite HearingRange record into a class #340
  • refactor!(cent): ♻️ rename redundant unitSymbol static constant #345
  • refactor: ♻️ infer types from static const members #346
  • chore(gitignore): 🙈 ignore the tool directory instead of bin #347
  • refactor(frequency): ♻️ use num for hertz #348
  • refactor(tuning_system): ♻️ rename pitch parameter from ratio #350
  • feat(closest_pitch): ✨ add parse factory constructor #351
  • docs(tuning_system): 📖 rename generator getter examples #352
  • refactor(quality): ♻️ extract symbols to static constants #353
  • refactor(quality): ♻️ move diminished and augmented symbols to Quality #354
  • refactor(interval): ♻️ rename fromQualitySemitones factory constructor #355
  • refactor!(quality): ♻️ rename abbreviationsymbol getter #356
  • refactor(frequency): ♻️ use accidental.isSharp to check whether isCloserToUpwardsSpelling #357
  • docs(key_signature): 📖 add examples to fromDistance factory constructor #358
  • feat(key_signature): ✨ add clean getter to support cancellation naturals #359
  • feat(note): ✨ add natural getter #360
  • docs: 📖 remove wrong const keywords #361
  • docs(accidental): 📖 add symbols to static const members #366
  • feat(note): ✨ add showNatural option to EnglishNoteNotation #365
  • feat(key_signature): ✨ override + operator #362
  • feat(key_signature): ✨ show cautionary accidentals in + when not present in other #367
  • feat(tonality): ✨ add parallel getter #368
  • fix(key_signature): 🐛 show each cancelled accidental once in edge key signatures #369
  • perf(interval): ⚡️ rewrite circleFrom as a sync generator #370
  • feat!(key_signature): 💥 check for isCanonical before evaluating distance #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 ==, and hashCode #302
  • refactor(equal_temperament)!: ♻️ rewrite octave divisions #304
  • refactor(interval): ♻️ declare and reassign dynamic notes in record #305
  • feat(accidental): ✨ add name cases for all accidentals #306
  • refactor(pitch): ♻️ rename PositionedNotePitch #308
  • docs: 📖 add related entities in class documentation #309
  • feat(note): ✨ add optional NotationSystem to toString methods #307
  • build(pubspec): ⬆️ upgrade Dart SDK 3.2 #310
  • feat!(pitch): 💥 move scientificName and helmholtzName to toString #313
  • refactor!(note): ♻️ rename NotationSystemNoteNotation #314
  • refactor!(pitch_class): ♻️ move integerNotation to toString #315
  • refactor(note): ♻️ use major getter in circleOfFifthsDistance #317
  • docs(transposable): 📖 simplify transposeBy documentation #318
  • feat(accidental): ✨ add isFlat, isSharp getters #319
  • refactor(note): ♻️ rewrite notation systems to allow extending behavior #316
  • refactor: ♻️ rename toClass methods #320
  • docs(README): 📖 use varied descending Interval example #323
  • refactor(scalable): ♻️ move semitones to abstract class #324
  • feat!(scalable): 💥 make difference return the closest number of semitones #325
  • feat(scalable): ✨ add inverse, retrograde getters to ScalableIterable #287
  • test(interval): ⚡️ use const for literals #328
  • fix(pitch_class): 🐛 return descending intervals in interval method #286

Dependabot updates

  • build(pubspec): ⬆️ bump test to 1.25.0 #326

Full Changelog: v0.13.0...v0.14.0

0.13.0

  • fix(note)!: 💥 remove semitones chromatic modulo #265
  • feat(positioned_note): ✨ add respelling methods #266
  • feat(frequency)!: ✨ improve closestPositionedNote enharmonic spelling #267
  • feat(frequency): ✨ add harmonics related methods #268
  • feat(frequency): ✨ add displayString extension method on ClosestPositionedNote #269
  • docs(README): 📖 update recently added methods #270
  • feat(positioned_note): ✨ rename frequency method and expose tuningSystem #271
  • feat(interval)!: ✨ include notes in distanceBetween record #272
  • docs(README): 📖 fix CI badge #277
  • refactor(chordable): ♻️ expect a Set for replaceSizes #280
  • perf(scalable): ⚡️ rewrite extension methods to return Iterable #281
  • refactor(scalable): ♻️ override difference and implement in PitchClass #283
  • refactor(interval_class): ♻️ rewrite Interval.fromSemitonesQuality as resolveClosestSpelling #284
  • docs(note): 📖 improve overall methods documentation #288
  • refactor(interval): ♻️ call fromDelta in fromSemitones constructor #289
  • refactor(quality): ♻️ move fromInterval into Interval.fromQualityDelta #290
  • feat(note): ✨ add isEnharmonicWith method #291
  • refactor(test): ♻️ create a SplayTreeSet of a Set instead of a List #292
  • refactor(int_extension): ♻️ extract nonZeroSign method #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, Cent and move .cents to former class #300
  • refactor(tuning_system)!: ♻️ move referenceNote to TuningSystem #301
  • feat(tuning)!: 💥 add PythagoreanTuning tuning 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 sort instead of creating a SplayTreeSet #232
  • ♻️ refactor(chord): reuse augmented, major, minor, diminished methods from ChordPattern #233
  • ♻️ refactor(scalable): extract private _ScalableIterable extension #234
  • 📖 docs(music_notes): add library-level documentation comment #235
  • ♻️ refactor: sort members following diminished..augmented order #236
  • 📖 docs: add full public member API documentation #237
  • ✨ feat(interval)!: simplify toString and Quality.abbreviation #238
  • 🥅 feat(quality): strengthen parse exception cases #239
  • 🥅 feat(positioned_note): strengthen parse exception cases #240
  • ♻️ refactor(iterable): rename comparator variable #241
  • ♻️ refactor(positioned_note): extract octave variable in parse to improve readability #242
  • ✨ refactor(pitch_class)!: rename EnharmonicNotePitchClass #244
  • ✨ feat(pitch_class): add integerNotation getter #245
  • ✨ feat(pitch_class): move modulo operation to the constructor #246
  • ✨ feat(interval_class)!: rename EnharmonicIntervalIntervalClass #247
  • ♻️ refactor(int_extension): simplify modulo methods #249
  • ♻️ refactor(enharmonic): remove unnecessary interface #250
  • 💥 feat(tuning_system): generalize cents method expecting ratio instead of semitones #251
  • 🚀 feat(frequency): add closestPositionedNote method #252
  • ♻️ refactor(positioned_note): rename equalTemperamentFrequency reference parameters consistently #253
  • ✨ feat: add toPitchClass and toIntervalClass methods #254
  • ♻️ refactor(base_note): rewrite transposeBySize using incrementBy #255
  • ♻️ refactor(chord_pattern): rename fromIntervalSteps factory constructor #257
  • ♻️ refactor(scalable): rename _intervalSteps getters from _ScalableIterable #258
  • ⚡️ perf(interval_class): remove unnecessary abs call on operator * #259
  • ✨ feat(accidental): add operator +- #260
  • ⚡️ perf: rewrite map calls in favor of for loops #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 test to 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 octave argument required #209
  • 📖 docs(note): update missing inOctave examples #210
  • ♻️ refactor: use incrementBy method #211
  • ♻️ refactor(interval): remove redundant Scalable<T> types #212
  • 📖 docs(scale): fix wrong functionChord examples #213
  • ✨ feat(note): add respellByBaseNoteDistance method #214
  • ✨ feat(enharmonic): allow providing distance to spellings #215
  • ♻️ refactor(accidental): extract parsable symbols from parse #216
  • ✨ feat(enharmonic): remove semitones from toString output #218
  • ✨ feat(enharmonic): use pipe | in toString output #219
  • 💥 refactor(note)!: rewrite semitones starting from 0 instead of 1 #220
  • ⚡ perf(positioned_note): extract parse expressions to static finals #221
  • 💥 feat(interval)!: move isDissonant getter from IntervalSizeExtension #222
  • ♻️ refactor(interval)!: move inverted logic from IntervalSizeExtension #223
  • ♻️ refactor(interval): move simplified from IntervalSizeExtension #224
  • ♻️ refactor(interval): move isCompound from IntervalSizeExtension #225
  • 📖 docs(interval_size_extension): improve semitones and isPerfect comments #226
  • 📌 chore(pubspec): downgrade collection to 1.17.1 to keep Flutter compatibility #228
  • ➖ chore(pubspec): remove dart_code_metrics dependency #229
  • 💥 refactor(interval)!: rewrite IntervalSizeExtension methods 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 distance sign into account in circleFrom #199
  • ✨ feat(enharmonic_note): add pitch-class multiplication operator #200
  • ♻️ refactor(base_note): rename fromSemitones static method #201
  • 🔥 refactor(enharmonic_note)!: remove shortestFifthsDistance methods #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 isUpperCase and isLowerCase getters #179
  • ✨ feat: add parse factory 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 empty constant #185
  • ♻️ refactor(key_signature): simplify tonality methods #186
  • 🐛 fix(note): return correct distance for extreme Note spellings #187
  • ⚡ perf(interval): rewrite distanceBetween method avoiding unnecessary iterations #188
  • ♻️ refactor(base_note): rewrite parse method using byName #189
  • ✨ feat(note): add respelling methods #190
  • ✨ feat(note): add respelledSimple getter #191
  • ✨ feat(int_extension): add incrementBy method #192
  • ✨ feat(interval): add circleFrom and related methods on Note #193
  • ✨ feat(interval): add respellBySize method #195
  • ✨ feat(key_signature)!: rewrite toString method #196
  • ♻️ refactor(analysis): enable ignored lints #197
  • ✨ feat(interval): rewrite distance methods expecting Scalable arguments #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, minor getters #152
  • test(enharmonic): move each toString test cases to implementation #153
  • feat(harmony): add Chord and ChordPattern classes #154
  • fix(positioned_note): use correct hashCode values #155
  • fix(interval_size_extension): return correct semitones for large intervals #156
  • fix(note): correctly handle compound intervals in transposeBy #157
  • feat(chord): implement Transposable #158
  • feat(chord_pattern): add intervalSteps factory constructor #159
  • test(interval): add compound intervals test cases for semitones #160
  • feat(interval): add simplified getter #161
  • refactor: rename fromon #162
  • feat(note): add Chord triad getters #163
  • feat(scale): add ScaleDegree class and methods on Scale #164
  • feat(chord_pattern): add fromQuality factory constructor #165
  • feat(scale_degree): add raised, lowered, major, and minor getters #167
  • feat(scale_pattern): take ScaleDegree.quality into account in degreePattern #166
  • feat(scale_pattern): add fromChordPattern factory constructor #168
  • feat(scale): add degree and rename degreeChord methods #169
  • refactor(scale): rename itemsdegrees #170
  • refactor(scale_degree): rename degreeordinal #171
  • refactor(scale_pattern): extract helper functions to simplify degreePattern method #172
  • feat(chord_pattern): add augmented, major, minor, and diminished getters #173
  • fix(chord): correctly identify compound intervals in pattern getter #174
  • feat(harmony): make Chord implement extracted Chordable mixin methods #175
  • chore(pubspec): bump version 0.9.0 #178
  • feat(harmonic_function): add class and Scale method #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 null abbreviation in toString #133
  • feat(base_note)!: remove support for intervalSize isDescending argument #134
  • feat(scalable): add abstract interface with interval method #135
  • feat(interval): add + operator #136
  • fix(scale_pattern): check for descendingIntervalSteps in == #137
  • feat(scale_pattern): include descending steps in toString #138
  • fix(scale_pattern): return mirrored Scale with descending steps #141
  • feat(scale)!: add new class with pattern and reversed getters #139
  • fix(scale_pattern): return correct descending PositionedNote scale in from #142
  • refactor(scalable): move to root lib directory #143
  • feat(enharmonic_interval): add isDescending, descending methods #144
  • test(enharmonic_interval): add test cases for isDescending, descending methods #145
  • chore(pubspec): bump versions as of very_good_analysis 5.0.0+1 #146
  • feat(positioned_note): add reference note for equalTemperamentFrequency #147
  • refactor(note): rename fifthsDistanceWith method #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 isNegative condition #116
  • feat(frequency): override toString, ==, hashCode, and compareTo methods #117
  • feat(frequency): assert positive hertz value #118
  • refactor(positioned_note)!: use Frequency as a reference #119
  • refactor: remove MusicItem interface #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 NotesBaseNote #121
  • refactor(enharmonic_note): remove redirecting method on enharmonicIntervalDistance #122
  • refactor!: consistently rename isDescending #123
  • feat(note): add Tonality major and minor getters #124
  • refactor(base_note): rename transposeBySize method #125
  • docs(note): migrate missing PositionedNote documentation #126
  • feat(note): add sharp, flat getters #127

Full Changelog: v0.6.0...v0.7.0

0.6.0

  • refactor(interval): extract and reuse _sizeAbsShift getter #97
  • refactor(mode): rename compare static method #98
  • feat(positioned_note)!: allow passing a4Hertzs to isHumanAudibleAt #100
  • feat(note): add circleOfFifthsDistance getter #101
  • feat(note): add compareByFifthsDistance static comparator #102
  • feat(interval): add descending method #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 EnharmonicNote to fromNote #91
  • fix(enharmonic_interval): handle descending intervals in items #92
  • refactor(quality)!: rename double to doubly #93
  • refactor(enharmonic): rename itemsspellings #94
  • fix(interval_size_extension): address simplified compound 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 isPerfect logic #65
  • refactor(accidental): rewrite symbol getter using explanatory variables #66
  • feat(int_interval_extension): allow compound intervals in fromSemitones #67
  • feat(enharmonic_interval)!: rewrite distance semitones starting from 0 #68
  • refactor(enharmonic_interval): change Transposable with add/subtract operators #69
  • feat(note): implement Transposable #70
  • refactor(interval): add static const constructors #71
  • feat(scale): add class and fromNote method #72
  • feat(interval)!: change descending with negative size #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, name methods and override == #79
  • feat(mode)!: rewrite Mode enums #78
  • feat(tonality): add scaleNotes getter #80
  • feat(positioned_note): override transposeBy method #81
  • docs: add Wikipedia links to Scale and Mode #82
  • feat(mode)!: use brightness as the Dorian Brightness Quotient #83
  • refactor(positioned_note): improve helmholtzName getter legibility #84
  • refactor: replace quiver package with native Object.hash #85
  • chore(vscode): add .lock file association with YAML #86
  • feat(interval): add isDescending getter #87
  • test(interval): add more test cases for descending Interval #76
  • refactor: replace EnharmonicNote with Note for transposeBy #88
  • fix(key_signature): use XOR in 0 accidentals assertions #89
  • refactor(note): rewrite fromRawAccidentals into KeySignature.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 items getter #23
  • feat(accidental): bring increment method back #24
  • test: add test cases for toString methods #25
  • test(key_signature): add test cases for tonalities getter #26
  • test(key_signature): add test cases for fromDistance method #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 Comparable and mark as immutable #35
  • test: compare .hashCode Set as a List #36
  • feat(tonality): improve compareTo sorting by note and mode #37
  • test(interval): add test cases for interval-related members #39
  • feat(intervals): add isCompound getter #40
  • test(intervals): add test cases for fromSemitones #41
  • feat!: rewrite Qualities enum with proper Quality class #42
  • feat(intervals): add isDissonant getter #43
  • refactor(enharmonic_interval): add static const constructors #44
  • feat(interval)!: replace Intervals enum with int value #45
  • docs: document Quality class and rewrite Example consistently #46
  • feat(accidental): add name getter #47
  • feat(enharmonic_note): add toClosestNote method #48
  • fix(note): simplify fromRawAccidentals accidental increment #49
  • refactor(quality): move qualityFromDelta to Quality.fromInterval factory constructor #51
  • refactor(interval): move EnharmonicInterval.fromDesiredSemitones #52
  • test(interval): add test cases for inverted #53
  • refactor(notes): address intervalSize descending logic #54
  • test(note): add test cases for difference #55
  • refactor(tonality): add static const constructors #56
  • feat(note): add octave member #57
  • feat(note): add scientific and Helmholtz notation getters #58
  • feat(note): add equalTemperamentFrequency #59
  • feat(note): add isHumanAudible method #60
  • refactor(positioned_note): move Note methods to subclass #61
  • test(tonality): add test cases for relative, keySignature methods #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 Accidental class #8
  • docs: reference new Accidental class instead of enum #9
  • refactor: make Accidental.natural default #10
  • refactor(enharmonic): rewrite based on semitones #11
  • refactor(notes): rename notes using the English convention #12
  • refactor(accidental): rename valuesemitones #13
  • refactor(note): add static const constructors #14
  • refactor(src): reorganize directories by content #15
  • refactor: rewrite enum members #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.dart file #20
  • chore(pubspec): bump version 0.3.0 #21

Full Changelog: v0.2.0...v0.3.0

0.2.0

Music

  • (feat) Add hashCode methods 528010d

Note

  • (fix) Add fromRawAccidentals method 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 meta v1.6.0 #3
  • chore(deps): bump versions as of Dart SDK 2.16 #5
  • refactor(enums): replace toText with native name getter #6

Full Changelog: v0.1.0...v0.2.0

0.1.0

Initial implementation of basic and fundamental operations with notes, intervals, tonalities and key signatures.

Full Changelog: v0.1.0