@tspro/web-music-score 3.1.0 → 3.1.1

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 (43) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +5 -3
  3. package/dist/audio/index.d.mts +1 -8
  4. package/dist/audio/index.d.ts +1 -8
  5. package/dist/audio/index.js +1 -1
  6. package/dist/audio/index.mjs +2 -2
  7. package/dist/audio-cg/index.d.mts +0 -1
  8. package/dist/audio-cg/index.d.ts +0 -1
  9. package/dist/audio-cg/index.js +1 -1
  10. package/dist/audio-cg/index.mjs +2 -2
  11. package/dist/{chunk-B4J3KED2.mjs → chunk-PU4J7K4Z.mjs} +2 -2
  12. package/dist/core/index.d.mts +0 -3
  13. package/dist/core/index.d.ts +0 -3
  14. package/dist/core/index.js +2 -2
  15. package/dist/core/index.mjs +3 -3
  16. package/dist/{guitar-BIFwFT31.d.ts → guitar-C2Cp71NZ.d.ts} +1 -8
  17. package/dist/{guitar-zASF7B1g.d.mts → guitar-DggbM2UL.d.mts} +1 -8
  18. package/dist/iife/index.global.js +11 -11
  19. package/dist/{interface-BedxdQDE.d.mts → interface-Bz_525zj.d.mts} +15 -75
  20. package/dist/{interface-DprVf__B.d.ts → interface-Fn8ufBQx.d.ts} +15 -75
  21. package/dist/{note-B5ZtlHc8.d.mts → note-BFa43I86.d.mts} +0 -14
  22. package/dist/{note-B5ZtlHc8.d.ts → note-BFa43I86.d.ts} +0 -14
  23. package/dist/pieces/index.d.mts +3 -6
  24. package/dist/pieces/index.d.ts +3 -6
  25. package/dist/pieces/index.js +1 -1
  26. package/dist/pieces/index.mjs +2 -2
  27. package/dist/react-ui/index.d.mts +5 -23
  28. package/dist/react-ui/index.d.ts +5 -23
  29. package/dist/react-ui/index.js +1 -1
  30. package/dist/react-ui/index.mjs +2 -2
  31. package/dist/{scale-B_2MZaT9.d.ts → scale-DRR-t4Kr.d.mts} +2 -15
  32. package/dist/{scale-C-YS5iVG.d.mts → scale-ebJm37q1.d.ts} +2 -15
  33. package/dist/score/index.d.mts +18 -18
  34. package/dist/score/index.d.ts +18 -18
  35. package/dist/score/index.js +155 -150
  36. package/dist/score/index.mjs +156 -151
  37. package/dist/{tempo-TjQKn46X.d.mts → tempo-B4h5Ktob.d.mts} +1 -17
  38. package/dist/{tempo-DoJd-UYT.d.ts → tempo-DgqDEsn0.d.ts} +1 -17
  39. package/dist/theory/index.d.mts +6 -8
  40. package/dist/theory/index.d.ts +6 -8
  41. package/dist/theory/index.js +1 -1
  42. package/dist/theory/index.mjs +2 -2
  43. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
