@coderline/alphatab 1.3.0-alpha.712 → 1.3.0-alpha.724

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.
@@ -392,6 +392,11 @@ declare class DisplaySettings {
392
392
  * The number of bars that should be rendered per partial. This setting is not used by all layouts.
393
393
  */
394
394
  barCountPerPartial: number;
395
+ /**
396
+ * Whether the last system (row) should be also justified to the whole width of the music sheet.
397
+ * (applies only for page layout).
398
+ */
399
+ justifyLastSystem: boolean;
395
400
  /**
396
401
  * Gets or sets the resources used during rendering. This defines all fonts and colors used.
397
402
  * @json_partial_names
@@ -1058,96 +1063,391 @@ interface IWriteable {
1058
1063
  }
1059
1064
 
1060
1065
  /**
1061
- * Lists all midi events.
1066
+ * Lists all midi controllers.
1062
1067
  */
1063
- declare enum MidiEventType {
1068
+ declare enum ControllerType {
1064
1069
  /**
1065
- * A per note pitch bend. (Midi 2.0)
1070
+ * Bank Select. MSB
1066
1071
  */
1067
- PerNotePitchBend = 96,
1072
+ BankSelectCoarse = 0,
1073
+ /**
1074
+ * Modulation wheel or lever MSB
1075
+ */
1076
+ ModulationCoarse = 1,
1068
1077
  /**
1069
- * A note is released.
1078
+ * Data entry MSB
1070
1079
  */
1071
- NoteOff = 128,
1080
+ DataEntryCoarse = 6,
1072
1081
  /**
1073
- * A note is started.
1082
+ * Channel Volume MSB
1074
1083
  */
1075
- NoteOn = 144,
1084
+ VolumeCoarse = 7,
1076
1085
  /**
1077
- * The pressure that was used to play the note.
1086
+ * Pan MSB
1078
1087
  */
1079
- NoteAftertouch = 160,
1088
+ PanCoarse = 10,
1080
1089
  /**
1081
- * Change of a midi controller
1090
+ * Expression Controller MSB
1082
1091
  */
1083
- Controller = 176,
1092
+ ExpressionControllerCoarse = 11,
1093
+ BankSelectFine = 32,
1084
1094
  /**
1085
- * Change of a midi program
1095
+ * Modulation wheel or level LSB
1086
1096
  */
1087
- ProgramChange = 192,
1097
+ ModulationFine = 33,
1098
+ /**
1099
+ * Data Entry LSB
1100
+ */
1101
+ DataEntryFine = 38,
1102
+ /**
1103
+ * Channel Volume LSB
1104
+ */
1105
+ VolumeFine = 39,
1106
+ /**
1107
+ * Pan LSB
1108
+ */
1109
+ PanFine = 42,
1110
+ /**
1111
+ * Expression controller LSB
1112
+ */
1113
+ ExpressionControllerFine = 43,
1114
+ /**
1115
+ * Damper pedal (sustain)
1116
+ */
1117
+ HoldPedal = 64,
1088
1118
  /**
1089
- * The pressure that should be applied to the whole channel.
1119
+ * Legato Footswitch
1120
+ */
1121
+ LegatoPedal = 68,
1122
+ /**
1123
+ * Non-Registered Parameter Number LSB
1124
+ */
1125
+ NonRegisteredParameterFine = 98,
1126
+ /**
1127
+ * Non-Registered Parameter Number MSB
1128
+ */
1129
+ NonRegisteredParameterCourse = 99,
1130
+ /**
1131
+ * Registered Parameter Number LSB
1090
1132
  */
1091
- ChannelAftertouch = 208,
1133
+ RegisteredParameterFine = 100,
1092
1134
  /**
1093
- * A change of the audio pitch.
1135
+ * Registered Parameter Number MSB
1094
1136
  */
1137
+ RegisteredParameterCourse = 101,
1138
+ AllSoundOff = 120,
1139
+ /**
1140
+ * Reset all controllers
1141
+ */
1142
+ ResetControllers = 121,
1143
+ /**
1144
+ * All notes of.
1145
+ */
1146
+ AllNotesOff = 123
1147
+ }
1148
+
1149
+ /**
1150
+ * Lists all midi event types. Based on the type the instance is a specific subclass.
1151
+ */
1152
+ declare enum MidiEventType {
1153
+ TimeSignature = 88,
1154
+ NoteOn = 128,
1155
+ NoteOff = 144,
1156
+ ControlChange = 176,
1157
+ ProgramChange = 192,
1158
+ TempoChange = 81,
1095
1159
  PitchBend = 224,
1160
+ PerNotePitchBend = 96,
1161
+ EndOfTrack = 47,
1162
+ AlphaTabRest = 241,
1163
+ AlphaTabMetronome = 242,
1096
1164
  /**
1097
- * A System Exclusive event.
1165
+ * @deprecated Not used anymore internally. move to the other concrete types.
1098
1166
  */
1099
1167
  SystemExclusive = 240,
1100
1168
  /**
1101
- * A System Exclusive event.
1169
+ * @deprecated Not used anymore internally. move to the other concrete types.
1102
1170
  */
1103
1171
  SystemExclusive2 = 247,
1104
1172
  /**
1105
- * A meta event. See `MetaEventType` for details.
1173
+ * @deprecated Not used anymore internally. move to the other concrete types.
1106
1174
  */
1107
1175
  Meta = 255
1108
1176
  }
1109
1177
  /**
1110
1178
  * Represents a midi event.
1111
1179
  */
1112
- declare class MidiEvent {
1180
+ declare abstract class MidiEvent {
1113
1181
  /**
1114
1182
  * Gets or sets the track to which the midi event belongs.
1115
1183
  */
1116
1184
  track: number;
1117
- /**
1118
- * Gets or sets the raw midi message.
1119
- */
1120
- message: number;
1121
1185
  /**
1122
1186
  * Gets or sets the absolute tick of this midi event.
1123
1187
  */
1124
1188
  tick: number;
1125
- get channel(): number;
1126
- get command(): MidiEventType;
1127
- get data1(): number;
1128
- set data1(value: number);
1129
- get data2(): number;
1130
- set data2(value: number);
1189
+ /**
1190
+ * Gets or sets the midi command (type) of this event.
1191
+ */
1192
+ type: MidiEventType;
1131
1193
  /**
1132
1194
  * Initializes a new instance of the {@link MidiEvent} class.
1133
1195
  * @param track The track this event belongs to.
1134
1196
  * @param tick The absolute midi ticks of this event.
1135
- * @param status The status information of this event.
1136
- * @param data1 The first data component of this midi event.
1137
- * @param data2 The second data component of this midi event.
1197
+ * @param command The type of this event.
1198
+ */
1199
+ constructor(track: number, tick: number, command: MidiEventType);
1200
+ /**
1201
+ * @deprecated Change to `type`
1202
+ */
1203
+ get command(): MidiEventType;
1204
+ /**
1205
+ * @deprecated Use individual properties to access data.
1206
+ */
1207
+ get message(): number;
1208
+ /**
1209
+ * @deprecated Use individual properties to access data.
1138
1210
  */
1139
- constructor(track: number, tick: number, status: number, data1: number, data2: number);
1211
+ get data1(): number;
1212
+ /**
1213
+ * @deprecated Use individual properties to access data.
1214
+ */
1215
+ get data2(): number;
1140
1216
  /**
1141
1217
  * Writes the midi event as binary into the given stream.
1142
1218
  * @param s The stream to write to.
1143
1219
  */
1220
+ abstract writeTo(s: IWriteable): void;
1221
+ }
1222
+ /**
1223
+ * Represents a time signature change event.
1224
+ */
1225
+ declare class TimeSignatureEvent extends MidiEvent {
1226
+ /**
1227
+ * The time signature numerator.
1228
+ */
1229
+ numerator: number;
1230
+ /**
1231
+ * The denominator index is a negative power of two: 2 represents a quarter-note, 3 represents an eighth-note, etc.
1232
+ * Denominator = 2^(index)
1233
+ */
1234
+ denominatorIndex: number;
1235
+ /**
1236
+ * The number of MIDI clocks in a metronome click
1237
+ */
1238
+ midiClocksPerMetronomeClick: number;
1239
+ /**
1240
+ * The number of notated 32nd-notes in what MIDI thinks of as a quarter-note (24 MIDI Clocks).
1241
+ */
1242
+ thirtySecondNodesInQuarter: number;
1243
+ constructor(track: number, tick: number, numerator: number, denominatorIndex: number, midiClocksPerMetronomeClick: number, thirtySecondNodesInQuarter: number);
1244
+ writeTo(s: IWriteable): void;
1245
+ }
1246
+ /**
1247
+ * The base class for alphaTab specific midi events (like metronomes and rests).
1248
+ */
1249
+ declare abstract class AlphaTabSysExEvent extends MidiEvent {
1250
+ static readonly AlphaTabManufacturerId = 125;
1251
+ static readonly MetronomeEventId = 0;
1252
+ static readonly RestEventId = 1;
1253
+ constructor(track: number, tick: number, type: MidiEventType);
1254
+ writeTo(s: IWriteable): void;
1255
+ protected abstract writeEventData(s: IWriteable): void;
1256
+ }
1257
+ /**
1258
+ * Represents a metronome event. This event is emitted by the synthesizer only during playback and
1259
+ * is typically not part of the midi file itself.
1260
+ */
1261
+ declare class AlphaTabMetronomeEvent extends AlphaTabSysExEvent {
1262
+ /**
1263
+ * The metronome counter as per current time signature.
1264
+ */
1265
+ metronomeNumerator: number;
1266
+ /**
1267
+ * The duration of the metronome tick in MIDI ticks.
1268
+ */
1269
+ metronomeDurationInTicks: number;
1270
+ /**
1271
+ * The duration of the metronome tick in milliseconds.
1272
+ */
1273
+ metronomeDurationInMilliseconds: number;
1274
+ /**
1275
+ * Gets a value indicating whether the current event is a metronome event.
1276
+ */
1277
+ readonly isMetronome: boolean;
1278
+ constructor(track: number, tick: number, counter: number, durationInTicks: number, durationInMillis: number);
1279
+ protected writeEventData(s: IWriteable): void;
1280
+ }
1281
+ /**
1282
+ * Represents a REST beat being 'played'. This event supports alphaTab in placing the cursor.
1283
+ */
1284
+ declare class AlphaTabRestEvent extends AlphaTabSysExEvent {
1285
+ channel: number;
1286
+ constructor(track: number, tick: number, channel: number);
1287
+ protected writeEventData(s: IWriteable): void;
1288
+ }
1289
+ /**
1290
+ * The base class for note related events.
1291
+ */
1292
+ declare abstract class NoteEvent extends MidiEvent {
1293
+ /**
1294
+ * The channel on which the note is played.
1295
+ */
1296
+ channel: number;
1297
+ /**
1298
+ * The key of the note being played (aka. the note height).
1299
+ */
1300
+ noteKey: number;
1301
+ /**
1302
+ * The velocity in which the 'key' of the note is pressed (aka. the loudness/intensity of the note).
1303
+ */
1304
+ noteVelocity: number;
1305
+ constructor(track: number, tick: number, type: MidiEventType, channel: number, noteKey: number, noteVelocity: number);
1306
+ get data1(): number;
1307
+ get data2(): number;
1308
+ }
1309
+ /**
1310
+ * Represents a note being played
1311
+ */
1312
+ declare class NoteOnEvent extends NoteEvent {
1313
+ constructor(track: number, tick: number, channel: number, noteKey: number, noteVelocity: number);
1314
+ writeTo(s: IWriteable): void;
1315
+ }
1316
+ /**
1317
+ * Represents a note stop being played.
1318
+ */
1319
+ declare class NoteOffEvent extends NoteEvent {
1320
+ constructor(track: number, tick: number, channel: number, noteKey: number, noteVelocity: number);
1321
+ writeTo(s: IWriteable): void;
1322
+ }
1323
+ /**
1324
+ * Represents the change of a value on a midi controller.
1325
+ */
1326
+ declare class ControlChangeEvent extends MidiEvent {
1327
+ /**
1328
+ * The channel for which the controller is changing.
1329
+ */
1330
+ channel: number;
1331
+ /**
1332
+ * The type of the controller which is changing.
1333
+ */
1334
+ controller: ControllerType;
1335
+ /**
1336
+ * The new value of the controller. The meaning is depending on the controller type.
1337
+ */
1338
+ value: number;
1339
+ constructor(track: number, tick: number, channel: number, controller: ControllerType, value: number);
1340
+ writeTo(s: IWriteable): void;
1341
+ get data1(): number;
1342
+ get data2(): number;
1343
+ }
1344
+ /**
1345
+ * Represents the change of the midi program on a channel.
1346
+ */
1347
+ declare class ProgramChangeEvent extends MidiEvent {
1348
+ /**
1349
+ * The midi channel for which the program changes.
1350
+ */
1351
+ channel: number;
1352
+ /**
1353
+ * The numeric value of the program indicating the instrument bank to choose.
1354
+ */
1355
+ program: number;
1356
+ constructor(track: number, tick: number, channel: number, program: number);
1357
+ writeTo(s: IWriteable): void;
1358
+ get data1(): number;
1359
+ }
1360
+ /**
1361
+ * Represents a change of the tempo in the song.
1362
+ */
1363
+ declare class TempoChangeEvent extends MidiEvent {
1364
+ /**
1365
+ * The tempo in microseconds per quarter note (aka USQ). A time format typically for midi.
1366
+ */
1367
+ microSecondsPerQuarterNote: number;
1368
+ constructor(tick: number, microSecondsPerQuarterNote: number);
1369
+ writeTo(s: IWriteable): void;
1370
+ }
1371
+ /**
1372
+ * Represents a change of the pitch bend (aka. pitch wheel) on a specific channel.
1373
+ */
1374
+ declare class PitchBendEvent extends MidiEvent {
1375
+ /**
1376
+ * The channel for which the pitch bend changes.
1377
+ */
1378
+ channel: number;
1379
+ /**
1380
+ * The value to which the pitch changes. This value is according to the MIDI specification.
1381
+ */
1382
+ value: number;
1383
+ constructor(track: number, tick: number, channel: number, value: number);
1384
+ writeTo(s: IWriteable): void;
1385
+ get data1(): number;
1386
+ get data2(): number;
1387
+ }
1388
+ /**
1389
+ * Represents a single note pitch bend change.
1390
+ */
1391
+ declare class NoteBendEvent extends MidiEvent {
1392
+ /**
1393
+ * The channel on which the note is played for which the pitch changes.
1394
+ */
1395
+ channel: number;
1396
+ /**
1397
+ * The key of the note for which the pitch changes.
1398
+ */
1399
+ noteKey: number;
1400
+ /**
1401
+ * The value to which the pitch changes. This value is according to the MIDI specification.
1402
+ */
1403
+ value: number;
1404
+ constructor(track: number, tick: number, channel: number, noteKey: number, value: number);
1405
+ writeTo(s: IWriteable): void;
1406
+ }
1407
+ /**
1408
+ * Represents the end of the track indicating that no more events for this track follow.
1409
+ */
1410
+ declare class EndOfTrackEvent extends MidiEvent {
1411
+ constructor(track: number, tick: number);
1144
1412
  writeTo(s: IWriteable): void;
1145
1413
  }
1146
1414
 
1415
+ /**
1416
+ * Lists the different midi file formats which are supported for export.
1417
+ */
1418
+ declare enum MidiFileFormat {
1419
+ /**
1420
+ * A single track multi channel file (SMF Type 0)
1421
+ */
1422
+ SingleTrackMultiChannel = 0,
1423
+ /**
1424
+ * A multi track file (SMF Type 1)
1425
+ */
1426
+ MultiTrack = 1
1427
+ }
1428
+ declare class MidiTrack {
1429
+ /**
1430
+ * Gets a list of midi events sorted by time.
1431
+ */
1432
+ readonly events: MidiEvent[];
1433
+ /**
1434
+ * Adds the given midi event a the correct time position into the file.
1435
+ */
1436
+ addEvent(e: MidiEvent): void;
1437
+ /**
1438
+ * Writes the midi track as binary into the given stream.
1439
+ * @returns The stream to write to.
1440
+ */
1441
+ writeTo(s: IWriteable): void;
1442
+ }
1147
1443
  /**
1148
1444
  * Represents a midi file with a single track that can be played via {@link AlphaSynth}
1149
1445
  */
1150
1446
  declare class MidiFile {
1447
+ /**
1448
+ * Gets or sets the midi file format to use.
1449
+ */
1450
+ format: MidiFileFormat;
1151
1451
  /**
1152
1452
  * Gets or sets the division per quarter notes.
1153
1453
  */
@@ -1155,7 +1455,12 @@ declare class MidiFile {
1155
1455
  /**
1156
1456
  * Gets a list of midi events sorted by time.
1157
1457
  */
1158
- readonly events: MidiEvent[];
1458
+ get events(): MidiEvent[];
1459
+ /**
1460
+ * Gets a list of midi tracks.
1461
+ */
1462
+ readonly tracks: MidiTrack[];
1463
+ private ensureTracks;
1159
1464
  /**
1160
1465
  * Adds the given midi event a the correct time position into the file.
1161
1466
  */
@@ -2505,6 +2810,10 @@ declare class Chord {
2505
2810
  * Gets or sets whether the fingering is shown below the chord diagram.
2506
2811
  */
2507
2812
  showFingering: boolean;
2813
+ /**
2814
+ * Gets a unique id for this chord based on its properties.
2815
+ */
2816
+ get uniqueId(): string;
2508
2817
  }
2509
2818
 
2510
2819
  /**
@@ -4039,7 +4348,6 @@ interface IAlphaSynth {
4039
4348
  countInVolume: number;
4040
4349
  /**
4041
4350
  * Gets or sets the midi events which will trigger the `midiEventsPlayed` event.
4042
- * To subscribe to Metronome events use the `SystemExclusiveEvent2` event type and check against `event.isMetronome`
4043
4351
  */
4044
4352
  midiEventsPlayedFilter: MidiEventType[];
4045
4353
  /**
@@ -4744,7 +5052,7 @@ interface IUiFacade<TSettings> {
4744
5052
  * Tells the UI layer to append the given render results to the UI. At this point
4745
5053
  * the partial result is not actually rendered yet, only the layouting process
4746
5054
  * completed.
4747
- * @param renderResults The rendered partial that should be added to the UI.
5055
+ * @param renderResults The rendered partial that should be added to the UI. null indicates the rendering finished.
4748
5056
  */
4749
5057
  beginAppendRenderResults(renderResults: RenderFinishedEventArgs | null): void;
4750
5058
  /**
@@ -5129,7 +5437,7 @@ declare class AlphaTabApi extends AlphaTabApiBase<any | Settings> {
5129
5437
  constructor(element: HTMLElement, options: any | Settings);
5130
5438
  tex(tex: string, tracks?: number[]): void;
5131
5439
  print(width?: string, additionalSettings?: unknown): void;
5132
- downloadMidi(): void;
5440
+ downloadMidi(format?: MidiFileFormat): void;
5133
5441
  changeTrackMute(tracks: Track[], mute: boolean): void;
5134
5442
  changeTrackSolo(tracks: Track[], solo: boolean): void;
5135
5443
  changeTrackVolume(tracks: Track[], volume: number): void;
@@ -5295,166 +5603,6 @@ declare namespace index_d$4 {
5295
5603
  };
5296
5604
  }
5297
5605
 
5298
- /**
5299
- * Lists all midi controllers.
5300
- */
5301
- declare enum ControllerType {
5302
- /**
5303
- * Bank Select. MSB
5304
- */
5305
- BankSelectCoarse = 0,
5306
- /**
5307
- * Modulation wheel or lever MSB
5308
- */
5309
- ModulationCoarse = 1,
5310
- /**
5311
- * Data entry MSB
5312
- */
5313
- DataEntryCoarse = 6,
5314
- /**
5315
- * Channel Volume MSB
5316
- */
5317
- VolumeCoarse = 7,
5318
- /**
5319
- * Pan MSB
5320
- */
5321
- PanCoarse = 10,
5322
- /**
5323
- * Expression Controller MSB
5324
- */
5325
- ExpressionControllerCoarse = 11,
5326
- /**
5327
- * Modulation wheel or level LSB
5328
- */
5329
- ModulationFine = 33,
5330
- /**
5331
- * Data Entry LSB
5332
- */
5333
- DataEntryFine = 38,
5334
- /**
5335
- * Channel Volume LSB
5336
- */
5337
- VolumeFine = 39,
5338
- /**
5339
- * Pan LSB
5340
- */
5341
- PanFine = 42,
5342
- /**
5343
- * Expression controller LSB
5344
- */
5345
- ExpressionControllerFine = 43,
5346
- /**
5347
- * Damper pedal (sustain)
5348
- */
5349
- HoldPedal = 64,
5350
- /**
5351
- * Legato Footswitch
5352
- */
5353
- LegatoPedal = 68,
5354
- /**
5355
- * Non-Registered Parameter Number LSB
5356
- */
5357
- NonRegisteredParameterFine = 98,
5358
- /**
5359
- * Non-Registered Parameter Number MSB
5360
- */
5361
- NonRegisteredParameterCourse = 99,
5362
- /**
5363
- * Registered Parameter Number LSB
5364
- */
5365
- RegisteredParameterFine = 100,
5366
- /**
5367
- * Registered Parameter Number MSB
5368
- */
5369
- RegisteredParameterCourse = 101,
5370
- /**
5371
- * Reset all controllers
5372
- */
5373
- ResetControllers = 121,
5374
- /**
5375
- * All notes of.
5376
- */
5377
- AllNotesOff = 123
5378
- }
5379
-
5380
- declare enum MetaEventType {
5381
- SequenceNumber = 0,
5382
- TextEvent = 1,
5383
- CopyrightNotice = 2,
5384
- SequenceOrTrackName = 3,
5385
- InstrumentName = 4,
5386
- LyricText = 5,
5387
- MarkerText = 6,
5388
- CuePoint = 7,
5389
- PatchName = 8,
5390
- PortName = 9,
5391
- MidiChannel = 32,
5392
- MidiPort = 33,
5393
- EndOfTrack = 47,
5394
- Tempo = 81,
5395
- SmpteOffset = 84,
5396
- TimeSignature = 88,
5397
- KeySignature = 89,
5398
- SequencerSpecific = 127
5399
- }
5400
- declare class MetaEvent extends MidiEvent {
5401
- get channel(): number;
5402
- get command(): MidiEventType;
5403
- get metaStatus(): MetaEventType;
5404
- protected constructor(track: number, delta: number, status: number, data1: number, data2: number);
5405
- }
5406
-
5407
- declare class MetaDataEvent extends MetaEvent {
5408
- data: Uint8Array;
5409
- constructor(track: number, delta: number, status: number, metaId: number, data: Uint8Array);
5410
- writeTo(s: IWriteable): void;
5411
- }
5412
-
5413
- declare class MetaNumberEvent extends MetaEvent {
5414
- value: number;
5415
- constructor(track: number, delta: number, status: number, metaId: number, value: number);
5416
- writeTo(s: IWriteable): void;
5417
- }
5418
-
5419
- declare class Midi20PerNotePitchBendEvent extends MidiEvent {
5420
- noteKey: number;
5421
- pitch: number;
5422
- constructor(track: number, tick: number, status: number, noteKey: number, pitch: number);
5423
- /**
5424
- * Writes the midi event as binary into the given stream.
5425
- * @param s The stream to write to.
5426
- */
5427
- writeTo(s: IWriteable): void;
5428
- }
5429
-
5430
- declare enum SystemCommonType {
5431
- SystemExclusive = 240,
5432
- MtcQuarterFrame = 241,
5433
- SongPosition = 242,
5434
- SongSelect = 243,
5435
- TuneRequest = 246,
5436
- SystemExclusive2 = 247
5437
- }
5438
- declare class SystemCommonEvent extends MidiEvent {
5439
- get channel(): number;
5440
- get command(): MidiEventType;
5441
- protected constructor(track: number, delta: number, status: number, data1: number, data2: number);
5442
- }
5443
-
5444
- declare class SystemExclusiveEvent extends SystemCommonEvent {
5445
- static readonly AlphaTabManufacturerId = 125;
5446
- data: Uint8Array;
5447
- get isMetronome(): boolean;
5448
- get metronomeNumerator(): number;
5449
- get metronomeDurationInTicks(): number;
5450
- get metronomeDurationInMilliseconds(): number;
5451
- get isRest(): boolean;
5452
- get manufacturerId(): number;
5453
- constructor(track: number, delta: number, status: number, id: number, data: Uint8Array);
5454
- writeTo(s: IWriteable): void;
5455
- static encodeMetronome(counter: number, durationInTicks: number, durationInMillis: number): Uint8Array;
5456
- }
5457
-
5458
5606
  /**
5459
5607
  * A handler is responsible for writing midi events to a custom structure
5460
5608
  */
@@ -5491,7 +5639,7 @@ interface IMidiFileHandler {
5491
5639
  * @param controller The midi controller that should change.
5492
5640
  * @param value The value to which the midi controller should change
5493
5641
  */
5494
- addControlChange(track: number, tick: number, channel: number, controller: number, value: number): void;
5642
+ addControlChange(track: number, tick: number, channel: number, controller: ControllerType, value: number): void;
5495
5643
  /**
5496
5644
  * Add a program change to the generated midi file
5497
5645
  * @param track The midi track on which the program should change.
@@ -5622,17 +5770,18 @@ declare class MidiFileGenerator {
5622
5770
  */
5623
5771
  declare class AlphaSynthMidiFileHandler implements IMidiFileHandler {
5624
5772
  private _midiFile;
5773
+ private _smf1Mode;
5625
5774
  /**
5626
5775
  * Initializes a new instance of the {@link AlphaSynthMidiFileHandler} class.
5627
5776
  * @param midiFile The midi file.
5777
+ * @param smf1Mode Whether to generate a SMF1 compatible midi file. This might break multi note bends.
5628
5778
  */
5629
- constructor(midiFile: MidiFile);
5779
+ constructor(midiFile: MidiFile, smf1Mode?: boolean);
5630
5780
  addTimeSignature(tick: number, timeSignatureNumerator: number, timeSignatureDenominator: number): void;
5631
5781
  addRest(track: number, tick: number, channel: number): void;
5632
5782
  addNote(track: number, start: number, length: number, key: number, velocity: number, channel: number): void;
5633
- private makeCommand;
5634
5783
  private static fixValue;
5635
- addControlChange(track: number, tick: number, channel: number, controller: number, value: number): void;
5784
+ addControlChange(track: number, tick: number, channel: number, controller: ControllerType, value: number): void;
5636
5785
  addProgramChange(track: number, tick: number, channel: number, program: number): void;
5637
5786
  addTempo(tick: number, tempo: number): void;
5638
5787
  addBend(track: number, tick: number, channel: number, value: number): void;
@@ -5650,28 +5799,38 @@ type index_d$3_MidiTickLookupFindBeatResult = MidiTickLookupFindBeatResult;
5650
5799
  declare const index_d$3_MidiTickLookupFindBeatResult: typeof MidiTickLookupFindBeatResult;
5651
5800
  type index_d$3_MidiFile = MidiFile;
5652
5801
  declare const index_d$3_MidiFile: typeof MidiFile;
5802
+ type index_d$3_MidiFileFormat = MidiFileFormat;
5803
+ declare const index_d$3_MidiFileFormat: typeof MidiFileFormat;
5653
5804
  type index_d$3_ControllerType = ControllerType;
5654
5805
  declare const index_d$3_ControllerType: typeof ControllerType;
5655
- type index_d$3_MetaDataEvent = MetaDataEvent;
5656
- declare const index_d$3_MetaDataEvent: typeof MetaDataEvent;
5657
- type index_d$3_MetaEvent = MetaEvent;
5658
- declare const index_d$3_MetaEvent: typeof MetaEvent;
5659
- type index_d$3_MetaEventType = MetaEventType;
5660
- declare const index_d$3_MetaEventType: typeof MetaEventType;
5661
- type index_d$3_MetaNumberEvent = MetaNumberEvent;
5662
- declare const index_d$3_MetaNumberEvent: typeof MetaNumberEvent;
5663
5806
  type index_d$3_MidiEvent = MidiEvent;
5664
5807
  declare const index_d$3_MidiEvent: typeof MidiEvent;
5665
5808
  type index_d$3_MidiEventType = MidiEventType;
5666
5809
  declare const index_d$3_MidiEventType: typeof MidiEventType;
5667
- type index_d$3_Midi20PerNotePitchBendEvent = Midi20PerNotePitchBendEvent;
5668
- declare const index_d$3_Midi20PerNotePitchBendEvent: typeof Midi20PerNotePitchBendEvent;
5669
- type index_d$3_SystemCommonEvent = SystemCommonEvent;
5670
- declare const index_d$3_SystemCommonEvent: typeof SystemCommonEvent;
5671
- type index_d$3_SystemCommonType = SystemCommonType;
5672
- declare const index_d$3_SystemCommonType: typeof SystemCommonType;
5673
- type index_d$3_SystemExclusiveEvent = SystemExclusiveEvent;
5674
- declare const index_d$3_SystemExclusiveEvent: typeof SystemExclusiveEvent;
5810
+ type index_d$3_TimeSignatureEvent = TimeSignatureEvent;
5811
+ declare const index_d$3_TimeSignatureEvent: typeof TimeSignatureEvent;
5812
+ type index_d$3_AlphaTabRestEvent = AlphaTabRestEvent;
5813
+ declare const index_d$3_AlphaTabRestEvent: typeof AlphaTabRestEvent;
5814
+ type index_d$3_AlphaTabMetronomeEvent = AlphaTabMetronomeEvent;
5815
+ declare const index_d$3_AlphaTabMetronomeEvent: typeof AlphaTabMetronomeEvent;
5816
+ type index_d$3_NoteEvent = NoteEvent;
5817
+ declare const index_d$3_NoteEvent: typeof NoteEvent;
5818
+ type index_d$3_NoteOnEvent = NoteOnEvent;
5819
+ declare const index_d$3_NoteOnEvent: typeof NoteOnEvent;
5820
+ type index_d$3_NoteOffEvent = NoteOffEvent;
5821
+ declare const index_d$3_NoteOffEvent: typeof NoteOffEvent;
5822
+ type index_d$3_ControlChangeEvent = ControlChangeEvent;
5823
+ declare const index_d$3_ControlChangeEvent: typeof ControlChangeEvent;
5824
+ type index_d$3_ProgramChangeEvent = ProgramChangeEvent;
5825
+ declare const index_d$3_ProgramChangeEvent: typeof ProgramChangeEvent;
5826
+ type index_d$3_TempoChangeEvent = TempoChangeEvent;
5827
+ declare const index_d$3_TempoChangeEvent: typeof TempoChangeEvent;
5828
+ type index_d$3_PitchBendEvent = PitchBendEvent;
5829
+ declare const index_d$3_PitchBendEvent: typeof PitchBendEvent;
5830
+ type index_d$3_NoteBendEvent = NoteBendEvent;
5831
+ declare const index_d$3_NoteBendEvent: typeof NoteBendEvent;
5832
+ type index_d$3_EndOfTrackEvent = EndOfTrackEvent;
5833
+ declare const index_d$3_EndOfTrackEvent: typeof EndOfTrackEvent;
5675
5834
  type index_d$3_MidiFileGenerator = MidiFileGenerator;
5676
5835
  declare const index_d$3_MidiFileGenerator: typeof MidiFileGenerator;
5677
5836
  type index_d$3_AlphaSynthMidiFileHandler = AlphaSynthMidiFileHandler;
@@ -5683,17 +5842,22 @@ declare namespace index_d$3 {
5683
5842
  index_d$3_MidiTickLookup as MidiTickLookup,
5684
5843
  index_d$3_MidiTickLookupFindBeatResult as MidiTickLookupFindBeatResult,
5685
5844
  index_d$3_MidiFile as MidiFile,
5845
+ index_d$3_MidiFileFormat as MidiFileFormat,
5686
5846
  index_d$3_ControllerType as ControllerType,
5687
- index_d$3_MetaDataEvent as MetaDataEvent,
5688
- index_d$3_MetaEvent as MetaEvent,
5689
- index_d$3_MetaEventType as MetaEventType,
5690
- index_d$3_MetaNumberEvent as MetaNumberEvent,
5691
5847
  index_d$3_MidiEvent as MidiEvent,
5692
5848
  index_d$3_MidiEventType as MidiEventType,
5693
- index_d$3_Midi20PerNotePitchBendEvent as Midi20PerNotePitchBendEvent,
5694
- index_d$3_SystemCommonEvent as SystemCommonEvent,
5695
- index_d$3_SystemCommonType as SystemCommonType,
5696
- index_d$3_SystemExclusiveEvent as SystemExclusiveEvent,
5849
+ index_d$3_TimeSignatureEvent as TimeSignatureEvent,
5850
+ index_d$3_AlphaTabRestEvent as AlphaTabRestEvent,
5851
+ index_d$3_AlphaTabMetronomeEvent as AlphaTabMetronomeEvent,
5852
+ index_d$3_NoteEvent as NoteEvent,
5853
+ index_d$3_NoteOnEvent as NoteOnEvent,
5854
+ index_d$3_NoteOffEvent as NoteOffEvent,
5855
+ index_d$3_ControlChangeEvent as ControlChangeEvent,
5856
+ index_d$3_ProgramChangeEvent as ProgramChangeEvent,
5857
+ index_d$3_TempoChangeEvent as TempoChangeEvent,
5858
+ index_d$3_PitchBendEvent as PitchBendEvent,
5859
+ index_d$3_NoteBendEvent as NoteBendEvent,
5860
+ index_d$3_EndOfTrackEvent as EndOfTrackEvent,
5697
5861
  index_d$3_MidiFileGenerator as MidiFileGenerator,
5698
5862
  index_d$3_AlphaSynthMidiFileHandler as AlphaSynthMidiFileHandler,
5699
5863
  };
@@ -5805,21 +5969,29 @@ declare class JsonConverter {
5805
5969
  */
5806
5970
  static jsObjectToSettings(jsObject: unknown): Settings;
5807
5971
  /**
5808
- * @target web
5972
+ * Converts the given JavaScript object into a MidiFile object.
5973
+ * @param jsObject The javascript object to deserialize.
5974
+ * @returns The converted MidiFile.
5809
5975
  */
5810
- static jsObjectToMidiFile(midi: any): MidiFile;
5976
+ static jsObjectToMidiFile(jsObject: unknown): MidiFile;
5811
5977
  /**
5812
- * @target web
5978
+ * Converts the given JavaScript object into a MidiEvent object.
5979
+ * @param jsObject The javascript object to deserialize.
5980
+ * @returns The converted MidiEvent.
5813
5981
  */
5814
- static jsObjectToMidiEvent(midiEvent: any): MidiEvent;
5982
+ static jsObjectToMidiEvent(midiEvent: unknown): MidiEvent;
5815
5983
  /**
5816
- * @target web
5984
+ * Converts the given MidiFile object into a serialized JavaScript object.
5985
+ * @param midi The midi file to convert.
5986
+ * @returns A serialized MidiFile object without ciruclar dependencies that can be used for further serializations.
5817
5987
  */
5818
- static midiFileToJsObject(midi: MidiFile): unknown;
5988
+ static midiFileToJsObject(midi: MidiFile): Map<string, unknown>;
5819
5989
  /**
5820
- * @target web
5990
+ * Converts the given MidiEvent object into a serialized JavaScript object.
5991
+ * @param midi The midi file to convert.
5992
+ * @returns A serialized MidiEvent object without ciruclar dependencies that can be used for further serializations.
5821
5993
  */
5822
- static midiEventToJsObject(midiEvent: MidiEvent): unknown;
5994
+ static midiEventToJsObject(midiEvent: MidiEvent): Map<string, unknown>;
5823
5995
  }
5824
5996
 
5825
5997
  type index_d$2_AccentuationType = AccentuationType;