@ugfoundation/swaralipi-js 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/dist/{batch-CIAXVKP5.js → batch-QPSHVNDS.js} +4 -4
- package/dist/{batch-CIAXVKP5.js.map → batch-QPSHVNDS.js.map} +1 -1
- package/dist/{chunk-2NBNF6JP.js → chunk-4YTOLN3C.js} +3 -3
- package/dist/{chunk-2NBNF6JP.js.map → chunk-4YTOLN3C.js.map} +1 -1
- package/dist/chunk-V5ZSUJCA.js +354 -0
- package/dist/chunk-V5ZSUJCA.js.map +1 -0
- package/dist/{chunk-SH2INDZ2.js → chunk-VCRWS3F3.js} +3 -3
- package/dist/{chunk-SH2INDZ2.js.map → chunk-VCRWS3F3.js.map} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/convert/index.cjs +1 -1
- package/dist/convert/index.cjs.map +1 -1
- package/dist/convert/index.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/player/index.cjs +58 -2
- package/dist/player/index.cjs.map +1 -1
- package/dist/player/index.d.cts +12 -158
- package/dist/player/index.d.ts +12 -158
- package/dist/player/index.js +31 -324
- package/dist/player/index.js.map +1 -1
- package/dist/schedule-DhO_Xzz4.d.cts +167 -0
- package/dist/schedule-PTHUONrA.d.ts +167 -0
- package/dist/spec/index.cjs +1 -1
- package/dist/spec/index.cjs.map +1 -1
- package/dist/spec/index.d.cts +1 -1
- package/dist/spec/index.d.ts +1 -1
- package/dist/spec/index.js +1 -1
- package/dist/viewer/index.cjs +684 -202
- package/dist/viewer/index.cjs.map +1 -1
- package/dist/viewer/index.d.cts +217 -64
- package/dist/viewer/index.d.ts +217 -64
- package/dist/viewer/index.js +421 -177
- package/dist/viewer/index.js.map +1 -1
- package/package.json +7 -2
package/dist/player/index.cjs
CHANGED
|
@@ -329,6 +329,34 @@ function createMetronome(Tone, base) {
|
|
|
329
329
|
return new Tone.Player(metronomeUrl(base));
|
|
330
330
|
}
|
|
331
331
|
var TANPURA_PCS = ["c", "cs", "d", "ds", "e", "f", "fs", "g", "gs", "a", "as", "b"];
|
|
332
|
+
var DRUM_KIT_BASE = "https://tonejs.github.io/audio/drum-samples/acoustic-kit/";
|
|
333
|
+
var DRUM_FILES = {
|
|
334
|
+
kick: "kick.mp3",
|
|
335
|
+
snare: "snare.mp3",
|
|
336
|
+
hihat: "hihat.mp3",
|
|
337
|
+
tom1: "tom1.mp3",
|
|
338
|
+
tom2: "tom2.mp3",
|
|
339
|
+
tom3: "tom3.mp3"
|
|
340
|
+
};
|
|
341
|
+
function createDrumKit(Tone, base = DRUM_KIT_BASE) {
|
|
342
|
+
const urls = {};
|
|
343
|
+
for (const [voice, file] of Object.entries(DRUM_FILES)) urls[voice] = file;
|
|
344
|
+
return new Tone.Players({ urls, baseUrl: normalizeBase(base) });
|
|
345
|
+
}
|
|
346
|
+
function drumPattern(taal) {
|
|
347
|
+
const n = taal.numBeats;
|
|
348
|
+
const sam = taal.sam ?? 0;
|
|
349
|
+
const khaali = new Set(taal.khaali ?? []);
|
|
350
|
+
const bhaags = taal.bhaags ?? [n];
|
|
351
|
+
const pattern = new Array(n).fill("hihat");
|
|
352
|
+
let pos = 0;
|
|
353
|
+
for (const len of bhaags) {
|
|
354
|
+
pattern[pos] = khaali.has(pos) ? "hihat" : "snare";
|
|
355
|
+
pos += len;
|
|
356
|
+
}
|
|
357
|
+
pattern[sam] = "kick";
|
|
358
|
+
return pattern;
|
|
359
|
+
}
|
|
332
360
|
function createSampler(Tone, def, soundsBaseUrl, range) {
|
|
333
361
|
const base = def.local ? `${normalizeBase(soundsBaseUrl ?? "")}${def.baseUrl}` : def.baseUrl;
|
|
334
362
|
const urls = range ? subsetUrls(def.urls, range.lo, range.hi) : def.urls;
|
|
@@ -371,6 +399,7 @@ var SwaralipiPlayer = class {
|
|
|
371
399
|
#tanpuraKey = "";
|
|
372
400
|
#metronome;
|
|
373
401
|
#tabla;
|
|
402
|
+
#drums;
|
|
374
403
|
#scheduleIds = [];
|
|
375
404
|
#fadeTimer;
|
|
376
405
|
constructor(options = {}) {
|
|
@@ -601,8 +630,9 @@ var SwaralipiPlayer = class {
|
|
|
601
630
|
this.#tanpura?.dispose();
|
|
602
631
|
this.#metronome?.dispose();
|
|
603
632
|
this.#tabla?.dispose();
|
|
633
|
+
this.#drums?.dispose();
|
|
604
634
|
this.#master?.dispose();
|
|
605
|
-
this.#tanpura = this.#metronome = this.#tabla = this.#master = void 0;
|
|
635
|
+
this.#tanpura = this.#metronome = this.#tabla = this.#drums = this.#master = void 0;
|
|
606
636
|
}
|
|
607
637
|
/* ----------------------------------------------------------------- */
|
|
608
638
|
/* Internals */
|
|
@@ -753,6 +783,20 @@ var SwaralipiPlayer = class {
|
|
|
753
783
|
this.#tabla.sync().start(0);
|
|
754
784
|
return;
|
|
755
785
|
}
|
|
786
|
+
if (this.#opts.rhythm === "drums") {
|
|
787
|
+
this.#drums ??= createDrumKit(Tone).connect(master);
|
|
788
|
+
const drums = this.#drums;
|
|
789
|
+
const taal = taalId !== void 0 ? TAALS[taalId] : { numBeats: 4, sam: 0 };
|
|
790
|
+
const pattern = drumPattern(taal);
|
|
791
|
+
let beat2 = 0;
|
|
792
|
+
const id2 = transport.scheduleRepeat((time) => {
|
|
793
|
+
const voice = pattern[beat2 % pattern.length];
|
|
794
|
+
if (drums.has(voice)) drums.player(voice).start(time);
|
|
795
|
+
beat2 += 1;
|
|
796
|
+
}, spb, 0);
|
|
797
|
+
this.#scheduleIds.push(id2);
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
756
800
|
if (this.#opts.rhythm === "none" || base === void 0) return;
|
|
757
801
|
this.#metronome ??= createMetronome(Tone, base).connect(master);
|
|
758
802
|
const metro = this.#metronome;
|
|
@@ -860,7 +904,17 @@ async function exportAudio(doc, options = {}) {
|
|
|
860
904
|
}
|
|
861
905
|
}
|
|
862
906
|
let tabla;
|
|
863
|
-
if (rhythm
|
|
907
|
+
if (rhythm === "drums" && base) {
|
|
908
|
+
const drums = createDrumKit(Tone).connect(master);
|
|
909
|
+
const taal = taalId !== void 0 ? TAALS[taalId] : { numBeats: 4, sam: 0 };
|
|
910
|
+
const pattern = drumPattern(taal);
|
|
911
|
+
let beat = 0;
|
|
912
|
+
transport.scheduleRepeat((time) => {
|
|
913
|
+
const voice = pattern[beat % pattern.length];
|
|
914
|
+
if (drums.has(voice)) drums.player(voice).start(time);
|
|
915
|
+
beat += 1;
|
|
916
|
+
}, spb, 0);
|
|
917
|
+
} else if (rhythm !== "none" && base) {
|
|
864
918
|
if (usesTabla && taalId) {
|
|
865
919
|
const url = tablaUrl(base, taalId, bpm, variation);
|
|
866
920
|
tabla = new Tone.Player({ url, loop: true }).connect(master);
|
|
@@ -1056,6 +1110,7 @@ function exportMidi(doc, options = {}) {
|
|
|
1056
1110
|
}
|
|
1057
1111
|
|
|
1058
1112
|
exports.DEFAULT_SOUNDS_BASE = DEFAULT_SOUNDS_BASE;
|
|
1113
|
+
exports.DRUM_KIT_BASE = DRUM_KIT_BASE;
|
|
1059
1114
|
exports.INSTRUMENTS = INSTRUMENTS;
|
|
1060
1115
|
exports.OCTAVE_OFFSET = OCTAVE_OFFSET;
|
|
1061
1116
|
exports.SALAMANDER_BASE = SALAMANDER_BASE;
|
|
@@ -1066,6 +1121,7 @@ exports.TABLA_BPMS = TABLA_BPMS;
|
|
|
1066
1121
|
exports.TABLA_VARIATIONS = TABLA_VARIATIONS;
|
|
1067
1122
|
exports.TONEJS_INSTRUMENTS_BASE = TONEJS_INSTRUMENTS_BASE;
|
|
1068
1123
|
exports.buildSchedule = buildSchedule;
|
|
1124
|
+
exports.drumPattern = drumPattern;
|
|
1069
1125
|
exports.encodeMidi = encodeMidi;
|
|
1070
1126
|
exports.encodeMp3 = encodeMp3;
|
|
1071
1127
|
exports.encodeWav = encodeWav;
|