- /* WebMusicScore v3.1.0 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
1
+ /* WebMusicScore v3.1.1 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
2
2
  import {
3
3
  __publicField
4
- } from "../chunk-B4J3KED2.mjs";
4
+ } from "../chunk-PU4J7K4Z.mjs";
5
5
 
6
6
  // src/score/pub/div-rect.ts
7
7
  import { Utils } from "@tspro/ts-utils-lib";
@@ -5027,12 +5027,59 @@ var _ObjMeasure = class _ObjMeasure extends MusicObject {
5027
5027
  this.requestLayout();
5028
5028
  this.requestRectUpdate();
5029
5029
  }
5030
- addFermata(staffTabOrGroup, fermata) {
5030
+ forEachStaffGroup(staffTabOrGroups, defaultVerticalPos, addFn) {
5031
+ const lines = this.row.getNotationLines();
5032
+ const addToStaffTabOrGroup = (staffTabOrGroup, vpos, prevGroups = []) => {
5033
+ if (typeof staffTabOrGroup === "number") {
5034
+ if (lines[staffTabOrGroup]) {
5035
+ addFn(lines[staffTabOrGroup], vpos);
5036
+ }
5037
+ } else if (typeof staffTabOrGroup === "string" && staffTabOrGroup.length > 0) {
5038
+ let stavesAndTabs = lines.filter((l) => l.name === staffTabOrGroup);
5039
+ stavesAndTabs.forEach((line) => addFn(line, vpos));
5040
+ if (stavesAndTabs.length === 0) {
5041
+ let grp = this.doc.getStaffGroup(staffTabOrGroup);
5042
+ if (grp && !prevGroups.includes(staffTabOrGroup)) {
5043
+ let curGroups = [...prevGroups, staffTabOrGroup];
5044
+ (Utils8.Is.isArray(grp.staffsTabsAndGroups) ? grp.staffsTabsAndGroups : [grp.staffsTabsAndGroups]).forEach((staffTabOrGroup2) => {
5045
+ switch (grp.verticalPosition) {
5046
+ case 0 /* Above */:
5047
+ addToStaffTabOrGroup(staffTabOrGroup2, 0 /* Above */, curGroups);
5048
+ break;
5049
+ case 1 /* Below */:
5050
+ addToStaffTabOrGroup(staffTabOrGroup2, 1 /* Below */, curGroups);
5051
+ break;
5052
+ case 2 /* Both */:
5053
+ addToStaffTabOrGroup(staffTabOrGroup2, 0 /* Above */, curGroups);
5054
+ addToStaffTabOrGroup(staffTabOrGroup2, 1 /* Below */, curGroups);
5055
+ break;
5056
+ case 3 /* Auto */:
5057
+ addToStaffTabOrGroup(staffTabOrGroup2, defaultVerticalPos, curGroups);
5058
+ break;
5059
+ }
5060
+ });
5061
+ }
5062
+ }
5063
+ }
5064
+ };
5065
+ if (staffTabOrGroups === void 0) {
5066
+ if (lines.length >= 2 && lines[0] instanceof ObjStaff && lines[0].staffConfig.clef === "G" /* G */ && lines[0].isGrand() && lines[1] instanceof ObjStaff && lines[1].staffConfig.clef === "F" /* F */ && lines[1].isGrand()) {
5067
+ addToStaffTabOrGroup(defaultVerticalPos === 1 /* Below */ ? 1 : 0, defaultVerticalPos);
5068
+ } else {
5069
+ addToStaffTabOrGroup(0, defaultVerticalPos);
5070
+ }
5071
+ } else if (Utils8.Is.isArray(staffTabOrGroups)) {
5072
+ staffTabOrGroups.forEach((staffTabOrGroup) => addToStaffTabOrGroup(staffTabOrGroup, defaultVerticalPos));
5073
+ } else {
5074
+ addToStaffTabOrGroup(staffTabOrGroups, defaultVerticalPos);
5075
+ }
5076
+ }
5077
+ addFermata(staffTabOrGroups, fermata) {
5031
5078
  let anchor = fermata === 1 /* AtMeasureEnd */ ? this.barLineRight : this.lastAddedRhythmColumn;
5032
5079
  if (!anchor) {
5033
5080
  throw new MusicError13(MusicErrorType13.Score, "Cannot add Fermata because anchor is undefined.");
5034
5081
  }
5035
- this.forEachStaffGroup(staffTabOrGroup, 0 /* Above */, (line, vpos) => {
5082
+ this.forEachStaffGroup(staffTabOrGroups, 0 /* Above */, (line, vpos) => {
5036
5083
  this.addLayoutObject(new ObjFermata(anchor, vpos), line, 0 /* Fermata */, vpos);
5037
5084
  });
5038
5085
  this.disableExtension();
@@ -5041,7 +5088,7 @@ var _ObjMeasure = class _ObjMeasure extends MusicObject {
5041
5088
  hasFermata(anchor) {
5042
5089
  return this.layoutObjects.some((layoutObj) => layoutObj.musicObj instanceof ObjFermata && layoutObj.anchor === anchor);
5043
5090
  }
5044
- addNavigation(staffTabOrGroup, navigation, ...args) {
5091
+ addNavigation(staffTabOrGroups, navigation, ...args) {
5045
5092
  let addLayoutObjectProps = void 0;
5046
5093
  switch (navigation) {
5047
5094
  case 10 /* Ending */:
@@ -5067,7 +5114,7 @@ var _ObjMeasure = class _ObjMeasure extends MusicObject {
5067
5114
  layoutGroupId: 2 /* Navigation */,
5068
5115
  defaultVerticalPos: 0 /* Above */
5069
5116
  };
5070
- this.addNavigation(staffTabOrGroup, 9 /* EndRepeat */);
5117
+ this.addNavigation(staffTabOrGroups, 9 /* EndRepeat */);
5071
5118
  this.endSong();
5072
5119
  break;
5073
5120
  }
@@ -5120,7 +5167,7 @@ var _ObjMeasure = class _ObjMeasure extends MusicObject {
5120
5167
  break;
5121
5168
  }
5122
5169
  if (addLayoutObjectProps) {
5123
- this.forEachStaffGroup(staffTabOrGroup, addLayoutObjectProps.defaultVerticalPos, (line, vpos) => {
5170
+ this.forEachStaffGroup(staffTabOrGroups, addLayoutObjectProps.defaultVerticalPos, (line, vpos) => {
5124
5171
  this.addLayoutObject(addLayoutObjectProps.createObj(), line, addLayoutObjectProps.layoutGroupId, vpos);
5125
5172
  });
5126
5173
  }
@@ -5130,135 +5177,108 @@ var _ObjMeasure = class _ObjMeasure extends MusicObject {
5130
5177
  hasNavigation(n) {
5131
5178
  return this.navigationSet.has(n);
5132
5179
  }
5133
- getEnding() {
5134
- return this.layoutObjects.map((layoutObj) => layoutObj.musicObj).find((musicObj) => musicObj instanceof ObjEnding);
5135
- }
5136
- getEndRepeatPlayCount() {
5137
- return this.endRepeatPlayCount;
5138
- }
5139
- addConnective(connective, ...args) {
5140
- let anchor = this.lastAddedRhythmSymbol;
5141
- if (!(anchor instanceof ObjNoteGroup)) {
5142
- throw new MusicError13(MusicErrorType13.Score, "Connective can be added to note group only.");
5143
- }
5144
- if (connective === 0 /* Tie */) {
5145
- let tieSpan = Utils8.Is.isInteger(args[0]) || Utils8.Is.isEnumValue(args[0], TieType) ? args[0] : 2;
5146
- let noteAnchor = Utils8.Is.isEnumValue(args[1], NoteAnchor) ? args[1] : 0 /* Auto */;
5147
- anchor.startConnective(new ConnectiveProps(0 /* Tie */, tieSpan, noteAnchor, anchor));
5148
- } else if (connective === 1 /* Slur */) {
5149
- let slurSpan = Utils8.Is.isInteger(args[0]) ? args[0] : 2;
5150
- let noteAnchor = Utils8.Is.isEnumValue(args[1], NoteAnchor) ? args[1] : 0 /* Auto */;
5151
- anchor.startConnective(new ConnectiveProps(1 /* Slur */, slurSpan, noteAnchor, anchor));
5152
- } else if (connective === 2 /* Slide */) {
5153
- let noteAnchor = Utils8.Is.isEnumValue(args[0], NoteAnchor) ? args[0] : 0 /* Auto */;
5154
- anchor.startConnective(new ConnectiveProps(2 /* Slide */, 2, noteAnchor, anchor));
5155
- }
5156
- }
5157
- forEachStaffGroup(staffTabOrGroup, defaultVerticalPos, add) {
5158
- const lines = this.row.getNotationLines();
5159
- const performAdd = (lineId, vpos, depth) => {
5160
- if (depth >= 5) {
5161
- return;
5162
- }
5163
- let success = false;
5164
- if (typeof lineId === "number") {
5165
- if (lines[lineId]) {
5166
- add(lines[lineId], vpos);
5167
- success = true;
5168
- }
5169
- } else if (typeof lineId === "string" && lineId.length > 0) {
5170
- lines.filter((l) => l.name === lineId).forEach((line) => {
5171
- add(line, vpos);
5172
- success = true;
5173
- });
5174
- }
5175
- if (typeof lineId === "string" && !success) {
5176
- let grp = this.doc.getStaffGroup(lineId);
5177
- if (grp) {
5178
- (Utils8.Is.isArray(grp.staffsTabsAndGroups) ? grp.staffsTabsAndGroups : [grp.staffsTabsAndGroups]).forEach((lineId2) => {
5179
- switch (grp.verticalPosition) {
5180
- case 0 /* Above */:
5181
- performAdd(lineId2, 0 /* Above */, depth + 1);
5182
- break;
5183
- case 1 /* Below */:
5184
- performAdd(lineId2, 1 /* Below */, depth + 1);
5185
- break;
5186
- case 2 /* Both */:
5187
- performAdd(lineId2, 0 /* Above */, depth + 1);
5188
- performAdd(lineId2, 1 /* Below */, depth + 1);
5189
- break;
5190
- case 3 /* Auto */:
5191
- performAdd(lineId2, defaultVerticalPos, depth + 1);
5192
- break;
5193
- }
5194
- });
5195
- }
5196
- }
5197
- };
5198
- if (staffTabOrGroup === void 0) {
5199
- if (lines.length >= 2 && lines[0] instanceof ObjStaff && lines[0].staffConfig.clef === "G" /* G */ && lines[0].isGrand() && lines[1] instanceof ObjStaff && lines[1].staffConfig.clef === "F" /* F */ && lines[1].isGrand()) {
5200
- performAdd(defaultVerticalPos === 1 /* Below */ ? 1 : 0, defaultVerticalPos, 0);
5201
- } else {
5202
- performAdd(0, defaultVerticalPos, 0);
5203
- }
5204
- } else {
5205
- performAdd(staffTabOrGroup, defaultVerticalPos, 0);
5206
- }
5207
- }
5208
- addLabel(staffTabOrGroup, label, text) {
5180
+ addAnnotation(staffTabOrGroups, annotation, text) {
5209
5181
  let anchor = this.lastAddedRhythmColumn;
5210
5182
  if (!anchor) {
5211
- throw new MusicError13(MusicErrorType13.Score, "Cannot add label because anchor is undefined.");
5183
+ throw new MusicError13(MusicErrorType13.Score, "Cannot add annotation because anchor is undefined.");
5212
5184
  } else if (text.length === 0) {
5213
- throw new MusicError13(MusicErrorType13.Score, "Cannot add label because label text is empty.");
5185
+ throw new MusicError13(MusicErrorType13.Score, "Cannot add annotation because annotation text is empty.");
5214
5186
  }
5215
5187
  let textProps = { text };
5216
5188
  let layoutGroupId;
5217
5189
  let defaultVerticalPos;
5218
- switch (label) {
5219
- case 0 /* Note */:
5220
- layoutGroupId = 1 /* NoteLabel */;
5221
- defaultVerticalPos = 1 /* Below */;
5190
+ switch (annotation) {
5191
+ case 0 /* Dynamics */:
5192
+ layoutGroupId = 5 /* DynamicsAnnotation */;
5193
+ defaultVerticalPos = 0 /* Above */;
5194
+ textProps.italic = true;
5222
5195
  break;
5223
- case 1 /* Chord */:
5224
- layoutGroupId = 6 /* ChordLabel */;
5196
+ case 1 /* Tempo */:
5197
+ layoutGroupId = 4 /* TempoAnnotation */;
5225
5198
  defaultVerticalPos = 0 /* Above */;
5199
+ textProps.italic = true;
5226
5200
  break;
5227
5201
  }
5228
- this.forEachStaffGroup(staffTabOrGroup, defaultVerticalPos, (line, vpos) => {
5202
+ this.forEachStaffGroup(staffTabOrGroups, defaultVerticalPos, (line, vpos) => {
5229
5203
  let textObj = new ObjText(anchor, textProps, 0.5, 1);
5230
5204
  this.addLayoutObject(textObj, line, layoutGroupId, vpos);
5231
5205
  this.enableExtension(textObj);
5232
5206
  });
5233
5207
  }
5234
- addAnnotation(staffTabOrGroup, annotation, text) {
5208
+ addLabel(staffTabOrGroups, label, text) {
5235
5209
  let anchor = this.lastAddedRhythmColumn;
5236
5210
  if (!anchor) {
5237
- throw new MusicError13(MusicErrorType13.Score, "Cannot add annotation because anchor is undefined.");
5211
+ throw new MusicError13(MusicErrorType13.Score, "Cannot add label because anchor is undefined.");
5238
5212
  } else if (text.length === 0) {
5239
- throw new MusicError13(MusicErrorType13.Score, "Cannot add annotation because annotation text is empty.");
5213
+ throw new MusicError13(MusicErrorType13.Score, "Cannot add label because label text is empty.");
5240
5214
  }
5241
5215
  let textProps = { text };
5242
5216
  let layoutGroupId;
5243
5217
  let defaultVerticalPos;
5244
- switch (annotation) {
5245
- case 0 /* Dynamics */:
5246
- layoutGroupId = 5 /* DynamicsAnnotation */;
5247
- defaultVerticalPos = 0 /* Above */;
5248
- textProps.italic = true;
5218
+ switch (label) {
5219
+ case 0 /* Note */:
5220
+ layoutGroupId = 1 /* NoteLabel */;
5221
+ defaultVerticalPos = 1 /* Below */;
5249
5222
  break;
5250
- case 1 /* Tempo */:
5251
- layoutGroupId = 4 /* TempoAnnotation */;
5223
+ case 1 /* Chord */:
5224
+ layoutGroupId = 6 /* ChordLabel */;
5252
5225
  defaultVerticalPos = 0 /* Above */;
5253
- textProps.italic = true;
5254
5226
  break;
5255
5227
  }
5256
- this.forEachStaffGroup(staffTabOrGroup, defaultVerticalPos, (line, vpos) => {
5228
+ this.forEachStaffGroup(staffTabOrGroups, defaultVerticalPos, (line, vpos) => {
5257
5229
  let textObj = new ObjText(anchor, textProps, 0.5, 1);
5258
5230
  this.addLayoutObject(textObj, line, layoutGroupId, vpos);
5259
5231
  this.enableExtension(textObj);
5260
5232
  });
5261
5233
  }
5234
+ addConnective(connective, ...args) {
5235
+ let anchor = this.lastAddedRhythmSymbol;
5236
+ if (!(anchor instanceof ObjNoteGroup)) {
5237
+ throw new MusicError13(MusicErrorType13.Score, "Connective can be added to note group only.");
5238
+ }
5239
+ if (connective === 0 /* Tie */) {
5240
+ let tieSpan = Utils8.Is.isInteger(args[0]) || Utils8.Is.isEnumValue(args[0], TieType) ? args[0] : 2;
5241
+ let noteAnchor = Utils8.Is.isEnumValue(args[1], NoteAnchor) ? args[1] : 0 /* Auto */;
5242
+ anchor.startConnective(new ConnectiveProps(0 /* Tie */, tieSpan, noteAnchor, anchor));
5243
+ } else if (connective === 1 /* Slur */) {
5244
+ let slurSpan = Utils8.Is.isInteger(args[0]) ? args[0] : 2;
5245
+ let noteAnchor = Utils8.Is.isEnumValue(args[1], NoteAnchor) ? args[1] : 0 /* Auto */;
5246
+ anchor.startConnective(new ConnectiveProps(1 /* Slur */, slurSpan, noteAnchor, anchor));
5247
+ } else if (connective === 2 /* Slide */) {
5248
+ let noteAnchor = Utils8.Is.isEnumValue(args[0], NoteAnchor) ? args[0] : 0 /* Auto */;
5249
+ anchor.startConnective(new ConnectiveProps(2 /* Slide */, 2, noteAnchor, anchor));
5250
+ }
5251
+ }
5252
+ addExtension(extensionLength, extensionVisible) {
5253
+ this.addExtensionToMusicObjects.forEach((musicObj) => {
5254
+ let anchor = musicObj.getParent();
5255
+ if (musicObj instanceof ObjText && anchor instanceof ObjRhythmColumn) {
5256
+ let lineStyle = "dashed";
5257
+ let linePos = "bottom";
5258
+ let extension = new Extension(musicObj, anchor, extensionLength, extensionVisible, lineStyle, linePos);
5259
+ musicObj.setLink(extension);
5260
+ } else {
5261
+ throw new MusicError13(MusicErrorType13.Score, "Cannot add extension becaue no compatible music object to attach it to.");
5262
+ }
5263
+ });
5264
+ if (this.addExtensionToMusicObjects.length === 0) {
5265
+ throw new MusicError13(MusicErrorType13.Score, "Cannot add extension because music object to attach it to is undefined.");
5266
+ }
5267
+ this.disableExtension();
5268
+ this.requestLayout();
5269
+ }
5270
+ enableExtension(musicObject) {
5271
+ this.addExtensionToMusicObjects.push(musicObject);
5272
+ }
5273
+ disableExtension() {
5274
+ this.addExtensionToMusicObjects = [];
5275
+ }
5276
+ getEnding() {
5277
+ return this.layoutObjects.map((layoutObj) => layoutObj.musicObj).find((musicObj) => musicObj instanceof ObjEnding);
5278
+ }
5279
+ getEndRepeatPlayCount() {
5280
+ return this.endRepeatPlayCount;
5281
+ }
5262
5282
  endSong() {
5263
5283
  this.isEndSong = true;
5264
5284
  this.requestLayout();
@@ -5279,30 +5299,6 @@ var _ObjMeasure = class _ObjMeasure extends MusicObject {
5279
5299
  this.doc.requestNewRow();
5280
5300
  this.disableExtension();
5281
5301
  }
5282
- enableExtension(musicObject) {
5283
- this.addExtensionToMusicObjects.push(musicObject);
5284
- }
5285
- disableExtension() {
5286
- this.addExtensionToMusicObjects = [];
5287
- }
5288
- addExtension(extensionLength, extensionVisible) {
5289
- this.addExtensionToMusicObjects.forEach((musicObj) => {
5290
- let anchor = musicObj.getParent();
5291
- if (musicObj instanceof ObjText && anchor instanceof ObjRhythmColumn) {
5292
- let lineStyle = "dashed";
5293
- let linePos = "bottom";
5294
- let extension = new Extension(musicObj, anchor, extensionLength, extensionVisible, lineStyle, linePos);
5295
- musicObj.setLink(extension);
5296
- } else {
5297
- throw new MusicError13(MusicErrorType13.Score, "Cannot add extension becaue no compatible music object to attach it to.");
5298
- }
5299
- });
5300
- if (this.addExtensionToMusicObjects.length === 0) {
5301
- throw new MusicError13(MusicErrorType13.Score, "Cannot add extension because music object to attach it to is undefined.");
5302
- }
5303
- this.disableExtension();
5304
- this.requestLayout();
5305
- }
5306
5302
  addRhythmSymbol(voiceId, symbol) {
5307
5303
  let { col } = symbol;
5308
5304
  col.setVoiceSymbol(voiceId, symbol);
@@ -6928,6 +6924,15 @@ function assertRestOptions(options) {
6928
6924
  assertArg(Utils11.Is.isBooleanOrUndefined(options.hide), "restOptions.hide", options.hide);
6929
6925
  assertArg(Utils11.Is.isBooleanOrUndefined(options.triplet), "restOptions.triplet", options.triplet);
6930
6926
  }
6927
+ function assertStaffTabOrGRoups(staffTabOrGroups) {
6928
+ assertArg(
6929
+ Utils11.Is.isStringOrUndefined(staffTabOrGroups) || Utils11.Is.isIntegerGte(staffTabOrGroups, 0) || Utils11.Is.isArray(staffTabOrGroups) && staffTabOrGroups.every(
6930
+ (staffTabOrGroup) => Utils11.Is.isString(staffTabOrGroup) || Utils11.Is.isIntegerGte(staffTabOrGroup, 0)
6931
+ ),
6932
+ "staffTabOrGroup",
6933
+ staffTabOrGroups
6934
+ );
6935
+ }
6931
6936
  var DocumentBuilder = class {
6932
6937
  constructor() {
6933
6938
  __publicField(this, "doc");
@@ -7029,63 +7034,63 @@ var DocumentBuilder = class {
7029
7034
  this.getMeasure().addRest(voiceId, restLength, options);
7030
7035
  return this;
7031
7036
  }
7032
- addFermataInternal(staffTabOrGroup, fermata) {
7033
- assertArg(Utils11.Is.isStringOrUndefined(staffTabOrGroup) || Utils11.Is.isIntegerGte(staffTabOrGroup, 0), "staffTabOrGroup", staffTabOrGroup);
7037
+ addFermataInternal(staffTabOrGroups, fermata) {
7038
+ assertStaffTabOrGRoups(staffTabOrGroups);
7034
7039
  assertArg(Utils11.Is.isEnumValue(fermata, Fermata), "fermata", fermata);
7035
- this.getMeasure().addFermata(staffTabOrGroup, fermata);
7040
+ this.getMeasure().addFermata(staffTabOrGroups, fermata);
7036
7041
  return this;
7037
7042
  }
7038
7043
  addFermata(fermata = 0 /* AtNote */) {
7039
7044
  return this.addFermataInternal(void 0, fermata);
7040
7045
  }
7041
- /** @param staffTabOrGroup - staff/tab index (0=top), staff/tab name, or staff group name. */
7042
- addFermataTo(staffTabOrGroup, fermata = 0 /* AtNote */) {
7043
- return this.addFermataInternal(staffTabOrGroup, fermata);
7046
+ /** @param staffTabOrGroups - staff/tab index (0=top), staff/tab name, or staff group name. */
7047
+ addFermataTo(staffTabOrGroups, fermata = 0 /* AtNote */) {
7048
+ return this.addFermataInternal(staffTabOrGroups, fermata);
7044
7049
  }
7045
- addNavigationInternal(staffTabOrGroup, navigation, ...args) {
7046
- assertArg(Utils11.Is.isStringOrUndefined(staffTabOrGroup) || Utils11.Is.isIntegerGte(staffTabOrGroup, 0), "staffTabOrGroup", staffTabOrGroup);
7050
+ addNavigationInternal(staffTabOrGroups, navigation, ...args) {
7051
+ assertStaffTabOrGRoups(staffTabOrGroups);
7047
7052
  assertArg(Utils11.Is.isEnumValue(navigation, Navigation), "navigation", navigation);
7048
7053
  if (navigation === 9 /* EndRepeat */ && args.length > 0) {
7049
7054
  assertArg(Utils11.Is.isIntegerGte(args[0], 1), "playCount", args[0]);
7050
7055
  } else if (navigation === 10 /* Ending */ && args.length > 0) {
7051
7056
  assertArg(args.every((passage) => Utils11.Is.isIntegerGte(passage, 1)), "passages", args);
7052
7057
  }
7053
- this.getMeasure().addNavigation(staffTabOrGroup, navigation, ...args);
7058
+ this.getMeasure().addNavigation(staffTabOrGroups, navigation, ...args);
7054
7059
  return this;
7055
7060
  }
7056
7061
  addNavigation(navigation, ...args) {
7057
7062
  return this.addNavigationInternal(void 0, navigation, ...args);
7058
7063
  }
7059
- addNavigationTo(staffTabOrGroup, navigation, ...args) {
7060
- return this.addNavigationInternal(staffTabOrGroup, navigation, ...args);
7064
+ addNavigationTo(staffTabOrGroups, navigation, ...args) {
7065
+ return this.addNavigationInternal(staffTabOrGroups, navigation, ...args);
7061
7066
  }
7062
- addLabelInternal(staffTabOrGroup, label, text) {
7063
- assertArg(Utils11.Is.isStringOrUndefined(staffTabOrGroup) || Utils11.Is.isIntegerGte(staffTabOrGroup, 0), "staffTabOrGroup", staffTabOrGroup);
7067
+ addLabelInternal(staffTabOrGroups, label, text) {
7068
+ assertStaffTabOrGRoups(staffTabOrGroups);
7064
7069
  assertArg(Utils11.Is.isEnumValue(label, Label), "label", label);
7065
7070
  assertArg(Utils11.Is.isString(text), "text", text);
7066
- this.getMeasure().addLabel(staffTabOrGroup, label, text);
7071
+ this.getMeasure().addLabel(staffTabOrGroups, label, text);
7067
7072
  return this;
7068
7073
  }
7069
7074
  addLabel(label, text) {
7070
7075
  return this.addLabelInternal(void 0, label, text);
7071
7076
  }
7072
- /** @param staffTabOrGroup - staff/tab index (0=top), staff/tab name, or staff group name. */
7073
- addLabelTo(staffTabOrGroup, label, text) {
7074
- return this.addLabelInternal(staffTabOrGroup, label, text);
7077
+ /** @param staffTabOrGroups - staff/tab index (0=top), staff/tab name, or staff group name. */
7078
+ addLabelTo(staffTabOrGroups, label, text) {
7079
+ return this.addLabelInternal(staffTabOrGroups, label, text);
7075
7080
  }
7076
- addAnnotationInternal(staffTabOrGroup, annotation, text) {
7077
- assertArg(Utils11.Is.isStringOrUndefined(staffTabOrGroup) || Utils11.Is.isIntegerGte(staffTabOrGroup, 0), "staffTabOrGroup", staffTabOrGroup);
7081
+ addAnnotationInternal(staffTabOrGroups, annotation, text) {
7082
+ assertStaffTabOrGRoups(staffTabOrGroups);
7078
7083
  assertArg(Utils11.Is.isEnumValue(annotation, Annotation), "annotation", annotation);
7079
7084
  assertArg(Utils11.Is.isString(text), "text", text);
7080
- this.getMeasure().addAnnotation(staffTabOrGroup, annotation, text);
7085
+ this.getMeasure().addAnnotation(staffTabOrGroups, annotation, text);
7081
7086
  return this;
7082
7087
  }
7083
7088
  addAnnotation(annotation, text) {
7084
7089
  return this.addAnnotationInternal(void 0, annotation, text);
7085
7090
  }
7086
- /** @param staffTabOrGroup - staff/tab index (0=top), staff/tab name, or staff group name. */
7087
- addAnnotationTo(staffTabOrGroup, annotation, text) {
7088
- return this.addAnnotationInternal(staffTabOrGroup, annotation, text);
7091
+ /** @param staffTabOrGroups - staff/tab index (0=top), staff/tab name, or staff group name. */
7092
+ addAnnotationTo(staffTabOrGroups, annotation, text) {
7093
+ return this.addAnnotationInternal(staffTabOrGroups, annotation, text);
7089
7094
  }
7090
7095
  addConnective(connective, ...args) {
7091
7096
  assertArg(Utils11.Is.isEnumValue(connective, Connective), "connective", connective);
@@ -1,6 +1,5 @@
1
- import { N as Note, A as Accidental } from './note-B5ZtlHc8.mjs';
1
+ import { N as Note, A as Accidental } from './note-BFa43I86.mjs';
2
2
 
3
- /** @public */
4
3
  declare enum Mode {
5
4
  Ionian = 1,
6
5
  Dorian = 2,
@@ -10,15 +9,12 @@ declare enum Mode {
10
9
  Aeolian = 6,
11
10
  Locrian = 7
12
11
  }
13
- /** @public */
14
12
  declare enum AccidentalType {
15
13
  Natural = 0,
16
14
  Flats = 1,
17
15
  Sharps = 2
18
16
  }
19
- /** @public */
20
17
  declare function getDefaultKeySignature(): KeySignature;
21
- /** @public */
22
18
  declare class KeySignature {
23
19
  readonly tonic: string;
24
20
  readonly mode: Mode;
@@ -46,7 +42,6 @@ declare class KeySignature {
46
42
  static equals(a: KeySignature | null | undefined, b: KeySignature | null | undefined): boolean;
47
43
  }
48
44
 
49
- /** @public */
50
45
  declare enum NoteLength {
51
46
  Whole = 192,// * 3 because triplets are multiplied by 2 / 3, integer result
52
47
  Half = 96,
@@ -56,13 +51,9 @@ declare enum NoteLength {
56
51
  ThirtySecond = 6,
57
52
  SixtyFourth = 3
58
53
  }
59
- /** @public */
60
54
  declare const MaxNoteLength = NoteLength.Whole;
61
- /** @public */
62
55
  declare const MinNoteLength = NoteLength.SixtyFourth;
63
- /** @public */
64
56
  declare function validateNoteLength(noteLength: unknown): NoteLength;
65
- /** @public */
66
57
  declare class RhythmProps {
67
58
  readonly noteLength: NoteLength;
68
59
  readonly dotted: boolean;
@@ -76,9 +67,7 @@ declare class RhythmProps {
76
67
  toString(): string;
77
68
  }
78
69
 
79
- /** @public */
80
70
  type TimeSignatureString = "2/4" | "3/4" | "4/4" | "6/8" | "9/8";
81
- /** @public */
82
71
  declare class TimeSignature {
83
72
  readonly beatCount: number;
84
73
  readonly beatSize: number;
@@ -99,10 +88,8 @@ declare class TimeSignature {
99
88
  is(beatCount: number, beatSize: number): boolean;
100
89
  toString(): string;
101
90
  }
102
- /** @public */
103
91
  declare function getDefaultTimeSignature(): TimeSignature;
104
92
 
105
- /** @public */
106
93
  type Tempo = {
107
94
  beatsPerMinute: number;
108
95
  options: {
@@ -110,11 +97,8 @@ type Tempo = {
110
97
  dotted: boolean;
111
98
  };
112
99
  };
113
- /** @public */
114
100
  declare function getDefaultTempo(): Readonly<Tempo>;
115
- /** @public */
116
101
  declare function getTempoString(tempo: Tempo): string;
117
- /** @public */
118
102
  declare function alterTempoSpeed(tempo: Tempo, speed: number): Tempo;
119
103
 
120
104
  export { AccidentalType as A, KeySignature as K, Mode as M, NoteLength as N, RhythmProps as R, type TimeSignatureString as T, TimeSignature as a, getDefaultTimeSignature as b, type Tempo as c, getDefaultTempo as d, getTempoString as e, alterTempoSpeed as f, getDefaultKeySignature as g, MaxNoteLength as h, MinNoteLength as i, validateNoteLength as v };
@@ -1,6 +1,5 @@
1
- import { N as Note, A as Accidental } from './note-B5ZtlHc8.js';
1
+ import { N as Note, A as Accidental } from './note-BFa43I86.js';
2
2
 
3
- /** @public */
4
3
  declare enum Mode {
5
4
  Ionian = 1,
6
5
  Dorian = 2,
@@ -10,15 +9,12 @@ declare enum Mode {
10
9
  Aeolian = 6,
11
10
  Locrian = 7
12
11
  }
13
- /** @public */
14
12
  declare enum AccidentalType {
15
13
  Natural = 0,
16
14
  Flats = 1,
17
15
  Sharps = 2
18
16
  }
19
- /** @public */
20
17
  declare function getDefaultKeySignature(): KeySignature;
21
- /** @public */
22
18
  declare class KeySignature {
23
19
  readonly tonic: string;
24
20
  readonly mode: Mode;
@@ -46,7 +42,6 @@ declare class KeySignature {
46
42
  static equals(a: KeySignature | null | undefined, b: KeySignature | null | undefined): boolean;
47
43
  }
48
44
 
49
- /** @public */
50
45
  declare enum NoteLength {
51
46
  Whole = 192,// * 3 because triplets are multiplied by 2 / 3, integer result
52
47
  Half = 96,
@@ -56,13 +51,9 @@ declare enum NoteLength {
56
51
  ThirtySecond = 6,
57
52
  SixtyFourth = 3
58
53
  }
59
- /** @public */
60
54
  declare const MaxNoteLength = NoteLength.Whole;
61
- /** @public */
62
55
  declare const MinNoteLength = NoteLength.SixtyFourth;
63
- /** @public */
64
56
  declare function validateNoteLength(noteLength: unknown): NoteLength;
65
- /** @public */
66
57
  declare class RhythmProps {
67
58
  readonly noteLength: NoteLength;
68
59
  readonly dotted: boolean;
@@ -76,9 +67,7 @@ declare class RhythmProps {
76
67
  toString(): string;
77
68
  }
78
69
 
79
- /** @public */
80
70
  type TimeSignatureString = "2/4" | "3/4" | "4/4" | "6/8" | "9/8";
81
- /** @public */
82
71
  declare class TimeSignature {
83
72
  readonly beatCount: number;
84
73
  readonly beatSize: number;
@@ -99,10 +88,8 @@ declare class TimeSignature {
99
88
  is(beatCount: number, beatSize: number): boolean;
100
89
  toString(): string;
101
90
  }
102
- /** @public */
103
91
  declare function getDefaultTimeSignature(): TimeSignature;
104
92
 
105
- /** @public */
106
93
  type Tempo = {
107
94
  beatsPerMinute: number;
108
95
  options: {
@@ -110,11 +97,8 @@ type Tempo = {
110
97
  dotted: boolean;
111
98
  };
112
99
  };
113
- /** @public */
114
100
  declare function getDefaultTempo(): Readonly<Tempo>;
115
- /** @public */
116
101
  declare function getTempoString(tempo: Tempo): string;
117
- /** @public */
118
102
  declare function alterTempoSpeed(tempo: Tempo, speed: number): Tempo;
119
103
 
120
104
  export { AccidentalType as A, KeySignature as K, Mode as M, NoteLength as N, RhythmProps as R, type TimeSignatureString as T, TimeSignature as a, getDefaultTimeSignature as b, type Tempo as c, getDefaultTempo as d, getTempoString as e, alterTempoSpeed as f, getDefaultKeySignature as g, MaxNoteLength as h, MinNoteLength as i, validateNoteLength as v };
@@ -1,16 +1,14 @@
1
- import { N as Note } from '../note-B5ZtlHc8.mjs';
2
- export { A as Accidental, d as DefaultGuitarNoteLabel, D as DefaultPitchNotation, G as GuitarNoteLabel, e as GuitarNoteLabelList, a as NoteLetter, P as ParsedNote, b as PitchNotation, c as PitchNotationList, S as SymbolSet, g as getPitchNotationName, f as validateGuitarNoteLabel, v as validatePitchNotation } from '../note-B5ZtlHc8.mjs';
3
- import { D as Degree } from '../scale-C-YS5iVG.mjs';
4
- export { b as Interval, I as IntervalDirection, a as IntervalQuality, c as Scale, d as ScaleFactory, S as ScaleType, i as getDefaultScale, h as getScale, e as getScaleFactory, g as getScaleFactoryList, v as validateIntervalQuality, f as validateScaleType } from '../scale-C-YS5iVG.mjs';
5
- export { D as DefaultHandedness, a as DefaultTuningName, H as Handedness, T as TuningNameList, g as getTuningStrings, v as validateHandedness, b as validateTuningName } from '../guitar-zASF7B1g.mjs';
6
- export { A as AccidentalType, K as KeySignature, h as MaxNoteLength, i as MinNoteLength, M as Mode, N as NoteLength, R as RhythmProps, c as Tempo, a as TimeSignature, T as TimeSignatureString, f as alterTempoSpeed, g as getDefaultKeySignature, d as getDefaultTempo, b as getDefaultTimeSignature, e as getTempoString, v as validateNoteLength } from '../tempo-TjQKn46X.mjs';
1
+ import { N as Note } from '../note-BFa43I86.mjs';
2
+ export { A as Accidental, d as DefaultGuitarNoteLabel, D as DefaultPitchNotation, G as GuitarNoteLabel, e as GuitarNoteLabelList, a as NoteLetter, P as ParsedNote, b as PitchNotation, c as PitchNotationList, S as SymbolSet, g as getPitchNotationName, f as validateGuitarNoteLabel, v as validatePitchNotation } from '../note-BFa43I86.mjs';
3
+ import { D as Degree } from '../scale-DRR-t4Kr.mjs';
4
+ export { b as Interval, I as IntervalDirection, a as IntervalQuality, c as Scale, d as ScaleFactory, S as ScaleType, i as getDefaultScale, h as getScale, e as getScaleFactory, g as getScaleFactoryList, v as validateIntervalQuality, f as validateScaleType } from '../scale-DRR-t4Kr.mjs';
5
+ export { D as DefaultHandedness, a as DefaultTuningName, H as Handedness, T as TuningNameList, g as getTuningStrings, v as validateHandedness, b as validateTuningName } from '../guitar-DggbM2UL.mjs';
6
+ export { A as AccidentalType, K as KeySignature, h as MaxNoteLength, i as MinNoteLength, M as Mode, N as NoteLength, R as RhythmProps, c as Tempo, a as TimeSignature, T as TimeSignatureString, f as alterTempoSpeed, g as getDefaultKeySignature, d as getDefaultTempo, b as getDefaultTimeSignature, e as getTempoString, v as validateNoteLength } from '../tempo-B4h5Ktob.mjs';
7
7
 
8
- /** @public */
9
8
  type ChordInfo = {
10
9
  name: string;
11
10
  degrees: Degree[];
12
11
  };
13
- /** @public */
14
12
  declare class Chord {
15
13
  readonly chordInfo: ChordInfo;
16
14
  readonly rootNote: Note;
@@ -1,16 +1,14 @@
1
- import { N as Note } from '../note-B5ZtlHc8.js';
2
- export { A as Accidental, d as DefaultGuitarNoteLabel, D as DefaultPitchNotation, G as GuitarNoteLabel, e as GuitarNoteLabelList, a as NoteLetter, P as ParsedNote, b as PitchNotation, c as PitchNotationList, S as SymbolSet, g as getPitchNotationName, f as validateGuitarNoteLabel, v as validatePitchNotation } from '../note-B5ZtlHc8.js';
3
- import { D as Degree } from '../scale-B_2MZaT9.js';
4
- export { b as Interval, I as IntervalDirection, a as IntervalQuality, c as Scale, d as ScaleFactory, S as ScaleType, i as getDefaultScale, h as getScale, e as getScaleFactory, g as getScaleFactoryList, v as validateIntervalQuality, f as validateScaleType } from '../scale-B_2MZaT9.js';
5
- export { D as DefaultHandedness, a as DefaultTuningName, H as Handedness, T as TuningNameList, g as getTuningStrings, v as validateHandedness, b as validateTuningName } from '../guitar-BIFwFT31.js';
6
- export { A as AccidentalType, K as KeySignature, h as MaxNoteLength, i as MinNoteLength, M as Mode, N as NoteLength, R as RhythmProps, c as Tempo, a as TimeSignature, T as TimeSignatureString, f as alterTempoSpeed, g as getDefaultKeySignature, d as getDefaultTempo, b as getDefaultTimeSignature, e as getTempoString, v as validateNoteLength } from '../tempo-DoJd-UYT.js';
1
+ import { N as Note } from '../note-BFa43I86.js';
2
+ export { A as Accidental, d as DefaultGuitarNoteLabel, D as DefaultPitchNotation, G as GuitarNoteLabel, e as GuitarNoteLabelList, a as NoteLetter, P as ParsedNote, b as PitchNotation, c as PitchNotationList, S as SymbolSet, g as getPitchNotationName, f as validateGuitarNoteLabel, v as validatePitchNotation } from '../note-BFa43I86.js';
3
+ import { D as Degree } from '../scale-ebJm37q1.js';
4
+ export { b as Interval, I as IntervalDirection, a as IntervalQuality, c as Scale, d as ScaleFactory, S as ScaleType, i as getDefaultScale, h as getScale, e as getScaleFactory, g as getScaleFactoryList, v as validateIntervalQuality, f as validateScaleType } from '../scale-ebJm37q1.js';
5
+ export { D as DefaultHandedness, a as DefaultTuningName, H as Handedness, T as TuningNameList, g as getTuningStrings, v as validateHandedness, b as validateTuningName } from '../guitar-C2Cp71NZ.js';
6
+ export { A as AccidentalType, K as KeySignature, h as MaxNoteLength, i as MinNoteLength, M as Mode, N as NoteLength, R as RhythmProps, c as Tempo, a as TimeSignature, T as TimeSignatureString, f as alterTempoSpeed, g as getDefaultKeySignature, d as getDefaultTempo, b as getDefaultTimeSignature, e as getTempoString, v as validateNoteLength } from '../tempo-DgqDEsn0.js';
7
7
 
8
- /** @public */
9
8
  type ChordInfo = {
10
9
  name: string;
11
10
  degrees: Degree[];
12
11
  };
13
- /** @public */
14
12
  declare class Chord {
15
13
  readonly chordInfo: ChordInfo;
16
14
  readonly rootNote: Note;
@@ -1,4 +1,4 @@
1
- /* WebMusicScore v3.1.0 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
1
+ /* WebMusicScore v3.1.1 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
2
2
  "use strict";
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,7 +1,7 @@
1
- /* WebMusicScore v3.1.0 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
1
+ /* WebMusicScore v3.1.1 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
2
2
  import {
3
3
  __publicField
4
- } from "../chunk-B4J3KED2.mjs";
4
+ } from "../chunk-PU4J7K4Z.mjs";
5
5
 
6
6
  // src/theory/chord.ts
7
7
  import { Utils as Utils6 } from "@tspro/ts-utils-lib";