@ugfoundation/swaralipi-js 0.3.2 → 0.3.4

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 (44) hide show
  1. package/dist/{batch-5LFXQ67K.js → batch-Y3HKAL3B.js} +5 -5
  2. package/dist/{batch-5LFXQ67K.js.map → batch-Y3HKAL3B.js.map} +1 -1
  3. package/dist/{chunk-YE7UVYRY.js → chunk-6ETPFHZ6.js} +5 -3
  4. package/dist/chunk-6ETPFHZ6.js.map +1 -0
  5. package/dist/{chunk-32LOBRC2.js → chunk-AIGSKUD3.js} +3 -3
  6. package/dist/{chunk-32LOBRC2.js.map → chunk-AIGSKUD3.js.map} +1 -1
  7. package/dist/{chunk-XQYXZPHK.js → chunk-IG2CIUTP.js} +3 -3
  8. package/dist/{chunk-XQYXZPHK.js.map → chunk-IG2CIUTP.js.map} +1 -1
  9. package/dist/{chunk-QVNFEWMM.js → chunk-KPKD53NA.js} +4 -4
  10. package/dist/{chunk-QVNFEWMM.js.map → chunk-KPKD53NA.js.map} +1 -1
  11. package/dist/cli.cjs +4 -2
  12. package/dist/cli.cjs.map +1 -1
  13. package/dist/cli.js +3 -3
  14. package/dist/convert/index.cjs +4 -2
  15. package/dist/convert/index.cjs.map +1 -1
  16. package/dist/convert/index.js +3 -3
  17. package/dist/index.cjs +4 -2
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +2 -2
  22. package/dist/player/index.cjs +70 -11
  23. package/dist/player/index.cjs.map +1 -1
  24. package/dist/player/index.d.cts +17 -4
  25. package/dist/player/index.d.ts +17 -4
  26. package/dist/player/index.js +70 -13
  27. package/dist/player/index.js.map +1 -1
  28. package/dist/{schedule-CHXz3V6T.d.cts → schedule-C2WN7YOK.d.cts} +1 -1
  29. package/dist/{schedule-BaE3JGHe.d.ts → schedule-dXV5cUQI.d.ts} +1 -1
  30. package/dist/spec/index.cjs +4 -2
  31. package/dist/spec/index.cjs.map +1 -1
  32. package/dist/spec/index.d.cts +2 -2
  33. package/dist/spec/index.d.ts +2 -2
  34. package/dist/spec/index.js +2 -2
  35. package/dist/{taals-DxJ8wRtF.d.ts → taals-CjzBuZ35.d.cts} +8 -1
  36. package/dist/{taals-DxJ8wRtF.d.cts → taals-CjzBuZ35.d.ts} +8 -1
  37. package/dist/viewer/index.cjs +28 -2
  38. package/dist/viewer/index.cjs.map +1 -1
  39. package/dist/viewer/index.d.cts +36 -4
  40. package/dist/viewer/index.d.ts +36 -4
  41. package/dist/viewer/index.js +25 -3
  42. package/dist/viewer/index.js.map +1 -1
  43. package/package.json +1 -1
  44. package/dist/chunk-YE7UVYRY.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Reference definitions for the taals the player will sample:
3
3
  * adachautaal, dadra, ektaal, jhaptaal, kehrwa, rupak, shashthi, teentaal,
4
- * jhampak.
4
+ * jhampak, dhamaar.
5
5
  *
6
6
  * `numBeats` and the `bhaags` given below are standard Hindustani taal theory.
7
7
  * `bhaags` is omitted where a single canonical division isn't well-agreed
@@ -91,6 +91,13 @@ declare const TAALS: {
91
91
  readonly bhaags: [3, 2];
92
92
  readonly sam: 0;
93
93
  };
94
+ readonly dhamaar: {
95
+ readonly id: "dhamaar";
96
+ readonly numBeats: 14;
97
+ readonly bhaags: [5, 2, 3, 4];
98
+ readonly sam: 0;
99
+ readonly khaali: [7];
100
+ };
94
101
  };
95
102
  type TaalId = keyof typeof TAALS;
96
103
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Reference definitions for the taals the player will sample:
3
3
  * adachautaal, dadra, ektaal, jhaptaal, kehrwa, rupak, shashthi, teentaal,
4
- * jhampak.
4
+ * jhampak, dhamaar.
5
5
  *
6
6
  * `numBeats` and the `bhaags` given below are standard Hindustani taal theory.
7
7
  * `bhaags` is omitted where a single canonical division isn't well-agreed
@@ -91,6 +91,13 @@ declare const TAALS: {
91
91
  readonly bhaags: [3, 2];
92
92
  readonly sam: 0;
93
93
  };
