diff --git a/packages/key/CHANGELOG.md b/packages/key/CHANGELOG.md index df59ab4b..5cb7b1c4 100644 --- a/packages/key/CHANGELOG.md +++ b/packages/key/CHANGELOG.md @@ -1,5 +1,11 @@ # @tonaljs/key +## 4.11.2 + +### Patch Changes + +- @tonaljs/note@4.12.1 + ## 4.11.1 ### Patch Changes diff --git a/packages/key/package.json b/packages/key/package.json index 26c29d0d..19fe00e4 100644 --- a/packages/key/package.json +++ b/packages/key/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/key", - "version": "4.11.1", + "version": "4.11.2", "description": "Functions to work with musical keys", "keywords": [ "key", @@ -16,12 +16,12 @@ "types": "dist/index.d.ts", "dependencies": { "@tonaljs/pitch-note": "6.1.0", - "@tonaljs/note": "4.12.0", + "@tonaljs/note": "4.12.1", "@tonaljs/roman-numeral": "4.9.1" }, "devDependencies": { "@tonaljs/chord": "6.1.1", - "@tonaljs/scale": "4.13.2" + "@tonaljs/scale": "4.13.3" }, "author": "danigb@gmail.com", "license": "MIT", diff --git a/packages/midi/CHANGELOG.md b/packages/midi/CHANGELOG.md index 4bc6ad8f..66b6f41c 100644 --- a/packages/midi/CHANGELOG.md +++ b/packages/midi/CHANGELOG.md @@ -1,5 +1,11 @@ # @tonaljs/midi +## 4.10.2 + +### Patch Changes + +- 3c89703: Fix octave displacement of Midi.pcsetNearest + ## 4.10.1 ### Patch Changes diff --git a/packages/midi/index.ts b/packages/midi/index.ts index c6b42d12..5b3bbc13 100644 --- a/packages/midi/index.ts +++ b/packages/midi/index.ts @@ -128,6 +128,14 @@ export function pcset(notes: number[] | string): number[] { return Array.isArray(notes) ? pcsetFromMidi(notes) : pcsetFromChroma(notes); } +/** + * Returns a function that finds the nearest midi note of a pitch class set. + * Can be used to constrain a note to a scale. + * @param notes - a list of midi numbers or a chroma string (e.g. "100100100101") + * @example + * const nearest = Midi.pcsetNearest(Scale.get("D dorian").chroma); + * [60, 61, 62, 63, 64, 65, 66].map(nearest); // => [60, 62, 62, 63, 65, 65, 67] + */ export function pcsetNearest(notes: number[] | string) { const set = pcset(notes); return (midi: number): number | undefined => { @@ -142,6 +150,13 @@ export function pcsetNearest(notes: number[] | string) { }; } +/** + * Returns a function to map a pitch class set over any note. + * Given a tonic a pitch class set, step 0 means the first note, step 1 the second, and so on. + * @example + * const steps = Midi.pcsetSteps(Scale.get("D dorian").chroma, 60); + * [-2, -1, 0, 1, 2, 3].map(steps); // => [ 57, 58, 60, 62, 63, 65 ] + */ export function pcsetSteps(notes: number[] | string, tonic: number) { const set = pcset(notes); const len = set.length; @@ -152,6 +167,10 @@ export function pcsetSteps(notes: number[] | string, tonic: number) { }; } +/** + * Returns a function to map a pitch class set over any note. + * Same as pcsetSteps, but returns 1 for the first step + */ export function pcsetDegrees(notes: number[] | string, tonic: number) { const steps = pcsetSteps(notes, tonic); return (degree: number): number | undefined => { diff --git a/packages/midi/package.json b/packages/midi/package.json index 130f5be8..59bb865f 100644 --- a/packages/midi/package.json +++ b/packages/midi/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/midi", - "version": "4.10.1", + "version": "4.10.2", "description": "Functions to work with midi numbers", "keywords": [ "note", diff --git a/packages/midi/test.ts b/packages/midi/test.ts index 90746f8e..73004fe7 100644 --- a/packages/midi/test.ts +++ b/packages/midi/test.ts @@ -1,4 +1,4 @@ -import Midi from "./index"; +import * as Midi from "./index"; describe("midi", () => { test("isMidi", () => { @@ -64,17 +64,17 @@ describe("midi", () => { test("chromatic to nearest C minor pentatonic", () => { const nearest = Midi.pcsetNearest("100101010010"); - expect([36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47].map(nearest)).toEqual([ - 36, 36, 39, 39, 41, 41, 43, 43, 43, 46, 46, 48 - ]); + expect( + [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47].map(nearest), + ).toEqual([36, 36, 39, 39, 41, 41, 43, 43, 43, 46, 46, 48]); }); test("chromatic to nearest half octave", () => { const nearest = Midi.pcsetNearest("100000100000"); - expect([36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47].map(nearest)).toEqual([ - 36, 36, 36, 42, 42, 42, 42, 42, 42, 48, 48, 48 - ]); - }) + expect( + [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47].map(nearest), + ).toEqual([36, 36, 36, 42, 42, 42, 42, 42, 42, 48, 48, 48]); + }); test("empty pcsets returns the note", () => { expect([10, 30, 40].map(Midi.pcsetNearest([]))).toEqual([]); diff --git a/packages/modules/CHANGELOG.md b/packages/modules/CHANGELOG.md index 68024198..583f1243 100644 --- a/packages/modules/CHANGELOG.md +++ b/packages/modules/CHANGELOG.md @@ -1,5 +1,12 @@ # @tonaljs/modules +## 4.8.11 + +### Patch Changes + +- Updated dependencies [3c89703] + - tonal@6.4.2 + ## 4.8.10 ### Patch Changes diff --git a/packages/modules/package.json b/packages/modules/package.json index 0f650bd2..a2ea7c17 100644 --- a/packages/modules/package.json +++ b/packages/modules/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/modules", - "version": "4.8.10", + "version": "4.8.11", "description": "deprecated", "keywords": [], "main": "dist/index.js", @@ -10,7 +10,7 @@ ], "types": "dist/index.d.ts", "dependencies": { - "tonal": "6.4.1" + "tonal": "6.4.2" }, "author": "danigb@gmail.com", "license": "MIT", diff --git a/packages/note/CHANGELOG.md b/packages/note/CHANGELOG.md index bb38f6b1..284593f2 100644 --- a/packages/note/CHANGELOG.md +++ b/packages/note/CHANGELOG.md @@ -1,5 +1,12 @@ # @tonaljs/note +## 4.12.1 + +### Patch Changes + +- Updated dependencies [3c89703] + - @tonaljs/midi@4.10.2 + ## 4.12.0 ### Minor Changes diff --git a/packages/note/package.json b/packages/note/package.json index 4b7d4fe8..f77823b5 100644 --- a/packages/note/package.json +++ b/packages/note/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/note", - "version": "4.12.0", + "version": "4.12.1", "description": "Parse and manipulate music notes in scientific notation", "keywords": [ "note", @@ -19,7 +19,7 @@ "@tonaljs/pitch-interval": "6.1.0", "@tonaljs/pitch-distance": "5.0.5", "@tonaljs/pitch-note": "6.1.0", - "@tonaljs/midi": "4.10.1" + "@tonaljs/midi": "4.10.2" }, "author": "danigb@gmail.com", "license": "MIT", diff --git a/packages/range/CHANGELOG.md b/packages/range/CHANGELOG.md index ae620c6f..08ff4a36 100644 --- a/packages/range/CHANGELOG.md +++ b/packages/range/CHANGELOG.md @@ -1,5 +1,12 @@ # @tonaljs/range +## 4.9.2 + +### Patch Changes + +- Updated dependencies [3c89703] + - @tonaljs/midi@4.10.2 + ## 4.9.1 ### Patch Changes diff --git a/packages/range/package.json b/packages/range/package.json index 2fea7db1..a8c0f7c3 100644 --- a/packages/range/package.json +++ b/packages/range/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/range", - "version": "4.9.1", + "version": "4.9.2", "description": "Create (musical) note ranges", "keywords": [ "range", @@ -16,7 +16,7 @@ "types": "dist/index.d.ts", "dependencies": { "@tonaljs/collection": "4.9.0", - "@tonaljs/midi": "4.10.1" + "@tonaljs/midi": "4.10.2" }, "author": "danigb@gmail.com", "license": "MIT", diff --git a/packages/scale/CHANGELOG.md b/packages/scale/CHANGELOG.md index e31dbc01..ebf9b03f 100644 --- a/packages/scale/CHANGELOG.md +++ b/packages/scale/CHANGELOG.md @@ -1,5 +1,11 @@ # @tonaljs/scale +## 4.13.3 + +### Patch Changes + +- @tonaljs/note@4.12.1 + ## 4.13.2 ### Patch Changes diff --git a/packages/scale/package.json b/packages/scale/package.json index 75f97924..d71a4ad6 100644 --- a/packages/scale/package.json +++ b/packages/scale/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/scale", - "version": "4.13.2", + "version": "4.13.3", "description": "Musical scales and its relations", "keywords": [ "scale", @@ -20,7 +20,7 @@ "@tonaljs/collection": "4.9.0", "@tonaljs/pitch-distance": "5.0.5", "@tonaljs/pitch-note": "6.1.0", - "@tonaljs/note": "4.12.0", + "@tonaljs/note": "4.12.1", "@tonaljs/pcset": "4.10.1", "@tonaljs/scale-type": "4.9.1" }, diff --git a/packages/tonal/CHANGELOG.md b/packages/tonal/CHANGELOG.md index 9f2090b4..68b9d37e 100644 --- a/packages/tonal/CHANGELOG.md +++ b/packages/tonal/CHANGELOG.md @@ -1,5 +1,21 @@ # tonal +## 6.4.2 + +### Patch Changes + +- 3c89703: Fix octave displacement of Midi.pcsetNearest + +- Updated dependencies [3c89703] + - @tonaljs/midi@4.10.2 + - @tonaljs/note@4.12.1 + - @tonaljs/range@4.9.2 + - @tonaljs/key@4.11.2 + - @tonaljs/scale@4.13.3 + - @tonaljs/voice-leading@5.1.2 + - @tonaljs/voicing@5.1.2 + - @tonaljs/voicing-dictionary@5.1.2 + ## 6.4.x - 72de4e4: Fix a bug where `Scale.tokenize` didn't lowercase scale type when tonic is not preset diff --git a/packages/tonal/package.json b/packages/tonal/package.json index b9eb206e..7500dc04 100644 --- a/packages/tonal/package.json +++ b/packages/tonal/package.json @@ -1,6 +1,6 @@ { "name": "tonal", - "version": "6.4.1", + "version": "6.4.2", "description": "tonaljs music theory library", "keywords": [ "music", @@ -24,21 +24,21 @@ "@tonaljs/core": "5.0.2", "@tonaljs/duration-value": "4.9.0", "@tonaljs/interval": "5.1.0", - "@tonaljs/key": "4.11.1", - "@tonaljs/midi": "4.10.1", + "@tonaljs/key": "4.11.2", + "@tonaljs/midi": "4.10.2", "@tonaljs/mode": "4.9.1", - "@tonaljs/note": "4.12.0", + "@tonaljs/note": "4.12.1", "@tonaljs/pcset": "4.10.1", "@tonaljs/progression": "4.9.1", - "@tonaljs/range": "4.9.1", + "@tonaljs/range": "4.9.2", "@tonaljs/rhythm-pattern": "1.0.0", "@tonaljs/roman-numeral": "4.9.1", "@tonaljs/scale-type": "4.9.1", - "@tonaljs/scale": "4.13.2", + "@tonaljs/scale": "4.13.3", "@tonaljs/time-signature": "4.9.0", - "@tonaljs/voice-leading": "5.1.1", - "@tonaljs/voicing-dictionary": "5.1.1", - "@tonaljs/voicing": "5.1.1" + "@tonaljs/voice-leading": "5.1.2", + "@tonaljs/voicing-dictionary": "5.1.2", + "@tonaljs/voicing": "5.1.2" }, "author": "danigb@gmail.com", "license": "MIT", diff --git a/packages/voice-leading/CHANGELOG.md b/packages/voice-leading/CHANGELOG.md index 49ca405f..415809c2 100644 --- a/packages/voice-leading/CHANGELOG.md +++ b/packages/voice-leading/CHANGELOG.md @@ -1,5 +1,11 @@ # @tonaljs/voice-leading +## 5.1.2 + +### Patch Changes + +- @tonaljs/note@4.12.1 + ## 5.1.1 ### Patch Changes diff --git a/packages/voice-leading/package.json b/packages/voice-leading/package.json index f2d3c5b7..b8821b4b 100644 --- a/packages/voice-leading/package.json +++ b/packages/voice-leading/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/voice-leading", - "version": "5.1.1", + "version": "5.1.2", "description": "Voice leading logic for transitions between voicings", "keywords": [ "chord", @@ -17,7 +17,7 @@ ], "types": "dist/index.d.ts", "dependencies": { - "@tonaljs/note": "4.12.0" + "@tonaljs/note": "4.12.1" }, "author": "felix91@gmail.com", "license": "MIT", diff --git a/packages/voicing-dictionary/CHANGELOG.md b/packages/voicing-dictionary/CHANGELOG.md index 5e965b51..857b54a1 100644 --- a/packages/voicing-dictionary/CHANGELOG.md +++ b/packages/voicing-dictionary/CHANGELOG.md @@ -1,5 +1,12 @@ # @tonaljs/voicing-dictionary +## 5.1.2 + +### Patch Changes + +- @tonaljs/note@4.12.1 +- @tonaljs/voice-leading@5.1.2 + ## 5.1.1 ### Patch Changes diff --git a/packages/voicing-dictionary/package.json b/packages/voicing-dictionary/package.json index 6b221f63..d12318e0 100644 --- a/packages/voicing-dictionary/package.json +++ b/packages/voicing-dictionary/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/voicing-dictionary", - "version": "5.1.1", + "version": "5.1.2", "description": "Collections of chord voicings", "keywords": [ "chord", @@ -18,8 +18,8 @@ "types": "dist/index.d.ts", "dependencies": { "@tonaljs/chord": "6.1.1", - "@tonaljs/note": "4.12.0", - "@tonaljs/voice-leading": "5.1.1" + "@tonaljs/note": "4.12.1", + "@tonaljs/voice-leading": "5.1.2" }, "author": "felix91@gmail.com", "license": "MIT", diff --git a/packages/voicing/CHANGELOG.md b/packages/voicing/CHANGELOG.md index 463c6859..ef5ba59b 100644 --- a/packages/voicing/CHANGELOG.md +++ b/packages/voicing/CHANGELOG.md @@ -1,5 +1,14 @@ # @tonaljs/voicing +## 5.1.2 + +### Patch Changes + +- @tonaljs/note@4.12.1 +- @tonaljs/range@4.9.2 +- @tonaljs/voice-leading@5.1.2 +- @tonaljs/voicing-dictionary@5.1.2 + ## 5.1.1 ### Patch Changes diff --git a/packages/voicing/package.json b/packages/voicing/package.json index 40d9cb9f..2818c20d 100644 --- a/packages/voicing/package.json +++ b/packages/voicing/package.json @@ -1,6 +1,6 @@ { "name": "@tonaljs/voicing", - "version": "5.1.1", + "version": "5.1.2", "description": "Voicings and Voice Leading for Chords", "keywords": [ "chord", @@ -19,10 +19,10 @@ "dependencies": { "@tonaljs/chord": "6.1.1", "@tonaljs/interval": "5.1.0", - "@tonaljs/note": "4.12.0", - "@tonaljs/range": "4.9.1", - "@tonaljs/voice-leading": "5.1.1", - "@tonaljs/voicing-dictionary": "5.1.1" + "@tonaljs/note": "4.12.1", + "@tonaljs/range": "4.9.2", + "@tonaljs/voice-leading": "5.1.2", + "@tonaljs/voicing-dictionary": "5.1.2" }, "author": "felix91@gmail.com", "license": "MIT",