@tspro/web-music-score 5.1.0 → 5.2.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/CHANGELOG.md +10 -0
- package/README.md +4 -4
- package/dist/audio/index.d.ts +1 -1
- package/dist/audio/index.js +2 -2
- package/dist/audio/index.mjs +4 -4
- package/dist/audio-cg/index.js +1 -1
- package/dist/audio-cg/index.mjs +3 -3
- package/dist/audio-synth/index.js +1 -1
- package/dist/audio-synth/index.mjs +3 -3
- package/dist/{chunk-ROPTZBKD.mjs → chunk-6S5BDSCM.mjs} +2 -2
- package/dist/{chunk-2EQHSQWO.mjs → chunk-LC5JMIVF.mjs} +2 -2
- package/dist/{chunk-QVYFIK3L.mjs → chunk-XUGM7SCC.mjs} +3 -3
- package/dist/core/index.js +2 -2
- package/dist/core/index.mjs +3 -3
- package/dist/{guitar-CaZJDA05.d.ts → guitar-BsSayRsH.d.ts} +1 -1
- package/dist/iife/audio-cg.global.js +9 -2
- package/dist/iife/index.global.js +11 -11
- package/dist/{music-objects-DTDFSro0.d.mts → music-objects-CB05XryE.d.mts} +3 -9
- package/dist/{music-objects-CMdYZeC6.d.ts → music-objects-CwPOlqFi.d.ts} +5 -11
- package/dist/{note-eA2xPPiG.d.ts → note-CgCIBwvR.d.ts} +1 -1
- package/dist/pieces/index.d.mts +1 -1
- package/dist/pieces/index.d.ts +3 -3
- package/dist/pieces/index.js +1 -1
- package/dist/pieces/index.mjs +2 -2
- package/dist/react-ui/index.d.mts +1 -1
- package/dist/react-ui/index.d.ts +5 -5
- package/dist/react-ui/index.js +1 -1
- package/dist/react-ui/index.mjs +2 -2
- package/dist/{scale-DGx3tJH4.d.ts → scale-CBW4eTz7.d.ts} +2 -2
- package/dist/score/index.d.mts +2 -2
- package/dist/score/index.d.ts +5 -5
- package/dist/score/index.js +153 -88
- package/dist/score/index.mjs +155 -90
- package/dist/{tempo-GrstpD9G.d.ts → tempo-DMt3iwz9.d.ts} +1 -1
- package/dist/theory/index.d.ts +6 -6
- package/dist/theory/index.js +1 -1
- package/dist/theory/index.mjs +3 -3
- package/package.json +1 -1
package/dist/score/index.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/* WebMusicScore v5.
|
|
1
|
+
/* WebMusicScore v5.2.0 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
|
|
2
2
|
import {
|
|
3
3
|
NoteLengthProps,
|
|
4
4
|
RhythmProps,
|
|
5
5
|
validateNoteLength
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-XUGM7SCC.mjs";
|
|
7
7
|
import {
|
|
8
8
|
__publicField
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-LC5JMIVF.mjs";
|
|
10
10
|
|
|
11
11
|
// src/score/pub/div-rect.ts
|
|
12
12
|
import { Utils } from "@tspro/ts-utils-lib";
|
|
@@ -2790,7 +2790,7 @@ var ObjRhythmColumn = class extends MusicObject {
|
|
|
2790
2790
|
this.measure = measure;
|
|
2791
2791
|
this.positionTicks = positionTicks;
|
|
2792
2792
|
__publicField(this, "voiceSymbol", []);
|
|
2793
|
-
__publicField(this, "
|
|
2793
|
+
__publicField(this, "lyricsContainerCache", /* @__PURE__ */ new Map());
|
|
2794
2794
|
__publicField(this, "minDiatonicId");
|
|
2795
2795
|
__publicField(this, "maxDiatonicId");
|
|
2796
2796
|
__publicField(this, "staffMinDiatonicId", /* @__PURE__ */ new Map());
|
|
@@ -2916,18 +2916,20 @@ var ObjRhythmColumn = class extends MusicObject {
|
|
|
2916
2916
|
getVoiceSymbol(voiceId) {
|
|
2917
2917
|
return this.voiceSymbol[voiceId];
|
|
2918
2918
|
}
|
|
2919
|
-
getLyricsContainerDatas() {
|
|
2920
|
-
return this.lyricsContainers;
|
|
2921
|
-
}
|
|
2922
2919
|
getLyricsContainer(verse, line, vpos, lyricsLength) {
|
|
2923
|
-
let
|
|
2924
|
-
if (
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2920
|
+
let vposMap = this.lyricsContainerCache.get(line);
|
|
2921
|
+
if (vposMap === void 0) {
|
|
2922
|
+
this.lyricsContainerCache.set(line, vposMap = /* @__PURE__ */ new Map());
|
|
2923
|
+
}
|
|
2924
|
+
let verseMap = vposMap.get(vpos);
|
|
2925
|
+
if (verseMap === void 0) {
|
|
2926
|
+
vposMap.set(vpos, verseMap = /* @__PURE__ */ new Map());
|
|
2929
2927
|
}
|
|
2930
|
-
|
|
2928
|
+
let lyricsContainer = verseMap.get(verse);
|
|
2929
|
+
if (lyricsContainer === void 0 && lyricsLength !== void 0) {
|
|
2930
|
+
verseMap.set(verse, lyricsContainer = new LyricsContainer(this, validateNoteLength2(lyricsLength)));
|
|
2931
|
+
}
|
|
2932
|
+
return lyricsContainer;
|
|
2931
2933
|
}
|
|
2932
2934
|
getMinWidth() {
|
|
2933
2935
|
let maxNoteSize = Math.max(...this.voiceSymbol.map((s) => s.rhythmProps.noteSize));
|
|
@@ -3700,6 +3702,10 @@ var Player = class _Player {
|
|
|
3700
3702
|
return;
|
|
3701
3703
|
}
|
|
3702
3704
|
const col = this.playerColumnSequence[this.playPos];
|
|
3705
|
+
if (!col) {
|
|
3706
|
+
this.stop();
|
|
3707
|
+
return;
|
|
3708
|
+
}
|
|
3703
3709
|
const getDuration = (ticks, tempo2) => {
|
|
3704
3710
|
let seconds = calcTicksDuration(ticks, tempo2);
|
|
3705
3711
|
return Math.max(0, seconds);
|
|
@@ -3784,6 +3790,9 @@ var Player = class _Player {
|
|
|
3784
3790
|
return void 0;
|
|
3785
3791
|
}
|
|
3786
3792
|
let col = this.playerColumnSequence[this.playPos];
|
|
3793
|
+
if (!col) {
|
|
3794
|
+
return void 0;
|
|
3795
|
+
}
|
|
3787
3796
|
let measure = col.measure;
|
|
3788
3797
|
let x = col.getRect().centerX;
|
|
3789
3798
|
let top = measure.row.getRect().top;
|
|
@@ -4162,6 +4171,12 @@ var ObjStaffBeamGroup = class extends MusicObject {
|
|
|
4162
4171
|
}
|
|
4163
4172
|
}
|
|
4164
4173
|
};
|
|
4174
|
+
var InvalidBeamGroup = class {
|
|
4175
|
+
constructor(beamGroup, message) {
|
|
4176
|
+
this.beamGroup = beamGroup;
|
|
4177
|
+
this.message = message;
|
|
4178
|
+
}
|
|
4179
|
+
};
|
|
4165
4180
|
var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
4166
4181
|
constructor(symbols, tupletRatio) {
|
|
4167
4182
|
super(symbols[0].measure);
|
|
@@ -4202,10 +4217,27 @@ var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
|
4202
4217
|
let first = i === 0;
|
|
4203
4218
|
let last = i === this.symbols.length - 1;
|
|
4204
4219
|
if (first && sym.getRightBeamCount() === 0 || last && sym.getLeftBeamCount() === 0 || !first && !last && (sym.getLeftBeamCount() === 0 || sym.getRightBeamCount() === 0)) {
|
|
4205
|
-
this
|
|
4220
|
+
throw new InvalidBeamGroup(this, "Beam has zero left or right beam count!");
|
|
4206
4221
|
}
|
|
4207
4222
|
});
|
|
4208
4223
|
}
|
|
4224
|
+
if (symbols.some((symbol) => symbol.voiceId !== symbols[0].voiceId)) {
|
|
4225
|
+
if (this.type === 0 /* RegularBeam */) {
|
|
4226
|
+
throw new InvalidBeamGroup(this, "Beam symbols have different voiceId.");
|
|
4227
|
+
} else {
|
|
4228
|
+
throw new MusicError10(MusicErrorType10.Score, `Tuplet symbols have different voiceId.`);
|
|
4229
|
+
}
|
|
4230
|
+
}
|
|
4231
|
+
symbols[0].row.getStaves().forEach((staff) => {
|
|
4232
|
+
if (staff.getActualStaff(symbols[0].ownDiatonicId) && staff.containsVoiceId(symbols[0].voiceId)) {
|
|
4233
|
+
symbols.forEach((sym) => {
|
|
4234
|
+
let actualStaff = staff.getActualStaff(sym.ownDiatonicId);
|
|
4235
|
+
if (!actualStaff || !actualStaff.containsVoiceId(sym.voiceId)) {
|
|
4236
|
+
throw new InvalidBeamGroup(this, "Some of beam or tuplet symbols are not visible!");
|
|
4237
|
+
}
|
|
4238
|
+
});
|
|
4239
|
+
}
|
|
4240
|
+
});
|
|
4209
4241
|
}
|
|
4210
4242
|
get showTupletRatio() {
|
|
4211
4243
|
var _a;
|
|
@@ -4213,26 +4245,54 @@ var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
|
4213
4245
|
}
|
|
4214
4246
|
static createBeam(noteGroups) {
|
|
4215
4247
|
if (noteGroups.length > 1 && noteGroups.every((ng) => !ng.hasTuplet())) {
|
|
4216
|
-
|
|
4248
|
+
try {
|
|
4249
|
+
new _ObjBeamGroup(noteGroups, void 0);
|
|
4250
|
+
return true;
|
|
4251
|
+
} catch (err) {
|
|
4252
|
+
if (err instanceof InvalidBeamGroup) {
|
|
4253
|
+
err.beamGroup.detach();
|
|
4254
|
+
} else {
|
|
4255
|
+
throw err;
|
|
4256
|
+
}
|
|
4257
|
+
}
|
|
4217
4258
|
}
|
|
4259
|
+
return false;
|
|
4218
4260
|
}
|
|
4219
4261
|
static createOldStyleTriplet(symbols) {
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4262
|
+
try {
|
|
4263
|
+
let s2 = symbols.slice(0, 2);
|
|
4264
|
+
let n2 = s2.map((s) => s.rhythmProps.noteSize);
|
|
4265
|
+
if (s2.length === 2 && s2.every((s) => s.oldStyleTriplet && s.getBeamGroup() === void 0) && (n2[0] * 2 === n2[1] || n2[1] * 2 === n2[0])) {
|
|
4266
|
+
new _ObjBeamGroup(s2, Tuplet3.Triplet);
|
|
4267
|
+
return 2;
|
|
4268
|
+
}
|
|
4269
|
+
let s3 = symbols.slice(0, 3);
|
|
4270
|
+
let n3 = s3.map((s) => s.rhythmProps.noteSize);
|
|
4271
|
+
if (s3.length === 3 && s3.every((s) => s.oldStyleTriplet && s.getBeamGroup() === void 0) && n3.every((n) => n === n3[0])) {
|
|
4272
|
+
new _ObjBeamGroup(s3, Tuplet3.Triplet);
|
|
4273
|
+
return 3;
|
|
4274
|
+
}
|
|
4275
|
+
} catch (err) {
|
|
4276
|
+
if (err instanceof InvalidBeamGroup) {
|
|
4277
|
+
console.error(err.message);
|
|
4278
|
+
err.beamGroup.detach();
|
|
4279
|
+
} else {
|
|
4280
|
+
throw err;
|
|
4281
|
+
}
|
|
4231
4282
|
}
|
|
4232
4283
|
return 0;
|
|
4233
4284
|
}
|
|
4234
4285
|
static createTuplet(symbols, tupletRatio) {
|
|
4235
|
-
|
|
4286
|
+
try {
|
|
4287
|
+
new _ObjBeamGroup(symbols, tupletRatio);
|
|
4288
|
+
} catch (err) {
|
|
4289
|
+
if (err instanceof InvalidBeamGroup) {
|
|
4290
|
+
console.error(err.message);
|
|
4291
|
+
err.beamGroup.detach();
|
|
4292
|
+
} else {
|
|
4293
|
+
throw err;
|
|
4294
|
+
}
|
|
4295
|
+
}
|
|
4236
4296
|
}
|
|
4237
4297
|
getMusicInterface() {
|
|
4238
4298
|
return this.mi;
|
|
@@ -4277,6 +4337,9 @@ var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
|
4277
4337
|
get stemDir() {
|
|
4278
4338
|
return this.symbols[0].ownStemDir;
|
|
4279
4339
|
}
|
|
4340
|
+
get color() {
|
|
4341
|
+
return this.symbols[0].color;
|
|
4342
|
+
}
|
|
4280
4343
|
layout(renderer) {
|
|
4281
4344
|
this.requestRectUpdate();
|
|
4282
4345
|
this.staffObjects.length = 0;
|
|
@@ -4284,12 +4347,8 @@ var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
|
4284
4347
|
if (symbols.length === 0) {
|
|
4285
4348
|
return;
|
|
4286
4349
|
}
|
|
4287
|
-
let voiceId = symbols[0].voiceId;
|
|
4288
|
-
if (symbols.some((symbol) => symbol.voiceId !== voiceId)) {
|
|
4289
|
-
return;
|
|
4290
|
-
}
|
|
4291
4350
|
let { unitSize } = renderer;
|
|
4292
|
-
let { stemDir } = this;
|
|
4351
|
+
let { stemDir, type } = this;
|
|
4293
4352
|
let symbolsBeamCoords = symbols.map((s) => s.getBeamCoords());
|
|
4294
4353
|
symbolsBeamCoords[0].map((s) => s == null ? void 0 : s.staff).forEach((mainStaff, index) => {
|
|
4295
4354
|
var _a, _b;
|
|
@@ -4325,7 +4384,7 @@ var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
|
4325
4384
|
}
|
|
4326
4385
|
let leftStemHeight = (_a = symbolStemHeight[0]) != null ? _a : 0;
|
|
4327
4386
|
let rightStemHeight = (_b = symbolStemHeight[symbolStemHeight.length - 1]) != null ? _b : 0;
|
|
4328
|
-
if (
|
|
4387
|
+
if (type !== 2 /* TupletGroup */) {
|
|
4329
4388
|
let leftDy = leftStemHeight < rightStemHeight ? Math.sqrt(rightStemHeight - leftStemHeight) : 0;
|
|
4330
4389
|
let rightDy = rightStemHeight < leftStemHeight ? Math.sqrt(leftStemHeight - rightStemHeight) : 0;
|
|
4331
4390
|
if (stemDir === "up" /* Up */) {
|
|
@@ -4363,21 +4422,21 @@ var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
|
4363
4422
|
rightY += raiseBeamY;
|
|
4364
4423
|
symbolY = symbolY.map((y) => y === void 0 ? void 0 : y + raiseBeamY);
|
|
4365
4424
|
let obj = new ObjStaffBeamGroup(mainStaff, this);
|
|
4366
|
-
if (
|
|
4425
|
+
if (type === 2 /* TupletGroup */) {
|
|
4367
4426
|
let ef = unitSize / (rightX - leftX);
|
|
4368
4427
|
let l = Utils8.Math.interpolateCoord(leftX, leftY + groupLineDy, rightX, rightY + groupLineDy, -ef);
|
|
4369
4428
|
let r = Utils8.Math.interpolateCoord(leftX, leftY + groupLineDy, rightX, rightY + groupLineDy, 1 + ef);
|
|
4370
4429
|
obj.points.push(new BeamPoint(leftStaff, this, leftSymbol, l.x, l.y));
|
|
4371
4430
|
obj.points.push(new BeamPoint(rightStaff, this, rightSymbol, r.x, r.y));
|
|
4372
4431
|
obj.tupletNumberOffsetY = 0;
|
|
4373
|
-
} else if (
|
|
4432
|
+
} else if (type === 0 /* RegularBeam */ || type === 1 /* TupletBeam */) {
|
|
4374
4433
|
raiseBeamY *= 0.5;
|
|
4375
4434
|
let { beamThickness } = renderer;
|
|
4376
4435
|
const beamHeight = (i) => {
|
|
4377
4436
|
let sym = symbols[i];
|
|
4378
4437
|
if (sym instanceof ObjNoteGroup) {
|
|
4379
4438
|
let beamCount = sym instanceof ObjNoteGroup ? Math.max(sym.getLeftBeamCount(), sym.getRightBeamCount()) : 0;
|
|
4380
|
-
return DocumentSettings.BeamSeparation * unitSize * (
|
|
4439
|
+
return DocumentSettings.BeamSeparation * unitSize * (stemDir === "up" /* Up */ ? beamCount - 1 : 0);
|
|
4381
4440
|
} else {
|
|
4382
4441
|
return 0;
|
|
4383
4442
|
}
|
|
@@ -4388,8 +4447,16 @@ var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
|
4388
4447
|
let symY = symbolY[i];
|
|
4389
4448
|
if (symStaff && symX !== void 0 && symY !== void 0) {
|
|
4390
4449
|
let pt = new BeamPoint(symStaff, this, sym, symX, symY);
|
|
4391
|
-
|
|
4392
|
-
|
|
4450
|
+
switch (stemDir) {
|
|
4451
|
+
case "up" /* Up */:
|
|
4452
|
+
pt.topBeamsHeight = beamThickness / 2;
|
|
4453
|
+
pt.bottomBeamsHeight = beamThickness / 2 + beamHeight(i);
|
|
4454
|
+
break;
|
|
4455
|
+
case "down" /* Down */:
|
|
4456
|
+
pt.topBeamsHeight = beamThickness / 2 + beamHeight(i);
|
|
4457
|
+
pt.bottomBeamsHeight = beamThickness / 2;
|
|
4458
|
+
break;
|
|
4459
|
+
}
|
|
4393
4460
|
obj.points.push(pt);
|
|
4394
4461
|
}
|
|
4395
4462
|
});
|
|
@@ -4442,53 +4509,52 @@ var ObjBeamGroup = class _ObjBeamGroup extends MusicObject {
|
|
|
4442
4509
|
}
|
|
4443
4510
|
draw(renderer) {
|
|
4444
4511
|
let { unitSize, beamThickness, lineWidth } = renderer;
|
|
4445
|
-
let color =
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
let
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
let
|
|
4453
|
-
let
|
|
4454
|
-
let
|
|
4455
|
-
renderer.drawLine(
|
|
4456
|
-
renderer.drawLine(rc.x, rc.y,
|
|
4457
|
-
|
|
4458
|
-
renderer.drawLine(
|
|
4512
|
+
let { stemDir, color, type } = this;
|
|
4513
|
+
if (type === 2 /* TupletGroup */) {
|
|
4514
|
+
let tipHeight = (stemDir === "up" /* Up */ ? 1 : -1) * unitSize;
|
|
4515
|
+
this.staffObjects.forEach((obj) => {
|
|
4516
|
+
let { x: lx, y: ly } = obj.points[0];
|
|
4517
|
+
let { x: rx, y: ry } = obj.points[obj.points.length - 1];
|
|
4518
|
+
if (obj.tupletNumber) {
|
|
4519
|
+
let tf = obj.tupletNumber.getRect().width / (rx - lx) * 1.2;
|
|
4520
|
+
let lc = Utils8.Math.interpolateCoord(lx, ly, rx, ry, 0.5 - tf / 2);
|
|
4521
|
+
let rc = Utils8.Math.interpolateCoord(lx, ly, rx, ry, 0.5 + tf / 2);
|
|
4522
|
+
renderer.drawLine(lx, ly, lc.x, lc.y, color, lineWidth);
|
|
4523
|
+
renderer.drawLine(rc.x, rc.y, rx, ry, color, lineWidth);
|
|
4524
|
+
} else {
|
|
4525
|
+
renderer.drawLine(lx, ly, rx, ry, color, lineWidth);
|
|
4459
4526
|
}
|
|
4460
|
-
|
|
4461
|
-
|
|
4527
|
+
renderer.drawLine(lx, ly, lx, ly + tipHeight, color, lineWidth);
|
|
4528
|
+
renderer.drawLine(rx, ry, rx, ry + tipHeight, color, lineWidth);
|
|
4529
|
+
});
|
|
4530
|
+
} else if (type === 0 /* RegularBeam */ || type === 1 /* TupletBeam */) {
|
|
4531
|
+
this.staffObjects.forEach((obj) => {
|
|
4462
4532
|
let noteGroupPoints = obj.points.filter((p) => p.symbol instanceof ObjNoteGroup);
|
|
4533
|
+
let { x: lx, y: ly } = noteGroupPoints[0];
|
|
4534
|
+
let { x: rx, y: ry } = noteGroupPoints[noteGroupPoints.length - 1];
|
|
4535
|
+
let beamSeparation = DocumentSettings.BeamSeparation * unitSize * (stemDir === "up" /* Up */ ? 1 : -1) * (1 + 0.5 * Math.abs(Math.atan2(ry - ly, rx - lx)));
|
|
4463
4536
|
for (let i = 0; i < noteGroupPoints.length - 1; i++) {
|
|
4464
|
-
let
|
|
4465
|
-
let
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
}
|
|
4469
|
-
let leftBeamCount = left.symbol.getRightBeamCount();
|
|
4470
|
-
let rightBeamCount = right.symbol.getLeftBeamCount();
|
|
4471
|
-
let lx = left.x;
|
|
4472
|
-
let ly = left.y;
|
|
4473
|
-
let rx = right.x;
|
|
4474
|
-
let ry = right.y;
|
|
4475
|
-
let dy = beamSeparation * (1 + 0.5 * Math.abs(Math.atan2(ry - ly, rx - lx)));
|
|
4537
|
+
let { x: lx2, y: ly2, symbol: lsymbol } = noteGroupPoints[i];
|
|
4538
|
+
let { x: rx2, y: ry2, symbol: rsymbol } = noteGroupPoints[i + 1];
|
|
4539
|
+
let leftBeamCount = lsymbol.getRightBeamCount();
|
|
4540
|
+
let rightBeamCount = rsymbol.getLeftBeamCount();
|
|
4476
4541
|
for (let beamId = 0; beamId < Math.max(leftBeamCount, rightBeamCount); beamId++) {
|
|
4477
4542
|
if (beamId < leftBeamCount && beamId < rightBeamCount) {
|
|
4478
|
-
renderer.drawLine(
|
|
4543
|
+
renderer.drawLine(lx2, ly2, rx2, ry2, color, beamThickness);
|
|
4479
4544
|
} else if (leftBeamCount > rightBeamCount) {
|
|
4480
|
-
renderer.drawPartialLine(
|
|
4545
|
+
renderer.drawPartialLine(lx2, ly2, rx2, ry2, 0, 0.25, color, beamThickness);
|
|
4481
4546
|
} else if (rightBeamCount > leftBeamCount) {
|
|
4482
|
-
renderer.drawPartialLine(
|
|
4547
|
+
renderer.drawPartialLine(lx2, ly2, rx2, ry2, 0.75, 1, color, beamThickness);
|
|
4483
4548
|
}
|
|
4484
|
-
|
|
4485
|
-
|
|
4549
|
+
ly2 += beamSeparation;
|
|
4550
|
+
ry2 += beamSeparation;
|
|
4486
4551
|
}
|
|
4487
4552
|
}
|
|
4488
|
-
}
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4553
|
+
});
|
|
4554
|
+
}
|
|
4555
|
+
this.staffObjects.forEach((obj) => {
|
|
4556
|
+
var _a;
|
|
4557
|
+
return (_a = obj.tupletNumber) == null ? void 0 : _a.draw(renderer);
|
|
4492
4558
|
});
|
|
4493
4559
|
}
|
|
4494
4560
|
setBeamCounts() {
|
|
@@ -5913,18 +5979,15 @@ var _ObjMeasure = class _ObjMeasure extends MusicObject {
|
|
|
5913
5979
|
getLyricsObjects(line, vpos, verse) {
|
|
5914
5980
|
let vposMap = this.lyricsObjectsCache.get(line);
|
|
5915
5981
|
if (vposMap === void 0) {
|
|
5916
|
-
vposMap = /* @__PURE__ */ new Map();
|
|
5917
|
-
this.lyricsObjectsCache.set(line, vposMap);
|
|
5982
|
+
this.lyricsObjectsCache.set(line, vposMap = /* @__PURE__ */ new Map());
|
|
5918
5983
|
}
|
|
5919
5984
|
let verseMap = vposMap.get(vpos);
|
|
5920
5985
|
if (verseMap === void 0) {
|
|
5921
|
-
verseMap = /* @__PURE__ */ new Map();
|
|
5922
|
-
vposMap.set(vpos, verseMap);
|
|
5986
|
+
vposMap.set(vpos, verseMap = /* @__PURE__ */ new Map());
|
|
5923
5987
|
}
|
|
5924
5988
|
let lyricsArr = verseMap.get(verse);
|
|
5925
5989
|
if (lyricsArr === void 0) {
|
|
5926
|
-
lyricsArr = [];
|
|
5927
|
-
verseMap.set(verse, lyricsArr);
|
|
5990
|
+
verseMap.set(verse, lyricsArr = []);
|
|
5928
5991
|
}
|
|
5929
5992
|
return lyricsArr;
|
|
5930
5993
|
}
|
|
@@ -6051,22 +6114,24 @@ var _ObjMeasure = class _ObjMeasure extends MusicObject {
|
|
|
6051
6114
|
if (beamGroupSize.length > 1) {
|
|
6052
6115
|
beamGroupSizeList.unshift([Utils12.Math.sum(beamGroupSize)]);
|
|
6053
6116
|
}
|
|
6054
|
-
let
|
|
6117
|
+
let beamCreated = false;
|
|
6055
6118
|
let groupStartTicksSave = groupStartTicks;
|
|
6056
|
-
while (beamGroupSizeList.length > 0 && !
|
|
6119
|
+
while (beamGroupSizeList.length > 0 && !beamCreated) {
|
|
6057
6120
|
let beamGroupSize2 = beamGroupSizeList.shift();
|
|
6058
6121
|
groupStartTicks = groupStartTicksSave;
|
|
6059
6122
|
beamGroupSize2.forEach((beamGroupSize3) => {
|
|
6060
6123
|
let beamGroupTicks = beamGroupSize3 * NoteLengthProps5.get("8n").ticks;
|
|
6124
|
+
let groupEndTicks = groupStartTicks + beamGroupTicks;
|
|
6061
6125
|
let groupSymbols = symbols.filter((symbol) => {
|
|
6062
6126
|
let symbolStartTicks = upBeatStartTicks + symbol.col.positionTicks;
|
|
6063
|
-
let
|
|
6064
|
-
return symbolStartTicks >= groupStartTicks &&
|
|
6127
|
+
let symbolEndTicks = symbolStartTicks + symbol.rhythmProps.ticks;
|
|
6128
|
+
return symbolStartTicks >= groupStartTicks && symbolEndTicks <= groupEndTicks;
|
|
6065
6129
|
});
|
|
6066
|
-
let
|
|
6067
|
-
if (
|
|
6068
|
-
ObjBeamGroup.createBeam(groupSymbols)
|
|
6069
|
-
|
|
6130
|
+
let groupSymbolsTicks = Utils12.Math.sum(groupSymbols.map((sym) => sym.rhythmProps.ticks));
|
|
6131
|
+
if (groupSymbolsTicks === beamGroupTicks && groupSymbols.every((n) => n instanceof ObjNoteGroup) && (groupSymbols.every((n) => n.rhythmProps.flagCount === 1) || beamGroupSizeList.length === 0)) {
|
|
6132
|
+
if (ObjBeamGroup.createBeam(groupSymbols)) {
|
|
6133
|
+
beamCreated = true;
|
|
6134
|
+
}
|
|
6070
6135
|
}
|
|
6071
6136
|
groupStartTicks += beamGroupTicks;
|
|
6072
6137
|
});
|
package/dist/theory/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { N as Note } from '../note-
|
|
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-
|
|
3
|
-
import { D as Degree } from '../scale-
|
|
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-
|
|
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-
|
|
6
|
-
export { A as AccidentalType, B as BeamGrouping, K as KeySignature, M as Mode, N as NoteLength, j as NoteLengthProps, i as NoteLengthStr, R as RhythmProps, d as Tempo, b as TimeSignature, a as TimeSignatureString, T as TimeSignatures, m as Tuplet, k as TupletRatio, h as alterTempoSpeed, g as getDefaultKeySignature, e as getDefaultTempo, c as getDefaultTimeSignature, f as getTempoString, v as validateNoteLength, l as validateTupletRatio } from '../tempo-
|
|
1
|
+
import { N as Note } from '../note-CgCIBwvR.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-CgCIBwvR.js';
|
|
3
|
+
import { D as Degree } from '../scale-CBW4eTz7.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-CBW4eTz7.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-BsSayRsH.js';
|
|
6
|
+
export { A as AccidentalType, B as BeamGrouping, K as KeySignature, M as Mode, N as NoteLength, j as NoteLengthProps, i as NoteLengthStr, R as RhythmProps, d as Tempo, b as TimeSignature, a as TimeSignatureString, T as TimeSignatures, m as Tuplet, k as TupletRatio, h as alterTempoSpeed, g as getDefaultKeySignature, e as getDefaultTempo, c as getDefaultTimeSignature, f as getTempoString, v as validateNoteLength, l as validateTupletRatio } from '../tempo-DMt3iwz9.js';
|
|
7
7
|
|
|
8
8
|
/** Chord info type. */
|
|
9
9
|
type ChordInfo = {
|
package/dist/theory/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* WebMusicScore v5.
|
|
1
|
+
/* WebMusicScore v5.2.0 | (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;
|
package/dist/theory/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* WebMusicScore v5.
|
|
1
|
+
/* WebMusicScore v5.2.0 | (c) 2023 PahkaSoft | MIT License | Includes: Tone.js (MIT License) */
|
|
2
2
|
import {
|
|
3
3
|
NoteLength,
|
|
4
4
|
NoteLengthProps,
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
Tuplet,
|
|
7
7
|
validateNoteLength,
|
|
8
8
|
validateTupletRatio
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-XUGM7SCC.mjs";
|
|
10
10
|
import {
|
|
11
11
|
__publicField
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-LC5JMIVF.mjs";
|
|
13
13
|
|
|
14
14
|
// src/theory/chord.ts
|
|
15
15
|
import { Utils as Utils6 } from "@tspro/ts-utils-lib";
|