spessasynth_lib 3.26.0 → 3.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,120 @@
1
+ import { SynthesizerSnapshot } from "spessasynth_core";
2
+
3
+ /**
4
+ * @enum {number}
5
+ * // NOTE: Every message needs a channel number (if not relevant or all, set to -1)
6
+ * @property {number} midiMessage - 0 -> [messageData<Uint8Array>, channelOffset<number>, force<boolean>, options<SynthMethodOptions>]
7
+ * @property {number} ccReset - 7 -> (no data) note: if channel is -1 then reset all channels
8
+ * @property {number} setChannelVibrato - 8 -> {frequencyHz: number, depthCents: number, delaySeconds: number} note: if channel is -1 then stop all channels note 2: if rate is -1, it means locking
9
+ * @property {number} soundFontManager - 9 -> [messageType<WorkletSoundfontManagerMessageType> messageData<any>] note: refer to sfman_message.js
10
+ * @property {number} stopAll - 10 -> force<number> (0 false, 1 true) note: if channel is -1 then stop all channels
11
+ * @property {number} killNotes - 11 -> amount<number>
12
+ * @property {number} muteChannel - 12 -> isMuted<boolean>
13
+ * @property {number} addNewChannel - 13 -> (no data)
14
+ * @property {number} customCcChange - 14 -> [ccNumber<number>, ccValue<number>]
15
+ * @property {number} debugMessage - 15 -> (no data)
16
+ * @property {number} setMasterParameter - 17 -> [parameter<masterParameterType>, value<number>]
17
+ * @property {number} setDrums - 18 -> isDrums<boolean>
18
+ * @property {number} transpose - 19 -> [semitones<number>, force<boolean>] note: if channel is -1 then transpose all channels
19
+ * @property {number} highPerformanceMode - 20 -> isOn<boolean>
20
+ * @property {number} lockController - 21 -> [controllerNumber<number>, isLocked<boolean>]
21
+ * @property {number} sequencerSpecific - 22 -> [messageType<SpessaSynthSequencerMessageType> messageData<any>] note: refer to sequencer_message.js
22
+ * @property {number} requestSynthesizerSnapshot - 23 -> (no data)
23
+ * @property {number} setLogLevel - 24 -> [enableInfo<boolean>, enableWarning<boolean>, enableGroup<boolean>, enableTable<boolean>]
24
+ * @property {number} keyModifier - 25 -> [messageType<workletKeyModifierMessageType> messageData<any>]
25
+ * @property {number} setEffectsGain - 26 -> [reverbGain<number>, chorusGain<number>]
26
+ * @property {number} destroyWorklet - 27 -> (no data)
27
+ */
28
+ export const workletMessageType = {
29
+ midiMessage: 0,
30
+ // free 6 slots here, use when needed instead of adding new ones
31
+ ccReset: 7,
32
+ setChannelVibrato: 8,
33
+ soundFontManager: 9,
34
+ stopAll: 10,
35
+ killNotes: 11,
36
+ muteChannel: 12,
37
+ addNewChannel: 13,
38
+ customCcChange: 14,
39
+ debugMessage: 15,
40
+ // free slot here
41
+ setMasterParameter: 17,
42
+ setDrums: 18,
43
+ transpose: 19,
44
+ highPerformanceMode: 20,
45
+ lockController: 21,
46
+ sequencerSpecific: 22,
47
+ requestSynthesizerSnapshot: 23,
48
+ setLogLevel: 24,
49
+ keyModifierManager: 25,
50
+ setEffectsGain: 26,
51
+ destroyWorklet: 27
52
+ };
53
+
54
+
55
+ /**
56
+ * @typedef {{
57
+ * channelNumber: number
58
+ * messageType: (workletMessageType|number),
59
+ * messageData: (
60
+ * boolean|
61
+ * (number|Uint8Array|object)[]
62
+ * |undefined
63
+ * |boolean[]
64
+ * |boolean
65
+ * |Voice[]
66
+ * |number
67
+ * |{rate: number, depth: number, delay: number}
68
+ * |ArrayBuffer
69
+ * |{messageType: SpessaSynthSequencerMessageType, messageData: any}
70
+ * |{messageType: workletKeyModifierMessageType, messageData: any}
71
+ * )
72
+ * }} WorkletMessage
73
+ */
74
+
75
+ /**
76
+ * @typedef {Object} ChannelProperty
77
+ * @property {number} voicesAmount - the channel's current voice amount
78
+ * @property {number} pitchBend - the channel's current pitch bend from -8192 do 8192
79
+ * @property {number} pitchBendRangeSemitones - the pitch bend's range, in semitones
80
+ * @property {boolean} isMuted - indicates whether the channel is muted
81
+ * @property {boolean} isDrum - indicates whether the channel is a drum channel
82
+ * @property {number} transposition - the channel's transposition, in semitones
83
+ * @property {number} bank - the bank number of the current preset
84
+ * @property {number} program - the MIDI program number of the current preset
85
+ */
86
+
87
+ /**
88
+ * @typedef {Object} WorkletReturnMessage
89
+ * @property {returnMessageType} messageType - the message's type
90
+ * @property {{
91
+ * eventName: string,
92
+ * eventData: any
93
+ * }|ChannelProperty
94
+ * |{presetName: string, bank: number, program: number}[]
95
+ * |string
96
+ * |{messageType: SpessaSynthSequencerReturnMessageType, messageData: any}
97
+ * |SynthesizerSnapshot
98
+ * |[WorkletSoundfontManagerMessageType, any]} messageData - the message's data
99
+ *
100
+ * 0 - channel property change -> [channel<number>, property<ChannelProperty>] see message_sending.js line 29
101
+ * 1 - event call -> {eventName<string>, eventData:<the event's data>}
102
+ * 2 - master parameter change -> [parameter<masterParameterType>, value<string|number>]
103
+ * 3 - sequencer specific -> [messageType<SpessaSynthSequencerReturnMessageType> messageData<any>] note: refer to sequencer_message.js
104
+ * 4 - synthesizer snapshot -> snapshot<SynthesizerSnapshot> note: refer to synthesizer_snapshot.js
105
+ * 5 - isFullyInitialized -> (no data)
106
+ * 6 - soundfontError -> errorMessage<string>
107
+ */
108
+
109
+ /**
110
+ * @enum {number}
111
+ */
112
+ export const returnMessageType = {
113
+ channelPropertyChange: 0,
114
+ eventCall: 1,
115
+ masterParameterChange: 2,
116
+ sequencerSpecific: 3,
117
+ synthesizerSnapshot: 4,
118
+ isFullyInitialized: 5,
119
+ soundfontError: 6
120
+ };