@ugfoundation/swaralipi-js 0.1.0 → 0.1.2
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/{batch-NF2Q2CFS.js → batch-V3EV3QAC.js} +5 -5
- package/dist/{batch-NF2Q2CFS.js.map → batch-V3EV3QAC.js.map} +1 -1
- package/dist/{chunk-C6O7DYU5.js → chunk-LN463EEN.js} +10 -3
- package/dist/chunk-LN463EEN.js.map +1 -0
- package/dist/{chunk-GWXI2HJA.js → chunk-VCXQJ2GB.js} +4 -2
- package/dist/chunk-VCXQJ2GB.js.map +1 -0
- package/dist/{chunk-N3NNWAOW.js → chunk-XD2RRIVH.js} +4 -4
- package/dist/{chunk-N3NNWAOW.js.map → chunk-XD2RRIVH.js.map} +1 -1
- package/dist/cli.cjs +10 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +3 -3
- package/dist/convert/index.cjs +10 -1
- package/dist/convert/index.cjs.map +1 -1
- package/dist/convert/index.d.cts +1 -1
- package/dist/convert/index.d.ts +1 -1
- package/dist/convert/index.js +3 -3
- package/dist/index.cjs +10 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/player/index.cjs +41 -7
- package/dist/player/index.cjs.map +1 -1
- package/dist/player/index.d.cts +36 -7
- package/dist/player/index.d.ts +36 -7
- package/dist/player/index.js +38 -9
- package/dist/player/index.js.map +1 -1
- package/dist/{schema-gxhG45OK.d.cts → schema-D3wyNRqM.d.cts} +39 -0
- package/dist/{schema-gxhG45OK.d.ts → schema-D3wyNRqM.d.ts} +39 -0
- package/dist/spec/index.cjs +10 -1
- package/dist/spec/index.cjs.map +1 -1
- package/dist/spec/index.d.cts +6 -4
- package/dist/spec/index.d.ts +6 -4
- package/dist/spec/index.js +2 -2
- package/dist/{taals-DguYW0wf.d.cts → taals-B5RcMMIt.d.cts} +12 -2
- package/dist/{taals-DguYW0wf.d.ts → taals-B5RcMMIt.d.ts} +12 -2
- package/dist/viewer/index.cjs +10 -1
- package/dist/viewer/index.cjs.map +1 -1
- package/dist/viewer/index.d.cts +1 -1
- package/dist/viewer/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/chunk-C6O7DYU5.js.map +0 -1
- package/dist/chunk-GWXI2HJA.js.map +0 -1
|
@@ -146,6 +146,13 @@ type Part = z.infer<typeof partSchema>;
|
|
|
146
146
|
declare const taalSchema: z.ZodEffects<z.ZodObject<{
|
|
147
147
|
/** Player sample key, e.g. `dadra`, `teentaal`. */
|
|
148
148
|
id: z.ZodString;
|
|
149
|
+
/**
|
|
150
|
+
* Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional
|
|
151
|
+
* and additive — omitted means the taal's default variation, so existing
|
|
152
|
+
* docs are unaffected. The player honors it but never exposes a variation
|
|
153
|
+
* picker; selecting a non-default variation is the consumer's premium policy.
|
|
154
|
+
*/
|
|
155
|
+
variation: z.ZodOptional<z.ZodString>;
|
|
149
156
|
numBeats: z.ZodNumber;
|
|
150
157
|
/** Vibhag groupings; if given, they sum to numBeats. */
|
|
151
158
|
bhaags: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
@@ -156,24 +163,28 @@ declare const taalSchema: z.ZodEffects<z.ZodObject<{
|
|
|
156
163
|
}, "strip", z.ZodTypeAny, {
|
|
157
164
|
id: string;
|
|
158
165
|
numBeats: number;
|
|
166
|
+
variation?: string | undefined;
|
|
159
167
|
bhaags?: number[] | undefined;
|
|
160
168
|
sam?: number | undefined;
|
|
161
169
|
khaali?: number[] | undefined;
|
|
162
170
|
}, {
|
|
163
171
|
id: string;
|
|
164
172
|
numBeats: number;
|
|
173
|
+
variation?: string | undefined;
|
|
165
174
|
bhaags?: number[] | undefined;
|
|
166
175
|
sam?: number | undefined;
|
|
167
176
|
khaali?: number[] | undefined;
|
|
168
177
|
}>, {
|
|
169
178
|
id: string;
|
|
170
179
|
numBeats: number;
|
|
180
|
+
variation?: string | undefined;
|
|
171
181
|
bhaags?: number[] | undefined;
|
|
172
182
|
sam?: number | undefined;
|
|
173
183
|
khaali?: number[] | undefined;
|
|
174
184
|
}, {
|
|
175
185
|
id: string;
|
|
176
186
|
numBeats: number;
|
|
187
|
+
variation?: string | undefined;
|
|
177
188
|
bhaags?: number[] | undefined;
|
|
178
189
|
sam?: number | undefined;
|
|
179
190
|
khaali?: number[] | undefined;
|
|
@@ -189,6 +200,13 @@ declare const metaSchema: z.ZodObject<{
|
|
|
189
200
|
taal: z.ZodOptional<z.ZodEffects<z.ZodObject<{
|
|
190
201
|
/** Player sample key, e.g. `dadra`, `teentaal`. */
|
|
191
202
|
id: z.ZodString;
|
|
203
|
+
/**
|
|
204
|
+
* Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional
|
|
205
|
+
* and additive — omitted means the taal's default variation, so existing
|
|
206
|
+
* docs are unaffected. The player honors it but never exposes a variation
|
|
207
|
+
* picker; selecting a non-default variation is the consumer's premium policy.
|
|
208
|
+
*/
|
|
209
|
+
variation: z.ZodOptional<z.ZodString>;
|
|
192
210
|
numBeats: z.ZodNumber;
|
|
193
211
|
/** Vibhag groupings; if given, they sum to numBeats. */
|
|
194
212
|
bhaags: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
@@ -199,24 +217,28 @@ declare const metaSchema: z.ZodObject<{
|
|
|
199
217
|
}, "strip", z.ZodTypeAny, {
|
|
200
218
|
id: string;
|
|
201
219
|
numBeats: number;
|
|
220
|
+
variation?: string | undefined;
|
|
202
221
|
bhaags?: number[] | undefined;
|
|
203
222
|
sam?: number | undefined;
|
|
204
223
|
khaali?: number[] | undefined;
|
|
205
224
|
}, {
|
|
206
225
|
id: string;
|
|
207
226
|
numBeats: number;
|
|
227
|
+
variation?: string | undefined;
|
|
208
228
|
bhaags?: number[] | undefined;
|
|
209
229
|
sam?: number | undefined;
|
|
210
230
|
khaali?: number[] | undefined;
|
|
211
231
|
}>, {
|
|
212
232
|
id: string;
|
|
213
233
|
numBeats: number;
|
|
234
|
+
variation?: string | undefined;
|
|
214
235
|
bhaags?: number[] | undefined;
|
|
215
236
|
sam?: number | undefined;
|
|
216
237
|
khaali?: number[] | undefined;
|
|
217
238
|
}, {
|
|
218
239
|
id: string;
|
|
219
240
|
numBeats: number;
|
|
241
|
+
variation?: string | undefined;
|
|
220
242
|
bhaags?: number[] | undefined;
|
|
221
243
|
sam?: number | undefined;
|
|
222
244
|
khaali?: number[] | undefined;
|
|
@@ -247,6 +269,7 @@ declare const metaSchema: z.ZodObject<{
|
|
|
247
269
|
taal?: {
|
|
248
270
|
id: string;
|
|
249
271
|
numBeats: number;
|
|
272
|
+
variation?: string | undefined;
|
|
250
273
|
bhaags?: number[] | undefined;
|
|
251
274
|
sam?: number | undefined;
|
|
252
275
|
khaali?: number[] | undefined;
|
|
@@ -265,6 +288,7 @@ declare const metaSchema: z.ZodObject<{
|
|
|
265
288
|
taal?: {
|
|
266
289
|
id: string;
|
|
267
290
|
numBeats: number;
|
|
291
|
+
variation?: string | undefined;
|
|
268
292
|
bhaags?: number[] | undefined;
|
|
269
293
|
sam?: number | undefined;
|
|
270
294
|
khaali?: number[] | undefined;
|
|
@@ -291,6 +315,13 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
291
315
|
taal: z.ZodOptional<z.ZodEffects<z.ZodObject<{
|
|
292
316
|
/** Player sample key, e.g. `dadra`, `teentaal`. */
|
|
293
317
|
id: z.ZodString;
|
|
318
|
+
/**
|
|
319
|
+
* Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional
|
|
320
|
+
* and additive — omitted means the taal's default variation, so existing
|
|
321
|
+
* docs are unaffected. The player honors it but never exposes a variation
|
|
322
|
+
* picker; selecting a non-default variation is the consumer's premium policy.
|
|
323
|
+
*/
|
|
324
|
+
variation: z.ZodOptional<z.ZodString>;
|
|
294
325
|
numBeats: z.ZodNumber;
|
|
295
326
|
/** Vibhag groupings; if given, they sum to numBeats. */
|
|
296
327
|
bhaags: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
@@ -301,24 +332,28 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
301
332
|
}, "strip", z.ZodTypeAny, {
|
|
302
333
|
id: string;
|
|
303
334
|
numBeats: number;
|
|
335
|
+
variation?: string | undefined;
|
|
304
336
|
bhaags?: number[] | undefined;
|
|
305
337
|
sam?: number | undefined;
|
|
306
338
|
khaali?: number[] | undefined;
|
|
307
339
|
}, {
|
|
308
340
|
id: string;
|
|
309
341
|
numBeats: number;
|
|
342
|
+
variation?: string | undefined;
|
|
310
343
|
bhaags?: number[] | undefined;
|
|
311
344
|
sam?: number | undefined;
|
|
312
345
|
khaali?: number[] | undefined;
|
|
313
346
|
}>, {
|
|
314
347
|
id: string;
|
|
315
348
|
numBeats: number;
|
|
349
|
+
variation?: string | undefined;
|
|
316
350
|
bhaags?: number[] | undefined;
|
|
317
351
|
sam?: number | undefined;
|
|
318
352
|
khaali?: number[] | undefined;
|
|
319
353
|
}, {
|
|
320
354
|
id: string;
|
|
321
355
|
numBeats: number;
|
|
356
|
+
variation?: string | undefined;
|
|
322
357
|
bhaags?: number[] | undefined;
|
|
323
358
|
sam?: number | undefined;
|
|
324
359
|
khaali?: number[] | undefined;
|
|
@@ -349,6 +384,7 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
349
384
|
taal?: {
|
|
350
385
|
id: string;
|
|
351
386
|
numBeats: number;
|
|
387
|
+
variation?: string | undefined;
|
|
352
388
|
bhaags?: number[] | undefined;
|
|
353
389
|
sam?: number | undefined;
|
|
354
390
|
khaali?: number[] | undefined;
|
|
@@ -367,6 +403,7 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
367
403
|
taal?: {
|
|
368
404
|
id: string;
|
|
369
405
|
numBeats: number;
|
|
406
|
+
variation?: string | undefined;
|
|
370
407
|
bhaags?: number[] | undefined;
|
|
371
408
|
sam?: number | undefined;
|
|
372
409
|
khaali?: number[] | undefined;
|
|
@@ -414,6 +451,7 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
414
451
|
taal?: {
|
|
415
452
|
id: string;
|
|
416
453
|
numBeats: number;
|
|
454
|
+
variation?: string | undefined;
|
|
417
455
|
bhaags?: number[] | undefined;
|
|
418
456
|
sam?: number | undefined;
|
|
419
457
|
khaali?: number[] | undefined;
|
|
@@ -442,6 +480,7 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
442
480
|
taal?: {
|
|
443
481
|
id: string;
|
|
444
482
|
numBeats: number;
|
|
483
|
+
variation?: string | undefined;
|
|
445
484
|
bhaags?: number[] | undefined;
|
|
446
485
|
sam?: number | undefined;
|
|
447
486
|
khaali?: number[] | undefined;
|
|
@@ -146,6 +146,13 @@ type Part = z.infer<typeof partSchema>;
|
|
|
146
146
|
declare const taalSchema: z.ZodEffects<z.ZodObject<{
|
|
147
147
|
/** Player sample key, e.g. `dadra`, `teentaal`. */
|
|
148
148
|
id: z.ZodString;
|
|
149
|
+
/**
|
|
150
|
+
* Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional
|
|
151
|
+
* and additive — omitted means the taal's default variation, so existing
|
|
152
|
+
* docs are unaffected. The player honors it but never exposes a variation
|
|
153
|
+
* picker; selecting a non-default variation is the consumer's premium policy.
|
|
154
|
+
*/
|
|
155
|
+
variation: z.ZodOptional<z.ZodString>;
|
|
149
156
|
numBeats: z.ZodNumber;
|
|
150
157
|
/** Vibhag groupings; if given, they sum to numBeats. */
|
|
151
158
|
bhaags: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
@@ -156,24 +163,28 @@ declare const taalSchema: z.ZodEffects<z.ZodObject<{
|
|
|
156
163
|
}, "strip", z.ZodTypeAny, {
|
|
157
164
|
id: string;
|
|
158
165
|
numBeats: number;
|
|
166
|
+
variation?: string | undefined;
|
|
159
167
|
bhaags?: number[] | undefined;
|
|
160
168
|
sam?: number | undefined;
|
|
161
169
|
khaali?: number[] | undefined;
|
|
162
170
|
}, {
|
|
163
171
|
id: string;
|
|
164
172
|
numBeats: number;
|
|
173
|
+
variation?: string | undefined;
|
|
165
174
|
bhaags?: number[] | undefined;
|
|
166
175
|
sam?: number | undefined;
|
|
167
176
|
khaali?: number[] | undefined;
|
|
168
177
|
}>, {
|
|
169
178
|
id: string;
|
|
170
179
|
numBeats: number;
|
|
180
|
+
variation?: string | undefined;
|
|
171
181
|
bhaags?: number[] | undefined;
|
|
172
182
|
sam?: number | undefined;
|
|
173
183
|
khaali?: number[] | undefined;
|
|
174
184
|
}, {
|
|
175
185
|
id: string;
|
|
176
186
|
numBeats: number;
|
|
187
|
+
variation?: string | undefined;
|
|
177
188
|
bhaags?: number[] | undefined;
|
|
178
189
|
sam?: number | undefined;
|
|
179
190
|
khaali?: number[] | undefined;
|
|
@@ -189,6 +200,13 @@ declare const metaSchema: z.ZodObject<{
|
|
|
189
200
|
taal: z.ZodOptional<z.ZodEffects<z.ZodObject<{
|
|
190
201
|
/** Player sample key, e.g. `dadra`, `teentaal`. */
|
|
191
202
|
id: z.ZodString;
|
|
203
|
+
/**
|
|
204
|
+
* Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional
|
|
205
|
+
* and additive — omitted means the taal's default variation, so existing
|
|
206
|
+
* docs are unaffected. The player honors it but never exposes a variation
|
|
207
|
+
* picker; selecting a non-default variation is the consumer's premium policy.
|
|
208
|
+
*/
|
|
209
|
+
variation: z.ZodOptional<z.ZodString>;
|
|
192
210
|
numBeats: z.ZodNumber;
|
|
193
211
|
/** Vibhag groupings; if given, they sum to numBeats. */
|
|
194
212
|
bhaags: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
@@ -199,24 +217,28 @@ declare const metaSchema: z.ZodObject<{
|
|
|
199
217
|
}, "strip", z.ZodTypeAny, {
|
|
200
218
|
id: string;
|
|
201
219
|
numBeats: number;
|
|
220
|
+
variation?: string | undefined;
|
|
202
221
|
bhaags?: number[] | undefined;
|
|
203
222
|
sam?: number | undefined;
|
|
204
223
|
khaali?: number[] | undefined;
|
|
205
224
|
}, {
|
|
206
225
|
id: string;
|
|
207
226
|
numBeats: number;
|
|
227
|
+
variation?: string | undefined;
|
|
208
228
|
bhaags?: number[] | undefined;
|
|
209
229
|
sam?: number | undefined;
|
|
210
230
|
khaali?: number[] | undefined;
|
|
211
231
|
}>, {
|
|
212
232
|
id: string;
|
|
213
233
|
numBeats: number;
|
|
234
|
+
variation?: string | undefined;
|
|
214
235
|
bhaags?: number[] | undefined;
|
|
215
236
|
sam?: number | undefined;
|
|
216
237
|
khaali?: number[] | undefined;
|
|
217
238
|
}, {
|
|
218
239
|
id: string;
|
|
219
240
|
numBeats: number;
|
|
241
|
+
variation?: string | undefined;
|
|
220
242
|
bhaags?: number[] | undefined;
|
|
221
243
|
sam?: number | undefined;
|
|
222
244
|
khaali?: number[] | undefined;
|
|
@@ -247,6 +269,7 @@ declare const metaSchema: z.ZodObject<{
|
|
|
247
269
|
taal?: {
|
|
248
270
|
id: string;
|
|
249
271
|
numBeats: number;
|
|
272
|
+
variation?: string | undefined;
|
|
250
273
|
bhaags?: number[] | undefined;
|
|
251
274
|
sam?: number | undefined;
|
|
252
275
|
khaali?: number[] | undefined;
|
|
@@ -265,6 +288,7 @@ declare const metaSchema: z.ZodObject<{
|
|
|
265
288
|
taal?: {
|
|
266
289
|
id: string;
|
|
267
290
|
numBeats: number;
|
|
291
|
+
variation?: string | undefined;
|
|
268
292
|
bhaags?: number[] | undefined;
|
|
269
293
|
sam?: number | undefined;
|
|
270
294
|
khaali?: number[] | undefined;
|
|
@@ -291,6 +315,13 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
291
315
|
taal: z.ZodOptional<z.ZodEffects<z.ZodObject<{
|
|
292
316
|
/** Player sample key, e.g. `dadra`, `teentaal`. */
|
|
293
317
|
id: z.ZodString;
|
|
318
|
+
/**
|
|
319
|
+
* Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional
|
|
320
|
+
* and additive — omitted means the taal's default variation, so existing
|
|
321
|
+
* docs are unaffected. The player honors it but never exposes a variation
|
|
322
|
+
* picker; selecting a non-default variation is the consumer's premium policy.
|
|
323
|
+
*/
|
|
324
|
+
variation: z.ZodOptional<z.ZodString>;
|
|
294
325
|
numBeats: z.ZodNumber;
|
|
295
326
|
/** Vibhag groupings; if given, they sum to numBeats. */
|
|
296
327
|
bhaags: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
@@ -301,24 +332,28 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
301
332
|
}, "strip", z.ZodTypeAny, {
|
|
302
333
|
id: string;
|
|
303
334
|
numBeats: number;
|
|
335
|
+
variation?: string | undefined;
|
|
304
336
|
bhaags?: number[] | undefined;
|
|
305
337
|
sam?: number | undefined;
|
|
306
338
|
khaali?: number[] | undefined;
|
|
307
339
|
}, {
|
|
308
340
|
id: string;
|
|
309
341
|
numBeats: number;
|
|
342
|
+
variation?: string | undefined;
|
|
310
343
|
bhaags?: number[] | undefined;
|
|
311
344
|
sam?: number | undefined;
|
|
312
345
|
khaali?: number[] | undefined;
|
|
313
346
|
}>, {
|
|
314
347
|
id: string;
|
|
315
348
|
numBeats: number;
|
|
349
|
+
variation?: string | undefined;
|
|
316
350
|
bhaags?: number[] | undefined;
|
|
317
351
|
sam?: number | undefined;
|
|
318
352
|
khaali?: number[] | undefined;
|
|
319
353
|
}, {
|
|
320
354
|
id: string;
|
|
321
355
|
numBeats: number;
|
|
356
|
+
variation?: string | undefined;
|
|
322
357
|
bhaags?: number[] | undefined;
|
|
323
358
|
sam?: number | undefined;
|
|
324
359
|
khaali?: number[] | undefined;
|
|
@@ -349,6 +384,7 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
349
384
|
taal?: {
|
|
350
385
|
id: string;
|
|
351
386
|
numBeats: number;
|
|
387
|
+
variation?: string | undefined;
|
|
352
388
|
bhaags?: number[] | undefined;
|
|
353
389
|
sam?: number | undefined;
|
|
354
390
|
khaali?: number[] | undefined;
|
|
@@ -367,6 +403,7 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
367
403
|
taal?: {
|
|
368
404
|
id: string;
|
|
369
405
|
numBeats: number;
|
|
406
|
+
variation?: string | undefined;
|
|
370
407
|
bhaags?: number[] | undefined;
|
|
371
408
|
sam?: number | undefined;
|
|
372
409
|
khaali?: number[] | undefined;
|
|
@@ -414,6 +451,7 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
414
451
|
taal?: {
|
|
415
452
|
id: string;
|
|
416
453
|
numBeats: number;
|
|
454
|
+
variation?: string | undefined;
|
|
417
455
|
bhaags?: number[] | undefined;
|
|
418
456
|
sam?: number | undefined;
|
|
419
457
|
khaali?: number[] | undefined;
|
|
@@ -442,6 +480,7 @@ declare const swaralipiSchema: z.ZodObject<{
|
|
|
442
480
|
taal?: {
|
|
443
481
|
id: string;
|
|
444
482
|
numBeats: number;
|
|
483
|
+
variation?: string | undefined;
|
|
445
484
|
bhaags?: number[] | undefined;
|
|
446
485
|
sam?: number | undefined;
|
|
447
486
|
khaali?: number[] | undefined;
|
package/dist/spec/index.cjs
CHANGED
|
@@ -59,6 +59,13 @@ var partSchema = zod.z.object({
|
|
|
59
59
|
var taalSchema = zod.z.object({
|
|
60
60
|
/** Player sample key, e.g. `dadra`, `teentaal`. */
|
|
61
61
|
id: zod.z.string(),
|
|
62
|
+
/**
|
|
63
|
+
* Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional
|
|
64
|
+
* and additive — omitted means the taal's default variation, so existing
|
|
65
|
+
* docs are unaffected. The player honors it but never exposes a variation
|
|
66
|
+
* picker; selecting a non-default variation is the consumer's premium policy.
|
|
67
|
+
*/
|
|
68
|
+
variation: zod.z.string().optional(),
|
|
62
69
|
numBeats: zod.z.number().int().positive(),
|
|
63
70
|
/** Vibhag groupings; if given, they sum to numBeats. */
|
|
64
71
|
bhaags: zod.z.array(zod.z.number().int().positive()).optional(),
|
|
@@ -111,11 +118,13 @@ var TAALS = {
|
|
|
111
118
|
jhaptaal: { id: "jhaptaal", numBeats: 10, bhaags: [2, 3, 2, 3], sam: 0, khaali: [5] },
|
|
112
119
|
ektaal: { id: "ektaal", numBeats: 12, bhaags: [2, 2, 2, 2, 2, 2], sam: 0, khaali: [2, 6] },
|
|
113
120
|
adachautaal: { id: "adachautaal", numBeats: 14, sam: 0 },
|
|
121
|
+
shashthi: { id: "shashthi", numBeats: 6, bhaags: [2, 4], sam: 0 },
|
|
122
|
+
// ষষ্ঠী
|
|
114
123
|
teentaal: { id: "teentaal", numBeats: 16, bhaags: [4, 4, 4, 4], sam: 0, khaali: [8] }
|
|
115
124
|
};
|
|
116
125
|
|
|
117
126
|
// src/spec/index.ts
|
|
118
|
-
var SPEC_VERSION = "0.1.
|
|
127
|
+
var SPEC_VERSION = "0.1.2";
|
|
119
128
|
function parseSwaralipi(data) {
|
|
120
129
|
return swaralipiSchema.parse(data);
|
|
121
130
|
}
|
package/dist/spec/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/spec/schema.ts","../../src/spec/taals.ts","../../src/spec/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\n/**\n * swaralipi-js JSON spec — Zod schema + inferred types.\n\n/** Octave registers */\nexport const octaveSchema = z.enum([\n 'ati-mandra', // very low\n 'mandra', // low (dot below)\n 'madhyam', // middle\n 'taar', // high (ref/dot above)\n 'ati-taar', // very high\n]);\nexport type Octave = z.infer<typeof octaveSchema>;\n\n/**\n * The seven shuddha svara letters:\n * `d` = ধৈবত (dha), `n` = নিষাদ (ni). Komal/tivra are flags, not letters.\n */\nexport const svaraLetterSchema = z.enum(['s', 'r', 'g', 'm', 'p', 'd', 'n']);\nexport type SvaraLetter = z.infer<typeof svaraLetterSchema>;\n\n/** A pitch as `[octave, letter]` */\nexport const svaraSchema = z.tuple([octaveSchema, svaraLetterSchema]);\nexport type Svara = z.infer<typeof svaraSchema>;\n\n/** Microtone variants below komal (legend: অল্পকোমল / অতিকোমল). */\nexport const microtoneSchema = z.enum(['alpakomal', 'atikomal']);\nexport type Microtone = z.infer<typeof microtoneSchema>;\n\n/**\n * Barline weights. Swarabitan distinguishes the light দাঁড়ি (।) that\n * separates vibhags *within* a taal cycle from the দণ্ড (danda, I) strokes:\n * - `dari` — । vibhag separator inside the cycle\n * - `single` — I end of one taal cycle (ফেরা)\n * - `double` — II section (kali) boundary / return-to-asthayi marker\n * - `quad` — IIII end of the song\n */\nexport const barSchema = z.enum(['dari', 'single', 'double', 'quad']);\nexport type Bar = z.infer<typeof barSchema>;\n\n/**\n * A repeat-bracket edge. Brackets span a range of notes; the opening note\n * carries `{ ..., edge: 'open' }` and the closing note `{ ..., edge: 'close' }`.\n * kind: `repeat` = {} গুন্ডবন্ধনী, `skip` = () বক্রবন্ধনী (omit on repeat),\n * `alt` = [] সরল বন্ধনী (changed notes on repeat).\n */\nexport const bracketSchema = z.object({\n kind: z.enum(['repeat', 'skip', 'alt']),\n edge: z.enum(['open', 'close']),\n});\nexport type Bracket = z.infer<typeof bracketSchema>;\n\n/**\n * A single token in a row. A token is one of: a pitched note (`svara`),\n * a rest (`rest`), an আ-কার sustain (`sustain`), a barline (`bar`), or a\n * purely raw/undecoded cell (`raw`) — possibly carrying annotations\n * (`above`/`below`) or a lyric syllable on an otherwise empty column.\n * The `.refine` enforces that a note carries at least one of these so\n * truly empty tokens can't slip through.\n *\n * `above`/`below` make `Note` recursive, so the type is hand-written and\n * the schema is typed `z.ZodType<Note>` via `z.lazy` (all fields are\n * optional, hence input ≡ output and the annotation is sound).\n */\nexport interface Note {\n /** Pitch. Omitted for rests, sustains, and barlines. */\n svara?: Svara;\n /** কোমল (flat). */\n komal?: boolean;\n /** তীব্র / কড়ি (sharp — applies to ma). */\n tivra?: boolean;\n /** Sub-komal microtone (legend: অল্পকোমল / অতিকোমল). */\n microtone?: Microtone;\n /** Duration in মাত্রা (beats): 1 (default), 0.5, 0.25, 2, … */\n durationMatra?: number;\n /**\n * আ-কার: no new syllable attack. Alone (no `svara`) it holds the previous\n * note's pitch and vowel; combined with `svara` it is a melisma — the\n * pitch moves while the previous syllable's vowel continues (Swarabitan\n * writes these with a leading hyphen, e.g. `-sfa`).\n */\n sustain?: boolean;\n /** বিরাম: a rest of `durationMatra` beats. */\n rest?: boolean;\n /** কণ স্বর: a grace note attached before this note. */\n kan?: Svara;\n /** মীড় (glide/slur) endpoint. */\n meend?: 'start' | 'end';\n /** Barline. A bar token usually has no `svara`. */\n bar?: Bar;\n /** Repeat-bracket edges opening/closing on this token. */\n brackets?: Bracket[];\n /** Lyric syllable aligned under this note */\n lyric?: string;\n /** Lossless passthrough of the source cell (e.g. raw Swarabitan code). */\n raw?: string;\n /**\n * Annotation notes rendered above this column: alt-on-repeat passages\n * (legend: পরিবর্তিত স্বর in [ ] শিরোদেশে), stop marks, beat numbers.\n */\n above?: Note[];\n /** Annotation notes rendered below this column. */\n below?: Note[];\n}\n\nexport const noteSchema: z.ZodType<Note> = z.lazy(() =>\n z\n .object({\n svara: svaraSchema.optional(),\n komal: z.boolean().optional(),\n tivra: z.boolean().optional(),\n microtone: microtoneSchema.optional(),\n durationMatra: z.number().positive().optional(),\n sustain: z.boolean().optional(),\n rest: z.boolean().optional(),\n kan: svaraSchema.optional(),\n meend: z.enum(['start', 'end']).optional(),\n bar: barSchema.optional(),\n brackets: z.array(bracketSchema).optional(),\n lyric: z.string().optional(),\n raw: z.string().optional(),\n above: z.array(noteSchema).optional(),\n below: z.array(noteSchema).optional(),\n })\n .refine(\n (n) =>\n n.svara !== undefined ||\n n.rest === true ||\n n.sustain === true ||\n n.bar !== undefined ||\n n.raw !== undefined ||\n (n.brackets !== undefined && n.brackets.length > 0) ||\n (n.above !== undefined && n.above.length > 0) ||\n (n.below !== undefined && n.below.length > 0) ||\n n.lyric !== undefined,\n {\n message:\n 'note must carry one of: svara, rest, sustain, bar, raw, lyric, brackets, or a non-empty above/below',\n },\n ),\n);\n\n/** A written line of the song: a sequence of note tokens. */\nexport const rowSchema = z.object({\n /** Optional line label (e.g. a tuk/section marker). */\n label: z.string().optional(),\n notes: z.array(noteSchema),\n});\nexport type Row = z.infer<typeof rowSchema>;\n\n/** A structural section: আস্থায়ী / অন্তরা / সঞ্চারী / আভোগ, or free text. */\nexport const partSchema = z.object({\n name: z.string().optional(),\n rows: z.array(rowSchema),\n});\nexport type Part = z.infer<typeof partSchema>;\n\n/**\n * Taal definition. `numBeats` is the cycle length in মাত্রা; `bhaags` (if\n * present) must sum to `numBeats`; `sam`/`khaali` are 0-based beat indices.\n */\nexport const taalSchema = z\n .object({\n /** Player sample key, e.g. `dadra`, `teentaal`. */\n id: z.string(),\n numBeats: z.number().int().positive(),\n /** Vibhag groupings; if given, they sum to numBeats. */\n bhaags: z.array(z.number().int().positive()).optional(),\n /** Sam (cycle start) beat index, 0-based. */\n sam: z.number().int().nonnegative().optional(),\n /** Khaali (wave) beat indices, 0-based. */\n khaali: z.array(z.number().int().nonnegative()).optional(),\n })\n .refine((t) => t.bhaags === undefined || t.bhaags.reduce((a, b) => a + b, 0) === t.numBeats, {\n message: 'bhaags must sum to numBeats',\n });\nexport type Taal = z.infer<typeof taalSchema>;\n\n/** Document-level metadata. */\nexport const metaSchema = z.object({\n title: z.string(),\n /** Cross-reference to a gitabitan.io song content id (filename, immutable). */\n songId: z.string().optional(),\n /** Source NLTR node/song id. */\n nltrId: z.number().int().optional(),\n taal: taalSchema.optional(),\n /**\n * The taal name exactly as printed in the source (e.g. `তালমুক্ত`,\n * `ষষ্ঠী(২/৪)`). Always set by the NLTR converter; `taal` is set only\n * when the name resolves to a known definition.\n */\n taalName: z.string().optional(),\n /** Base pitch for playback, e.g. `C`, `C#`, or the player's `cs` form. */\n tonic: z.string().optional(),\n /** Default playback tempo in matra/min. Player-only — the viewer ignores it.\n * The player adopts it on `load()` (precedence: constructor `bpm` → `setBpm`\n * tweak → this → 90). `null` is the converter's blank placeholder = unset. */\n bpm: z.number().positive().nullable().optional(),\n raag: z.string().optional(),\n /** আবর্তন: number of taal cycles, when the source states it. */\n avartan: z.number().int().positive().optional(),\n /** স্বরলিপিকার (notation author). */\n notationBy: z.string().optional(),\n /** Provenance note or URL. */\n source: z.string().optional(),\n});\nexport type Meta = z.infer<typeof metaSchema>;\n\n/** A complete swaralipi document. */\nexport const swaralipiSchema = z.object({\n /** Spec version this document targets (see SPEC_VERSION in ./index). */\n version: z.string(),\n meta: metaSchema,\n parts: z.array(partSchema),\n});\nexport type Swaralipi = z.infer<typeof swaralipiSchema>;\n","import type { Taal } from './schema.js';\n\n/**\n * Reference definitions for the taals the player will sample (P2.3):\n * adachautaal, dadra, ektaal, jhaptaal, kehrwa, rupak, teentaal.\n *\n * `numBeats` and the `bhaags` given below are standard Hindustani taal theory.\n * `bhaags` is omitted where a single canonical division isn't well-agreed\n * (adachautaal) — we assert only what's uncontested. `sam` is beat 0 for all.\n */\nexport const TAALS = {\n dadra: { id: 'dadra', numBeats: 6, bhaags: [3, 3], sam: 0, khaali: [3] },\n kehrwa: { id: 'kehrwa', numBeats: 8, bhaags: [4, 4], sam: 0, khaali: [4] },\n rupak: { id: 'rupak', numBeats: 7, bhaags: [3, 2, 2], sam: 0, khaali: [0] },\n jhaptaal: { id: 'jhaptaal', numBeats: 10, bhaags: [2, 3, 2, 3], sam: 0, khaali: [5] },\n ektaal: { id: 'ektaal', numBeats: 12, bhaags: [2, 2, 2, 2, 2, 2], sam: 0, khaali: [2, 6] },\n adachautaal: { id: 'adachautaal', numBeats: 14, sam: 0 },\n teentaal: { id: 'teentaal', numBeats: 16, bhaags: [4, 4, 4, 4], sam: 0, khaali: [8] },\n} as const satisfies Record<string, Taal>;\n\nexport type TaalId = keyof typeof TAALS;\n","/**\n * @ugfoundation/swaralipi-js/spec\n *\n * The swaralipi JSON spec: Zod schemas, inferred TS types, and parse helpers.\n */\nimport { swaralipiSchema, type Swaralipi } from './schema.js';\n\n/** Current spec version. Documents declare the version they target. */\nexport const SPEC_VERSION = '0.1.0';\n\nexport {\n octaveSchema,\n svaraLetterSchema,\n svaraSchema,\n microtoneSchema,\n barSchema,\n bracketSchema,\n noteSchema,\n rowSchema,\n partSchema,\n taalSchema,\n metaSchema,\n swaralipiSchema,\n} from './schema.js';\n\nexport type {\n Octave,\n SvaraLetter,\n Svara,\n Microtone,\n Bar,\n Bracket,\n Note,\n Row,\n Part,\n Taal,\n Meta,\n Swaralipi,\n} from './schema.js';\n\nexport { TAALS, type TaalId } from './taals.js';\n\n/** Parse + validate unknown data into a `Swaralipi`. Throws `ZodError` on failure. */\nexport function parseSwaralipi(data: unknown): Swaralipi {\n return swaralipiSchema.parse(data);\n}\n\n/** Non-throwing variant: returns Zod's `{ success, data | error }` result. */\nexport function safeParseSwaralipi(data: unknown) {\n return swaralipiSchema.safeParse(data);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/spec/schema.ts","../../src/spec/taals.ts","../../src/spec/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\n/**\n * swaralipi-js JSON spec — Zod schema + inferred types.\n\n/** Octave registers */\nexport const octaveSchema = z.enum([\n 'ati-mandra', // very low\n 'mandra', // low (dot below)\n 'madhyam', // middle\n 'taar', // high (ref/dot above)\n 'ati-taar', // very high\n]);\nexport type Octave = z.infer<typeof octaveSchema>;\n\n/**\n * The seven shuddha svara letters:\n * `d` = ধৈবত (dha), `n` = নিষাদ (ni). Komal/tivra are flags, not letters.\n */\nexport const svaraLetterSchema = z.enum(['s', 'r', 'g', 'm', 'p', 'd', 'n']);\nexport type SvaraLetter = z.infer<typeof svaraLetterSchema>;\n\n/** A pitch as `[octave, letter]` */\nexport const svaraSchema = z.tuple([octaveSchema, svaraLetterSchema]);\nexport type Svara = z.infer<typeof svaraSchema>;\n\n/** Microtone variants below komal (legend: অল্পকোমল / অতিকোমল). */\nexport const microtoneSchema = z.enum(['alpakomal', 'atikomal']);\nexport type Microtone = z.infer<typeof microtoneSchema>;\n\n/**\n * Barline weights. Swarabitan distinguishes the light দাঁড়ি (।) that\n * separates vibhags *within* a taal cycle from the দণ্ড (danda, I) strokes:\n * - `dari` — । vibhag separator inside the cycle\n * - `single` — I end of one taal cycle (ফেরা)\n * - `double` — II section (kali) boundary / return-to-asthayi marker\n * - `quad` — IIII end of the song\n */\nexport const barSchema = z.enum(['dari', 'single', 'double', 'quad']);\nexport type Bar = z.infer<typeof barSchema>;\n\n/**\n * A repeat-bracket edge. Brackets span a range of notes; the opening note\n * carries `{ ..., edge: 'open' }` and the closing note `{ ..., edge: 'close' }`.\n * kind: `repeat` = {} গুন্ডবন্ধনী, `skip` = () বক্রবন্ধনী (omit on repeat),\n * `alt` = [] সরল বন্ধনী (changed notes on repeat).\n */\nexport const bracketSchema = z.object({\n kind: z.enum(['repeat', 'skip', 'alt']),\n edge: z.enum(['open', 'close']),\n});\nexport type Bracket = z.infer<typeof bracketSchema>;\n\n/**\n * A single token in a row. A token is one of: a pitched note (`svara`),\n * a rest (`rest`), an আ-কার sustain (`sustain`), a barline (`bar`), or a\n * purely raw/undecoded cell (`raw`) — possibly carrying annotations\n * (`above`/`below`) or a lyric syllable on an otherwise empty column.\n * The `.refine` enforces that a note carries at least one of these so\n * truly empty tokens can't slip through.\n *\n * `above`/`below` make `Note` recursive, so the type is hand-written and\n * the schema is typed `z.ZodType<Note>` via `z.lazy` (all fields are\n * optional, hence input ≡ output and the annotation is sound).\n */\nexport interface Note {\n /** Pitch. Omitted for rests, sustains, and barlines. */\n svara?: Svara;\n /** কোমল (flat). */\n komal?: boolean;\n /** তীব্র / কড়ি (sharp — applies to ma). */\n tivra?: boolean;\n /** Sub-komal microtone (legend: অল্পকোমল / অতিকোমল). */\n microtone?: Microtone;\n /** Duration in মাত্রা (beats): 1 (default), 0.5, 0.25, 2, … */\n durationMatra?: number;\n /**\n * আ-কার: no new syllable attack. Alone (no `svara`) it holds the previous\n * note's pitch and vowel; combined with `svara` it is a melisma — the\n * pitch moves while the previous syllable's vowel continues (Swarabitan\n * writes these with a leading hyphen, e.g. `-sfa`).\n */\n sustain?: boolean;\n /** বিরাম: a rest of `durationMatra` beats. */\n rest?: boolean;\n /** কণ স্বর: a grace note attached before this note. */\n kan?: Svara;\n /** মীড় (glide/slur) endpoint. */\n meend?: 'start' | 'end';\n /** Barline. A bar token usually has no `svara`. */\n bar?: Bar;\n /** Repeat-bracket edges opening/closing on this token. */\n brackets?: Bracket[];\n /** Lyric syllable aligned under this note */\n lyric?: string;\n /** Lossless passthrough of the source cell (e.g. raw Swarabitan code). */\n raw?: string;\n /**\n * Annotation notes rendered above this column: alt-on-repeat passages\n * (legend: পরিবর্তিত স্বর in [ ] শিরোদেশে), stop marks, beat numbers.\n */\n above?: Note[];\n /** Annotation notes rendered below this column. */\n below?: Note[];\n}\n\nexport const noteSchema: z.ZodType<Note> = z.lazy(() =>\n z\n .object({\n svara: svaraSchema.optional(),\n komal: z.boolean().optional(),\n tivra: z.boolean().optional(),\n microtone: microtoneSchema.optional(),\n durationMatra: z.number().positive().optional(),\n sustain: z.boolean().optional(),\n rest: z.boolean().optional(),\n kan: svaraSchema.optional(),\n meend: z.enum(['start', 'end']).optional(),\n bar: barSchema.optional(),\n brackets: z.array(bracketSchema).optional(),\n lyric: z.string().optional(),\n raw: z.string().optional(),\n above: z.array(noteSchema).optional(),\n below: z.array(noteSchema).optional(),\n })\n .refine(\n (n) =>\n n.svara !== undefined ||\n n.rest === true ||\n n.sustain === true ||\n n.bar !== undefined ||\n n.raw !== undefined ||\n (n.brackets !== undefined && n.brackets.length > 0) ||\n (n.above !== undefined && n.above.length > 0) ||\n (n.below !== undefined && n.below.length > 0) ||\n n.lyric !== undefined,\n {\n message:\n 'note must carry one of: svara, rest, sustain, bar, raw, lyric, brackets, or a non-empty above/below',\n },\n ),\n);\n\n/** A written line of the song: a sequence of note tokens. */\nexport const rowSchema = z.object({\n /** Optional line label (e.g. a tuk/section marker). */\n label: z.string().optional(),\n notes: z.array(noteSchema),\n});\nexport type Row = z.infer<typeof rowSchema>;\n\n/** A structural section: আস্থায়ী / অন্তরা / সঞ্চারী / আভোগ, or free text. */\nexport const partSchema = z.object({\n name: z.string().optional(),\n rows: z.array(rowSchema),\n});\nexport type Part = z.infer<typeof partSchema>;\n\n/**\n * Taal definition. `numBeats` is the cycle length in মাত্রা; `bhaags` (if\n * present) must sum to `numBeats`; `sam`/`khaali` are 0-based beat indices.\n */\nexport const taalSchema = z\n .object({\n /** Player sample key, e.g. `dadra`, `teentaal`. */\n id: z.string(),\n /**\n * Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional\n * and additive — omitted means the taal's default variation, so existing\n * docs are unaffected. The player honors it but never exposes a variation\n * picker; selecting a non-default variation is the consumer's premium policy.\n */\n variation: z.string().optional(),\n numBeats: z.number().int().positive(),\n /** Vibhag groupings; if given, they sum to numBeats. */\n bhaags: z.array(z.number().int().positive()).optional(),\n /** Sam (cycle start) beat index, 0-based. */\n sam: z.number().int().nonnegative().optional(),\n /** Khaali (wave) beat indices, 0-based. */\n khaali: z.array(z.number().int().nonnegative()).optional(),\n })\n .refine((t) => t.bhaags === undefined || t.bhaags.reduce((a, b) => a + b, 0) === t.numBeats, {\n message: 'bhaags must sum to numBeats',\n });\nexport type Taal = z.infer<typeof taalSchema>;\n\n/** Document-level metadata. */\nexport const metaSchema = z.object({\n title: z.string(),\n /** Cross-reference to a gitabitan.io song content id (filename, immutable). */\n songId: z.string().optional(),\n /** Source NLTR node/song id. */\n nltrId: z.number().int().optional(),\n taal: taalSchema.optional(),\n /**\n * The taal name exactly as printed in the source (e.g. `তালমুক্ত`,\n * `ষষ্ঠী(২/৪)`). Always set by the NLTR converter; `taal` is set only\n * when the name resolves to a known definition.\n */\n taalName: z.string().optional(),\n /** Base pitch for playback, e.g. `C`, `C#`, or the player's `cs` form. */\n tonic: z.string().optional(),\n /** Default playback tempo in matra/min. Player-only — the viewer ignores it.\n * The player adopts it on `load()` (precedence: constructor `bpm` → `setBpm`\n * tweak → this → 90). `null` is the converter's blank placeholder = unset. */\n bpm: z.number().positive().nullable().optional(),\n raag: z.string().optional(),\n /** আবর্তন: number of taal cycles, when the source states it. */\n avartan: z.number().int().positive().optional(),\n /** স্বরলিপিকার (notation author). */\n notationBy: z.string().optional(),\n /** Provenance note or URL. */\n source: z.string().optional(),\n});\nexport type Meta = z.infer<typeof metaSchema>;\n\n/** A complete swaralipi document. */\nexport const swaralipiSchema = z.object({\n /** Spec version this document targets (see SPEC_VERSION in ./index). */\n version: z.string(),\n meta: metaSchema,\n parts: z.array(partSchema),\n});\nexport type Swaralipi = z.infer<typeof swaralipiSchema>;\n","import type { Taal } from './schema.js';\n\n/**\n * Reference definitions for the taals the player will sample:\n * adachautaal, dadra, ektaal, jhaptaal, kehrwa, rupak, shashthi, teentaal.\n *\n * `numBeats` and the `bhaags` given below are standard Hindustani taal theory.\n * `bhaags` is omitted where a single canonical division isn't well-agreed\n * (adachautaal) — we assert only what's uncontested. `sam` is beat 0 for all.\n *\n * Tabla loops live under `tabla/<id>/` by default; per-taal variation and\n * skip-bpm overrides (e.g. shashthi → `tabla/shashthi-pro/`) are in\n * instruments.ts's `TABLA_VARIATIONS`.\n */\nexport const TAALS = {\n dadra: { id: 'dadra', numBeats: 6, bhaags: [3, 3], sam: 0, khaali: [3] },\n kehrwa: { id: 'kehrwa', numBeats: 8, bhaags: [4, 4], sam: 0, khaali: [4] },\n rupak: { id: 'rupak', numBeats: 7, bhaags: [3, 2, 2], sam: 0, khaali: [0] },\n jhaptaal: { id: 'jhaptaal', numBeats: 10, bhaags: [2, 3, 2, 3], sam: 0, khaali: [5] },\n ektaal: { id: 'ektaal', numBeats: 12, bhaags: [2, 2, 2, 2, 2, 2], sam: 0, khaali: [2, 6] },\n adachautaal: { id: 'adachautaal', numBeats: 14, sam: 0 },\n shashthi: { id: 'shashthi', numBeats: 6, bhaags: [2, 4], sam: 0 }, // ষষ্ঠী\n teentaal: { id: 'teentaal', numBeats: 16, bhaags: [4, 4, 4, 4], sam: 0, khaali: [8] },\n} as const satisfies Record<string, Taal>;\n\nexport type TaalId = keyof typeof TAALS;\n","/**\n * @ugfoundation/swaralipi-js/spec\n *\n * The swaralipi JSON spec: Zod schemas, inferred TS types, and parse helpers.\n */\nimport { swaralipiSchema, type Swaralipi } from './schema.js';\n\n/** Current spec version. Documents declare the version they target. */\nexport const SPEC_VERSION = '0.1.2';\n\nexport {\n octaveSchema,\n svaraLetterSchema,\n svaraSchema,\n microtoneSchema,\n barSchema,\n bracketSchema,\n noteSchema,\n rowSchema,\n partSchema,\n taalSchema,\n metaSchema,\n swaralipiSchema,\n} from './schema.js';\n\nexport type {\n Octave,\n SvaraLetter,\n Svara,\n Microtone,\n Bar,\n Bracket,\n Note,\n Row,\n Part,\n Taal,\n Meta,\n Swaralipi,\n} from './schema.js';\n\nexport { TAALS, type TaalId } from './taals.js';\n\n/** Parse + validate unknown data into a `Swaralipi`. Throws `ZodError` on failure. */\nexport function parseSwaralipi(data: unknown): Swaralipi {\n return swaralipiSchema.parse(data);\n}\n\n/** Non-throwing variant: returns Zod's `{ success, data | error }` result. */\nexport function safeParseSwaralipi(data: unknown) {\n return swaralipiSchema.safeParse(data);\n}\n"]}
|
package/dist/spec/index.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as zod from 'zod';
|
|
2
|
-
import { S as Swaralipi, N as Note } from '../schema-
|
|
3
|
-
export { B as Bar, b as Bracket, M as Meta, c as Microtone, O as Octave, P as Part, R as Row, d as Svara, a as SvaraLetter, T as Taal, e as barSchema, f as bracketSchema, m as metaSchema, g as microtoneSchema, n as noteSchema, o as octaveSchema, p as partSchema, r as rowSchema, s as svaraLetterSchema, h as svaraSchema, i as swaralipiSchema, t as taalSchema } from '../schema-
|
|
4
|
-
export { a as TAALS, T as TaalId } from '../taals-
|
|
2
|
+
import { S as Swaralipi, N as Note } from '../schema-D3wyNRqM.cjs';
|
|
3
|
+
export { B as Bar, b as Bracket, M as Meta, c as Microtone, O as Octave, P as Part, R as Row, d as Svara, a as SvaraLetter, T as Taal, e as barSchema, f as bracketSchema, m as metaSchema, g as microtoneSchema, n as noteSchema, o as octaveSchema, p as partSchema, r as rowSchema, s as svaraLetterSchema, h as svaraSchema, i as swaralipiSchema, t as taalSchema } from '../schema-D3wyNRqM.cjs';
|
|
4
|
+
export { a as TAALS, T as TaalId } from '../taals-B5RcMMIt.cjs';
|
|
5
5
|
|
|
6
6
|
/** Current spec version. Documents declare the version they target. */
|
|
7
|
-
declare const SPEC_VERSION = "0.1.
|
|
7
|
+
declare const SPEC_VERSION = "0.1.2";
|
|
8
8
|
|
|
9
9
|
/** Parse + validate unknown data into a `Swaralipi`. Throws `ZodError` on failure. */
|
|
10
10
|
declare function parseSwaralipi(data: unknown): Swaralipi;
|
|
@@ -18,6 +18,7 @@ declare function safeParseSwaralipi(data: unknown): zod.SafeParseReturnType<{
|
|
|
18
18
|
taal?: {
|
|
19
19
|
id: string;
|
|
20
20
|
numBeats: number;
|
|
21
|
+
variation?: string | undefined;
|
|
21
22
|
bhaags?: number[] | undefined;
|
|
22
23
|
sam?: number | undefined;
|
|
23
24
|
khaali?: number[] | undefined;
|
|
@@ -46,6 +47,7 @@ declare function safeParseSwaralipi(data: unknown): zod.SafeParseReturnType<{
|
|
|
46
47
|
taal?: {
|
|
47
48
|
id: string;
|
|
48
49
|
numBeats: number;
|
|
50
|
+
variation?: string | undefined;
|
|
49
51
|
bhaags?: number[] | undefined;
|
|
50
52
|
sam?: number | undefined;
|
|
51
53
|
khaali?: number[] | undefined;
|
package/dist/spec/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as zod from 'zod';
|
|
2
|
-
import { S as Swaralipi, N as Note } from '../schema-
|
|
3
|
-
export { B as Bar, b as Bracket, M as Meta, c as Microtone, O as Octave, P as Part, R as Row, d as Svara, a as SvaraLetter, T as Taal, e as barSchema, f as bracketSchema, m as metaSchema, g as microtoneSchema, n as noteSchema, o as octaveSchema, p as partSchema, r as rowSchema, s as svaraLetterSchema, h as svaraSchema, i as swaralipiSchema, t as taalSchema } from '../schema-
|
|
4
|
-
export { a as TAALS, T as TaalId } from '../taals-
|
|
2
|
+
import { S as Swaralipi, N as Note } from '../schema-D3wyNRqM.js';
|
|
3
|
+
export { B as Bar, b as Bracket, M as Meta, c as Microtone, O as Octave, P as Part, R as Row, d as Svara, a as SvaraLetter, T as Taal, e as barSchema, f as bracketSchema, m as metaSchema, g as microtoneSchema, n as noteSchema, o as octaveSchema, p as partSchema, r as rowSchema, s as svaraLetterSchema, h as svaraSchema, i as swaralipiSchema, t as taalSchema } from '../schema-D3wyNRqM.js';
|
|
4
|
+
export { a as TAALS, T as TaalId } from '../taals-B5RcMMIt.js';
|
|
5
5
|
|
|
6
6
|
/** Current spec version. Documents declare the version they target. */
|
|
7
|
-
declare const SPEC_VERSION = "0.1.
|
|
7
|
+
declare const SPEC_VERSION = "0.1.2";
|
|
8
8
|
|
|
9
9
|
/** Parse + validate unknown data into a `Swaralipi`. Throws `ZodError` on failure. */
|
|
10
10
|
declare function parseSwaralipi(data: unknown): Swaralipi;
|
|
@@ -18,6 +18,7 @@ declare function safeParseSwaralipi(data: unknown): zod.SafeParseReturnType<{
|
|
|
18
18
|
taal?: {
|
|
19
19
|
id: string;
|
|
20
20
|
numBeats: number;
|
|
21
|
+
variation?: string | undefined;
|
|
21
22
|
bhaags?: number[] | undefined;
|
|
22
23
|
sam?: number | undefined;
|
|
23
24
|
khaali?: number[] | undefined;
|
|
@@ -46,6 +47,7 @@ declare function safeParseSwaralipi(data: unknown): zod.SafeParseReturnType<{
|
|
|
46
47
|
taal?: {
|
|
47
48
|
id: string;
|
|
48
49
|
numBeats: number;
|
|
50
|
+
variation?: string | undefined;
|
|
49
51
|
bhaags?: number[] | undefined;
|
|
50
52
|
sam?: number | undefined;
|
|
51
53
|
khaali?: number[] | undefined;
|
package/dist/spec/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { SPEC_VERSION, barSchema, bracketSchema, metaSchema, microtoneSchema, noteSchema, octaveSchema, parseSwaralipi, partSchema, rowSchema, safeParseSwaralipi, svaraLetterSchema, svaraSchema, swaralipiSchema, taalSchema } from '../chunk-
|
|
2
|
-
export { TAALS } from '../chunk-
|
|
1
|
+
export { SPEC_VERSION, barSchema, bracketSchema, metaSchema, microtoneSchema, noteSchema, octaveSchema, parseSwaralipi, partSchema, rowSchema, safeParseSwaralipi, svaraLetterSchema, svaraSchema, swaralipiSchema, taalSchema } from '../chunk-LN463EEN.js';
|
|
2
|
+
export { TAALS } from '../chunk-VCXQJ2GB.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reference definitions for the taals the player will sample
|
|
3
|
-
* adachautaal, dadra, ektaal, jhaptaal, kehrwa, rupak, teentaal.
|
|
2
|
+
* Reference definitions for the taals the player will sample:
|
|
3
|
+
* adachautaal, dadra, ektaal, jhaptaal, kehrwa, rupak, shashthi, teentaal.
|
|
4
4
|
*
|
|
5
5
|
* `numBeats` and the `bhaags` given below are standard Hindustani taal theory.
|
|
6
6
|
* `bhaags` is omitted where a single canonical division isn't well-agreed
|
|
7
7
|
* (adachautaal) — we assert only what's uncontested. `sam` is beat 0 for all.
|
|
8
|
+
*
|
|
9
|
+
* Tabla loops live under `tabla/<id>/` by default; per-taal variation and
|
|
10
|
+
* skip-bpm overrides (e.g. shashthi → `tabla/shashthi-pro/`) are in
|
|
11
|
+
* instruments.ts's `TABLA_VARIATIONS`.
|
|
8
12
|
*/
|
|
9
13
|
declare const TAALS: {
|
|
10
14
|
readonly dadra: {
|
|
@@ -47,6 +51,12 @@ declare const TAALS: {
|
|
|
47
51
|
readonly numBeats: 14;
|
|
48
52
|
readonly sam: 0;
|
|
49
53
|
};
|
|
54
|
+
readonly shashthi: {
|
|
55
|
+
readonly id: "shashthi";
|
|
56
|
+
readonly numBeats: 6;
|
|
57
|
+
readonly bhaags: [2, 4];
|
|
58
|
+
readonly sam: 0;
|
|
59
|
+
};
|
|
50
60
|
readonly teentaal: {
|
|
51
61
|
readonly id: "teentaal";
|
|
52
62
|
readonly numBeats: 16;
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reference definitions for the taals the player will sample
|
|
3
|
-
* adachautaal, dadra, ektaal, jhaptaal, kehrwa, rupak, teentaal.
|
|
2
|
+
* Reference definitions for the taals the player will sample:
|
|
3
|
+
* adachautaal, dadra, ektaal, jhaptaal, kehrwa, rupak, shashthi, teentaal.
|
|
4
4
|
*
|
|
5
5
|
* `numBeats` and the `bhaags` given below are standard Hindustani taal theory.
|
|
6
6
|
* `bhaags` is omitted where a single canonical division isn't well-agreed
|
|
7
7
|
* (adachautaal) — we assert only what's uncontested. `sam` is beat 0 for all.
|
|
8
|
+
*
|
|
9
|
+
* Tabla loops live under `tabla/<id>/` by default; per-taal variation and
|
|
10
|
+
* skip-bpm overrides (e.g. shashthi → `tabla/shashthi-pro/`) are in
|
|
11
|
+
* instruments.ts's `TABLA_VARIATIONS`.
|
|
8
12
|
*/
|
|
9
13
|
declare const TAALS: {
|
|
10
14
|
readonly dadra: {
|
|
@@ -47,6 +51,12 @@ declare const TAALS: {
|
|
|
47
51
|
readonly numBeats: 14;
|
|
48
52
|
readonly sam: 0;
|
|
49
53
|
};
|
|
54
|
+
readonly shashthi: {
|
|
55
|
+
readonly id: "shashthi";
|
|
56
|
+
readonly numBeats: 6;
|
|
57
|
+
readonly bhaags: [2, 4];
|
|
58
|
+
readonly sam: 0;
|
|
59
|
+
};
|
|
50
60
|
readonly teentaal: {
|
|
51
61
|
readonly id: "teentaal";
|
|
52
62
|
readonly numBeats: 16;
|
package/dist/viewer/index.cjs
CHANGED
|
@@ -70,6 +70,13 @@ var init_schema = __esm({
|
|
|
70
70
|
taalSchema = zod.z.object({
|
|
71
71
|
/** Player sample key, e.g. `dadra`, `teentaal`. */
|
|
72
72
|
id: zod.z.string(),
|
|
73
|
+
/**
|
|
74
|
+
* Which tabla loop variation to play, e.g. `pro` (CDN dir suffix). Optional
|
|
75
|
+
* and additive — omitted means the taal's default variation, so existing
|
|
76
|
+
* docs are unaffected. The player honors it but never exposes a variation
|
|
77
|
+
* picker; selecting a non-default variation is the consumer's premium policy.
|
|
78
|
+
*/
|
|
79
|
+
variation: zod.z.string().optional(),
|
|
73
80
|
numBeats: zod.z.number().int().positive(),
|
|
74
81
|
/** Vibhag groupings; if given, they sum to numBeats. */
|
|
75
82
|
bhaags: zod.z.array(zod.z.number().int().positive()).optional(),
|
|
@@ -127,6 +134,8 @@ var init_taals = __esm({
|
|
|
127
134
|
jhaptaal: { id: "jhaptaal", numBeats: 10, bhaags: [2, 3, 2, 3], sam: 0, khaali: [5] },
|
|
128
135
|
ektaal: { id: "ektaal", numBeats: 12, bhaags: [2, 2, 2, 2, 2, 2], sam: 0, khaali: [2, 6] },
|
|
129
136
|
adachautaal: { id: "adachautaal", numBeats: 14, sam: 0 },
|
|
137
|
+
shashthi: { id: "shashthi", numBeats: 6, bhaags: [2, 4], sam: 0 },
|
|
138
|
+
// ষষ্ঠী
|
|
130
139
|
teentaal: { id: "teentaal", numBeats: 16, bhaags: [4, 4, 4, 4], sam: 0, khaali: [8] }
|
|
131
140
|
};
|
|
132
141
|
}
|
|
@@ -164,7 +173,7 @@ var init_spec = __esm({
|
|
|
164
173
|
init_schema();
|
|
165
174
|
init_schema();
|
|
166
175
|
init_taals();
|
|
167
|
-
SPEC_VERSION = "0.1.
|
|
176
|
+
SPEC_VERSION = "0.1.2";
|
|
168
177
|
}
|
|
169
178
|
});
|
|
170
179
|
|