@coderline/alphatab 1.4.0-alpha.1313 → 1.4.0-alpha.1322
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/alphaTab.core.min.mjs +1 -1
- package/dist/alphaTab.core.mjs +343 -294
- package/dist/alphaTab.d.ts +19 -11
- package/dist/alphaTab.js +343 -294
- package/dist/alphaTab.min.js +1 -1
- package/dist/alphaTab.mjs +1 -1
- package/dist/alphaTab.vite.js +152 -9
- package/dist/alphaTab.vite.mjs +153 -10
- package/dist/alphaTab.webpack.js +1 -1
- package/dist/alphaTab.webpack.mjs +1 -1
- package/dist/alphaTab.worker.mjs +1 -1
- package/dist/alphaTab.worklet.mjs +1 -1
- package/package.json +29 -27
package/dist/alphaTab.core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* alphaTab v1.4.0-alpha.
|
|
2
|
+
* alphaTab v1.4.0-alpha.1322 (develop, build 1322)
|
|
3
3
|
*
|
|
4
4
|
* Copyright © 2025, Daniel Kuschny and Contributors, All rights reserved.
|
|
5
5
|
*
|
|
@@ -2137,6 +2137,7 @@ var PickStroke;
|
|
|
2137
2137
|
var MusicFontSymbol;
|
|
2138
2138
|
(function (MusicFontSymbol) {
|
|
2139
2139
|
MusicFontSymbol[MusicFontSymbol["None"] = -1] = "None";
|
|
2140
|
+
MusicFontSymbol[MusicFontSymbol["Space"] = 32] = "Space";
|
|
2140
2141
|
MusicFontSymbol[MusicFontSymbol["Brace"] = 57344] = "Brace";
|
|
2141
2142
|
MusicFontSymbol[MusicFontSymbol["BracketTop"] = 57347] = "BracketTop";
|
|
2142
2143
|
MusicFontSymbol[MusicFontSymbol["BracketBottom"] = 57348] = "BracketBottom";
|
|
@@ -2186,6 +2187,17 @@ var MusicFontSymbol;
|
|
|
2186
2187
|
MusicFontSymbol[MusicFontSymbol["NoteheadSlashWhiteHalf"] = 57603] = "NoteheadSlashWhiteHalf";
|
|
2187
2188
|
MusicFontSymbol[MusicFontSymbol["NoteQuarterUp"] = 57813] = "NoteQuarterUp";
|
|
2188
2189
|
MusicFontSymbol[MusicFontSymbol["NoteEighthUp"] = 57815] = "NoteEighthUp";
|
|
2190
|
+
MusicFontSymbol[MusicFontSymbol["TextBlackNoteLongStem"] = 57841] = "TextBlackNoteLongStem";
|
|
2191
|
+
MusicFontSymbol[MusicFontSymbol["TextBlackNoteFrac8thLongStem"] = 57843] = "TextBlackNoteFrac8thLongStem";
|
|
2192
|
+
MusicFontSymbol[MusicFontSymbol["TextBlackNoteFrac16thLongStem"] = 57845] = "TextBlackNoteFrac16thLongStem";
|
|
2193
|
+
MusicFontSymbol[MusicFontSymbol["TextBlackNoteFrac32ndLongStem"] = 57846] = "TextBlackNoteFrac32ndLongStem";
|
|
2194
|
+
MusicFontSymbol[MusicFontSymbol["TextCont8thBeamLongStem"] = 57848] = "TextCont8thBeamLongStem";
|
|
2195
|
+
MusicFontSymbol[MusicFontSymbol["TextCont16thBeamLongStem"] = 57850] = "TextCont16thBeamLongStem";
|
|
2196
|
+
MusicFontSymbol[MusicFontSymbol["TextCont32ndBeamLongStem"] = 57851] = "TextCont32ndBeamLongStem";
|
|
2197
|
+
MusicFontSymbol[MusicFontSymbol["TextAugmentationDot"] = 57852] = "TextAugmentationDot";
|
|
2198
|
+
MusicFontSymbol[MusicFontSymbol["TextTupletBracketStartLongStem"] = 57857] = "TextTupletBracketStartLongStem";
|
|
2199
|
+
MusicFontSymbol[MusicFontSymbol["TextTuplet3LongStem"] = 57858] = "TextTuplet3LongStem";
|
|
2200
|
+
MusicFontSymbol[MusicFontSymbol["TextTupletBracketEndLongStem"] = 57859] = "TextTupletBracketEndLongStem";
|
|
2189
2201
|
MusicFontSymbol[MusicFontSymbol["Tremolo3"] = 57890] = "Tremolo3";
|
|
2190
2202
|
MusicFontSymbol[MusicFontSymbol["Tremolo2"] = 57889] = "Tremolo2";
|
|
2191
2203
|
MusicFontSymbol[MusicFontSymbol["Tremolo1"] = 57888] = "Tremolo1";
|
|
@@ -23047,7 +23059,7 @@ class VorbisResidue0 {
|
|
|
23047
23059
|
const idx = partWordCache[ch][entryIdx][dimensionIdx];
|
|
23048
23060
|
if ((this._cascade[idx] & (1 << stage)) != 0) {
|
|
23049
23061
|
const book = this._books[idx][stage];
|
|
23050
|
-
if (book
|
|
23062
|
+
if (book) {
|
|
23051
23063
|
if (this.writeVectors(book, packet, buffer, ch, offset, this._partitionSize)) {
|
|
23052
23064
|
// bad packet... exit now and try to use what we already have
|
|
23053
23065
|
partitionIdx = partitionCount;
|
|
@@ -24671,16 +24683,16 @@ class Envelope {
|
|
|
24671
24683
|
// EG times need to be converted from timecents to seconds.
|
|
24672
24684
|
// Pin very short EG segments. Timecents don't get to zero, and our EG is
|
|
24673
24685
|
// happier with zero values.
|
|
24674
|
-
this.delay = this.delay < -11950
|
|
24675
|
-
this.attack = this.attack < -11950
|
|
24676
|
-
this.release = this.release < -11950
|
|
24686
|
+
this.delay = this.delay < -11950 ? 0.0 : SynthHelper.timecents2Secs(this.delay);
|
|
24687
|
+
this.attack = this.attack < -11950 ? 0.0 : SynthHelper.timecents2Secs(this.attack);
|
|
24688
|
+
this.release = this.release < -11950 ? 0.0 : SynthHelper.timecents2Secs(this.release);
|
|
24677
24689
|
// If we have dynamic hold or decay times depending on key number we need
|
|
24678
24690
|
// to keep the values in timecents so we can calculate it during startNote
|
|
24679
24691
|
if (this.keynumToHold === 0) {
|
|
24680
|
-
this.hold = this.hold < -11950
|
|
24692
|
+
this.hold = this.hold < -11950 ? 0.0 : SynthHelper.timecents2Secs(this.hold);
|
|
24681
24693
|
}
|
|
24682
24694
|
if (this.keynumToDecay === 0) {
|
|
24683
|
-
this.decay = this.decay < -11950
|
|
24695
|
+
this.decay = this.decay < -11950 ? 0.0 : SynthHelper.timecents2Secs(this.decay);
|
|
24684
24696
|
}
|
|
24685
24697
|
if (this.sustain < 0.0) {
|
|
24686
24698
|
this.sustain = 0.0;
|
|
@@ -24869,19 +24881,19 @@ class Region {
|
|
|
24869
24881
|
this.pitchKeyTrack = 100;
|
|
24870
24882
|
this.pitchKeyCenter = -1;
|
|
24871
24883
|
// SF2 defaults in timecents.
|
|
24872
|
-
this.ampEnv.delay = -
|
|
24873
|
-
this.ampEnv.attack = -
|
|
24874
|
-
this.ampEnv.hold = -
|
|
24875
|
-
this.ampEnv.decay = -
|
|
24876
|
-
this.ampEnv.release = -
|
|
24877
|
-
this.modEnv.delay = -
|
|
24878
|
-
this.modEnv.attack = -
|
|
24879
|
-
this.modEnv.hold = -
|
|
24880
|
-
this.modEnv.decay = -
|
|
24881
|
-
this.modEnv.release = -
|
|
24884
|
+
this.ampEnv.delay = -12e3;
|
|
24885
|
+
this.ampEnv.attack = -12e3;
|
|
24886
|
+
this.ampEnv.hold = -12e3;
|
|
24887
|
+
this.ampEnv.decay = -12e3;
|
|
24888
|
+
this.ampEnv.release = -12e3;
|
|
24889
|
+
this.modEnv.delay = -12e3;
|
|
24890
|
+
this.modEnv.attack = -12e3;
|
|
24891
|
+
this.modEnv.hold = -12e3;
|
|
24892
|
+
this.modEnv.decay = -12e3;
|
|
24893
|
+
this.modEnv.release = -12e3;
|
|
24882
24894
|
this.initialFilterFc = 13500;
|
|
24883
|
-
this.delayModLFO = -
|
|
24884
|
-
this.delayVibLFO = -
|
|
24895
|
+
this.delayModLFO = -12e3;
|
|
24896
|
+
this.delayVibLFO = -12e3;
|
|
24885
24897
|
}
|
|
24886
24898
|
operator(genOper, amount) {
|
|
24887
24899
|
switch (genOper) {
|
|
@@ -25125,7 +25137,7 @@ class VoiceEnvelope {
|
|
|
25125
25137
|
}
|
|
25126
25138
|
}
|
|
25127
25139
|
else {
|
|
25128
|
-
this.slope = -1
|
|
25140
|
+
this.slope = -1 / this.samplesUntilNextSegment;
|
|
25129
25141
|
this.samplesUntilNextSegment =
|
|
25130
25142
|
(this.parameters.decay * (1.0 - this.parameters.sustain) * outSampleRate) | 0;
|
|
25131
25143
|
this.segmentIsExponential = false;
|
|
@@ -25173,12 +25185,12 @@ class VoiceEnvelope {
|
|
|
25173
25185
|
if (this.parameters.keynumToHold > 0) {
|
|
25174
25186
|
this.parameters.hold += this.parameters.keynumToHold * (60.0 - midiNoteNumber);
|
|
25175
25187
|
this.parameters.hold =
|
|
25176
|
-
this.parameters.hold < -
|
|
25188
|
+
this.parameters.hold < -1e4 ? 0.0 : SynthHelper.timecents2Secs(this.parameters.hold);
|
|
25177
25189
|
}
|
|
25178
25190
|
if (this.parameters.keynumToDecay > 0) {
|
|
25179
25191
|
this.parameters.decay += this.parameters.keynumToDecay * (60.0 - midiNoteNumber);
|
|
25180
25192
|
this.parameters.decay =
|
|
25181
|
-
this.parameters.decay < -
|
|
25193
|
+
this.parameters.decay < -1e4 ? 0.0 : SynthHelper.timecents2Secs(this.parameters.decay);
|
|
25182
25194
|
}
|
|
25183
25195
|
this.midiVelocity = midiVelocity | 0;
|
|
25184
25196
|
this.isAmpEnv = isAmpEnv;
|
|
@@ -25226,9 +25238,9 @@ class VoiceLfo {
|
|
|
25226
25238
|
this.delta = -this.delta;
|
|
25227
25239
|
this.level = 2.0 - this.level;
|
|
25228
25240
|
}
|
|
25229
|
-
else if (this.level < -1
|
|
25241
|
+
else if (this.level < -1) {
|
|
25230
25242
|
this.delta = -this.delta;
|
|
25231
|
-
this.level = -2
|
|
25243
|
+
this.level = -2 - this.level;
|
|
25232
25244
|
}
|
|
25233
25245
|
}
|
|
25234
25246
|
}
|
|
@@ -26829,11 +26841,11 @@ class TinySoundFont {
|
|
|
26829
26841
|
zoneRegion.modEnv.envToSecs(false);
|
|
26830
26842
|
// LFO times need to be converted from timecents to seconds.
|
|
26831
26843
|
zoneRegion.delayModLFO =
|
|
26832
|
-
zoneRegion.delayModLFO < -11950
|
|
26844
|
+
zoneRegion.delayModLFO < -11950
|
|
26833
26845
|
? 0.0
|
|
26834
26846
|
: SynthHelper.timecents2Secs(zoneRegion.delayModLFO);
|
|
26835
26847
|
zoneRegion.delayVibLFO =
|
|
26836
|
-
zoneRegion.delayVibLFO < -11950
|
|
26848
|
+
zoneRegion.delayVibLFO < -11950
|
|
26837
26849
|
? 0.0
|
|
26838
26850
|
: SynthHelper.timecents2Secs(zoneRegion.delayVibLFO);
|
|
26839
26851
|
// Pin values to their ranges.
|
|
@@ -27970,6 +27982,11 @@ class BarBounds {
|
|
|
27970
27982
|
*/
|
|
27971
27983
|
class BeatBounds {
|
|
27972
27984
|
constructor() {
|
|
27985
|
+
/**
|
|
27986
|
+
* Gets or sets x-position where the timely center of the notes for this beat is.
|
|
27987
|
+
* This is where the cursor should be at the time when this beat is played.
|
|
27988
|
+
*/
|
|
27989
|
+
this.onNotesX = 0;
|
|
27973
27990
|
/**
|
|
27974
27991
|
* Gets or sets the individual note positions of this beat (if {@link CoreSettings.includeNoteBounds} was set to true).
|
|
27975
27992
|
*/
|
|
@@ -28223,6 +28240,7 @@ class BoundsLookup {
|
|
|
28223
28240
|
let bb = {};
|
|
28224
28241
|
bb.visualBounds = this.boundsToJson(beat.visualBounds);
|
|
28225
28242
|
bb.realBounds = this.boundsToJson(beat.realBounds);
|
|
28243
|
+
bb.onNotesX = beat.onNotesX;
|
|
28226
28244
|
let bbd = bb;
|
|
28227
28245
|
bbd.beatIndex = beat.beat.index;
|
|
28228
28246
|
bbd.voiceIndex = beat.beat.voice.index;
|
|
@@ -28277,6 +28295,7 @@ class BoundsLookup {
|
|
|
28277
28295
|
let bb = new BeatBounds();
|
|
28278
28296
|
bb.visualBounds = BoundsLookup.boundsFromJson(beat.visualBounds);
|
|
28279
28297
|
bb.realBounds = BoundsLookup.boundsFromJson(beat.realBounds);
|
|
28298
|
+
bb.onNotesX = beat.onNotesX;
|
|
28280
28299
|
let bd = beat;
|
|
28281
28300
|
bb.beat =
|
|
28282
28301
|
score.tracks[bd.trackIndex].staves[bd.staffIndex].bars[bd.barIndex].voices[bd.voiceIndex].beats[bd.beatIndex];
|
|
@@ -31849,39 +31868,31 @@ class BeatContainerGlyph extends Glyph {
|
|
|
31849
31868
|
}
|
|
31850
31869
|
registerLayoutingInfo(layoutings) {
|
|
31851
31870
|
let preBeatStretch = this.preNotes.computedWidth + this.onNotes.centerX;
|
|
31852
|
-
if (this.beat.graceGroup && !this.beat.graceGroup.isComplete) {
|
|
31853
|
-
preBeatStretch += BeatContainerGlyph.GraceBeatPadding;
|
|
31854
|
-
}
|
|
31855
31871
|
let postBeatStretch = this.onNotes.computedWidth - this.onNotes.centerX;
|
|
31856
31872
|
// make space for flag
|
|
31857
31873
|
const helper = this.renderer.helpers.getBeamingHelperForBeat(this.beat);
|
|
31858
|
-
if (
|
|
31859
|
-
|
|
31860
|
-
|
|
31861
|
-
|
|
31874
|
+
if (this.beat.graceType !== GraceType.None) {
|
|
31875
|
+
// flagged grace
|
|
31876
|
+
if (this.beat.graceGroup.beats.length === 1) {
|
|
31877
|
+
postBeatStretch += FlagGlyph.FlagWidth * NoteHeadGlyph.GraceScale;
|
|
31878
|
+
}
|
|
31879
|
+
// grace with bars, some space for bar unless last
|
|
31880
|
+
else if (this.beat.graceIndex < this.beat.graceGroup.beats.length - 1) {
|
|
31881
|
+
postBeatStretch += 7;
|
|
31882
|
+
}
|
|
31883
|
+
else {
|
|
31884
|
+
postBeatStretch += BeatContainerGlyph.GraceBeatPadding;
|
|
31885
|
+
}
|
|
31886
|
+
}
|
|
31887
|
+
else if (helper && this.drawBeamHelperAsFlags(helper)) {
|
|
31888
|
+
postBeatStretch += FlagGlyph.FlagWidth;
|
|
31862
31889
|
}
|
|
31863
31890
|
for (const tie of this.ties) {
|
|
31864
31891
|
postBeatStretch += tie.width;
|
|
31865
31892
|
}
|
|
31866
|
-
// Add some further spacing to grace notes
|
|
31867
|
-
if (this.beat.graceType !== GraceType.None) {
|
|
31868
|
-
postBeatStretch += BeatContainerGlyph.GraceBeatPadding;
|
|
31869
|
-
}
|
|
31870
31893
|
layoutings.addBeatSpring(this.beat, preBeatStretch, postBeatStretch);
|
|
31871
|
-
// store sizes for special renderers like the EffectBarRenderer
|
|
31872
|
-
layoutings.setPreBeatSize(this.beat, this.preNotes.computedWidth);
|
|
31873
|
-
layoutings.setOnBeatSize(this.beat, this.onNotes.computedWidth);
|
|
31874
|
-
layoutings.setBeatCenterX(this.beat, this.onNotes.centerX);
|
|
31875
31894
|
}
|
|
31876
31895
|
applyLayoutingInfo(info) {
|
|
31877
|
-
let offset = info.getBeatCenterX(this.beat) - this.onNotes.centerX;
|
|
31878
|
-
if (this.beat.graceGroup && !this.beat.graceGroup.isComplete) {
|
|
31879
|
-
offset += BeatContainerGlyph.GraceBeatPadding;
|
|
31880
|
-
}
|
|
31881
|
-
this.preNotes.x = offset;
|
|
31882
|
-
this.preNotes.width = info.getPreBeatSize(this.beat);
|
|
31883
|
-
this.onNotes.width = info.getOnBeatSize(this.beat);
|
|
31884
|
-
this.onNotes.x = this.preNotes.x + this.preNotes.width;
|
|
31885
31896
|
this.onNotes.updateBeamingHelper();
|
|
31886
31897
|
this.updateWidth();
|
|
31887
31898
|
}
|
|
@@ -31943,11 +31954,6 @@ class BeatContainerGlyph extends Glyph {
|
|
|
31943
31954
|
if (this.beat.voice.isEmpty) {
|
|
31944
31955
|
return;
|
|
31945
31956
|
}
|
|
31946
|
-
let isEmptyGlyph = this.preNotes.isEmpty && this.onNotes.isEmpty && this.ties.length === 0;
|
|
31947
|
-
if (isEmptyGlyph) {
|
|
31948
|
-
return;
|
|
31949
|
-
}
|
|
31950
|
-
canvas.beginGroup(BeatContainerGlyph.getGroupId(this.beat));
|
|
31951
31957
|
// var c = canvas.color;
|
|
31952
31958
|
// var ta = canvas.textAlign;
|
|
31953
31959
|
// canvas.color = new Color(255, 0, 0);
|
|
@@ -31966,21 +31972,25 @@ class BeatContainerGlyph extends Glyph {
|
|
|
31966
31972
|
// canvas.font = new Font("Arial", 10);
|
|
31967
31973
|
// canvas.color = new Color(0, 0, 0);
|
|
31968
31974
|
// canvas.fillText(this.beat.voice.index + ":" + this.beat.index, cx + this.x, cy + this.y + 15 * this.beat.voice.index);
|
|
31975
|
+
// const c = canvas.color;
|
|
31969
31976
|
// if (this.beat.voice.index === 0) {
|
|
31977
|
+
// canvas.color = new Color(0, 0, 200, 100);
|
|
31978
|
+
// canvas.strokeRect(cx + this.x, cy + this.y, this.width, 10);
|
|
31970
31979
|
// canvas.color = new Color(200, 0, 0, 100);
|
|
31971
|
-
// canvas.strokeRect(cx + this.x
|
|
31980
|
+
// canvas.strokeRect(cx + this.x + this.preNotes.x, cy + this.y + 10, this.preNotes.width, 10);
|
|
31981
|
+
// canvas.color = new Color(0, 200, 0, 100);
|
|
31982
|
+
// canvas.strokeRect(cx + this.x + this.onNotes.x, cy + this.y + 10, this.onNotes.width, 10);
|
|
31983
|
+
// canvas.color = new Color(0, 200, 200, 100);
|
|
31984
|
+
// canvas.strokeRect(cx + this.x + this.onNotes.x + this.onNotes.centerX, cy, 1, this.renderer.height);
|
|
31972
31985
|
// }
|
|
31986
|
+
// canvas.color = c;
|
|
31987
|
+
let isEmptyGlyph = this.preNotes.isEmpty && this.onNotes.isEmpty && this.ties.length === 0;
|
|
31988
|
+
if (isEmptyGlyph) {
|
|
31989
|
+
return;
|
|
31990
|
+
}
|
|
31991
|
+
canvas.beginGroup(BeatContainerGlyph.getGroupId(this.beat));
|
|
31973
31992
|
this.preNotes.paint(cx + this.x, cy + this.y, canvas);
|
|
31974
|
-
// if (this.beat.voice.index === 0) {
|
|
31975
|
-
// canvas.color = new Color(200, 0, 0, 100);
|
|
31976
|
-
// canvas.strokeRect(cx + this.x + this.preNotes.x, cy + this.y + this.preNotes.y, this.preNotes.width, 10);
|
|
31977
|
-
// }
|
|
31978
31993
|
this.onNotes.paint(cx + this.x, cy + this.y, canvas);
|
|
31979
|
-
// if (this.beat.voice.index === 0) {
|
|
31980
|
-
// canvas.color = new Color(0, 200, 0, 100);
|
|
31981
|
-
// canvas.strokeRect(cx + this.x + this.onNotes.x, cy + this.y + this.onNotes.y - 10, this.onNotes.width, 10);
|
|
31982
|
-
// }
|
|
31983
|
-
// paint the ties relative to the whole staff,
|
|
31984
31994
|
// reason: we have possibly multiple staves involved and need to calculate the correct positions.
|
|
31985
31995
|
let staffX = cx - this.voiceContainer.x - this.renderer.x;
|
|
31986
31996
|
let staffY = cy - this.voiceContainer.y - this.renderer.y;
|
|
@@ -31994,19 +32004,55 @@ class BeatContainerGlyph extends Glyph {
|
|
|
31994
32004
|
buildBoundingsLookup(barBounds, cx, cy, isEmptyBar) {
|
|
31995
32005
|
let beatBoundings = new BeatBounds();
|
|
31996
32006
|
beatBoundings.beat = this.beat;
|
|
31997
|
-
|
|
31998
|
-
|
|
31999
|
-
beatBoundings.visualBounds.y = barBounds.visualBounds.y;
|
|
32000
|
-
beatBoundings.visualBounds.w = this.onNotes.width;
|
|
32001
|
-
beatBoundings.visualBounds.h = barBounds.visualBounds.h;
|
|
32002
|
-
beatBoundings.realBounds = new Bounds();
|
|
32003
|
-
beatBoundings.realBounds.x = cx + this.x;
|
|
32004
|
-
beatBoundings.realBounds.y = barBounds.realBounds.y;
|
|
32005
|
-
beatBoundings.realBounds.w = this.width;
|
|
32006
|
-
beatBoundings.realBounds.h = barBounds.realBounds.h;
|
|
32007
|
-
if (isEmptyBar) {
|
|
32007
|
+
if (this.beat.isEmpty) {
|
|
32008
|
+
beatBoundings.visualBounds = new Bounds();
|
|
32008
32009
|
beatBoundings.visualBounds.x = cx + this.x;
|
|
32009
|
-
beatBoundings.
|
|
32010
|
+
beatBoundings.visualBounds.y = barBounds.visualBounds.y;
|
|
32011
|
+
beatBoundings.visualBounds.w = this.width;
|
|
32012
|
+
beatBoundings.visualBounds.h = barBounds.visualBounds.h;
|
|
32013
|
+
beatBoundings.realBounds = new Bounds();
|
|
32014
|
+
beatBoundings.realBounds.x = cx + this.x;
|
|
32015
|
+
beatBoundings.realBounds.y = barBounds.realBounds.y;
|
|
32016
|
+
beatBoundings.realBounds.w = this.width;
|
|
32017
|
+
beatBoundings.realBounds.h = barBounds.realBounds.h;
|
|
32018
|
+
beatBoundings.onNotesX = cx + this.x + this.onNotes.centerX;
|
|
32019
|
+
}
|
|
32020
|
+
else {
|
|
32021
|
+
beatBoundings.visualBounds = new Bounds();
|
|
32022
|
+
beatBoundings.visualBounds.x = cx + this.x;
|
|
32023
|
+
if (!this.preNotes.isEmpty) {
|
|
32024
|
+
beatBoundings.visualBounds.x = cx + this.x + this.preNotes.x;
|
|
32025
|
+
}
|
|
32026
|
+
else if (!this.onNotes.isEmpty) {
|
|
32027
|
+
beatBoundings.visualBounds.x = cx + this.x + this.onNotes.x;
|
|
32028
|
+
}
|
|
32029
|
+
else {
|
|
32030
|
+
beatBoundings.visualBounds.x = cx + this.x;
|
|
32031
|
+
}
|
|
32032
|
+
let visualEndX = 0;
|
|
32033
|
+
if (!this.onNotes.isEmpty) {
|
|
32034
|
+
visualEndX = cx + this.x + this.onNotes.x + this.onNotes.width;
|
|
32035
|
+
}
|
|
32036
|
+
else if (!this.preNotes.isEmpty) {
|
|
32037
|
+
visualEndX = cx + this.x + this.preNotes.x + this.preNotes.width;
|
|
32038
|
+
}
|
|
32039
|
+
else {
|
|
32040
|
+
visualEndX = cx + this.x + this.width;
|
|
32041
|
+
}
|
|
32042
|
+
beatBoundings.visualBounds.w = visualEndX - beatBoundings.visualBounds.x;
|
|
32043
|
+
const helper = this.renderer.helpers.getBeamingHelperForBeat(this.beat);
|
|
32044
|
+
if ((helper && this.drawBeamHelperAsFlags(helper)) || this.beat.graceType !== GraceType.None) {
|
|
32045
|
+
beatBoundings.visualBounds.w +=
|
|
32046
|
+
FlagGlyph.FlagWidth * (this.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1);
|
|
32047
|
+
}
|
|
32048
|
+
beatBoundings.visualBounds.y = barBounds.visualBounds.y;
|
|
32049
|
+
beatBoundings.visualBounds.h = barBounds.visualBounds.h;
|
|
32050
|
+
beatBoundings.realBounds = new Bounds();
|
|
32051
|
+
beatBoundings.realBounds.x = cx + this.x;
|
|
32052
|
+
beatBoundings.realBounds.y = barBounds.realBounds.y;
|
|
32053
|
+
beatBoundings.realBounds.w = this.width;
|
|
32054
|
+
beatBoundings.realBounds.h = barBounds.realBounds.h;
|
|
32055
|
+
beatBoundings.onNotesX = cx + this.x + this.onNotes.x + this.onNotes.centerX;
|
|
32010
32056
|
}
|
|
32011
32057
|
barBounds.addBeat(beatBoundings);
|
|
32012
32058
|
if (this.renderer.settings.core.includeNoteBounds) {
|
|
@@ -32910,7 +32956,7 @@ class AlphaTabApiBase {
|
|
|
32910
32956
|
if (this.settings.player.enableAnimatedBeatCursor) {
|
|
32911
32957
|
beatCursor.stopAnimation();
|
|
32912
32958
|
}
|
|
32913
|
-
beatCursor.setBounds(beatBoundings.
|
|
32959
|
+
beatCursor.setBounds(beatBoundings.onNotesX, barBounds.y, 1, barBounds.h);
|
|
32914
32960
|
}
|
|
32915
32961
|
// if playing, animate the cursor to the next beat
|
|
32916
32962
|
if (this.settings.player.enableElementHighlighting) {
|
|
@@ -32934,7 +32980,7 @@ class AlphaTabApiBase {
|
|
|
32934
32980
|
let nextBeatBoundings = cache.findBeat(nextBeat);
|
|
32935
32981
|
if (nextBeatBoundings &&
|
|
32936
32982
|
nextBeatBoundings.barBounds.masterBarBounds.staffSystemBounds === barBoundings.staffSystemBounds) {
|
|
32937
|
-
nextBeatX = nextBeatBoundings.
|
|
32983
|
+
nextBeatX = nextBeatBoundings.onNotesX;
|
|
32938
32984
|
}
|
|
32939
32985
|
}
|
|
32940
32986
|
// we need to put the transition to an own animation frame
|
|
@@ -36187,7 +36233,6 @@ class VoiceContainerGlyph extends GlyphGroup {
|
|
|
36187
36233
|
}
|
|
36188
36234
|
}
|
|
36189
36235
|
registerLayoutingInfo(info) {
|
|
36190
|
-
info.updateVoiceSize(this.width);
|
|
36191
36236
|
let beatGlyphs = this.beatGlyphs;
|
|
36192
36237
|
for (let b of beatGlyphs) {
|
|
36193
36238
|
b.registerLayoutingInfo(info);
|
|
@@ -36231,8 +36276,8 @@ VoiceContainerGlyph.KeySizeBeat = 'Beat';
|
|
|
36231
36276
|
|
|
36232
36277
|
class BeatLines {
|
|
36233
36278
|
constructor() {
|
|
36234
|
-
this.maxLine = -
|
|
36235
|
-
this.minLine = -
|
|
36279
|
+
this.maxLine = -1e3;
|
|
36280
|
+
this.minLine = -1e3;
|
|
36236
36281
|
}
|
|
36237
36282
|
}
|
|
36238
36283
|
/**
|
|
@@ -36259,11 +36304,11 @@ class AccidentalHelper {
|
|
|
36259
36304
|
/**
|
|
36260
36305
|
* The line of the highest note added to this helper.
|
|
36261
36306
|
*/
|
|
36262
|
-
this.maxLine = -
|
|
36307
|
+
this.maxLine = -1e3;
|
|
36263
36308
|
/**
|
|
36264
36309
|
* The line of the lowest note added to this helper.
|
|
36265
36310
|
*/
|
|
36266
|
-
this.minLine = -
|
|
36311
|
+
this.minLine = -1e3;
|
|
36267
36312
|
this._barRenderer = barRenderer;
|
|
36268
36313
|
this._bar = barRenderer.bar;
|
|
36269
36314
|
}
|
|
@@ -36469,11 +36514,11 @@ class AccidentalHelper {
|
|
|
36469
36514
|
else {
|
|
36470
36515
|
this._appliedScoreLinesByValue.set(noteValue, line);
|
|
36471
36516
|
}
|
|
36472
|
-
if (this.minLine === -
|
|
36517
|
+
if (this.minLine === -1e3 || this.minLine < line) {
|
|
36473
36518
|
this.minLine = line;
|
|
36474
36519
|
this.minLineBeat = relatedBeat;
|
|
36475
36520
|
}
|
|
36476
|
-
if (this.maxLine === -
|
|
36521
|
+
if (this.maxLine === -1e3 || this.maxLine > line) {
|
|
36477
36522
|
this.maxLine = line;
|
|
36478
36523
|
this.maxLineBeat = relatedBeat;
|
|
36479
36524
|
}
|
|
@@ -36491,10 +36536,10 @@ class AccidentalHelper {
|
|
|
36491
36536
|
lines = new BeatLines();
|
|
36492
36537
|
this._beatLines.set(relatedBeat.id, lines);
|
|
36493
36538
|
}
|
|
36494
|
-
if (lines.minLine === -
|
|
36539
|
+
if (lines.minLine === -1e3 || line < lines.minLine) {
|
|
36495
36540
|
lines.minLine = line;
|
|
36496
36541
|
}
|
|
36497
|
-
if (lines.minLine === -
|
|
36542
|
+
if (lines.minLine === -1e3 || line > lines.maxLine) {
|
|
36498
36543
|
lines.maxLine = line;
|
|
36499
36544
|
}
|
|
36500
36545
|
}
|
|
@@ -37017,14 +37062,14 @@ class ReservedLayoutAreaSlot {
|
|
|
37017
37062
|
}
|
|
37018
37063
|
class ReservedLayoutArea {
|
|
37019
37064
|
constructor(beat) {
|
|
37020
|
-
this.topY = -
|
|
37021
|
-
this.bottomY = -
|
|
37065
|
+
this.topY = -1e3;
|
|
37066
|
+
this.bottomY = -1e3;
|
|
37022
37067
|
this.slots = [];
|
|
37023
37068
|
this.beat = beat;
|
|
37024
37069
|
}
|
|
37025
37070
|
addSlot(topY, bottomY) {
|
|
37026
37071
|
this.slots.push(new ReservedLayoutAreaSlot(topY, bottomY));
|
|
37027
|
-
if (this.topY === -
|
|
37072
|
+
if (this.topY === -1e3) {
|
|
37028
37073
|
this.topY = topY;
|
|
37029
37074
|
this.bottomY = bottomY;
|
|
37030
37075
|
}
|
|
@@ -37046,10 +37091,10 @@ class BarCollisionHelper {
|
|
|
37046
37091
|
this.restDurationsByDisplayTime = new Map();
|
|
37047
37092
|
}
|
|
37048
37093
|
getBeatMinMaxY() {
|
|
37049
|
-
let minY = -
|
|
37050
|
-
let maxY = -
|
|
37094
|
+
let minY = -1e3;
|
|
37095
|
+
let maxY = -1e3;
|
|
37051
37096
|
for (const v of this.reservedLayoutAreasByDisplayTime.values()) {
|
|
37052
|
-
if (minY === -
|
|
37097
|
+
if (minY === -1e3) {
|
|
37053
37098
|
minY = v.topY;
|
|
37054
37099
|
maxY = v.bottomY;
|
|
37055
37100
|
}
|
|
@@ -37062,7 +37107,7 @@ class BarCollisionHelper {
|
|
|
37062
37107
|
}
|
|
37063
37108
|
}
|
|
37064
37109
|
}
|
|
37065
|
-
if (minY === -
|
|
37110
|
+
if (minY === -1e3) {
|
|
37066
37111
|
return [0, 0];
|
|
37067
37112
|
}
|
|
37068
37113
|
return [minY, maxY];
|
|
@@ -37727,12 +37772,8 @@ class BarLayoutingInfo {
|
|
|
37727
37772
|
* an internal version number that increments whenever a change was made.
|
|
37728
37773
|
*/
|
|
37729
37774
|
this.version = 0;
|
|
37730
|
-
this.preBeatSizes = new Map();
|
|
37731
|
-
this.onBeatSizes = new Map();
|
|
37732
|
-
this.onBeatCenterX = new Map();
|
|
37733
37775
|
this.preBeatSize = 0;
|
|
37734
37776
|
this.postBeatSize = 0;
|
|
37735
|
-
this.voiceSize = 0;
|
|
37736
37777
|
this.minStretchForce = 0;
|
|
37737
37778
|
this.totalSpringConstant = 0;
|
|
37738
37779
|
this.incompleteGraceRods = new Map();
|
|
@@ -37740,51 +37781,37 @@ class BarLayoutingInfo {
|
|
|
37740
37781
|
this.springs = new Map();
|
|
37741
37782
|
this.height = 0;
|
|
37742
37783
|
}
|
|
37743
|
-
|
|
37744
|
-
if (
|
|
37745
|
-
this.
|
|
37746
|
-
this.version++;
|
|
37747
|
-
}
|
|
37748
|
-
}
|
|
37749
|
-
setPreBeatSize(beat, size) {
|
|
37750
|
-
if (!this.preBeatSizes.has(beat.id) || this.preBeatSizes.get(beat.id) < size) {
|
|
37751
|
-
this.preBeatSizes.set(beat.id, size);
|
|
37752
|
-
this.version++;
|
|
37784
|
+
updateMinStretchForce(force) {
|
|
37785
|
+
if (this.minStretchForce < force) {
|
|
37786
|
+
this.minStretchForce = force;
|
|
37753
37787
|
}
|
|
37754
37788
|
}
|
|
37755
37789
|
getPreBeatSize(beat) {
|
|
37756
|
-
if (
|
|
37757
|
-
|
|
37758
|
-
|
|
37759
|
-
|
|
37760
|
-
}
|
|
37761
|
-
setOnBeatSize(beat, size) {
|
|
37762
|
-
if (!this.onBeatSizes.has(beat.id) || this.onBeatSizes.get(beat.id) < size) {
|
|
37763
|
-
this.onBeatSizes.set(beat.id, size);
|
|
37764
|
-
this.version++;
|
|
37765
|
-
}
|
|
37766
|
-
}
|
|
37767
|
-
getOnBeatSize(beat) {
|
|
37768
|
-
if (this.onBeatSizes.has(beat.id)) {
|
|
37769
|
-
return this.onBeatSizes.get(beat.id);
|
|
37790
|
+
if (beat.graceType !== GraceType.None) {
|
|
37791
|
+
const groupId = beat.graceGroup.id;
|
|
37792
|
+
const graceRod = this.allGraceRods.get(groupId)[beat.graceIndex];
|
|
37793
|
+
return graceRod.preBeatWidth;
|
|
37770
37794
|
}
|
|
37771
|
-
|
|
37772
|
-
|
|
37773
|
-
|
|
37774
|
-
|
|
37775
|
-
|
|
37795
|
+
else {
|
|
37796
|
+
const start = beat.absoluteDisplayStart;
|
|
37797
|
+
if (!this.springs.has(start)) {
|
|
37798
|
+
return 0;
|
|
37799
|
+
}
|
|
37800
|
+
return this.springs.get(start).preBeatWidth;
|
|
37776
37801
|
}
|
|
37777
|
-
return 0;
|
|
37778
37802
|
}
|
|
37779
|
-
|
|
37780
|
-
if (
|
|
37781
|
-
|
|
37782
|
-
this.
|
|
37803
|
+
getPostBeatSize(beat) {
|
|
37804
|
+
if (beat.graceType !== GraceType.None) {
|
|
37805
|
+
const groupId = beat.graceGroup.id;
|
|
37806
|
+
const graceRod = this.allGraceRods.get(groupId)[beat.graceIndex];
|
|
37807
|
+
return graceRod.postSpringWidth;
|
|
37783
37808
|
}
|
|
37784
|
-
|
|
37785
|
-
|
|
37786
|
-
|
|
37787
|
-
|
|
37809
|
+
else {
|
|
37810
|
+
const start = beat.absoluteDisplayStart;
|
|
37811
|
+
if (!this.springs.has(start)) {
|
|
37812
|
+
return 0;
|
|
37813
|
+
}
|
|
37814
|
+
return this.springs.get(start).postSpringWidth;
|
|
37788
37815
|
}
|
|
37789
37816
|
}
|
|
37790
37817
|
addSpring(start, duration, graceBeatWidth, preBeatWidth, postSpringSize) {
|
|
@@ -37842,7 +37869,7 @@ class BarLayoutingInfo {
|
|
|
37842
37869
|
let start = beat.absoluteDisplayStart;
|
|
37843
37870
|
if (beat.graceType !== GraceType.None) {
|
|
37844
37871
|
// For grace beats we just remember the the sizes required for them
|
|
37845
|
-
// these sizes are then considered when the target beat is added.
|
|
37872
|
+
// these sizes are then considered when the target beat is added.
|
|
37846
37873
|
const groupId = beat.graceGroup.id;
|
|
37847
37874
|
if (!this.allGraceRods.has(groupId)) {
|
|
37848
37875
|
this.allGraceRods.set(groupId, new Array(beat.graceGroup.beats.length));
|
|
@@ -37881,23 +37908,15 @@ class BarLayoutingInfo {
|
|
|
37881
37908
|
}
|
|
37882
37909
|
}
|
|
37883
37910
|
finish() {
|
|
37884
|
-
for (const [
|
|
37885
|
-
|
|
37886
|
-
|
|
37887
|
-
|
|
37888
|
-
|
|
37889
|
-
|
|
37890
|
-
|
|
37891
|
-
|
|
37892
|
-
|
|
37893
|
-
else {
|
|
37894
|
-
for (let i = s.length - 1; i >= 0; i--) {
|
|
37895
|
-
// for grace beats we store the offset
|
|
37896
|
-
// in the 'graceBeatWidth' for later use during applying
|
|
37897
|
-
// beat positions
|
|
37898
|
-
s[i].graceBeatWidth = offset;
|
|
37899
|
-
offset -= (s[i].preBeatWidth + s[i].postSpringWidth);
|
|
37900
|
-
}
|
|
37911
|
+
for (const [_, s] of this.allGraceRods) {
|
|
37912
|
+
// for grace beats we store the offset
|
|
37913
|
+
// in the 'graceBeatWidth' for later use during applying
|
|
37914
|
+
// beat positions
|
|
37915
|
+
let x = 0;
|
|
37916
|
+
for (const sp of s) {
|
|
37917
|
+
x += sp.preBeatWidth;
|
|
37918
|
+
sp.graceBeatWidth = x;
|
|
37919
|
+
x += sp.postSpringWidth;
|
|
37901
37920
|
}
|
|
37902
37921
|
}
|
|
37903
37922
|
this._incompleteGraceRodsWidth = 0;
|
|
@@ -37953,7 +37972,7 @@ class BarLayoutingInfo {
|
|
|
37953
37972
|
let nextSpring = sortedSprings[i + 1];
|
|
37954
37973
|
requiredSpace = currentSpring.postSpringWidth + nextSpring.preSpringWidth;
|
|
37955
37974
|
}
|
|
37956
|
-
// for the first spring we need to ensure we take the initial
|
|
37975
|
+
// for the first spring we need to ensure we take the initial
|
|
37957
37976
|
// pre-spring width into account
|
|
37958
37977
|
if (i === 0) {
|
|
37959
37978
|
requiredSpace += currentSpring.preSpringWidth;
|
|
@@ -38643,12 +38662,12 @@ class StaffSystem {
|
|
|
38643
38662
|
let x = this.x + _firstStaffInBrackets.x;
|
|
38644
38663
|
let staffSystemBounds = new StaffSystemBounds();
|
|
38645
38664
|
staffSystemBounds.visualBounds = new Bounds();
|
|
38646
|
-
staffSystemBounds.visualBounds.x = cx;
|
|
38665
|
+
staffSystemBounds.visualBounds.x = cx + this.x;
|
|
38647
38666
|
staffSystemBounds.visualBounds.y = cy + this.y;
|
|
38648
38667
|
staffSystemBounds.visualBounds.w = this.width;
|
|
38649
38668
|
staffSystemBounds.visualBounds.h = this.height - this.topPadding - this.bottomPadding;
|
|
38650
38669
|
staffSystemBounds.realBounds = new Bounds();
|
|
38651
|
-
staffSystemBounds.realBounds.x = cx;
|
|
38670
|
+
staffSystemBounds.realBounds.x = cx + this.x;
|
|
38652
38671
|
staffSystemBounds.realBounds.y = cy + this.y;
|
|
38653
38672
|
staffSystemBounds.realBounds.w = this.width;
|
|
38654
38673
|
staffSystemBounds.realBounds.h = this.height;
|
|
@@ -39693,29 +39712,28 @@ class EffectBand extends Glyph {
|
|
|
39693
39712
|
}
|
|
39694
39713
|
alignGlyph(sizing, beat) {
|
|
39695
39714
|
let g = this._effectGlyphs[beat.voice.index].get(beat.index);
|
|
39696
|
-
let pos;
|
|
39697
39715
|
let container = this.renderer.getBeatContainer(beat);
|
|
39716
|
+
// container is aligned with the "onTimeX" position of the beat in effect renders
|
|
39698
39717
|
switch (sizing) {
|
|
39699
39718
|
case EffectBarGlyphSizing.SinglePreBeat:
|
|
39700
|
-
|
|
39701
|
-
|
|
39702
|
-
g.
|
|
39719
|
+
// shift to the start using the biggest pre-beat size of the respective beat
|
|
39720
|
+
const offsetToBegin = this.renderer.layoutingInfo.getPreBeatSize(beat);
|
|
39721
|
+
g.x = this.renderer.beatGlyphsStart + container.x - offsetToBegin;
|
|
39703
39722
|
break;
|
|
39704
39723
|
case EffectBarGlyphSizing.SingleOnBeat:
|
|
39705
39724
|
case EffectBarGlyphSizing.GroupedOnBeat:
|
|
39706
|
-
|
|
39707
|
-
g.x = this.renderer.beatGlyphsStart + pos.x + container.x;
|
|
39708
|
-
g.width = pos.width;
|
|
39725
|
+
g.x = this.renderer.beatGlyphsStart + container.x;
|
|
39709
39726
|
break;
|
|
39710
39727
|
case EffectBarGlyphSizing.SingleOnBeatToEnd:
|
|
39711
39728
|
case EffectBarGlyphSizing.GroupedOnBeatToEnd:
|
|
39712
|
-
|
|
39713
|
-
g.x = this.renderer.beatGlyphsStart + pos.x + container.x;
|
|
39729
|
+
g.x = this.renderer.beatGlyphsStart + container.x;
|
|
39714
39730
|
if (container.beat.isLastOfVoice) {
|
|
39715
39731
|
g.width = this.renderer.width - g.x;
|
|
39716
39732
|
}
|
|
39717
39733
|
else {
|
|
39718
|
-
|
|
39734
|
+
// shift to the start using the biggest post-beat size of the respective beat
|
|
39735
|
+
const offsetToEnd = this.renderer.layoutingInfo.getPostBeatSize(beat);
|
|
39736
|
+
g.width = offsetToEnd;
|
|
39719
39737
|
}
|
|
39720
39738
|
break;
|
|
39721
39739
|
case EffectBarGlyphSizing.FullBar:
|
|
@@ -41229,116 +41247,134 @@ class TripletFeelGlyph extends EffectGlyph {
|
|
|
41229
41247
|
cx += this.x;
|
|
41230
41248
|
cy += this.y;
|
|
41231
41249
|
let noteY = cy + this.height * NoteHeadGlyph.GraceScale;
|
|
41250
|
+
let tupletY = noteY + 8;
|
|
41232
41251
|
canvas.font = this.renderer.resources.effectFont;
|
|
41233
41252
|
canvas.fillText('(', cx, cy + this.height * 0.3);
|
|
41234
41253
|
let leftNoteX = cx + 10;
|
|
41235
41254
|
let rightNoteX = cx + 40;
|
|
41255
|
+
let leftNoteSymbols = [];
|
|
41256
|
+
let rightAugmentationSymbols = [];
|
|
41257
|
+
let rightNoteSymbols = [];
|
|
41258
|
+
let rightTupletSymbols = [];
|
|
41236
41259
|
switch (this._tripletFeel) {
|
|
41237
41260
|
case TripletFeel.NoTripletFeel:
|
|
41238
|
-
|
|
41239
|
-
|
|
41261
|
+
leftNoteSymbols = [
|
|
41262
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41263
|
+
MusicFontSymbol.TextCont8thBeamLongStem,
|
|
41264
|
+
MusicFontSymbol.TextBlackNoteFrac8thLongStem
|
|
41265
|
+
];
|
|
41266
|
+
rightNoteSymbols = [
|
|
41267
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41268
|
+
MusicFontSymbol.TextCont8thBeamLongStem,
|
|
41269
|
+
MusicFontSymbol.TextBlackNoteFrac8thLongStem
|
|
41270
|
+
];
|
|
41240
41271
|
break;
|
|
41241
41272
|
case TripletFeel.Triplet8th:
|
|
41242
|
-
|
|
41243
|
-
|
|
41244
|
-
|
|
41245
|
-
|
|
41273
|
+
leftNoteSymbols = [
|
|
41274
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41275
|
+
MusicFontSymbol.TextCont8thBeamLongStem,
|
|
41276
|
+
MusicFontSymbol.TextBlackNoteFrac8thLongStem
|
|
41277
|
+
];
|
|
41278
|
+
rightNoteSymbols = [
|
|
41279
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41280
|
+
MusicFontSymbol.Space,
|
|
41281
|
+
MusicFontSymbol.NoteEighthUp
|
|
41282
|
+
];
|
|
41283
|
+
rightTupletSymbols = [
|
|
41284
|
+
MusicFontSymbol.TextTupletBracketStartLongStem,
|
|
41285
|
+
MusicFontSymbol.TextTuplet3LongStem,
|
|
41286
|
+
MusicFontSymbol.TextTupletBracketEndLongStem
|
|
41287
|
+
];
|
|
41246
41288
|
break;
|
|
41247
41289
|
case TripletFeel.Triplet16th:
|
|
41248
|
-
|
|
41249
|
-
|
|
41250
|
-
|
|
41251
|
-
|
|
41252
|
-
|
|
41253
|
-
|
|
41254
|
-
|
|
41255
|
-
|
|
41256
|
-
|
|
41290
|
+
leftNoteSymbols = [
|
|
41291
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41292
|
+
MusicFontSymbol.TextCont8thBeamLongStem,
|
|
41293
|
+
MusicFontSymbol.TextBlackNoteFrac8thLongStem
|
|
41294
|
+
];
|
|
41295
|
+
rightNoteSymbols = [
|
|
41296
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41297
|
+
MusicFontSymbol.TextCont8thBeamLongStem,
|
|
41298
|
+
MusicFontSymbol.TextBlackNoteFrac16thLongStem
|
|
41299
|
+
];
|
|
41300
|
+
rightTupletSymbols = [
|
|
41301
|
+
MusicFontSymbol.TextTupletBracketStartLongStem,
|
|
41302
|
+
MusicFontSymbol.TextTuplet3LongStem,
|
|
41303
|
+
MusicFontSymbol.TextTupletBracketEndLongStem
|
|
41304
|
+
];
|
|
41257
41305
|
break;
|
|
41258
41306
|
case TripletFeel.Dotted8th:
|
|
41259
|
-
|
|
41260
|
-
|
|
41261
|
-
|
|
41262
|
-
|
|
41263
|
-
]
|
|
41264
|
-
|
|
41307
|
+
leftNoteSymbols = [
|
|
41308
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41309
|
+
MusicFontSymbol.TextCont8thBeamLongStem,
|
|
41310
|
+
MusicFontSymbol.TextBlackNoteFrac8thLongStem
|
|
41311
|
+
];
|
|
41312
|
+
rightAugmentationSymbols = [
|
|
41313
|
+
MusicFontSymbol.TextAugmentationDot,
|
|
41314
|
+
];
|
|
41315
|
+
rightNoteSymbols = [
|
|
41316
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41317
|
+
MusicFontSymbol.TextCont8thBeamLongStem,
|
|
41318
|
+
MusicFontSymbol.TextBlackNoteFrac16thLongStem
|
|
41319
|
+
];
|
|
41265
41320
|
break;
|
|
41266
41321
|
case TripletFeel.Dotted16th:
|
|
41267
|
-
|
|
41268
|
-
|
|
41269
|
-
|
|
41270
|
-
|
|
41271
|
-
|
|
41272
|
-
|
|
41273
|
-
|
|
41274
|
-
|
|
41275
|
-
|
|
41322
|
+
leftNoteSymbols = [
|
|
41323
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41324
|
+
MusicFontSymbol.TextCont16thBeamLongStem,
|
|
41325
|
+
MusicFontSymbol.TextBlackNoteFrac16thLongStem
|
|
41326
|
+
];
|
|
41327
|
+
rightAugmentationSymbols = [
|
|
41328
|
+
MusicFontSymbol.TextAugmentationDot,
|
|
41329
|
+
];
|
|
41330
|
+
rightNoteSymbols = [
|
|
41331
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41332
|
+
MusicFontSymbol.TextCont16thBeamLongStem,
|
|
41333
|
+
MusicFontSymbol.TextBlackNoteFrac32ndLongStem
|
|
41334
|
+
];
|
|
41276
41335
|
canvas.fillCircle(rightNoteX + 9, noteY, 1);
|
|
41277
41336
|
break;
|
|
41278
41337
|
case TripletFeel.Scottish8th:
|
|
41279
|
-
|
|
41280
|
-
|
|
41281
|
-
|
|
41282
|
-
|
|
41283
|
-
]
|
|
41284
|
-
|
|
41338
|
+
leftNoteSymbols = [
|
|
41339
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41340
|
+
MusicFontSymbol.TextCont8thBeamLongStem,
|
|
41341
|
+
MusicFontSymbol.TextBlackNoteFrac8thLongStem
|
|
41342
|
+
];
|
|
41343
|
+
rightNoteSymbols = [
|
|
41344
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41345
|
+
MusicFontSymbol.TextCont16thBeamLongStem,
|
|
41346
|
+
MusicFontSymbol.TextBlackNoteFrac8thLongStem,
|
|
41347
|
+
MusicFontSymbol.TextAugmentationDot,
|
|
41348
|
+
];
|
|
41285
41349
|
break;
|
|
41286
41350
|
case TripletFeel.Scottish16th:
|
|
41287
|
-
|
|
41288
|
-
|
|
41289
|
-
|
|
41290
|
-
|
|
41291
|
-
|
|
41292
|
-
|
|
41293
|
-
|
|
41294
|
-
|
|
41295
|
-
|
|
41296
|
-
|
|
41297
|
-
|
|
41298
|
-
|
|
41299
|
-
canvas.fillText('=', cx + 30, cy + 5);
|
|
41300
|
-
canvas.fillText(')', cx + 65, cy + this.height * 0.3);
|
|
41301
|
-
}
|
|
41302
|
-
renderBarNote(cx, noteY, noteScale, canvas, bars) {
|
|
41303
|
-
canvas.fillMusicFontSymbol(cx, noteY, noteScale, MusicFontSymbol.NoteQuarterUp, false);
|
|
41304
|
-
let partialBarWidth = (TripletFeelGlyph.NoteSeparation / 2);
|
|
41305
|
-
for (let i = 0; i < bars.length; i++) {
|
|
41306
|
-
switch (bars[i]) {
|
|
41307
|
-
case TripletFeelGlyphBarType.Full:
|
|
41308
|
-
canvas.fillRect(cx + 4, noteY - TripletFeelGlyph.NoteHeight + TripletFeelGlyph.BarSeparation * i, TripletFeelGlyph.NoteSeparation, TripletFeelGlyph.BarHeight);
|
|
41309
|
-
break;
|
|
41310
|
-
case TripletFeelGlyphBarType.PartialLeft:
|
|
41311
|
-
canvas.fillRect(cx + 4, noteY - TripletFeelGlyph.NoteHeight + TripletFeelGlyph.BarSeparation * i, partialBarWidth, TripletFeelGlyph.BarHeight);
|
|
41312
|
-
break;
|
|
41313
|
-
case TripletFeelGlyphBarType.PartialRight:
|
|
41314
|
-
canvas.fillRect(cx + 4 + partialBarWidth, noteY - TripletFeelGlyph.NoteHeight + TripletFeelGlyph.BarSeparation * i, partialBarWidth, TripletFeelGlyph.BarHeight);
|
|
41315
|
-
break;
|
|
41316
|
-
}
|
|
41351
|
+
leftNoteSymbols = [
|
|
41352
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41353
|
+
MusicFontSymbol.TextCont16thBeamLongStem,
|
|
41354
|
+
MusicFontSymbol.TextBlackNoteFrac16thLongStem
|
|
41355
|
+
];
|
|
41356
|
+
rightNoteSymbols = [
|
|
41357
|
+
MusicFontSymbol.TextBlackNoteLongStem,
|
|
41358
|
+
MusicFontSymbol.TextCont32ndBeamLongStem,
|
|
41359
|
+
MusicFontSymbol.TextBlackNoteFrac16thLongStem,
|
|
41360
|
+
MusicFontSymbol.TextAugmentationDot,
|
|
41361
|
+
];
|
|
41362
|
+
break;
|
|
41317
41363
|
}
|
|
41318
|
-
canvas.
|
|
41319
|
-
|
|
41320
|
-
|
|
41321
|
-
|
|
41322
|
-
|
|
41323
|
-
|
|
41324
|
-
|
|
41325
|
-
|
|
41326
|
-
|
|
41327
|
-
canvas.
|
|
41328
|
-
canvas.lineTo(cx + 5, cy);
|
|
41329
|
-
canvas.moveTo(rightX + 5, cy + 3);
|
|
41330
|
-
canvas.lineTo(rightX + 5, cy);
|
|
41331
|
-
canvas.lineTo(rightX, cy);
|
|
41332
|
-
canvas.stroke();
|
|
41333
|
-
canvas.fillText('3', cx + 7, cy - 10);
|
|
41334
|
-
canvas.font = font;
|
|
41364
|
+
canvas.fillMusicFontSymbols(leftNoteX, noteY, TripletFeelGlyph.NoteScale, leftNoteSymbols, false);
|
|
41365
|
+
canvas.fillText('=', cx + 32, cy + 5);
|
|
41366
|
+
canvas.fillMusicFontSymbols(rightNoteX, noteY, TripletFeelGlyph.NoteScale, rightNoteSymbols, false);
|
|
41367
|
+
if (rightAugmentationSymbols.length > 0) {
|
|
41368
|
+
canvas.fillMusicFontSymbols(rightNoteX + 7, noteY, TripletFeelGlyph.NoteScale, rightAugmentationSymbols, false);
|
|
41369
|
+
}
|
|
41370
|
+
if (rightTupletSymbols.length > 0) {
|
|
41371
|
+
canvas.fillMusicFontSymbols(rightNoteX, tupletY, TripletFeelGlyph.TupletScale, rightTupletSymbols, false);
|
|
41372
|
+
}
|
|
41373
|
+
canvas.fillText(')', cx + 65, cy + this.height * 0.3);
|
|
41335
41374
|
}
|
|
41336
41375
|
}
|
|
41337
|
-
TripletFeelGlyph.NoteScale = 0.
|
|
41338
|
-
TripletFeelGlyph.
|
|
41339
|
-
TripletFeelGlyph.NoteSeparation = 12;
|
|
41340
|
-
TripletFeelGlyph.BarHeight = 2;
|
|
41341
|
-
TripletFeelGlyph.BarSeparation = 3;
|
|
41376
|
+
TripletFeelGlyph.NoteScale = 0.5;
|
|
41377
|
+
TripletFeelGlyph.TupletScale = 0.7;
|
|
41342
41378
|
|
|
41343
41379
|
class TripletFeelEffectInfo extends EffectBarRendererInfo {
|
|
41344
41380
|
get notationElement() {
|
|
@@ -42977,7 +43013,7 @@ class ScoreRestGlyph extends MusicFontGlyph {
|
|
|
42977
43013
|
class AccidentalColumnInfo {
|
|
42978
43014
|
constructor() {
|
|
42979
43015
|
this.x = 0;
|
|
42980
|
-
this.y = -
|
|
43016
|
+
this.y = -3e3;
|
|
42981
43017
|
this.width = 0;
|
|
42982
43018
|
}
|
|
42983
43019
|
}
|
|
@@ -44289,7 +44325,7 @@ SlashNoteHeadGlyph.WholeNoteHeadWidth = 32;
|
|
|
44289
44325
|
class ScoreBeatGlyph extends BeatOnNoteGlyphBase {
|
|
44290
44326
|
constructor() {
|
|
44291
44327
|
super(...arguments);
|
|
44292
|
-
this._collisionOffset = -
|
|
44328
|
+
this._collisionOffset = -1e3;
|
|
44293
44329
|
this._skipPaint = false;
|
|
44294
44330
|
this.slash = null;
|
|
44295
44331
|
this.noteHeads = null;
|
|
@@ -44312,7 +44348,7 @@ class ScoreBeatGlyph extends BeatOnNoteGlyphBase {
|
|
|
44312
44348
|
}
|
|
44313
44349
|
else if (this.restGlyph) {
|
|
44314
44350
|
this.restGlyph.updateBeamingHelper(this.container.x + this.x);
|
|
44315
|
-
if (this.renderer.bar.isMultiVoice && this._collisionOffset === -
|
|
44351
|
+
if (this.renderer.bar.isMultiVoice && this._collisionOffset === -1e3) {
|
|
44316
44352
|
this._collisionOffset = this.renderer.helpers.collisionHelper.applyRestCollisionOffset(this.container.beat, this.restGlyph.y, this.renderer.getScoreHeight(1));
|
|
44317
44353
|
this.y += this._collisionOffset;
|
|
44318
44354
|
const existingRests = this.renderer.helpers.collisionHelper.restDurationsByDisplayTime;
|
|
@@ -44698,32 +44734,30 @@ class ScoreBeatPreNotesGlyph extends BeatGlyphBase {
|
|
|
44698
44734
|
}
|
|
44699
44735
|
if (!preBends.isEmpty) {
|
|
44700
44736
|
this.addGlyph(preBends);
|
|
44701
|
-
this.addGlyph(new SpacingGlyph(0, 0, 4 *
|
|
44702
|
-
(this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44737
|
+
this.addGlyph(new SpacingGlyph(0, 0, 4 * (this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44703
44738
|
}
|
|
44704
44739
|
if (this.container.beat.brushType !== BrushType.None) {
|
|
44705
44740
|
this.addGlyph(new ScoreBrushGlyph(this.container.beat));
|
|
44706
44741
|
this.addGlyph(new SpacingGlyph(0, 0, 4));
|
|
44707
44742
|
}
|
|
44708
44743
|
if (!fingering.isEmpty) {
|
|
44709
|
-
this.
|
|
44710
|
-
(this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44744
|
+
if (!this.isEmpty) {
|
|
44745
|
+
this.addGlyph(new SpacingGlyph(0, 0, 2 * (this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44746
|
+
}
|
|
44711
44747
|
this.addGlyph(fingering);
|
|
44712
|
-
this.addGlyph(new SpacingGlyph(0, 0, 2 *
|
|
44713
|
-
(this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44748
|
+
this.addGlyph(new SpacingGlyph(0, 0, 2 * (this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44714
44749
|
}
|
|
44715
44750
|
if (!ghost.isEmpty) {
|
|
44716
44751
|
this.addGlyph(ghost);
|
|
44717
|
-
this.addGlyph(new SpacingGlyph(0, 0, 4 *
|
|
44718
|
-
(this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44752
|
+
this.addGlyph(new SpacingGlyph(0, 0, 4 * (this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44719
44753
|
}
|
|
44720
44754
|
if (!accidentals.isEmpty) {
|
|
44721
44755
|
this.accidentals = accidentals;
|
|
44722
|
-
this.
|
|
44723
|
-
(this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44756
|
+
if (!this.isEmpty) {
|
|
44757
|
+
this.addGlyph(new SpacingGlyph(0, 0, 2 * (this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44758
|
+
}
|
|
44724
44759
|
this.addGlyph(accidentals);
|
|
44725
|
-
this.addGlyph(new SpacingGlyph(0, 0, 2 *
|
|
44726
|
-
(this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44760
|
+
this.addGlyph(new SpacingGlyph(0, 0, 2 * (this.container.beat.graceType !== GraceType.None ? NoteHeadGlyph.GraceScale : 1)));
|
|
44727
44761
|
}
|
|
44728
44762
|
}
|
|
44729
44763
|
super.doLayout();
|
|
@@ -45253,7 +45287,7 @@ class ScoreSlideLineGlyph extends Glyph {
|
|
|
45253
45287
|
drawSlideOut(cx, cy, canvas) {
|
|
45254
45288
|
let startNoteRenderer = this.renderer;
|
|
45255
45289
|
let sizeX = 12;
|
|
45256
|
-
let
|
|
45290
|
+
let offsetX = 2;
|
|
45257
45291
|
let offsetY = 2;
|
|
45258
45292
|
let startX = 0;
|
|
45259
45293
|
let startY = 0;
|
|
@@ -45266,7 +45300,8 @@ class ScoreSlideLineGlyph extends Glyph {
|
|
|
45266
45300
|
startX =
|
|
45267
45301
|
cx +
|
|
45268
45302
|
startNoteRenderer.x +
|
|
45269
|
-
startNoteRenderer.getBeatX(this._startNote.beat, BeatXPosition.PostNotes)
|
|
45303
|
+
startNoteRenderer.getBeatX(this._startNote.beat, BeatXPosition.PostNotes) +
|
|
45304
|
+
offsetX;
|
|
45270
45305
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
45271
45306
|
if (this._startNote.slideTarget) {
|
|
45272
45307
|
let endNoteRenderer = this.renderer.scoreRenderer.layout.getRendererForBar(this.renderer.staff.staveId, this._startNote.slideTarget.beat.voice.bar);
|
|
@@ -45279,7 +45314,7 @@ class ScoreSlideLineGlyph extends Glyph {
|
|
|
45279
45314
|
cx +
|
|
45280
45315
|
endNoteRenderer.x +
|
|
45281
45316
|
endNoteRenderer.getBeatX(this._startNote.slideTarget.beat, BeatXPosition.PreNotes) -
|
|
45282
|
-
|
|
45317
|
+
offsetX;
|
|
45283
45318
|
endY = cy + endNoteRenderer.y + endNoteRenderer.getNoteY(this._startNote.slideTarget, NoteYPosition.Center);
|
|
45284
45319
|
}
|
|
45285
45320
|
if (this._startNote.slideTarget.realValue > this._startNote.realValue) {
|
|
@@ -45297,19 +45332,19 @@ class ScoreSlideLineGlyph extends Glyph {
|
|
|
45297
45332
|
}
|
|
45298
45333
|
break;
|
|
45299
45334
|
case SlideOutType.OutUp:
|
|
45300
|
-
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right);
|
|
45335
|
+
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right) + offsetX;
|
|
45301
45336
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
45302
45337
|
endX = startX + sizeX;
|
|
45303
45338
|
endY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Top);
|
|
45304
45339
|
break;
|
|
45305
45340
|
case SlideOutType.OutDown:
|
|
45306
|
-
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right);
|
|
45341
|
+
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right) + offsetX;
|
|
45307
45342
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
45308
45343
|
endX = startX + sizeX;
|
|
45309
45344
|
endY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Bottom);
|
|
45310
45345
|
break;
|
|
45311
45346
|
case SlideOutType.PickSlideUp:
|
|
45312
|
-
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right);
|
|
45347
|
+
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right) + offsetX * 2;
|
|
45313
45348
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
45314
45349
|
endY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Top);
|
|
45315
45350
|
endX = cx + startNoteRenderer.x + startNoteRenderer.width;
|
|
@@ -45323,7 +45358,7 @@ class ScoreSlideLineGlyph extends Glyph {
|
|
|
45323
45358
|
waves = true;
|
|
45324
45359
|
break;
|
|
45325
45360
|
case SlideOutType.PickSlideDown:
|
|
45326
|
-
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right);
|
|
45361
|
+
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right) + offsetX * 2;
|
|
45327
45362
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
45328
45363
|
endY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Bottom);
|
|
45329
45364
|
endX = cx + startNoteRenderer.x + startNoteRenderer.width;
|
|
@@ -46862,15 +46897,16 @@ class TabSlideLineGlyph extends Glyph {
|
|
|
46862
46897
|
let startY = 0;
|
|
46863
46898
|
let endX = 0;
|
|
46864
46899
|
let endY = 0;
|
|
46900
|
+
const offsetX = 2;
|
|
46865
46901
|
switch (this._inType) {
|
|
46866
46902
|
case SlideInType.IntoFromBelow:
|
|
46867
|
-
endX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Left);
|
|
46903
|
+
endX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Left) - offsetX;
|
|
46868
46904
|
endY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
46869
46905
|
startX = endX - sizeX;
|
|
46870
46906
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center) + sizeY;
|
|
46871
46907
|
break;
|
|
46872
46908
|
case SlideInType.IntoFromAbove:
|
|
46873
|
-
endX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Left);
|
|
46909
|
+
endX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Left) - offsetX;
|
|
46874
46910
|
endY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
46875
46911
|
startX = endX - sizeX;
|
|
46876
46912
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center) - sizeY;
|
|
@@ -46889,14 +46925,15 @@ class TabSlideLineGlyph extends Glyph {
|
|
|
46889
46925
|
let endX = 0;
|
|
46890
46926
|
let endY = 0;
|
|
46891
46927
|
let waves = false;
|
|
46892
|
-
const
|
|
46928
|
+
const offsetX = 2;
|
|
46893
46929
|
switch (this._outType) {
|
|
46894
46930
|
case SlideOutType.Shift:
|
|
46895
46931
|
case SlideOutType.Legato:
|
|
46896
46932
|
startX =
|
|
46897
46933
|
cx +
|
|
46898
46934
|
startNoteRenderer.x +
|
|
46899
|
-
startNoteRenderer.getBeatX(this._startNote.beat, BeatXPosition.PostNotes)
|
|
46935
|
+
startNoteRenderer.getBeatX(this._startNote.beat, BeatXPosition.PostNotes)
|
|
46936
|
+
+ offsetX;
|
|
46900
46937
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
46901
46938
|
if (this._startNote.slideTarget) {
|
|
46902
46939
|
let endNoteRenderer = this.renderer.scoreRenderer.layout.getRendererForBar(this.renderer.staff.staveId, this._startNote.slideTarget.beat.voice.bar);
|
|
@@ -46909,7 +46946,7 @@ class TabSlideLineGlyph extends Glyph {
|
|
|
46909
46946
|
cx +
|
|
46910
46947
|
endNoteRenderer.x +
|
|
46911
46948
|
endNoteRenderer.getBeatX(this._startNote.slideTarget.beat, BeatXPosition.OnNotes)
|
|
46912
|
-
-
|
|
46949
|
+
- offsetX;
|
|
46913
46950
|
endY =
|
|
46914
46951
|
cy +
|
|
46915
46952
|
endNoteRenderer.y +
|
|
@@ -46930,31 +46967,43 @@ class TabSlideLineGlyph extends Glyph {
|
|
|
46930
46967
|
}
|
|
46931
46968
|
break;
|
|
46932
46969
|
case SlideOutType.OutUp:
|
|
46933
|
-
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right);
|
|
46970
|
+
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right) + offsetX;
|
|
46934
46971
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
46935
|
-
endX = startX + sizeX
|
|
46972
|
+
endX = startX + sizeX;
|
|
46936
46973
|
endY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center) - sizeY;
|
|
46937
46974
|
break;
|
|
46938
46975
|
case SlideOutType.OutDown:
|
|
46939
|
-
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right);
|
|
46976
|
+
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right) + offsetX;
|
|
46940
46977
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
46941
|
-
endX = startX + sizeX
|
|
46978
|
+
endX = startX + sizeX;
|
|
46942
46979
|
endY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center) + sizeY;
|
|
46943
46980
|
break;
|
|
46944
46981
|
case SlideOutType.PickSlideDown:
|
|
46945
|
-
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right);
|
|
46982
|
+
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right) + offsetX * 2;
|
|
46946
46983
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
46947
|
-
endX =
|
|
46948
|
-
cx + startNoteRenderer.x + startNoteRenderer.getBeatX(this._startNote.beat, BeatXPosition.EndBeat);
|
|
46984
|
+
endX = cx + startNoteRenderer.x + startNoteRenderer.width;
|
|
46949
46985
|
endY = startY + sizeY * 3;
|
|
46986
|
+
if (this._startNote.beat.nextBeat &&
|
|
46987
|
+
this._startNote.beat.nextBeat.voice === this._startNote.beat.voice) {
|
|
46988
|
+
endX =
|
|
46989
|
+
cx +
|
|
46990
|
+
startNoteRenderer.x +
|
|
46991
|
+
startNoteRenderer.getBeatX(this._startNote.beat.nextBeat, BeatXPosition.PreNotes);
|
|
46992
|
+
}
|
|
46950
46993
|
waves = true;
|
|
46951
46994
|
break;
|
|
46952
46995
|
case SlideOutType.PickSlideUp:
|
|
46953
|
-
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right);
|
|
46996
|
+
startX = cx + startNoteRenderer.x + startNoteRenderer.getNoteX(this._startNote, NoteXPosition.Right) + offsetX * 2;
|
|
46954
46997
|
startY = cy + startNoteRenderer.y + startNoteRenderer.getNoteY(this._startNote, NoteYPosition.Center);
|
|
46955
|
-
endX =
|
|
46956
|
-
cx + startNoteRenderer.x + startNoteRenderer.getBeatX(this._startNote.beat, BeatXPosition.EndBeat);
|
|
46998
|
+
endX = cx + startNoteRenderer.x + startNoteRenderer.width;
|
|
46957
46999
|
endY = startY - sizeY * 3;
|
|
47000
|
+
if (this._startNote.beat.nextBeat &&
|
|
47001
|
+
this._startNote.beat.nextBeat.voice === this._startNote.beat.voice) {
|
|
47002
|
+
endX =
|
|
47003
|
+
cx +
|
|
47004
|
+
startNoteRenderer.x +
|
|
47005
|
+
startNoteRenderer.getBeatX(this._startNote.beat.nextBeat, BeatXPosition.PreNotes);
|
|
47006
|
+
}
|
|
46958
47007
|
waves = true;
|
|
46959
47008
|
break;
|
|
46960
47009
|
default:
|
|
@@ -52072,8 +52121,8 @@ class CoreSettings {
|
|
|
52072
52121
|
// </auto-generated>
|
|
52073
52122
|
class VersionInfo {
|
|
52074
52123
|
}
|
|
52075
|
-
VersionInfo.version = '1.4.0-alpha.
|
|
52076
|
-
VersionInfo.date = '2025-02-
|
|
52124
|
+
VersionInfo.version = '1.4.0-alpha.1322';
|
|
52125
|
+
VersionInfo.date = '2025-02-26T02:15:01.756Z';
|
|
52077
52126
|
|
|
52078
52127
|
var index$4 = /*#__PURE__*/Object.freeze({
|
|
52079
52128
|
__proto__: null,
|