@leafo/lml 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -17
- package/dist/auto-chords.d.ts +33 -8
- package/dist/auto-chords.d.ts.map +1 -1
- package/dist/auto-chords.js +19 -1
- package/dist/auto-chords.js.map +1 -1
- package/dist/grammar.d.ts.map +1 -1
- package/dist/grammar.js +374 -246
- package/dist/grammar.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/music.d.ts +501 -5
- package/dist/music.d.ts.map +1 -1
- package/dist/music.js +495 -52
- package/dist/music.js.map +1 -1
- package/dist/note-utils.d.ts +13 -0
- package/dist/note-utils.d.ts.map +1 -0
- package/dist/note-utils.js +62 -0
- package/dist/note-utils.js.map +1 -0
- package/dist/noteUtils.d.ts +1 -0
- package/dist/noteUtils.d.ts.map +1 -1
- package/dist/noteUtils.js +8 -2
- package/dist/noteUtils.js.map +1 -1
- package/dist/parser.d.ts +135 -2
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +137 -36
- package/dist/parser.js.map +1 -1
- package/dist/song.d.ts +197 -1
- package/dist/song.d.ts.map +1 -1
- package/dist/song.js +213 -13
- package/dist/song.js.map +1 -1
- package/package.json +5 -2
package/dist/song.js
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
import { parseNote, noteName, MIDDLE_C_PITCH } from "./music.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { parseNote, noteName, MIDDLE_C_PITCH, transposeKeySignature } from "./music.js";
|
|
2
|
+
/**
|
|
3
|
+
* Represents a single musical note with pitch, timing, and duration.
|
|
4
|
+
* @example
|
|
5
|
+
* const note = new SongNote("C4", 0, 1) // Middle C at beat 0, duration 1 beat
|
|
6
|
+
* const note2 = new SongNote("D#5", 4, 0.5) // D#5 at beat 4, half beat duration
|
|
7
|
+
*/
|
|
5
8
|
export class SongNote {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new SongNote.
|
|
11
|
+
* @param note - Note name with octave (e.g., "C4", "D#5")
|
|
12
|
+
* @param start - Start position in beats
|
|
13
|
+
* @param duration - Duration in beats
|
|
14
|
+
* @param sourceLocation - Optional source location in LML text [startOffset, endOffset]
|
|
15
|
+
*/
|
|
6
16
|
constructor(note, start, duration, sourceLocation) {
|
|
7
17
|
this.id = Symbol();
|
|
8
18
|
this.note = note;
|
|
@@ -10,10 +20,20 @@ export class SongNote {
|
|
|
10
20
|
this.duration = duration;
|
|
11
21
|
this.sourceLocation = sourceLocation;
|
|
12
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a copy of this note.
|
|
25
|
+
* @returns A new SongNote with the same properties
|
|
26
|
+
*/
|
|
13
27
|
clone() {
|
|
14
28
|
const cloned = new SongNote(this.note, this.start, this.duration, this.sourceLocation);
|
|
15
29
|
return cloned;
|
|
16
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Checks if this note overlaps with a time range.
|
|
33
|
+
* @param min - Start of the range in beats
|
|
34
|
+
* @param max - End of the range in beats
|
|
35
|
+
* @returns True if the note overlaps with the range
|
|
36
|
+
*/
|
|
17
37
|
inRange(min, max) {
|
|
18
38
|
const stop = this.start + this.duration;
|
|
19
39
|
if (min >= stop) {
|
|
@@ -24,28 +44,61 @@ export class SongNote {
|
|
|
24
44
|
}
|
|
25
45
|
return true;
|
|
26
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates a new note transposed by a number of semitones.
|
|
49
|
+
* @param semitones - Number of semitones to transpose (positive = up, negative = down)
|
|
50
|
+
* @returns A new SongNote with the transposed pitch
|
|
51
|
+
* @example
|
|
52
|
+
* const c4 = new SongNote("C4", 0, 1)
|
|
53
|
+
* const d4 = c4.transpose(2) // D4
|
|
54
|
+
* const b3 = c4.transpose(-1) // B3
|
|
55
|
+
*/
|
|
27
56
|
transpose(semitones) {
|
|
28
57
|
return new SongNote(noteName(parseNote(this.note) + semitones), this.start, this.duration, this.sourceLocation);
|
|
29
58
|
}
|
|
59
|
+
/** Returns the start position in beats. */
|
|
30
60
|
getStart() {
|
|
31
61
|
return this.start;
|
|
32
62
|
}
|
|
63
|
+
/** Returns the end position in beats (start + duration). */
|
|
33
64
|
getStop() {
|
|
34
65
|
return this.start + this.duration;
|
|
35
66
|
}
|
|
67
|
+
/** Returns the end position for rendering purposes. */
|
|
36
68
|
getRenderStop() {
|
|
37
69
|
return this.start + this.duration;
|
|
38
70
|
}
|
|
71
|
+
/** Returns a string representation of the note. */
|
|
39
72
|
toString() {
|
|
40
73
|
return `${this.note},${this.start},${this.duration}`;
|
|
41
74
|
}
|
|
42
75
|
}
|
|
43
|
-
|
|
76
|
+
/**
|
|
77
|
+
* A list of notes representing a song or track, with associated metadata.
|
|
78
|
+
* Extends Array<SongNote> to allow direct indexing and array methods.
|
|
79
|
+
* @example
|
|
80
|
+
* const song = SongNoteList.newSong([
|
|
81
|
+
* ["C4", 0, 1],
|
|
82
|
+
* ["E4", 1, 1],
|
|
83
|
+
* ["G4", 2, 1],
|
|
84
|
+
* ])
|
|
85
|
+
* song.transpose(2) // Transpose up a whole step
|
|
86
|
+
*/
|
|
44
87
|
export class SongNoteList extends Array {
|
|
45
88
|
constructor() {
|
|
46
89
|
super();
|
|
47
90
|
Object.setPrototypeOf(this, SongNoteList.prototype);
|
|
48
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Creates a new SongNoteList from an array of note tuples.
|
|
94
|
+
* @param noteTuples - Array of [note, start, duration] tuples
|
|
95
|
+
* @returns A new SongNoteList containing the notes
|
|
96
|
+
* @example
|
|
97
|
+
* const song = SongNoteList.newSong([
|
|
98
|
+
* ["C4", 0, 1],
|
|
99
|
+
* ["D4", 1, 1],
|
|
100
|
+
* ])
|
|
101
|
+
*/
|
|
49
102
|
static newSong(noteTuples) {
|
|
50
103
|
const notes = noteTuples.map(([note, start, duration]) => new SongNote(note, start, duration));
|
|
51
104
|
const song = new SongNoteList();
|
|
@@ -54,27 +107,84 @@ export class SongNoteList extends Array {
|
|
|
54
107
|
}
|
|
55
108
|
return song;
|
|
56
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Creates a deep copy of this song (notes are cloned).
|
|
112
|
+
* @returns A new SongNoteList with cloned notes
|
|
113
|
+
*/
|
|
57
114
|
clone() {
|
|
58
115
|
const song = new SongNoteList();
|
|
59
116
|
this.forEach(note => song.push(note.clone()));
|
|
60
117
|
return song;
|
|
61
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Clears the spatial index cache. Call this after modifying notes.
|
|
121
|
+
*/
|
|
62
122
|
clearCache() {
|
|
63
123
|
delete this.buckets;
|
|
64
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Creates a new song with all notes and key signatures transposed.
|
|
127
|
+
* Uses circle of fifths for key signature transposition.
|
|
128
|
+
* Returns `this` if amount is 0.
|
|
129
|
+
* @param amount - Number of semitones to transpose (positive = up, negative = down)
|
|
130
|
+
* @returns A new SongNoteList with transposed notes, or `this` if amount is 0
|
|
131
|
+
* @example
|
|
132
|
+
* const song = parser.compile(parser.parse("ks0 c d e"))
|
|
133
|
+
* const transposed = song.transpose(1) // Transposes to Db major
|
|
134
|
+
* // transposed.metadata.keySignature === -5
|
|
135
|
+
*/
|
|
65
136
|
transpose(amount = 0) {
|
|
66
137
|
if (amount == 0) {
|
|
67
138
|
return this;
|
|
68
139
|
}
|
|
69
|
-
const song = new
|
|
70
|
-
this.
|
|
140
|
+
const song = new this.constructor();
|
|
141
|
+
this.transposeNotesInto(song, amount);
|
|
142
|
+
// Copy metadata, transposing key signature
|
|
143
|
+
if (this.metadata) {
|
|
144
|
+
song.metadata = {
|
|
145
|
+
...this.metadata,
|
|
146
|
+
keySignature: this.metadata.keySignature !== undefined
|
|
147
|
+
? transposeKeySignature(this.metadata.keySignature, amount)
|
|
148
|
+
: undefined
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Transpose key signatures array
|
|
152
|
+
if (this.keySignatures) {
|
|
153
|
+
song.keySignatures = this.keySignatures.map(([beat, count, loc]) => [beat, transposeKeySignature(count, amount), loc]);
|
|
154
|
+
}
|
|
155
|
+
// Reuse references to unchanged properties
|
|
156
|
+
song.timeSignatures = this.timeSignatures;
|
|
157
|
+
song.clefs = this.clefs;
|
|
158
|
+
song.strings = this.strings;
|
|
159
|
+
song.autoChords = this.autoChords;
|
|
160
|
+
song.trackName = this.trackName;
|
|
71
161
|
return song;
|
|
72
162
|
}
|
|
73
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Transposes notes from this song into the target song.
|
|
165
|
+
* Override in subclasses for custom note handling (e.g., multi-track).
|
|
166
|
+
* @param target - The song to add transposed notes to
|
|
167
|
+
* @param amount - Number of semitones to transpose
|
|
168
|
+
*/
|
|
169
|
+
transposeNotesInto(target, amount) {
|
|
170
|
+
this.forEach(note => target.push(note.transpose(amount)));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Finds all notes that overlap with a time range.
|
|
174
|
+
* @param start - Start of the range in beats
|
|
175
|
+
* @param stop - End of the range in beats
|
|
176
|
+
* @returns Array of notes that overlap with the range
|
|
177
|
+
*/
|
|
74
178
|
notesInRange(start, stop) {
|
|
75
179
|
return [...this.filter((n) => n.inRange(start, stop))];
|
|
76
180
|
}
|
|
77
|
-
|
|
181
|
+
/**
|
|
182
|
+
* Finds indices of notes whose source location overlaps with a text selection.
|
|
183
|
+
* Used for editor features like transposition of selected notes.
|
|
184
|
+
* @param start - Start offset in source text
|
|
185
|
+
* @param end - End offset in source text
|
|
186
|
+
* @returns Set of note indices that overlap with the selection
|
|
187
|
+
*/
|
|
78
188
|
findNotesForSelection(start, end) {
|
|
79
189
|
const result = new Set();
|
|
80
190
|
this.forEach((note, index) => {
|
|
@@ -87,18 +197,42 @@ export class SongNoteList extends Array {
|
|
|
87
197
|
});
|
|
88
198
|
return result;
|
|
89
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Finds key signatures whose source location overlaps with a text selection.
|
|
202
|
+
* Used for editor features like transposition of selected key signatures.
|
|
203
|
+
* @param start - Start offset in source text
|
|
204
|
+
* @param end - End offset in source text
|
|
205
|
+
* @returns Array of key signature entries that overlap with the selection
|
|
206
|
+
*/
|
|
207
|
+
findKeySignaturesForSelection(start, end) {
|
|
208
|
+
if (!this.keySignatures)
|
|
209
|
+
return [];
|
|
210
|
+
return this.keySignatures.filter(([, , [ksStart, ksEnd]]) => start <= ksEnd && end >= ksStart);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Returns the end position of the last note in beats.
|
|
214
|
+
* @returns End position in beats, or 0 if empty
|
|
215
|
+
*/
|
|
90
216
|
getStopInBeats() {
|
|
91
217
|
if (this.length == 0) {
|
|
92
218
|
return 0;
|
|
93
219
|
}
|
|
94
220
|
return Math.max.apply(null, this.map((n) => n.getStop()));
|
|
95
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Returns the start position of the first note in beats.
|
|
224
|
+
* @returns Start position in beats, or 0 if empty
|
|
225
|
+
*/
|
|
96
226
|
getStartInBeats() {
|
|
97
227
|
if (this.length == 0) {
|
|
98
228
|
return 0;
|
|
99
229
|
}
|
|
100
230
|
return Math.min.apply(null, this.map((n) => n.getStart()));
|
|
101
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Calculates measure boundaries based on time signatures.
|
|
234
|
+
* @returns Array of measure objects with start position and beat count
|
|
235
|
+
*/
|
|
102
236
|
getMeasures() {
|
|
103
237
|
const measures = [];
|
|
104
238
|
const songEnd = this.getStopInBeats();
|
|
@@ -120,6 +254,10 @@ export class SongNoteList extends Array {
|
|
|
120
254
|
}
|
|
121
255
|
return measures;
|
|
122
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Returns the pitch range of all notes in the song.
|
|
259
|
+
* @returns Tuple of [lowest, highest] note names, or undefined if empty
|
|
260
|
+
*/
|
|
123
261
|
noteRange() {
|
|
124
262
|
if (!this.length) {
|
|
125
263
|
return undefined;
|
|
@@ -137,6 +275,10 @@ export class SongNoteList extends Array {
|
|
|
137
275
|
}
|
|
138
276
|
return [noteName(min), noteName(max)];
|
|
139
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Determines the best staff type for displaying this song.
|
|
280
|
+
* @returns "treble", "bass", or "grand" based on note range and clef settings
|
|
281
|
+
*/
|
|
140
282
|
fittingStaff() {
|
|
141
283
|
if (this.clefs && this.clefs.length == 1) {
|
|
142
284
|
const firstNote = this[0];
|
|
@@ -174,12 +316,14 @@ export class SongNoteList extends Array {
|
|
|
174
316
|
return "treble";
|
|
175
317
|
}
|
|
176
318
|
}
|
|
319
|
+
/** Calculates the bucket range for a time span. */
|
|
177
320
|
getBucketRange(start, stop) {
|
|
178
321
|
const bucketSize = SongNoteList.bucketSize;
|
|
179
322
|
const left = Math.floor(start / bucketSize);
|
|
180
323
|
const right = Math.ceil(stop / bucketSize);
|
|
181
324
|
return [left, right];
|
|
182
325
|
}
|
|
326
|
+
/** Builds the spatial index buckets for fast note lookup. */
|
|
183
327
|
buildBuckets() {
|
|
184
328
|
const buckets = {};
|
|
185
329
|
this.forEach((songNote, idx) => {
|
|
@@ -192,16 +336,26 @@ export class SongNoteList extends Array {
|
|
|
192
336
|
});
|
|
193
337
|
return buckets;
|
|
194
338
|
}
|
|
195
|
-
|
|
339
|
+
/** Gets the buckets to scan when matching notes near a beat. */
|
|
196
340
|
adjacentBuckets(beat) {
|
|
197
341
|
return this.getBucketRange(beat - 1, beat + 1);
|
|
198
342
|
}
|
|
343
|
+
/** Gets or builds the spatial index buckets. */
|
|
199
344
|
getBuckets() {
|
|
200
345
|
if (!this.buckets) {
|
|
201
346
|
this.buckets = this.buildBuckets();
|
|
202
347
|
}
|
|
203
348
|
return this.buckets;
|
|
204
349
|
}
|
|
350
|
+
/**
|
|
351
|
+
* Finds the note closest to a beat position using spatial indexing.
|
|
352
|
+
* Faster than matchNote for large songs.
|
|
353
|
+
* @param findNote - Note name to search for (e.g., "C4")
|
|
354
|
+
* @param beat - Beat position to search near
|
|
355
|
+
* @param wrapRight - Optional right boundary for wrap-around search
|
|
356
|
+
* @param wrapLeft - Optional left boundary for wrap-around search
|
|
357
|
+
* @returns Index of the matching note, or null if not found
|
|
358
|
+
*/
|
|
205
359
|
matchNoteFast(findNote, beat, wrapRight, wrapLeft) {
|
|
206
360
|
const buckets = this.getBuckets();
|
|
207
361
|
const [left, right] = this.adjacentBuckets(beat);
|
|
@@ -249,7 +403,13 @@ export class SongNoteList extends Array {
|
|
|
249
403
|
}
|
|
250
404
|
return foundIdx;
|
|
251
405
|
}
|
|
252
|
-
|
|
406
|
+
/**
|
|
407
|
+
* Finds the note closest to a beat position using linear search.
|
|
408
|
+
* Use matchNoteFast for better performance on large songs.
|
|
409
|
+
* @param findNote - Note name to search for (e.g., "C4")
|
|
410
|
+
* @param beat - Beat position to search near
|
|
411
|
+
* @returns Index of the matching note, or null if not found
|
|
412
|
+
*/
|
|
253
413
|
matchNote(findNote, beat) {
|
|
254
414
|
let foundIdx = null;
|
|
255
415
|
for (let idx = 0; idx < this.length; idx++) {
|
|
@@ -270,28 +430,68 @@ export class SongNoteList extends Array {
|
|
|
270
430
|
return foundIdx;
|
|
271
431
|
}
|
|
272
432
|
}
|
|
273
|
-
|
|
433
|
+
/** Bucket size in beats for spatial indexing optimization */
|
|
434
|
+
SongNoteList.bucketSize = 8;
|
|
435
|
+
/**
|
|
436
|
+
* A song containing multiple tracks, where each track is a SongNoteList.
|
|
437
|
+
* Notes are stored both in the main list and in their respective tracks.
|
|
438
|
+
* @example
|
|
439
|
+
* const song = new MultiTrackSong()
|
|
440
|
+
* song.pushWithTrack(new SongNote("C4", 0, 1), 0) // Track 0
|
|
441
|
+
* song.pushWithTrack(new SongNote("E4", 0, 1), 1) // Track 1
|
|
442
|
+
*/
|
|
274
443
|
export class MultiTrackSong extends SongNoteList {
|
|
275
444
|
constructor() {
|
|
276
445
|
super();
|
|
446
|
+
/** Array of individual tracks */
|
|
277
447
|
this.tracks = [];
|
|
278
448
|
Object.setPrototypeOf(this, MultiTrackSong.prototype);
|
|
279
449
|
}
|
|
450
|
+
/**
|
|
451
|
+
* Adds a note to both the main song and a specific track.
|
|
452
|
+
* @param note - The note to add
|
|
453
|
+
* @param trackIdx - The track index to add the note to
|
|
454
|
+
* @returns The added note
|
|
455
|
+
*/
|
|
280
456
|
pushWithTrack(note, trackIdx) {
|
|
281
457
|
this.push(note);
|
|
282
458
|
const track = this.getTrack(trackIdx);
|
|
283
459
|
track.push(note);
|
|
284
460
|
return note;
|
|
285
461
|
}
|
|
286
|
-
|
|
462
|
+
/**
|
|
463
|
+
* Finds an unused track index for auto-generated content like chords.
|
|
464
|
+
* @returns The next available track index
|
|
465
|
+
*/
|
|
287
466
|
findEmptyTrackIdx() {
|
|
288
467
|
return this.tracks.length + 1;
|
|
289
468
|
}
|
|
469
|
+
/**
|
|
470
|
+
* Gets a track by index, creating it if it doesn't exist.
|
|
471
|
+
* @param idx - The track index
|
|
472
|
+
* @returns The SongNoteList for the track
|
|
473
|
+
*/
|
|
290
474
|
getTrack(idx) {
|
|
291
475
|
if (!this.tracks[idx]) {
|
|
292
476
|
this.tracks[idx] = new SongNoteList();
|
|
293
477
|
}
|
|
294
478
|
return this.tracks[idx];
|
|
295
479
|
}
|
|
480
|
+
/**
|
|
481
|
+
* Transposes notes from this song into the target song, handling tracks.
|
|
482
|
+
* Notes are transposed per-track and added to both the track and main list.
|
|
483
|
+
* @param target - The MultiTrackSong to add transposed notes to
|
|
484
|
+
* @param amount - Number of semitones to transpose
|
|
485
|
+
*/
|
|
486
|
+
transposeNotesInto(target, amount) {
|
|
487
|
+
const multiTarget = target;
|
|
488
|
+
this.tracks.forEach((track, idx) => {
|
|
489
|
+
if (track) {
|
|
490
|
+
const transposedTrack = track.transpose(amount);
|
|
491
|
+
multiTarget.tracks[idx] = transposedTrack;
|
|
492
|
+
transposedTrack.forEach(note => multiTarget.push(note));
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
}
|
|
296
496
|
}
|
|
297
497
|
//# sourceMappingURL=song.js.map
|
package/dist/song.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"song.js","sourceRoot":"","sources":["../src/song.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"song.js","sourceRoot":"","sources":["../src/song.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leafo/lml",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "LML (Leaf's Music Language) parser and music theory library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,11 +22,14 @@
|
|
|
22
22
|
"clean": "rm -rf dist src/grammar.js",
|
|
23
23
|
"test": "node --import tsx --test 'test/**/*.test.ts'",
|
|
24
24
|
"regenerate-expected": "node --import tsx scripts/regenerate-expected.ts",
|
|
25
|
-
"editor": "npm run dev --prefix editor"
|
|
25
|
+
"editor": "npm run dev --prefix editor",
|
|
26
|
+
"docs": "typedoc",
|
|
27
|
+
"docs:watch": "typedoc --watch"
|
|
26
28
|
},
|
|
27
29
|
"devDependencies": {
|
|
28
30
|
"peggy": "^5.0.6",
|
|
29
31
|
"tsx": "^4.21.0",
|
|
32
|
+
"typedoc": "^0.27.6",
|
|
30
33
|
"typescript": "^5.3.0"
|
|
31
34
|
},
|
|
32
35
|
"keywords": [
|