@coderline/alphatab 1.8.2 → 1.8.3

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.
@@ -105,15 +105,12 @@ declare class AlphaSynth extends AlphaSynthBase {
105
105
  * @public
106
106
  */
107
107
  declare class AlphaSynthBase implements IAlphaSynth {
108
-
109
-
110
108
  protected isSoundFontLoaded: boolean;
111
109
  private _isMidiLoaded;
112
110
  private _tickPosition;
113
111
  private _timePosition;
114
112
  private _metronomeVolume;
115
113
  private _countInVolume;
116
-
117
114
  protected midiEventsPlayedFilterSet: Set<MidiEventType>;
118
115
  private _notPlayedSamples;
119
116
  private _synthStopping;
@@ -149,7 +146,6 @@ declare class AlphaSynthBase implements IAlphaSynth {
149
146
  get isLooping(): boolean;
150
147
  set isLooping(value: boolean);
151
148
  destroy(): void;
152
-
153
149
  protected onSampleRequest(): void;
154
150
  play(): boolean;
155
151
  private _playInternal;
@@ -203,8 +199,6 @@ declare class AlphaSynthBase implements IAlphaSynth {
203
199
  * @lateinit
204
200
  */
205
201
  readonly playbackRangeChanged: IEventEmitterOfT<PlaybackRangeChangedEventArgs>;
206
-
207
-
208
202
  loadBackingTrack(_score: Score): void;
209
203
  updateSyncPoints(_syncPoints: BackingTrackSyncPoint[]): void;
210
204
  }
@@ -697,7 +691,6 @@ export declare class AlphaTabApiBase<TSettings> {
697
691
  */
698
692
  renderTracks(tracks: Track[], renderHints?: RenderHints): void;
699
693
  private _internalRenderTracks;
700
-
701
694
  private _appendRenderResult;
702
695
  private _updateRenderResult;
703
696
  /**
@@ -2508,7 +2501,6 @@ export declare class AlphaTabApiBase<TSettings> {
2508
2501
  *
2509
2502
  */
2510
2503
  readonly error: IEventEmitterOfT<Error>;
2511
-
2512
2504
  /**
2513
2505
  * This event is fired when all required data for playback is loaded and ready.
2514
2506
  * @remarks
@@ -3287,7 +3279,6 @@ declare interface AlphaTexArgumentList extends AlphaTexAstNode {
3287
3279
  * The close parenthesis token grouping the arguments.
3288
3280
  */
3289
3281
  closeParenthesis?: AlphaTexParenthesisCloseTokenNode;
3290
-
3291
3282
  /**
3292
3283
  * A list of indices to signatures which were selected as candidates matching
3293
3284
  * this argument list.
@@ -3763,7 +3754,6 @@ declare class AlphaTexImporter extends ScoreImporter implements IAlphaTexImporte
3763
3754
  private _beatDuration;
3764
3755
  private _parseDuration;
3765
3756
  private _note;
3766
-
3767
3757
  applyStaffNoteKind(staff: Staff, staffNoteKind: AlphaTexStaffNoteKind): void;
3768
3758
  private _noteEffects;
3769
3759
  private _handleTransposition;
@@ -3838,7 +3828,6 @@ declare interface AlphaTexMetaDataNode extends AlphaTexAstNode {
3838
3828
  * The optional properties defined for the metadata.
3839
3829
  */
3840
3830
  properties?: AlphaTexPropertiesNode;
3841
-
3842
3831
  }
3843
3832
 
3844
3833
  /**
@@ -4003,7 +3992,6 @@ declare class AlphaTexParser {
4003
3992
  get lexerDiagnostics(): AlphaTexDiagnosticBag;
4004
3993
  readonly parserDiagnostics: AlphaTexDiagnosticBag;
4005
3994
  addParserDiagnostic(diagnostics: AlphaTexDiagnostic): void;
4006
-
4007
3995
  constructor(source: string);
4008
3996
  read(): AlphaTexScoreNode;
4009
3997
  private _score;
@@ -4408,7 +4396,6 @@ declare class BackingTrackSyncPoint {
4408
4396
  */
4409
4397
  declare class Bar {
4410
4398
  private static _globalBarId;
4411
-
4412
4399
  /**
4413
4400
  * Gets or sets the unique id of this bar.
4414
4401
  */
@@ -4520,7 +4507,6 @@ declare class Bar {
4520
4507
  * If specified, overrides the value from the stylesheet on score level.
4521
4508
  */
4522
4509
  barNumberDisplay?: BarNumberDisplay;
4523
-
4524
4510
  /**
4525
4511
  * The bar line to draw on the left side of the bar with an "automatic" type resolved to the actual one.
4526
4512
  * @param isFirstOfSystem Whether the bar is the first one in the system.
@@ -4787,12 +4773,6 @@ declare class BeamingRules {
4787
4773
  * The map value defines the "groups" placed within the sliced.
4788
4774
  */
4789
4775
  groups: Map<Duration, number[]>;
4790
-
4791
-
4792
-
4793
-
4794
-
4795
-
4796
4776
  }
4797
4777
 
4798
4778
  /**
@@ -4805,7 +4785,6 @@ declare class BeamingRules {
4805
4785
  */
4806
4786
  declare class Beat {
4807
4787
  private static _globalBeatId;
4808
-
4809
4788
  /**
4810
4789
  * Gets or sets the unique id of this beat.
4811
4790
  * @clone_ignore
@@ -6748,9 +6727,16 @@ export declare class DisplaySettings {
6748
6727
  *
6749
6728
  * The page layout does not use `displayWidth`. The use of absolute widths would break the proper alignments needed for this kind of display.
6750
6729
  *
6751
- * Also note that the sizing is including any glyphs and notation elements within the bar. e.g. if there are clefs in the bar, they are still "squeezed" into the available size.
6752
- * It is not the case that the actual notes with their lengths are sized accordingly. This fits the sizing system of Guitar Pro and when files are customized there,
6753
- * alphaTab will match this layout quite close.
6730
+ * In both modes, prefix and postfix glyphs (clef, key signature, time signature, barlines) are treated as fixed overhead: they keep their
6731
+ * natural size and the remaining staff width is distributed across bars by a per-bar weight. This matches the convention used by
6732
+ * Guitar Pro, Dorico, Finale, Sibelius and MuseScore. Bars that carry a system-start prefix or a mid-line clef/key/time-signature change
6733
+ * are therefore visibly wider than plain bars with the same weight. The weight source depends on the mode:
6734
+ *
6735
+ * * `Automatic` (default for `page` layout): weights come from the built-in spacing engine (the natural content width of each bar).
6736
+ * `displayScale` on the model is ignored.
6737
+ * * `UseModelLayout` (and the `parchment` layout): weights come from `bar.displayScale` / `masterBar.displayScale`. An unset
6738
+ * `displayScale` defaults to `1` and behaves identically to an explicit `1`, matching Guitar Pro (which omits the value when the
6739
+ * author hasn't customized it).
6754
6740
  *
6755
6741
  * ### Horizontal Layout
6756
6742
  *
@@ -7107,9 +7093,16 @@ declare interface DisplaySettingsJson {
7107
7093
  *
7108
7094
  * The page layout does not use `displayWidth`. The use of absolute widths would break the proper alignments needed for this kind of display.
7109
7095
  *
7110
- * Also note that the sizing is including any glyphs and notation elements within the bar. e.g. if there are clefs in the bar, they are still "squeezed" into the available size.
7111
- * It is not the case that the actual notes with their lengths are sized accordingly. This fits the sizing system of Guitar Pro and when files are customized there,
7112
- * alphaTab will match this layout quite close.
7096
+ * In both modes, prefix and postfix glyphs (clef, key signature, time signature, barlines) are treated as fixed overhead: they keep their
7097
+ * natural size and the remaining staff width is distributed across bars by a per-bar weight. This matches the convention used by
7098
+ * Guitar Pro, Dorico, Finale, Sibelius and MuseScore. Bars that carry a system-start prefix or a mid-line clef/key/time-signature change
7099
+ * are therefore visibly wider than plain bars with the same weight. The weight source depends on the mode:
7100
+ *
7101
+ * * `Automatic` (default for `page` layout): weights come from the built-in spacing engine (the natural content width of each bar).
7102
+ * `displayScale` on the model is ignored.
7103
+ * * `UseModelLayout` (and the `parchment` layout): weights come from `bar.displayScale` / `masterBar.displayScale`. An unset
7104
+ * `displayScale` defaults to `1` and behaves identically to an explicit `1`, matching Guitar Pro (which omits the value when the
7105
+ * author hasn't customized it).
7113
7106
  *
7114
7107
  * ### Horizontal Layout
7115
7108
  *
@@ -7279,6 +7272,14 @@ declare class ElementStyle<TSubElements extends number> {
7279
7272
  colors: Map<TSubElements, Color | null>;
7280
7273
  }
7281
7274
 
7275
+ /**
7276
+ * Thrown whenever we hit the end of input data unexpectedly.
7277
+ * @public
7278
+ */
7279
+ declare class EndOfReaderError extends AlphaTabError {
7280
+ constructor();
7281
+ }
7282
+
7282
7283
  /**
7283
7284
  * Represents the end of the track indicating that no more events for this track follow.
7284
7285
  * @public
@@ -7313,7 +7314,6 @@ declare class EndOfTrackEvent extends MidiEvent {
7313
7314
  */
7314
7315
  export declare class EngravingSettings {
7315
7316
  private static _bravuraDefaults?;
7316
-
7317
7317
  /**
7318
7318
  * A {@link EngravingSettings} copy filled with the settings of the Bravura font used by default in alphaTab.
7319
7319
  */
@@ -7493,14 +7493,12 @@ export declare class EngravingSettings {
7493
7493
  * @smufl 1.4
7494
7494
  */
7495
7495
  glyphHeights: Map<MusicFontSymbol, number>;
7496
-
7497
7496
  /**
7498
7497
  * Fills the engraving settings from the provided smufl metdata.
7499
7498
  * @param smufl The metadata shipped together with the SMuFL fonts.
7500
7499
  * @param musicFontSize The font size to configure in alphaTab for the music font.
7501
7500
  */
7502
7501
  fillFromSmufl(smufl: SmuflMetadata, musicFontSize?: number): void;
7503
-
7504
7502
  private static _smuflNameToMusicFontSymbol;
7505
7503
  /**
7506
7504
  * The size of the bars drawn in numbered notation to indicate the durations.
@@ -8162,13 +8160,10 @@ declare interface EngravingStemInfoJson {
8162
8160
  * @public
8163
8161
  */
8164
8162
  export declare class Environment {
8165
-
8166
8163
  /**
8167
8164
  * @target web
8168
8165
  */
8169
8166
  private static _globalThis;
8170
-
8171
-
8172
8167
  /**
8173
8168
  * @target web
8174
8169
  */
@@ -8201,7 +8196,6 @@ export declare class Environment {
8201
8196
  * @target web
8202
8197
  */
8203
8198
  private static _detectScriptFile;
8204
-
8205
8199
  private static _appendScriptName;
8206
8200
  /**
8207
8201
  * @target web
@@ -8212,10 +8206,7 @@ export declare class Environment {
8212
8206
  */
8213
8207
  private static _registerJQueryPlugin;
8214
8208
  static readonly renderEngines: Map<string, RenderEngineFactory>;
8215
-
8216
-
8217
8209
  static getRenderEngineFactory(engine: string): RenderEngineFactory;
8218
-
8219
8210
  /**
8220
8211
  * Gets all default ScoreImporters
8221
8212
  * @returns
@@ -8239,15 +8230,12 @@ export declare class Environment {
8239
8230
  * @partial
8240
8231
  */
8241
8232
  private static _createPlatformSpecificRenderEngines;
8242
-
8243
8233
  private static _createDefaultStaveProfiles;
8244
8234
  private static _createDefaultLayoutEngines;
8245
8235
  /**
8246
8236
  * @target web
8247
8237
  */
8248
8238
  static initializeMain(createWebWorker: (settings: Settings, nameHint: string) => Worker, createAudioWorklet: (context: AudioContext, settings: Settings) => Promise<void>): void;
8249
-
8250
-
8251
8239
  /**
8252
8240
  * @target web
8253
8241
  */
@@ -8278,9 +8266,6 @@ export declare class Environment {
8278
8266
  * @partial
8279
8267
  */
8280
8268
  private static _printPlatformInfo;
8281
-
8282
-
8283
-
8284
8269
  }
8285
8270
 
8286
8271
  export declare namespace exporter {
@@ -9668,6 +9653,17 @@ export declare class ImporterSettings {
9668
9653
  * ![Disabled](https://alphatab.net/img/reference/property/beattextaslyrics-disabled.png)
9669
9654
  */
9670
9655
  beatTextAsLyrics: boolean;
9656
+ /**
9657
+ * This setting controls the escape hatch for handling potentially malicous or corrupt
9658
+ * input files. At selected spots in the codebase, we use this buffer size as maximum
9659
+ * allowed sizes. e.g. during unzipping or decoding strings.
9660
+ * This prevents resource exhaustion, especially when alphaTab is used on server side.
9661
+ * Increase this buffer size if you need to handle very big files.
9662
+ * @defaultValue `128000000`
9663
+ * @category Core
9664
+ * @since 1.9.0
9665
+ */
9666
+ maxDecodingBufferSize: number;
9671
9667
  }
9672
9668
 
9673
9669
  /**
@@ -9734,6 +9730,17 @@ declare interface ImporterSettingsJson {
9734
9730
  * ![Disabled](https://alphatab.net/img/reference/property/beattextaslyrics-disabled.png)
9735
9731
  */
9736
9732
  beatTextAsLyrics?: boolean;
9733
+ /**
9734
+ * This setting controls the escape hatch for handling potentially malicous or corrupt
9735
+ * input files. At selected spots in the codebase, we use this buffer size as maximum
9736
+ * allowed sizes. e.g. during unzipping or decoding strings.
9737
+ * This prevents resource exhaustion, especially when alphaTab is used on server side.
9738
+ * Increase this buffer size if you need to handle very big files.
9739
+ * @defaultValue `128000000`
9740
+ * @category Core
9741
+ * @since 1.9.0
9742
+ */
9743
+ maxDecodingBufferSize?: number;
9737
9744
  }
9738
9745
 
9739
9746
  /**
@@ -9791,7 +9798,6 @@ declare class InstrumentArticulation {
9791
9798
  */
9792
9799
  outputMidiNumber: number;
9793
9800
  constructor(elementType?: string, staffLine?: number, outputMidiNumber?: number, noteHeadDefault?: MusicFontSymbol, noteHeadHalf?: MusicFontSymbol, noteHeadWhole?: MusicFontSymbol, techniqueSymbol?: MusicFontSymbol, techniqueSymbolPlacement?: TechniqueSymbolPlacement, id?: number);
9794
-
9795
9801
  getSymbol(duration: Duration): MusicFontSymbol;
9796
9802
  }
9797
9803
 
@@ -9799,6 +9805,8 @@ export declare namespace io {
9799
9805
  export {
9800
9806
  IWriteable,
9801
9807
  IReadable,
9808
+ OverflowError,
9809
+ EndOfReaderError,
9802
9810
  ByteBuffer,
9803
9811
  IOHelper
9804
9812
  }
@@ -10787,7 +10795,6 @@ declare class MasterBar {
10787
10795
  * Defines the custom beaming rules which should be applied to this bar and all bars following.
10788
10796
  */
10789
10797
  beamingRules?: BeamingRules;
10790
-
10791
10798
  /**
10792
10799
  * Gets or sets whether the bar indicates a free time playing.
10793
10800
  */
@@ -11353,7 +11360,6 @@ declare class MidiFileGenerator {
11353
11360
  * @returns The generated sync points for usage in the backing track playback.
11354
11361
  */
11355
11362
  static generateSyncPoints(score: Score, createNew?: boolean): BackingTrackSyncPoint[];
11356
-
11357
11363
  private static _playThroughSong;
11358
11364
  private static _processBarTime;
11359
11365
  private static _processBarTimeWithNewSyncPoints;
@@ -11472,7 +11478,6 @@ declare class MidiFileGenerator {
11472
11478
  */
11473
11479
  declare class MidiTickLookup {
11474
11480
  private _currentMasterBar;
11475
-
11476
11481
  /**
11477
11482
  * A list of all {@link MasterBarTickLookup} sorted by time.
11478
11483
  */
@@ -11542,6 +11547,12 @@ declare class MidiTickLookup {
11542
11547
  * @returns The time in midi ticks at which the beat is played the first time or 0 if the beat is not contained
11543
11548
  */
11544
11549
  getBeatStart(beat: Beat): number;
11550
+ /**
11551
+ * Gets the playback range in midi ticks for a given beat.
11552
+ * @param beat The beat to find the time period for.
11553
+ * @returns The relative playback range within the parent masterbar at which the beat start and ends playing
11554
+ */
11555
+ getRelativeBeatPlaybackRange(beat: Beat): PlaybackRange | undefined;
11545
11556
  /**
11546
11557
  * Adds a new {@link MasterBarTickLookup} to the lookup table.
11547
11558
  * @param masterBar The item to add.
@@ -12259,7 +12270,15 @@ export declare enum NotationElement {
12259
12270
  /**
12260
12271
  * The slurs shown on bend effects within the score staff.
12261
12272
  */
12262
- ScoreBendSlur = 55
12273
+ ScoreBendSlur = 55,
12274
+ /**
12275
+ * The hammer-on pull-off text shown on slurs.
12276
+ */
12277
+ EffectHammerOnPullOffText = 56,
12278
+ /**
12279
+ * The slide text shown on slurs.
12280
+ */
12281
+ EffectSlideText = 57
12263
12282
  }
12264
12283
 
12265
12284
  /**
@@ -12726,8 +12745,6 @@ declare interface NotationSettingsJson {
12726
12745
  * @public
12727
12746
  */
12728
12747
  declare class Note {
12729
-
12730
-
12731
12748
  /**
12732
12749
  * Gets or sets the unique id of this note.
12733
12750
  * @clone_ignore
@@ -13128,8 +13145,6 @@ declare class Note {
13128
13145
  private static _noteIdLookupKey;
13129
13146
  private _noteIdBag;
13130
13147
  chain(sharedDataBag?: Map<string, unknown> | null): void;
13131
-
13132
-
13133
13148
  }
13134
13149
 
13135
13150
  /**
@@ -13363,6 +13378,14 @@ declare enum Ottavia {
13363
13378
  _15mb = 4
13364
13379
  }
13365
13380
 
13381
+ /**
13382
+ * Thrown whenever an overflow in data or buffer sizes is detected.
13383
+ * @public
13384
+ */
13385
+ declare class OverflowError extends AlphaTabError {
13386
+ constructor(message: string);
13387
+ }
13388
+
13366
13389
  /**
13367
13390
  * Lists all types of pick strokes.
13368
13391
  * @public
@@ -14346,6 +14369,13 @@ declare interface RenderHints {
14346
14369
  * internally it might still be decided to clear the viewport.
14347
14370
  */
14348
14371
  reuseViewport?: boolean;
14372
+ /**
14373
+ * Indicates the index of the first masterbar which was modified in the data model.
14374
+ * @remarks
14375
+ * AlphaTab will try to optimize the rendering and other updates to keep unchanged parts.
14376
+ * At this point only the rendering is affected and the generated MIDI has to be updated separately.
14377
+ */
14378
+ firstChangedMasterBar?: number;
14349
14379
  }
14350
14380
 
14351
14381
  export declare namespace rendering {
@@ -14379,7 +14409,6 @@ export declare class RenderingResources {
14379
14409
  * The default fonts for notation elements if not specified by the user.
14380
14410
  */
14381
14411
  static defaultFonts: Map<NotationElement, Font>;
14382
-
14383
14412
  /**
14384
14413
  * The SMuFL Metrics to use for rendering music symbols.
14385
14414
  * @defaultValue `alphaTab`
@@ -14576,7 +14605,6 @@ export declare class RenderingResources {
14576
14605
  */
14577
14606
  scoreInfoColor: Color;
14578
14607
  constructor();
14579
-
14580
14608
  }
14581
14609
 
14582
14610
  /**
@@ -14587,7 +14615,6 @@ export declare class RenderingResources {
14587
14615
  * @target web
14588
14616
  */
14589
14617
  declare interface RenderingResourcesJson {
14590
-
14591
14618
  /**
14592
14619
  * The SMuFL Metrics to use for rendering music symbols.
14593
14620
  * @defaultValue `alphaTab`
@@ -15045,7 +15072,6 @@ declare class ScoreRenderer implements IScoreRenderer {
15045
15072
  canvas: ICanvas | null;
15046
15073
  score: Score | null;
15047
15074
  tracks: Track[] | null;
15048
-
15049
15075
  settings: Settings;
15050
15076
  boundsLookup: BoundsLookup | null;
15051
15077
  width: number;
@@ -15234,7 +15260,6 @@ export declare class Settings {
15234
15260
  * @target web
15235
15261
  */
15236
15262
  fillFromJson(json: SettingsJson): void;
15237
-
15238
15263
  }
15239
15264
 
15240
15265
  /**
@@ -15633,7 +15658,14 @@ declare class StaffSystemBounds {
15633
15658
  */
15634
15659
  boundsLookup: BoundsLookup;
15635
15660
  /**
15636
- * Finished the lookup for optimized access.
15661
+ * Whether this system's bounds have already been scaled via `finish`. Prevents double-scaling
15662
+ * when the parent `BoundsLookup` is preserved across partial renders and `finish` is invoked
15663
+ * again on a mix of already-scaled (preserved) and newly-registered (natural-coordinate) systems.
15664
+ */
15665
+ isFinished: boolean;
15666
+ /**
15667
+ * Finished the lookup for optimized access. Idempotent: once finished, further calls are no-ops
15668
+ * so preserved systems survive partial renders without being re-scaled.
15637
15669
  */
15638
15670
  finish(scale?: number): void;
15639
15671
  /**
@@ -16156,7 +16188,6 @@ declare class TremoloPickingEffect {
16156
16188
  * The style of the tremolo picking.
16157
16189
  */
16158
16190
  style: TremoloPickingStyle;
16159
-
16160
16191
  /**
16161
16192
  * Gets the duration of a single tremolo note played in a beat of the given duration
16162
16193
  * based on the configured marks.
@@ -16450,7 +16481,6 @@ declare class Voice {
16450
16481
  private _isEmpty;
16451
16482
  private _isRestOnly;
16452
16483
  private static _globalVoiceId;
16453
-
16454
16484
  /**
16455
16485
  * Gets or sets the unique id of this bar.
16456
16486
  */
@@ -16478,12 +16508,10 @@ declare class Voice {
16478
16508
  * The style customizations for this item.
16479
16509
  */
16480
16510
  style?: VoiceStyle;
16481
-
16482
16511
  /**
16483
16512
  * Gets or sets a value indicating whether this voice is empty.
16484
16513
  */
16485
16514
  get isRestOnly(): boolean;
16486
-
16487
16515
  insertBeat(after: Beat, newBeat: Beat): void;
16488
16516
  addBeat(beat: Beat): void;
16489
16517
  private _chain;