94
+ readonly dhamaar: {
95
+ readonly id: "dhamaar";
96
+ readonly numBeats: 14;
97
+ readonly bhaags: [5, 2, 3, 4];
98
+ readonly sam: 0;
99
+ readonly khaali: [7];
100
+ };
94
101
  };
95
102
  type TaalId = keyof typeof TAALS;
96
103
 
@@ -32,8 +32,10 @@ var init_taals = __esm({
32
32
  teentaal: { id: "teentaal", numBeats: 16, bhaags: [4, 4, 4, 4], sam: 0, khaali: [8] },
33
33
  aratheka: { id: "aratheka", numBeats: 16, bhaags: [4, 4, 4, 4], sam: 0, khaali: [8] },
34
34
  // আড়াঠেকা
35
- jhampak: { id: "jhampak", numBeats: 5, bhaags: [3, 2], sam: 0 }
35
+ jhampak: { id: "jhampak", numBeats: 5, bhaags: [3, 2], sam: 0 },
36
36
  // ঝম্পক
37
+ dhamaar: { id: "dhamaar", numBeats: 14, bhaags: [5, 2, 3, 4], sam: 0, khaali: [7] }
38
+ // ধামার
37
39
  };
38
40
  }
39
41
  });
@@ -181,7 +183,7 @@ var init_spec = __esm({
181
183
  init_schema();
182
184
  init_schema();
183
185
  init_taals();
184
- SPEC_VERSION = "0.3.2";
186
+ SPEC_VERSION = "0.3.4";
185
187
  }
186
188
  });
187
189
 
@@ -1173,6 +1175,28 @@ async function renderStaffHtml(doc, opts = {}) {
1173
1175
  function escapeAttr(s) {
1174
1176
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
1175
1177
  }
1178
+ function buildTaalAbc(taal, opts = {}) {
1179
+ const n = Math.max(1, taal.numBeats);
1180
+ const src = opts.drums && opts.drums.length ? opts.drums : drumPattern(taal);
1181
+ const voices = Array.from({ length: n }, (_, i) => src[i % src.length]);
1182
+ const bpm = Math.round(opts.bpm ?? 90);
1183
+ const head = ["X:1", `M:${ratioMeter(n)}`, "L:1/4", `Q:1/4=${bpm}`, ...percMapLines(voices), "K:C"];
1184
+ const lines = [...head, "V:1 clef=perc stem=up", buildDrumVoice(n, n, voices)];
1185
+ if (opts.bols?.length) {
1186
+ const w = opts.bols.slice(0, n).map((b) => b.trim() ? abcText(b).replace(/\s+/g, "~") : "*");
1187
+ while (w.length < n) w.push("*");
1188
+ lines.push(`w: ${w.join(" ")}`);
1189
+ }
1190
+ return lines.join("\n");
1191
+ }
1192
+ async function renderTaalStaffHtml(taal, opts = {}) {
1193
+ const abc = buildTaalAbc(taal, opts);
1194
+ const n = Math.max(1, taal.numBeats);
1195
+ const paths = Array.from({ length: n }, (_, i) => String(i));
1196
+ const engraved = await abcToSvg(abc, { staffwidth: opts.staffwidth, scale: opts.scale }, paths);
1197
+ const lines = engraved.includes("sw-staff-missing") ? engraved : `<div class="sw-staff-lines">${engraved}</div>`;
1198
+ return `<div class="sw-staff sw-staff--taal">${lines}</div>`;
1199
+ }
1176
1200
 
1177
1201
  // src/viewer/print.ts
1178
1202
  var DEFAULT_WATERMARK = "www.gitabitan.io";
@@ -1479,6 +1503,7 @@ exports.SWARALIPI_STAFF_CSS = SWARALIPI_STAFF_CSS;
1479
1503
  exports.abcDuration = abcDuration;
1480
1504
  exports.abcToSvg = abcToSvg;
1481
1505
  exports.buildAbc = buildAbc;
1506
+ exports.buildTaalAbc = buildTaalAbc;
1482
1507
  exports.composeCluster = composeCluster;
1483
1508
  exports.defineSwaralipiSheet = defineSwaralipiSheet;
1484
1509
  exports.docToAbc = docToAbc;
@@ -1491,6 +1516,7 @@ exports.renderMetaHeader = renderMetaHeader;
1491
1516
  exports.renderPrintDocument = renderPrintDocument;
1492
1517
  exports.renderStaffHtml = renderStaffHtml;
1493
1518
  exports.renderStaffPrintDocument = renderStaffPrintDocument;
1519
+ exports.renderTaalStaffHtml = renderTaalStaffHtml;
1494
1520
  exports.renderToHtml = renderToHtml;
1495
1521
  exports.resolveArcs = resolveArcs;
1496
1522
  //# sourceMappingURL=index.cjs.map