@ugfoundation/swaralipi-js 0.2.1 → 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.
Files changed (37) hide show
  1. package/dist/{batch-SCSIUDB3.js → batch-QPSHVNDS.js} +4 -4
  2. package/dist/{batch-SCSIUDB3.js.map → batch-QPSHVNDS.js.map} +1 -1
  3. package/dist/{chunk-DINRYGRI.js → chunk-4YTOLN3C.js} +3 -3
  4. package/dist/{chunk-DINRYGRI.js.map → chunk-4YTOLN3C.js.map} +1 -1
  5. package/dist/chunk-V5ZSUJCA.js +354 -0
  6. package/dist/chunk-V5ZSUJCA.js.map +1 -0
  7. package/dist/{chunk-KYNCQ7OF.js → chunk-VCRWS3F3.js} +3 -3
  8. package/dist/{chunk-KYNCQ7OF.js.map → chunk-VCRWS3F3.js.map} +1 -1
  9. package/dist/cli.cjs +1 -1
  10. package/dist/cli.cjs.map +1 -1
  11. package/dist/cli.js +2 -2
  12. package/dist/convert/index.cjs +1 -1
  13. package/dist/convert/index.cjs.map +1 -1
  14. package/dist/convert/index.js +2 -2
  15. package/dist/index.cjs +1 -1
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/player/index.cjs +58 -2
  19. package/dist/player/index.cjs.map +1 -1
  20. package/dist/player/index.d.cts +12 -158
  21. package/dist/player/index.d.ts +12 -158
  22. package/dist/player/index.js +31 -324
  23. package/dist/player/index.js.map +1 -1
  24. package/dist/schedule-DhO_Xzz4.d.cts +167 -0
  25. package/dist/schedule-PTHUONrA.d.ts +167 -0
  26. package/dist/spec/index.cjs +1 -1
  27. package/dist/spec/index.cjs.map +1 -1
  28. package/dist/spec/index.d.cts +1 -1
  29. package/dist/spec/index.d.ts +1 -1
  30. package/dist/spec/index.js +1 -1
  31. package/dist/viewer/index.cjs +584 -54
  32. package/dist/viewer/index.cjs.map +1 -1
  33. package/dist/viewer/index.d.cts +177 -18
  34. package/dist/viewer/index.d.ts +177 -18
  35. package/dist/viewer/index.js +322 -30
  36. package/dist/viewer/index.js.map +1 -1
  37. package/package.json +7 -2
@@ -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 !== "none" && base) {
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;