@beatbax/engine 0.1.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/dist/.tsbuildinfo +1 -0
- package/dist/audio/bufferedRenderer.d.ts +32 -0
- package/dist/audio/bufferedRenderer.d.ts.map +1 -0
- package/dist/audio/bufferedRenderer.js +309 -0
- package/dist/audio/bufferedRenderer.js.map +1 -0
- package/dist/audio/pcmRenderer.d.ts +25 -0
- package/dist/audio/pcmRenderer.d.ts.map +1 -0
- package/dist/audio/pcmRenderer.js +1288 -0
- package/dist/audio/pcmRenderer.js.map +1 -0
- package/dist/audio/playback.d.ts +57 -0
- package/dist/audio/playback.d.ts.map +1 -0
- package/dist/audio/playback.js +794 -0
- package/dist/audio/playback.js.map +1 -0
- package/dist/chips/gameboy/apu.d.ts +9 -0
- package/dist/chips/gameboy/apu.d.ts.map +1 -0
- package/dist/chips/gameboy/apu.js +27 -0
- package/dist/chips/gameboy/apu.js.map +1 -0
- package/dist/chips/gameboy/noise.d.ts +6 -0
- package/dist/chips/gameboy/noise.d.ts.map +1 -0
- package/dist/chips/gameboy/noise.js +155 -0
- package/dist/chips/gameboy/noise.js.map +1 -0
- package/dist/chips/gameboy/packet.d.ts +3 -0
- package/dist/chips/gameboy/packet.d.ts.map +1 -0
- package/dist/chips/gameboy/packet.js +3 -0
- package/dist/chips/gameboy/packet.js.map +1 -0
- package/dist/chips/gameboy/periodTables.d.ts +16 -0
- package/dist/chips/gameboy/periodTables.d.ts.map +1 -0
- package/dist/chips/gameboy/periodTables.js +29 -0
- package/dist/chips/gameboy/periodTables.js.map +1 -0
- package/dist/chips/gameboy/pulse.d.ts +12 -0
- package/dist/chips/gameboy/pulse.d.ts.map +1 -0
- package/dist/chips/gameboy/pulse.js +275 -0
- package/dist/chips/gameboy/pulse.js.map +1 -0
- package/dist/chips/gameboy/wave.d.ts +8 -0
- package/dist/chips/gameboy/wave.d.ts.map +1 -0
- package/dist/chips/gameboy/wave.js +146 -0
- package/dist/chips/gameboy/wave.js.map +1 -0
- package/dist/effects/index.d.ts +7 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +1028 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/types.d.ts +8 -0
- package/dist/effects/types.d.ts.map +1 -0
- package/dist/effects/types.js +2 -0
- package/dist/effects/types.js.map +1 -0
- package/dist/expand/refExpander.d.ts +14 -0
- package/dist/expand/refExpander.d.ts.map +1 -0
- package/dist/expand/refExpander.js +130 -0
- package/dist/expand/refExpander.js.map +1 -0
- package/dist/export/index.d.ts +5 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +5 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/jsonExport.d.ts +9 -0
- package/dist/export/jsonExport.d.ts.map +1 -0
- package/dist/export/jsonExport.js +184 -0
- package/dist/export/jsonExport.js.map +1 -0
- package/dist/export/midiExport.d.ts +9 -0
- package/dist/export/midiExport.d.ts.map +1 -0
- package/dist/export/midiExport.js +390 -0
- package/dist/export/midiExport.js.map +1 -0
- package/dist/export/ugeWriter.d.ts +33 -0
- package/dist/export/ugeWriter.d.ts.map +1 -0
- package/dist/export/ugeWriter.js +1997 -0
- package/dist/export/ugeWriter.js.map +1 -0
- package/dist/export/wavWriter.d.ts +24 -0
- package/dist/export/wavWriter.d.ts.map +1 -0
- package/dist/export/wavWriter.js +126 -0
- package/dist/export/wavWriter.js.map +1 -0
- package/dist/import/index.d.ts +5 -0
- package/dist/import/index.d.ts.map +1 -0
- package/dist/import/index.js +8 -0
- package/dist/import/index.js.map +1 -0
- package/dist/import/remoteCache.d.ts +60 -0
- package/dist/import/remoteCache.d.ts.map +1 -0
- package/dist/import/remoteCache.js +194 -0
- package/dist/import/remoteCache.js.map +1 -0
- package/dist/import/uge/uge.reader.d.ts +27 -0
- package/dist/import/uge/uge.reader.d.ts.map +1 -0
- package/dist/import/uge/uge.reader.js +545 -0
- package/dist/import/uge/uge.reader.js.map +1 -0
- package/dist/import/urlUtils.d.ts +50 -0
- package/dist/import/urlUtils.d.ts.map +1 -0
- package/dist/import/urlUtils.js +87 -0
- package/dist/import/urlUtils.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +318 -0
- package/dist/index.js.map +1 -0
- package/dist/instruments/instrumentState.d.ts +15 -0
- package/dist/instruments/instrumentState.d.ts.map +1 -0
- package/dist/instruments/instrumentState.js +24 -0
- package/dist/instruments/instrumentState.js.map +1 -0
- package/dist/parser/ast.d.ts +22 -0
- package/dist/parser/ast.d.ts.map +1 -0
- package/dist/parser/ast.js +5 -0
- package/dist/parser/ast.js.map +1 -0
- package/dist/parser/index.d.ts +14 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +10 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/peggy/generated/parser.d.ts +8 -0
- package/dist/parser/peggy/generated/parser.d.ts.map +1 -0
- package/dist/parser/peggy/generated/parser.js +6269 -0
- package/dist/parser/peggy/generated/parser.js.map +1 -0
- package/dist/parser/peggy/index.d.ts +3 -0
- package/dist/parser/peggy/index.d.ts.map +1 -0
- package/dist/parser/peggy/index.js +555 -0
- package/dist/parser/peggy/index.js.map +1 -0
- package/dist/parser/structured.d.ts +16 -0
- package/dist/parser/structured.d.ts.map +1 -0
- package/dist/parser/structured.js +232 -0
- package/dist/parser/structured.js.map +1 -0
- package/dist/parser/tokenizer.d.ts +12 -0
- package/dist/parser/tokenizer.d.ts.map +1 -0
- package/dist/parser/tokenizer.js +14 -0
- package/dist/parser/tokenizer.js.map +1 -0
- package/dist/patterns/expand.d.ts +32 -0
- package/dist/patterns/expand.d.ts.map +1 -0
- package/dist/patterns/expand.js +184 -0
- package/dist/patterns/expand.js.map +1 -0
- package/dist/patterns/index.d.ts +2 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +2 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/scheduler/index.d.ts +6 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +9 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/tickScheduler.d.ts +27 -0
- package/dist/scheduler/tickScheduler.d.ts.map +1 -0
- package/dist/scheduler/tickScheduler.js +74 -0
- package/dist/scheduler/tickScheduler.js.map +1 -0
- package/dist/sequences/expand.d.ts +14 -0
- package/dist/sequences/expand.d.ts.map +1 -0
- package/dist/sequences/expand.js +137 -0
- package/dist/sequences/expand.js.map +1 -0
- package/dist/song/importResolver.browser.d.ts +29 -0
- package/dist/song/importResolver.browser.d.ts.map +1 -0
- package/dist/song/importResolver.browser.js +168 -0
- package/dist/song/importResolver.browser.js.map +1 -0
- package/dist/song/importResolver.d.ts +40 -0
- package/dist/song/importResolver.d.ts.map +1 -0
- package/dist/song/importResolver.js +445 -0
- package/dist/song/importResolver.js.map +1 -0
- package/dist/song/index.browser.d.ts +9 -0
- package/dist/song/index.browser.d.ts.map +1 -0
- package/dist/song/index.browser.js +7 -0
- package/dist/song/index.browser.js.map +1 -0
- package/dist/song/index.d.ts +8 -0
- package/dist/song/index.d.ts.map +1 -0
- package/dist/song/index.js +6 -0
- package/dist/song/index.js.map +1 -0
- package/dist/song/resolver.browser.d.ts +50 -0
- package/dist/song/resolver.browser.d.ts.map +1 -0
- package/dist/song/resolver.browser.js +536 -0
- package/dist/song/resolver.browser.js.map +1 -0
- package/dist/song/resolver.d.ts +20 -0
- package/dist/song/resolver.d.ts.map +1 -0
- package/dist/song/resolver.js +540 -0
- package/dist/song/resolver.js.map +1 -0
- package/dist/song/songModel.d.ts +34 -0
- package/dist/song/songModel.d.ts.map +1 -0
- package/dist/song/songModel.js +2 -0
- package/dist/song/songModel.js.map +1 -0
- package/dist/tests/refExpander.test.d.ts +2 -0
- package/dist/tests/refExpander.test.d.ts.map +1 -0
- package/dist/tests/refExpander.test.js +37 -0
- package/dist/tests/refExpander.test.js.map +1 -0
- package/dist/util/diag.d.ts +16 -0
- package/dist/util/diag.d.ts.map +1 -0
- package/dist/util/diag.js +29 -0
- package/dist/util/diag.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// Structured events are enabled by default. The legacy opt-out environment
|
|
2
|
+
// variable (`BEATBAX_PEGGY_EVENTS`) has been removed as part of the Peggy
|
|
3
|
+
// migration; downstream code should assume structured fields exist when
|
|
4
|
+
// present on the AST.
|
|
5
|
+
export const patternEventsToTokens = (events) => {
|
|
6
|
+
if (!events)
|
|
7
|
+
return [];
|
|
8
|
+
const out = [];
|
|
9
|
+
for (const ev of events) {
|
|
10
|
+
if (!ev)
|
|
11
|
+
continue;
|
|
12
|
+
const raw = ev.raw;
|
|
13
|
+
switch (ev.kind) {
|
|
14
|
+
case 'note': {
|
|
15
|
+
const base = ev.value ?? raw ?? '';
|
|
16
|
+
const token = ev.effects && ev.effects.length > 0 ? base + ev.effects.map(e => `<${e}>`).join('') : base;
|
|
17
|
+
const dur = ev.duration && ev.duration > 0 ? ev.duration : 1;
|
|
18
|
+
out.push(token);
|
|
19
|
+
for (let i = 1; i < dur; i++)
|
|
20
|
+
out.push('_');
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
case 'rest': {
|
|
24
|
+
const token = ev.value ?? raw ?? '.';
|
|
25
|
+
const dur = ev.duration && ev.duration > 0 ? ev.duration : 1;
|
|
26
|
+
out.push(token);
|
|
27
|
+
for (let i = 1; i < dur; i++)
|
|
28
|
+
out.push('_');
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
case 'inline-inst': {
|
|
32
|
+
const name = ev.name ?? raw ?? '';
|
|
33
|
+
out.push(`inst ${name}`.trim());
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
case 'temp-inst': {
|
|
37
|
+
const name = ev.name ?? '';
|
|
38
|
+
const dur = ev.duration && ev.duration > 0 ? ev.duration : undefined;
|
|
39
|
+
const suffix = dur ? `,${dur}` : '';
|
|
40
|
+
out.push(`inst(${name}${suffix})`);
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
case 'token': {
|
|
44
|
+
const token = ev.value ?? raw ?? '';
|
|
45
|
+
if (Array.isArray(token)) {
|
|
46
|
+
out.push(...token);
|
|
47
|
+
}
|
|
48
|
+
else if (token) {
|
|
49
|
+
out.push(token);
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
default:
|
|
54
|
+
if (raw)
|
|
55
|
+
out.push(raw);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
};
|
|
61
|
+
export const parseSeqTransforms = (mods) => {
|
|
62
|
+
const out = [];
|
|
63
|
+
for (const m of mods || []) {
|
|
64
|
+
const raw = (m.raw || '').trim();
|
|
65
|
+
const loc = m.loc;
|
|
66
|
+
if (!raw)
|
|
67
|
+
continue;
|
|
68
|
+
const mOct = raw.match(/^oct\(([+-]?\d+)\)$/i);
|
|
69
|
+
if (mOct) {
|
|
70
|
+
out.push({ kind: 'oct', value: parseInt(mOct[1], 10), raw, loc });
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (/^rev$/i.test(raw)) {
|
|
74
|
+
out.push({ kind: 'rev', raw, loc });
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const mSlow = raw.match(/^slow(?:\((\d+)\))?$/i);
|
|
78
|
+
if (mSlow) {
|
|
79
|
+
out.push({ kind: 'slow', value: mSlow[1] ? parseInt(mSlow[1], 10) : 2, raw, loc });
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const mFast = raw.match(/^fast(?:\((\d+)\))?$/i);
|
|
83
|
+
if (mFast) {
|
|
84
|
+
out.push({ kind: 'fast', value: mFast[1] ? parseInt(mFast[1], 10) : 2, raw, loc });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const mInst = raw.match(/^inst\(([^)]*)\)$/i);
|
|
88
|
+
if (mInst) {
|
|
89
|
+
out.push({ kind: 'inst', value: mInst[1], raw, loc });
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const mPan = raw.match(/^pan\(([^)]*)\)$/i);
|
|
93
|
+
if (mPan) {
|
|
94
|
+
out.push({ kind: 'pan', value: mPan[1].trim(), raw, loc });
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const mTrans = raw.match(/^([+-]?\d+)$/);
|
|
98
|
+
if (mTrans) {
|
|
99
|
+
out.push({ kind: 'transpose', value: parseInt(mTrans[1], 10), raw, loc });
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const mSem = raw.match(/^semitone\((-?\d+)\)$/i) || raw.match(/^st\((-?\d+)\)$/i) || raw.match(/^trans\((-?\d+)\)$/i);
|
|
103
|
+
if (mSem) {
|
|
104
|
+
out.push({ kind: 'transpose', value: parseInt(mSem[1], 10), raw, loc });
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
out.push({ kind: 'unknown', raw, loc });
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
};
|
|
111
|
+
const sequenceTransformToString = (tr) => {
|
|
112
|
+
if (!tr)
|
|
113
|
+
return '';
|
|
114
|
+
if (tr.raw)
|
|
115
|
+
return tr.raw;
|
|
116
|
+
switch (tr.kind) {
|
|
117
|
+
case 'oct': return `oct(${tr.value ?? 0})`;
|
|
118
|
+
case 'rev': return 'rev';
|
|
119
|
+
case 'slow': return `slow(${tr.value ?? 2})`;
|
|
120
|
+
case 'fast': return `fast(${tr.value ?? 2})`;
|
|
121
|
+
case 'inst': return `inst(${tr.value ?? ''})`;
|
|
122
|
+
case 'pan': return `pan(${tr.value ?? ''})`;
|
|
123
|
+
case 'transpose': {
|
|
124
|
+
const v = typeof tr.value === 'number' ? tr.value : 0;
|
|
125
|
+
return v >= 0 ? `+${v}` : `${v}`;
|
|
126
|
+
}
|
|
127
|
+
default:
|
|
128
|
+
return tr.raw ?? '';
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
const tokenizeSeqRhs = (rhs) => {
|
|
132
|
+
const tokenize = (s) => {
|
|
133
|
+
const out = [];
|
|
134
|
+
let i = 0;
|
|
135
|
+
let cur = '';
|
|
136
|
+
let inS = false;
|
|
137
|
+
let inD = false;
|
|
138
|
+
while (i < s.length) {
|
|
139
|
+
const ch = s[i];
|
|
140
|
+
if (ch === "'" && !inD) {
|
|
141
|
+
inS = !inS;
|
|
142
|
+
cur += ch;
|
|
143
|
+
i++;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (ch === '"' && !inS) {
|
|
147
|
+
inD = !inD;
|
|
148
|
+
cur += ch;
|
|
149
|
+
i++;
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (inS || inD) {
|
|
153
|
+
cur += ch;
|
|
154
|
+
i++;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (ch === '(') {
|
|
158
|
+
let depth = 1;
|
|
159
|
+
let j = i + 1;
|
|
160
|
+
let group = '(';
|
|
161
|
+
while (j < s.length && depth > 0) {
|
|
162
|
+
const c2 = s[j];
|
|
163
|
+
group += c2;
|
|
164
|
+
if (c2 === '(')
|
|
165
|
+
depth++;
|
|
166
|
+
else if (c2 === ')')
|
|
167
|
+
depth--;
|
|
168
|
+
j++;
|
|
169
|
+
}
|
|
170
|
+
cur += group;
|
|
171
|
+
i = j;
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
if (/\s/.test(ch) || ch === ',') {
|
|
175
|
+
if (cur.trim()) {
|
|
176
|
+
out.push(cur.trim());
|
|
177
|
+
cur = '';
|
|
178
|
+
}
|
|
179
|
+
i++;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
cur += ch;
|
|
183
|
+
i++;
|
|
184
|
+
}
|
|
185
|
+
if (cur.trim())
|
|
186
|
+
out.push(cur.trim());
|
|
187
|
+
return out;
|
|
188
|
+
};
|
|
189
|
+
const rawParts = tokenize(rhs);
|
|
190
|
+
const parts = [];
|
|
191
|
+
for (let i = 0; i < rawParts.length; i++) {
|
|
192
|
+
const p = rawParts[i];
|
|
193
|
+
if (p === '*' && i > 0 && i + 1 < rawParts.length && /^\d+$/.test(rawParts[i + 1])) {
|
|
194
|
+
const prev = parts.pop();
|
|
195
|
+
if (prev)
|
|
196
|
+
parts.push(`${prev}*${rawParts[i + 1]}`);
|
|
197
|
+
i++;
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (/^\*\d+$/.test(p) && parts.length > 0) {
|
|
201
|
+
const prev = parts.pop();
|
|
202
|
+
parts.push(`${prev}${p}`);
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
parts.push(p);
|
|
206
|
+
}
|
|
207
|
+
return parts;
|
|
208
|
+
};
|
|
209
|
+
export const normalizeSeqItems = (items, rhs, rhsTokens) => {
|
|
210
|
+
if (items && items.length > 0) {
|
|
211
|
+
return items.map(it => ({ name: it.name, transforms: parseSeqTransforms(it.modifiers || []), loc: it.loc, raw: it.raw }));
|
|
212
|
+
}
|
|
213
|
+
const tokens = rhsTokens && rhsTokens.length > 0 ? rhsTokens.slice() : rhs ? tokenizeSeqRhs(rhs) : [];
|
|
214
|
+
return tokens.map(tok => {
|
|
215
|
+
const parts = tok.split(':');
|
|
216
|
+
const base = parts.shift() || tok;
|
|
217
|
+
const modifiers = parts.map(p => ({ raw: p }));
|
|
218
|
+
return { name: base, transforms: parseSeqTransforms(modifiers), raw: tok };
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
export const materializeSequenceItems = (items) => {
|
|
222
|
+
const out = [];
|
|
223
|
+
for (const it of items || []) {
|
|
224
|
+
const mods = (it.transforms || []).map(t => sequenceTransformToString(t)).filter(Boolean);
|
|
225
|
+
const repeat = it.repeat && it.repeat > 1 ? it.repeat : 1;
|
|
226
|
+
const token = mods.length > 0 ? `${it.name}${mods.map(m => `:${m}`).join('')}` : it.name;
|
|
227
|
+
for (let r = 0; r < repeat; r++)
|
|
228
|
+
out.push(token);
|
|
229
|
+
}
|
|
230
|
+
return out;
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=structured.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structured.js","sourceRoot":"","sources":["../../src/parser/structured.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function tokenize(_input: string): Token[];
|
|
2
|
+
export declare class Tokenizer {
|
|
3
|
+
constructor(_source?: string);
|
|
4
|
+
}
|
|
5
|
+
export declare const TokenType: any;
|
|
6
|
+
export type Token = {
|
|
7
|
+
type: string;
|
|
8
|
+
value?: string;
|
|
9
|
+
line: number;
|
|
10
|
+
col: number;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=tokenizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/parser/tokenizer.ts"],"names":[],"mappings":"AAUA,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAAqB;AAEtE,qBAAa,SAAS;gBACR,OAAO,CAAC,EAAE,MAAM;CAC7B;AAED,eAAO,MAAM,SAAS,EAAS,GAAG,CAAC;AAGnC,MAAM,MAAM,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Lazy-proxy to legacy tokenizer to avoid statically importing it into
|
|
2
|
+
// browser bundles. Callers can use `tokenize` or `Tokenizer` as before;
|
|
3
|
+
// the actual implementation is required at runtime only when first used.
|
|
4
|
+
// Legacy tokenizer support was removed as part of the Peggy migration.
|
|
5
|
+
// Callers should use the Peggy parser and structured tokenizers instead.
|
|
6
|
+
function legacyRemoved() {
|
|
7
|
+
throw new Error('Legacy tokenizer has been removed after the Peggy migration. Use the Peggy parser and structured events instead.');
|
|
8
|
+
}
|
|
9
|
+
export function tokenize(_input) { legacyRemoved(); }
|
|
10
|
+
export class Tokenizer {
|
|
11
|
+
constructor(_source) { legacyRemoved(); }
|
|
12
|
+
}
|
|
13
|
+
export const TokenType = {};
|
|
14
|
+
//# sourceMappingURL=tokenizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/parser/tokenizer.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,yEAAyE;AAEzE,uEAAuE;AACvE,yEAAyE;AACzE,SAAS,aAAa;IACrB,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAC;AACrI,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAc,IAAa,aAAa,EAAE,CAAC,CAAC,CAAC;AAEtE,MAAM,OAAO,SAAS;IACpB,YAAY,OAAgB,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,EAAS,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern expansion utilities.
|
|
3
|
+
*
|
|
4
|
+
* Supported features:
|
|
5
|
+
* - Notes like C3, G#4, Bb2
|
|
6
|
+
* - Rests as `.`
|
|
7
|
+
* - Element repeat: `C4*3` repeats C4 three times
|
|
8
|
+
* - Group repeat: `(C4 E4 G4)*2` repeats the group twice
|
|
9
|
+
* - Transpose by semitones or octaves via helper functions
|
|
10
|
+
*/
|
|
11
|
+
export declare function noteToMidi(note: string): number | null;
|
|
12
|
+
export declare function midiToNote(n: number): string;
|
|
13
|
+
/** Expand a pattern string into an array of tokens.
|
|
14
|
+
* Grammar (informal):
|
|
15
|
+
* pattern := item (WS item)*
|
|
16
|
+
* item := group ('*' number)? | token ('*' number)?
|
|
17
|
+
* group := '(' pattern ')'
|
|
18
|
+
* token := NOTE | '.' | IDENT
|
|
19
|
+
*/
|
|
20
|
+
export declare function expandPattern(text: string): string[];
|
|
21
|
+
export declare function transposePattern(tokens: string[], opts: {
|
|
22
|
+
semitones?: number;
|
|
23
|
+
octaves?: number;
|
|
24
|
+
}): string[];
|
|
25
|
+
declare const _default: {
|
|
26
|
+
expandPattern: typeof expandPattern;
|
|
27
|
+
transposePattern: typeof transposePattern;
|
|
28
|
+
noteToMidi: typeof noteToMidi;
|
|
29
|
+
midiToNote: typeof midiToNote;
|
|
30
|
+
};
|
|
31
|
+
export default _default;
|
|
32
|
+
//# sourceMappingURL=expand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../src/patterns/expand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+BH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAStD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAkB5C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAqEpD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,EAAE,CAwB3G;;;;;;;AAED,wBAKE"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern expansion utilities.
|
|
3
|
+
*
|
|
4
|
+
* Supported features:
|
|
5
|
+
* - Notes like C3, G#4, Bb2
|
|
6
|
+
* - Rests as `.`
|
|
7
|
+
* - Element repeat: `C4*3` repeats C4 three times
|
|
8
|
+
* - Group repeat: `(C4 E4 G4)*2` repeats the group twice
|
|
9
|
+
* - Transpose by semitones or octaves via helper functions
|
|
10
|
+
*/
|
|
11
|
+
const NOTE_BASE = {
|
|
12
|
+
C: 0,
|
|
13
|
+
'C#': 1,
|
|
14
|
+
DB: 1,
|
|
15
|
+
D: 2,
|
|
16
|
+
'D#': 3,
|
|
17
|
+
EB: 3,
|
|
18
|
+
E: 4,
|
|
19
|
+
F: 5,
|
|
20
|
+
'F#': 6,
|
|
21
|
+
GB: 6,
|
|
22
|
+
G: 7,
|
|
23
|
+
'G#': 8,
|
|
24
|
+
AB: 8,
|
|
25
|
+
A: 9,
|
|
26
|
+
'A#': 10,
|
|
27
|
+
BB: 10,
|
|
28
|
+
B: 11,
|
|
29
|
+
};
|
|
30
|
+
function normalizeNoteName(name) {
|
|
31
|
+
const m = name.match(/^([A-Ga-g])([#b]?)(-?\d+)$/);
|
|
32
|
+
if (!m)
|
|
33
|
+
return null;
|
|
34
|
+
const letter = m[1].toUpperCase();
|
|
35
|
+
const accidental = m[2] || null;
|
|
36
|
+
const octave = parseInt(m[3], 10);
|
|
37
|
+
return { letter, accidental, octave };
|
|
38
|
+
}
|
|
39
|
+
export function noteToMidi(note) {
|
|
40
|
+
const p = normalizeNoteName(note);
|
|
41
|
+
if (!p)
|
|
42
|
+
return null;
|
|
43
|
+
const key = p.letter + (p.accidental ? (p.accidental === 'b' ? 'B' : '#') : '');
|
|
44
|
+
const semitone = NOTE_BASE[key];
|
|
45
|
+
if (semitone === undefined)
|
|
46
|
+
return null;
|
|
47
|
+
// MIDI: C4 = 60. So calculate from octave.
|
|
48
|
+
// octave numbers follow scientific pitch: C4=60
|
|
49
|
+
return (p.octave + 1) * 12 + semitone; // because octave -1 would be MIDI starting at C-1 = 0
|
|
50
|
+
}
|
|
51
|
+
export function midiToNote(n) {
|
|
52
|
+
const octave = Math.floor(n / 12) - 1;
|
|
53
|
+
const pitch = n % 12;
|
|
54
|
+
const names = {
|
|
55
|
+
0: 'C',
|
|
56
|
+
1: 'C#',
|
|
57
|
+
2: 'D',
|
|
58
|
+
3: 'D#',
|
|
59
|
+
4: 'E',
|
|
60
|
+
5: 'F',
|
|
61
|
+
6: 'F#',
|
|
62
|
+
7: 'G',
|
|
63
|
+
8: 'G#',
|
|
64
|
+
9: 'A',
|
|
65
|
+
10: 'A#',
|
|
66
|
+
11: 'B',
|
|
67
|
+
};
|
|
68
|
+
return `${names[pitch]}${octave}`;
|
|
69
|
+
}
|
|
70
|
+
/** Expand a pattern string into an array of tokens.
|
|
71
|
+
* Grammar (informal):
|
|
72
|
+
* pattern := item (WS item)*
|
|
73
|
+
* item := group ('*' number)? | token ('*' number)?
|
|
74
|
+
* group := '(' pattern ')'
|
|
75
|
+
* token := NOTE | '.' | IDENT
|
|
76
|
+
*/
|
|
77
|
+
export function expandPattern(text) {
|
|
78
|
+
// Preprocess to normalize spaces around * operators
|
|
79
|
+
text = text.replace(/\)\s*\*\s*(\d+)/g, ')*$1');
|
|
80
|
+
text = text.replace(/([^\s\(\)])\s*\*\s*(\d+)/g, '$1*$2');
|
|
81
|
+
// Tokenize by spaces but keep parentheses and *number attached
|
|
82
|
+
const tokens = [];
|
|
83
|
+
let i = 0;
|
|
84
|
+
while (i < text.length) {
|
|
85
|
+
const ch = text[i];
|
|
86
|
+
if (ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r') {
|
|
87
|
+
i++;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (ch === '(') {
|
|
91
|
+
// find matching ')'
|
|
92
|
+
let depth = 1;
|
|
93
|
+
let j = i + 1;
|
|
94
|
+
while (j < text.length && depth > 0) {
|
|
95
|
+
if (text[j] === '(')
|
|
96
|
+
depth++;
|
|
97
|
+
else if (text[j] === ')')
|
|
98
|
+
depth--;
|
|
99
|
+
j++;
|
|
100
|
+
}
|
|
101
|
+
const group = text.slice(i + 1, j - 1);
|
|
102
|
+
// check for *N (skip whitespace first)
|
|
103
|
+
let k = j;
|
|
104
|
+
while (k < text.length && /\s/.test(text[k]))
|
|
105
|
+
k++;
|
|
106
|
+
let repeat = 1;
|
|
107
|
+
if (k < text.length && text[k] === '*') {
|
|
108
|
+
k++;
|
|
109
|
+
const m = text.slice(k).match(/^\d+/);
|
|
110
|
+
if (m) {
|
|
111
|
+
repeat = parseInt(m[0], 10);
|
|
112
|
+
k += m[0].length;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// expand group recursively repeat times
|
|
116
|
+
const expandedGroup = expandPattern(group);
|
|
117
|
+
for (let r = 0; r < repeat; r++)
|
|
118
|
+
tokens.push(...expandedGroup);
|
|
119
|
+
i = k;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
// read until whitespace
|
|
123
|
+
let j = i;
|
|
124
|
+
while (j < text.length && !/\s/.test(text[j]))
|
|
125
|
+
j++;
|
|
126
|
+
let atom = text.slice(i, j);
|
|
127
|
+
// check for :duration suffix (e.g. C5:4 -> C5 _ _ _)
|
|
128
|
+
const mDur = atom.match(/^(.*):(\d+)$/);
|
|
129
|
+
if (mDur) {
|
|
130
|
+
const base = mDur[1];
|
|
131
|
+
const count = parseInt(mDur[2], 10);
|
|
132
|
+
tokens.push(base);
|
|
133
|
+
for (let r = 1; r < count; r++)
|
|
134
|
+
tokens.push('_');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// check for *N repeat suffix
|
|
138
|
+
const m = atom.match(/^(.*)\*(\d+)$/);
|
|
139
|
+
if (m) {
|
|
140
|
+
const base = m[1];
|
|
141
|
+
const count = parseInt(m[2], 10);
|
|
142
|
+
for (let r = 0; r < count; r++)
|
|
143
|
+
tokens.push(base);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
tokens.push(atom);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
i = j;
|
|
150
|
+
}
|
|
151
|
+
return tokens;
|
|
152
|
+
}
|
|
153
|
+
export function transposePattern(tokens, opts) {
|
|
154
|
+
const semitones = (opts.semitones || 0) + (opts.octaves || 0) * 12;
|
|
155
|
+
if (semitones === 0)
|
|
156
|
+
return tokens.slice();
|
|
157
|
+
return tokens.map(t => {
|
|
158
|
+
if (t === '.' || t === '_' || t === '-')
|
|
159
|
+
return t;
|
|
160
|
+
// Extract note from tokens with effects: E3<port:8> -> E3, <port:8>
|
|
161
|
+
const effectMatch = t.match(/^([^<]+)(<.+>)?$/);
|
|
162
|
+
if (effectMatch) {
|
|
163
|
+
const notePart = effectMatch[1];
|
|
164
|
+
const effectPart = effectMatch[2] || '';
|
|
165
|
+
const midi = noteToMidi(notePart);
|
|
166
|
+
if (midi === null)
|
|
167
|
+
return t; // Not a note, return unchanged
|
|
168
|
+
const transposedNote = midiToNote(midi + semitones);
|
|
169
|
+
return transposedNote + effectPart; // Reconstruct with effects
|
|
170
|
+
}
|
|
171
|
+
// Fallback: try direct transpose
|
|
172
|
+
const midi = noteToMidi(t);
|
|
173
|
+
if (midi === null)
|
|
174
|
+
return t;
|
|
175
|
+
return midiToNote(midi + semitones);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
export default {
|
|
179
|
+
expandPattern,
|
|
180
|
+
transposePattern,
|
|
181
|
+
noteToMidi,
|
|
182
|
+
midiToNote,
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/patterns/expand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import TickScheduler, { TickSchedulerOptions } from './tickScheduler.js';
|
|
2
|
+
export declare function createScheduler(ctx: any, opts?: TickSchedulerOptions): TickScheduler;
|
|
3
|
+
export { TickScheduler };
|
|
4
|
+
export default createScheduler;
|
|
5
|
+
export type { TickSchedulerOptions };
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,EAAE,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,oBAAyB,iBAIxE;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,eAAe,eAAe,CAAC;AAE/B,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import TickScheduler from './tickScheduler.js';
|
|
2
|
+
export function createScheduler(ctx, opts = {}) {
|
|
3
|
+
const isBrowser = typeof globalThis.requestAnimationFrame === 'function';
|
|
4
|
+
const useRaf = typeof opts.useRaf === 'boolean' ? opts.useRaf : isBrowser;
|
|
5
|
+
return new TickScheduler(ctx, { ...opts, useRaf });
|
|
6
|
+
}
|
|
7
|
+
export { TickScheduler };
|
|
8
|
+
export default createScheduler;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAuC,MAAM,oBAAoB,CAAC;AAEzE,MAAM,UAAU,eAAe,CAAC,GAAQ,EAAE,OAA6B,EAAE;IACvE,MAAM,SAAS,GAAG,OAAQ,UAAkB,CAAC,qBAAqB,KAAK,UAAU,CAAC;IAClF,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface TickSchedulerOptions {
|
|
2
|
+
useRaf?: boolean;
|
|
3
|
+
interval?: number;
|
|
4
|
+
lookahead?: number;
|
|
5
|
+
raf?: (cb: FrameRequestCallback) => number;
|
|
6
|
+
cancelRaf?: (id: number) => void;
|
|
7
|
+
setInterval?: (handler: (...args: any[]) => void, timeout?: number, ...args: any[]) => any;
|
|
8
|
+
clearInterval?: (id: any) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare class TickScheduler {
|
|
11
|
+
private ctx;
|
|
12
|
+
private lookahead;
|
|
13
|
+
private interval;
|
|
14
|
+
private timer;
|
|
15
|
+
private rafId;
|
|
16
|
+
private queue;
|
|
17
|
+
private opts;
|
|
18
|
+
constructor(ctx: any, opts?: TickSchedulerOptions);
|
|
19
|
+
schedule(time: number, fn: () => void): void;
|
|
20
|
+
scheduleAligned(time: number, fn: () => void, frameHz?: number): void;
|
|
21
|
+
start(): void;
|
|
22
|
+
stop(): void;
|
|
23
|
+
clear(): void;
|
|
24
|
+
private tick;
|
|
25
|
+
}
|
|
26
|
+
export default TickScheduler;
|
|
27
|
+
//# sourceMappingURL=tickScheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tickScheduler.d.ts","sourceRoot":"","sources":["../../src/scheduler/tickScheduler.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,oBAAoB,KAAK,MAAM,CAAC;IAC3C,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAC3F,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC;CACnC;AAGD,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,IAAI,CAAuB;gBAEvB,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,oBAAyB;IAOrD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI;IAKrC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,EAAE,OAAO,SAAM;IAO3D,KAAK;IAiBL,IAAI;IAaJ,KAAK;IAIL,OAAO,CAAC,IAAI;CAQb;AAED,eAAe,aAAa,CAAC"}
|