@opendaw/studio-adapters 0.0.47 → 0.0.49
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/AutomatableParameterFieldAdapter.js +86 -73
- package/dist/BoxAdapterCollection.js +30 -17
- package/dist/BoxAdapters.d.ts.map +1 -1
- package/dist/BoxAdapters.js +87 -72
- package/dist/BoxAdaptersContext.d.ts +2 -2
- package/dist/BoxAdaptersContext.d.ts.map +1 -1
- package/dist/EngineProcessorAttachment.d.ts +2 -1
- package/dist/EngineProcessorAttachment.d.ts.map +1 -1
- package/dist/FieldAdapter.js +45 -32
- package/dist/IndexedBoxAdapterCollection.js +45 -32
- package/dist/NoteBroadcaster.js +25 -12
- package/dist/NoteStreamReceiver.js +29 -16
- package/dist/ParameterAdapterSet.js +24 -11
- package/dist/ParameterFieldAdapters.js +19 -6
- package/dist/Parsing.d.ts +5 -0
- package/dist/Parsing.d.ts.map +1 -0
- package/dist/Parsing.js +10 -0
- package/dist/PianoModeAdapter.js +32 -19
- package/dist/RootBoxAdapter.d.ts +2 -1
- package/dist/RootBoxAdapter.d.ts.map +1 -1
- package/dist/RootBoxAdapter.js +41 -23
- package/dist/Validator.d.ts +10 -0
- package/dist/Validator.d.ts.map +1 -0
- package/dist/Validator.js +35 -0
- package/dist/audio/AudioFileBoxAdapter.js +23 -10
- package/dist/audio-unit/AudioBusBoxAdapter.d.ts +1 -1
- package/dist/audio-unit/AudioBusBoxAdapter.d.ts.map +1 -1
- package/dist/audio-unit/AudioBusBoxAdapter.js +31 -18
- package/dist/audio-unit/AudioUnitBoxAdapter.js +74 -63
- package/dist/audio-unit/AudioUnitInput.d.ts +1 -1
- package/dist/audio-unit/AudioUnitInput.d.ts.map +1 -1
- package/dist/audio-unit/AudioUnitInput.js +43 -30
- package/dist/audio-unit/AudioUnitOutput.js +33 -20
- package/dist/audio-unit/AudioUnitTracks.js +39 -26
- package/dist/audio-unit/AuxSendBoxAdapter.js +47 -34
- package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.js +49 -37
- package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.js +41 -29
- package/dist/devices/audio-effects/DelayDeviceBoxAdapter.js +51 -39
- package/dist/devices/audio-effects/FoldDeviceBoxAdapter.js +39 -27
- package/dist/devices/audio-effects/ModularDeviceBoxAdapter.js +33 -20
- package/dist/devices/audio-effects/RevampDeviceBoxAdapter.js +46 -34
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.js +45 -33
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.js +43 -31
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts +36 -0
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts.map +1 -0
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.js +63 -0
- package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.js +30 -17
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts +3 -2
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.js +45 -26
- package/dist/devices/instruments/NanoDeviceBoxAdapter.js +38 -26
- package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.js +101 -89
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts +0 -1
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.js +36 -24
- package/dist/devices/instruments/SoundfontDeviceBoxAdapter.js +84 -72
- package/dist/devices/instruments/TapeDeviceBoxAdapter.js +40 -28
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts +26 -4
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.js +70 -33
- package/dist/devices/instruments/VaporisateurSettings.d.ts +17 -0
- package/dist/devices/instruments/VaporisateurSettings.d.ts.map +1 -0
- package/dist/devices/instruments/VaporisateurSettings.js +24 -0
- package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.js +51 -39
- package/dist/devices/midi-effects/PitchDeviceBoxAdapter.js +40 -28
- package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.js +30 -17
- package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.js +47 -35
- package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.js +32 -19
- package/dist/editing/UserEditing.js +33 -20
- package/dist/editing/UserEditingManager.js +28 -15
- package/dist/factories/AudioBusFactory.d.ts +7 -0
- package/dist/factories/AudioBusFactory.d.ts.map +1 -0
- package/dist/factories/AudioBusFactory.js +29 -0
- package/dist/factories/AudioUnitFactory.d.ts +13 -0
- package/dist/factories/AudioUnitFactory.d.ts.map +1 -0
- package/dist/factories/AudioUnitFactory.js +44 -0
- package/dist/factories/AudioUnitOrdering.d.ts +3 -0
- package/dist/factories/AudioUnitOrdering.d.ts.map +1 -0
- package/dist/factories/AudioUnitOrdering.js +7 -0
- package/dist/factories/ColorCodes.d.ts +7 -0
- package/dist/factories/ColorCodes.d.ts.map +1 -0
- package/dist/factories/ColorCodes.js +32 -0
- package/dist/factories/Colors.d.ts +15 -0
- package/dist/factories/Colors.d.ts.map +1 -0
- package/dist/factories/Colors.js +23 -0
- package/dist/factories/InstrumentBox.d.ts +3 -0
- package/dist/factories/InstrumentBox.d.ts.map +1 -0
- package/dist/factories/InstrumentBox.js +1 -0
- package/dist/factories/InstrumentFactories.d.ts +34 -0
- package/dist/factories/InstrumentFactories.d.ts.map +1 -0
- package/dist/factories/InstrumentFactories.js +137 -0
- package/dist/factories/InstrumentFactory.d.ts +13 -0
- package/dist/factories/InstrumentFactory.d.ts.map +1 -0
- package/dist/factories/InstrumentFactory.js +1 -0
- package/dist/factories/InstrumentOptions.d.ts +9 -0
- package/dist/factories/InstrumentOptions.d.ts.map +1 -0
- package/dist/factories/InstrumentOptions.js +1 -0
- package/dist/factories/InstrumentProduct.d.ts +8 -0
- package/dist/factories/InstrumentProduct.d.ts.map +1 -0
- package/dist/factories/InstrumentProduct.js +1 -0
- package/dist/grooves/GrooveShuffleBoxAdapter.js +47 -35
- package/dist/index.d.ts +20 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -3
- package/dist/modular/abstract.js +37 -24
- package/dist/modular/connection.js +20 -7
- package/dist/modular/connector.js +29 -16
- package/dist/modular/modular.js +49 -36
- package/dist/modular/modules/audio-input.js +17 -4
- package/dist/modular/modules/audio-output.js +17 -4
- package/dist/modular/modules/delay.js +24 -11
- package/dist/modular/modules/gain.js +24 -11
- package/dist/modular/modules/multiplier.js +21 -8
- package/dist/modular/user-interface.js +25 -12
- package/dist/preset/PresetDecoder.d.ts +11 -0
- package/dist/preset/PresetDecoder.d.ts.map +1 -0
- package/dist/preset/PresetDecoder.js +154 -0
- package/dist/preset/PresetEncoder.d.ts +5 -0
- package/dist/preset/PresetEncoder.d.ts.map +1 -0
- package/dist/preset/PresetEncoder.js +19 -0
- package/dist/preset/PresetHeader.d.ts +5 -0
- package/dist/preset/PresetHeader.d.ts.map +1 -0
- package/dist/preset/PresetHeader.js +5 -0
- package/dist/project/ProjectQueries.d.ts +5 -0
- package/dist/project/ProjectQueries.d.ts.map +1 -0
- package/dist/project/ProjectQueries.js +10 -0
- package/dist/project/ProjectSkeleton.d.ts +10 -1
- package/dist/project/ProjectSkeleton.d.ts.map +1 -1
- package/dist/project/ProjectSkeleton.js +100 -1
- package/dist/project/ProjectUtils.d.ts +13 -0
- package/dist/project/ProjectUtils.d.ts.map +1 -0
- package/dist/project/ProjectUtils.js +142 -0
- package/dist/protocols.d.ts.map +1 -1
- package/dist/selection/FilteredSelection.js +47 -34
- package/dist/selection/VertexSelection.js +66 -55
- package/dist/soundfont/SoundfontFileBoxAdapter.js +21 -8
- package/dist/timeline/MarkerBoxAdapter.js +33 -20
- package/dist/timeline/MarkerTrackAdapter.js +34 -22
- package/dist/timeline/TimelineBoxAdapter.js +24 -11
- package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TrackBoxAdapter.js +97 -85
- package/dist/timeline/TrackClips.js +27 -14
- package/dist/timeline/TrackRegions.js +40 -27
- package/dist/timeline/TrackType.d.ts +1 -1
- package/dist/timeline/TrackType.d.ts.map +1 -1
- package/dist/timeline/TrackType.js +1 -1
- package/dist/timeline/clip/AudioClipBoxAdapter.js +66 -53
- package/dist/timeline/clip/NoteClipBoxAdapter.js +66 -53
- package/dist/timeline/clip/ValueClipBoxAdapter.js +67 -54
- package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +85 -73
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.js +53 -40
- package/dist/timeline/event/NoteEventBoxAdapter.js +43 -30
- package/dist/timeline/event/ValueEventBoxAdapter.js +67 -54
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +17 -9
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/AudioRegionBoxAdapter.js +149 -83
- package/dist/timeline/region/MutableRegion.d.ts +8 -0
- package/dist/timeline/region/MutableRegion.d.ts.map +1 -0
- package/dist/timeline/region/MutableRegion.js +1 -0
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts +6 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.js +78 -61
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts +6 -1
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/ValueRegionBoxAdapter.js +79 -62
- package/package.json +8 -8
- package/dist/IconSymbol.d.ts +0 -126
- package/dist/IconSymbol.d.ts.map +0 -1
- package/dist/IconSymbol.js +0 -126
- package/dist/UpdateClockRate.d.ts +0 -2
- package/dist/UpdateClockRate.d.ts.map +0 -1
- package/dist/UpdateClockRate.js +0 -2
- package/dist/project/ProjectDecoder.d.ts +0 -10
- package/dist/project/ProjectDecoder.d.ts.map +0 -1
- package/dist/project/ProjectDecoder.js +0 -36
|
@@ -1,88 +1,100 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _SoundfontDeviceBoxAdapter_instances, _SoundfontDeviceBoxAdapter_terminator, _SoundfontDeviceBoxAdapter_context, _SoundfontDeviceBoxAdapter_box, _SoundfontDeviceBoxAdapter_parametric, _SoundfontDeviceBoxAdapter_loader, _SoundfontDeviceBoxAdapter_soundfont, _SoundfontDeviceBoxAdapter_preset, _SoundfontDeviceBoxAdapter_loaderSubscription, _SoundfontDeviceBoxAdapter_wrapParameters, _SoundfontDeviceBoxAdapter_loaderObserver;
|
|
1
13
|
import { MutableObservableOption, Terminable, Terminator } from "@opendaw/lib-std";
|
|
2
14
|
import { Devices } from "../../DeviceAdapter";
|
|
3
15
|
import { ParameterAdapterSet } from "../../ParameterAdapterSet";
|
|
4
16
|
import { TrackType } from "../../timeline/TrackType";
|
|
5
17
|
export class SoundfontDeviceBoxAdapter {
|
|
6
|
-
type = "instrument";
|
|
7
|
-
accepts = "midi";
|
|
8
|
-
#terminator = new Terminator();
|
|
9
|
-
#context;
|
|
10
|
-
#box;
|
|
11
|
-
#parametric;
|
|
12
|
-
namedParameter; // let typescript infer the type
|
|
13
|
-
#loader;
|
|
14
|
-
#soundfont;
|
|
15
|
-
#preset;
|
|
16
|
-
#loaderSubscription = Terminable.Empty;
|
|
17
18
|
constructor(context, box) {
|
|
18
|
-
this
|
|
19
|
-
this
|
|
20
|
-
this
|
|
21
|
-
this
|
|
22
|
-
this
|
|
23
|
-
this
|
|
24
|
-
this
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
_SoundfontDeviceBoxAdapter_instances.add(this);
|
|
20
|
+
this.type = "instrument";
|
|
21
|
+
this.accepts = "midi";
|
|
22
|
+
_SoundfontDeviceBoxAdapter_terminator.set(this, new Terminator());
|
|
23
|
+
_SoundfontDeviceBoxAdapter_context.set(this, void 0);
|
|
24
|
+
_SoundfontDeviceBoxAdapter_box.set(this, void 0);
|
|
25
|
+
_SoundfontDeviceBoxAdapter_parametric.set(this, void 0);
|
|
26
|
+
_SoundfontDeviceBoxAdapter_loader.set(this, void 0);
|
|
27
|
+
_SoundfontDeviceBoxAdapter_soundfont.set(this, void 0);
|
|
28
|
+
_SoundfontDeviceBoxAdapter_preset.set(this, void 0);
|
|
29
|
+
_SoundfontDeviceBoxAdapter_loaderSubscription.set(this, Terminable.Empty);
|
|
30
|
+
_SoundfontDeviceBoxAdapter_loaderObserver.set(this, (loader) => loader.match({
|
|
31
|
+
none: () => {
|
|
32
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").clear();
|
|
33
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f").clear();
|
|
34
|
+
},
|
|
35
|
+
some: loader => loader.soundfont.match({
|
|
36
|
+
none: () => {
|
|
37
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").clear();
|
|
38
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f").clear();
|
|
39
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_loaderSubscription, "f").terminate();
|
|
40
|
+
__classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_loaderSubscription, loader.subscribe(state => {
|
|
41
|
+
if (state.type === "loaded") {
|
|
42
|
+
const soundfont = loader.soundfont.unwrap();
|
|
43
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").wrap(soundfont.presets[this.presetIndex] ?? soundfont.presets[0]);
|
|
44
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f").wrap(soundfont);
|
|
45
|
+
}
|
|
46
|
+
else if (state.type === "error") {
|
|
47
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").clear();
|
|
48
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f").clear();
|
|
49
|
+
}
|
|
50
|
+
else if (state.type === "idle") {
|
|
51
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").clear();
|
|
52
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f").clear();
|
|
53
|
+
}
|
|
54
|
+
}), "f");
|
|
55
|
+
},
|
|
56
|
+
some: soundfont => {
|
|
57
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f").wrap(soundfont);
|
|
58
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").wrap(soundfont.presets[this.presetIndex] ?? soundfont.presets[0]);
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
}));
|
|
62
|
+
__classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_context, context, "f");
|
|
63
|
+
__classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_box, box, "f");
|
|
64
|
+
__classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_parametric, new ParameterAdapterSet(__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_context, "f")), "f");
|
|
65
|
+
this.namedParameter = __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_instances, "m", _SoundfontDeviceBoxAdapter_wrapParameters).call(this, box);
|
|
66
|
+
__classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_loader, new MutableObservableOption(), "f");
|
|
67
|
+
__classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_soundfont, new MutableObservableOption(), "f");
|
|
68
|
+
__classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_preset, new MutableObservableOption(), "f");
|
|
69
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_terminator, "f").ownAll(__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_loader, "f").subscribe(__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_loaderObserver, "f")), __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").file.catchupAndSubscribe(({ targetVertex }) => __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_loader, "f").wrapOption(targetVertex.map(({ box }) => context.soundfontManager.getOrCreate(box.address.uuid)))), __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").presetIndex.catchupAndSubscribe(owner => __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f").match({
|
|
70
|
+
none: () => __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").clear(),
|
|
71
|
+
some: soundfont => __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f").wrap(soundfont.presets[owner.getValue()] ?? soundfont.presets[0])
|
|
28
72
|
})));
|
|
29
73
|
}
|
|
30
|
-
get loader() { return this
|
|
31
|
-
get soundfont() { return this
|
|
32
|
-
get preset() { return this
|
|
33
|
-
get presetIndex() { return this
|
|
34
|
-
get box() { return this
|
|
35
|
-
get uuid() { return this
|
|
36
|
-
get address() { return this
|
|
37
|
-
get labelField() { return this
|
|
38
|
-
get iconField() { return this
|
|
74
|
+
get loader() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_loader, "f"); }
|
|
75
|
+
get soundfont() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_soundfont, "f"); }
|
|
76
|
+
get preset() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_preset, "f"); }
|
|
77
|
+
get presetIndex() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").presetIndex.getValue(); }
|
|
78
|
+
get box() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f"); }
|
|
79
|
+
get uuid() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").address.uuid; }
|
|
80
|
+
get address() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").address; }
|
|
81
|
+
get labelField() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").label; }
|
|
82
|
+
get iconField() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").icon; }
|
|
39
83
|
get defaultTrackType() { return TrackType.Notes; }
|
|
40
|
-
get enabledField() { return this
|
|
41
|
-
get minimizedField() { return this
|
|
84
|
+
get enabledField() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").enabled; }
|
|
85
|
+
get minimizedField() { return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").minimized; }
|
|
42
86
|
get acceptsMidiEvents() { return true; }
|
|
43
87
|
deviceHost() {
|
|
44
|
-
return this
|
|
45
|
-
.adapterFor(this
|
|
88
|
+
return __classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_context, "f").boxAdapters
|
|
89
|
+
.adapterFor(__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_box, "f").host.targetVertex.unwrap("no device-host").box, Devices.isHost);
|
|
46
90
|
}
|
|
47
91
|
audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
|
|
48
92
|
terminate() {
|
|
49
|
-
this
|
|
50
|
-
this
|
|
51
|
-
this
|
|
52
|
-
}
|
|
53
|
-
#wrapParameters(_box) {
|
|
54
|
-
return {};
|
|
93
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_loaderSubscription, "f").terminate();
|
|
94
|
+
__classPrivateFieldSet(this, _SoundfontDeviceBoxAdapter_loaderSubscription, Terminable.Empty, "f");
|
|
95
|
+
__classPrivateFieldGet(this, _SoundfontDeviceBoxAdapter_parametric, "f").terminate();
|
|
55
96
|
}
|
|
56
|
-
#loaderObserver = (loader) => loader.match({
|
|
57
|
-
none: () => {
|
|
58
|
-
this.#preset.clear();
|
|
59
|
-
this.#soundfont.clear();
|
|
60
|
-
},
|
|
61
|
-
some: loader => loader.soundfont.match({
|
|
62
|
-
none: () => {
|
|
63
|
-
this.#preset.clear();
|
|
64
|
-
this.#soundfont.clear();
|
|
65
|
-
this.#loaderSubscription.terminate();
|
|
66
|
-
this.#loaderSubscription = loader.subscribe(state => {
|
|
67
|
-
if (state.type === "loaded") {
|
|
68
|
-
const soundfont = loader.soundfont.unwrap();
|
|
69
|
-
this.#preset.wrap(soundfont.presets[this.presetIndex] ?? soundfont.presets[0]);
|
|
70
|
-
this.#soundfont.wrap(soundfont);
|
|
71
|
-
}
|
|
72
|
-
else if (state.type === "error") {
|
|
73
|
-
this.#preset.clear();
|
|
74
|
-
this.#soundfont.clear();
|
|
75
|
-
}
|
|
76
|
-
else if (state.type === "idle") {
|
|
77
|
-
this.#preset.clear();
|
|
78
|
-
this.#soundfont.clear();
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
},
|
|
82
|
-
some: soundfont => {
|
|
83
|
-
this.#soundfont.wrap(soundfont);
|
|
84
|
-
this.#preset.wrap(soundfont.presets[this.presetIndex] ?? soundfont.presets[0]);
|
|
85
|
-
}
|
|
86
|
-
})
|
|
87
|
-
});
|
|
88
97
|
}
|
|
98
|
+
_SoundfontDeviceBoxAdapter_terminator = new WeakMap(), _SoundfontDeviceBoxAdapter_context = new WeakMap(), _SoundfontDeviceBoxAdapter_box = new WeakMap(), _SoundfontDeviceBoxAdapter_parametric = new WeakMap(), _SoundfontDeviceBoxAdapter_loader = new WeakMap(), _SoundfontDeviceBoxAdapter_soundfont = new WeakMap(), _SoundfontDeviceBoxAdapter_preset = new WeakMap(), _SoundfontDeviceBoxAdapter_loaderSubscription = new WeakMap(), _SoundfontDeviceBoxAdapter_loaderObserver = new WeakMap(), _SoundfontDeviceBoxAdapter_instances = new WeakSet(), _SoundfontDeviceBoxAdapter_wrapParameters = function _SoundfontDeviceBoxAdapter_wrapParameters(_box) {
|
|
99
|
+
return {};
|
|
100
|
+
};
|
|
@@ -1,41 +1,53 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _TapeDeviceBoxAdapter_instances, _TapeDeviceBoxAdapter_context, _TapeDeviceBoxAdapter_box, _TapeDeviceBoxAdapter_parametric, _TapeDeviceBoxAdapter_wrapParameters;
|
|
1
13
|
import { StringMapping, ValueMapping } from "@opendaw/lib-std";
|
|
2
14
|
import { Devices } from "../../DeviceAdapter";
|
|
3
15
|
import { ParameterAdapterSet } from "../../ParameterAdapterSet";
|
|
4
16
|
import { TrackType } from "../../timeline/TrackType";
|
|
5
17
|
export class TapeDeviceBoxAdapter {
|
|
6
|
-
type = "instrument";
|
|
7
|
-
accepts = "audio";
|
|
8
|
-
#context;
|
|
9
|
-
#box;
|
|
10
|
-
#parametric;
|
|
11
|
-
namedParameter; // let typescript infer the type
|
|
12
18
|
constructor(context, box) {
|
|
13
|
-
this
|
|
14
|
-
this
|
|
15
|
-
this
|
|
16
|
-
this
|
|
19
|
+
_TapeDeviceBoxAdapter_instances.add(this);
|
|
20
|
+
this.type = "instrument";
|
|
21
|
+
this.accepts = "audio";
|
|
22
|
+
_TapeDeviceBoxAdapter_context.set(this, void 0);
|
|
23
|
+
_TapeDeviceBoxAdapter_box.set(this, void 0);
|
|
24
|
+
_TapeDeviceBoxAdapter_parametric.set(this, void 0);
|
|
25
|
+
__classPrivateFieldSet(this, _TapeDeviceBoxAdapter_context, context, "f");
|
|
26
|
+
__classPrivateFieldSet(this, _TapeDeviceBoxAdapter_box, box, "f");
|
|
27
|
+
__classPrivateFieldSet(this, _TapeDeviceBoxAdapter_parametric, new ParameterAdapterSet(__classPrivateFieldGet(this, _TapeDeviceBoxAdapter_context, "f")), "f");
|
|
28
|
+
this.namedParameter = __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_instances, "m", _TapeDeviceBoxAdapter_wrapParameters).call(this, box);
|
|
17
29
|
}
|
|
18
|
-
get box() { return this
|
|
19
|
-
get uuid() { return this
|
|
20
|
-
get address() { return this
|
|
21
|
-
get labelField() { return this
|
|
22
|
-
get iconField() { return this
|
|
30
|
+
get box() { return __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_box, "f"); }
|
|
31
|
+
get uuid() { return __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_box, "f").address.uuid; }
|
|
32
|
+
get address() { return __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_box, "f").address; }
|
|
33
|
+
get labelField() { return __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_box, "f").label; }
|
|
34
|
+
get iconField() { return __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_box, "f").icon; }
|
|
23
35
|
get defaultTrackType() { return TrackType.Audio; }
|
|
24
|
-
get enabledField() { return this
|
|
25
|
-
get minimizedField() { return this
|
|
36
|
+
get enabledField() { return __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_box, "f").enabled; }
|
|
37
|
+
get minimizedField() { return __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_box, "f").minimized; }
|
|
26
38
|
get acceptsMidiEvents() { return false; }
|
|
27
39
|
deviceHost() {
|
|
28
|
-
return this
|
|
29
|
-
.adapterFor(this
|
|
40
|
+
return __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_context, "f").boxAdapters
|
|
41
|
+
.adapterFor(__classPrivateFieldGet(this, _TapeDeviceBoxAdapter_box, "f").host.targetVertex.unwrap("no device-host").box, Devices.isHost);
|
|
30
42
|
}
|
|
31
43
|
audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
|
|
32
|
-
terminate() { this
|
|
33
|
-
#wrapParameters(box) {
|
|
34
|
-
return {
|
|
35
|
-
flutter: this.#parametric.createParameter(box.flutter, ValueMapping.unipolar(), StringMapping.percent(), "flutter"),
|
|
36
|
-
wow: this.#parametric.createParameter(box.wow, ValueMapping.unipolar(), StringMapping.percent(), "wow"),
|
|
37
|
-
noise: this.#parametric.createParameter(box.noise, ValueMapping.unipolar(), StringMapping.percent(), "noise"),
|
|
38
|
-
saturation: this.#parametric.createParameter(box.saturation, ValueMapping.unipolar(), StringMapping.percent(), "saturation")
|
|
39
|
-
};
|
|
40
|
-
}
|
|
44
|
+
terminate() { __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_parametric, "f").terminate(); }
|
|
41
45
|
}
|
|
46
|
+
_TapeDeviceBoxAdapter_context = new WeakMap(), _TapeDeviceBoxAdapter_box = new WeakMap(), _TapeDeviceBoxAdapter_parametric = new WeakMap(), _TapeDeviceBoxAdapter_instances = new WeakSet(), _TapeDeviceBoxAdapter_wrapParameters = function _TapeDeviceBoxAdapter_wrapParameters(box) {
|
|
47
|
+
return {
|
|
48
|
+
flutter: __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_parametric, "f").createParameter(box.flutter, ValueMapping.unipolar(), StringMapping.percent(), "flutter"),
|
|
49
|
+
wow: __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_parametric, "f").createParameter(box.wow, ValueMapping.unipolar(), StringMapping.percent(), "wow"),
|
|
50
|
+
noise: __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_parametric, "f").createParameter(box.noise, ValueMapping.unipolar(), StringMapping.percent(), "noise"),
|
|
51
|
+
saturation: __classPrivateFieldGet(this, _TapeDeviceBoxAdapter_parametric, "f").createParameter(box.saturation, ValueMapping.unipolar(), StringMapping.percent(), "saturation")
|
|
52
|
+
};
|
|
53
|
+
};
|
|
@@ -10,15 +10,37 @@ export declare class VaporisateurDeviceBoxAdapter implements InstrumentDeviceBox
|
|
|
10
10
|
readonly type = "instrument";
|
|
11
11
|
readonly accepts = "midi";
|
|
12
12
|
readonly namedParameter: {
|
|
13
|
-
readonly
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
readonly oscillators: {
|
|
14
|
+
waveform: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
15
|
+
volume: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
16
|
+
octave: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
17
|
+
tune: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
18
|
+
}[];
|
|
19
|
+
readonly noise: {
|
|
20
|
+
readonly volume: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
21
|
+
readonly attack: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
22
|
+
readonly hold: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
23
|
+
readonly release: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
24
|
+
};
|
|
25
|
+
readonly filterOrder: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
17
26
|
readonly cutoff: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
18
27
|
readonly resonance: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
19
28
|
readonly attack: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
29
|
+
readonly decay: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
30
|
+
readonly sustain: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
20
31
|
readonly release: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
21
32
|
readonly filterEnvelope: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
33
|
+
readonly filterKeyboard: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
34
|
+
readonly voicingMode: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
35
|
+
readonly glideTime: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
36
|
+
readonly unisonCount: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
37
|
+
readonly unisonDetune: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
38
|
+
readonly unisonStereo: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
39
|
+
readonly lfoWaveform: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
40
|
+
readonly lfoRate: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
41
|
+
readonly lfoTargetTune: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
42
|
+
readonly lfoTargetVolume: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
43
|
+
readonly lfoTargetCutoff: import("../..").AutomatableParameterFieldAdapter<number>;
|
|
22
44
|
};
|
|
23
45
|
constructor(context: BoxAdaptersContext, box: VaporisateurDeviceBox);
|
|
24
46
|
get box(): VaporisateurDeviceBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VaporisateurDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/instruments/VaporisateurDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAC,UAAU,EAAW,0BAA0B,EAAC,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;
|
|
1
|
+
{"version":3,"file":"VaporisateurDeviceBoxAdapter.d.ts","sourceRoot":"","sources":["../../../src/devices/instruments/VaporisateurDeviceBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,IAAI,EAAe,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAC,UAAU,EAAW,0BAA0B,EAAC,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAA;AAIxE,qBAAa,4BAA6B,YAAW,0BAA0B;;IAC3E,QAAQ,CAAC,IAAI,gBAAe;IAC5B,QAAQ,CAAC,OAAO,UAAS;IAMzB,QAAQ,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAA;gBAEX,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,qBAAqB;IAOnE,IAAI,GAAG,IAAI,qBAAqB,CAAmB;IACnD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,SAAS,IAAI,WAAW,CAAwB;IACpD,IAAI,gBAAgB,IAAI,SAAS,CAAyB;IAC1D,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,iBAAiB,IAAI,OAAO,CAAc;IAE9C,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAE1C,SAAS,IAAI,IAAI;CAuHpB"}
|
|
@@ -1,46 +1,83 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _VaporisateurDeviceBoxAdapter_instances, _VaporisateurDeviceBoxAdapter_context, _VaporisateurDeviceBoxAdapter_box, _VaporisateurDeviceBoxAdapter_parametric, _VaporisateurDeviceBoxAdapter_wrapParameters;
|
|
1
13
|
import { StringMapping, ValueMapping } from "@opendaw/lib-std";
|
|
2
14
|
import { Devices } from "../../DeviceAdapter";
|
|
3
15
|
import { ParameterAdapterSet } from "../../ParameterAdapterSet";
|
|
4
16
|
import { TrackType } from "../../timeline/TrackType";
|
|
17
|
+
import { VoicingMode } from "@opendaw/studio-enums";
|
|
18
|
+
import { VaporisateurSettings } from "./VaporisateurSettings";
|
|
5
19
|
export class VaporisateurDeviceBoxAdapter {
|
|
6
|
-
type = "instrument";
|
|
7
|
-
accepts = "midi";
|
|
8
|
-
#context;
|
|
9
|
-
#box;
|
|
10
|
-
#parametric;
|
|
11
|
-
namedParameter; // let typescript infer the type
|
|
12
20
|
constructor(context, box) {
|
|
13
|
-
this
|
|
14
|
-
this
|
|
15
|
-
this
|
|
16
|
-
this
|
|
21
|
+
_VaporisateurDeviceBoxAdapter_instances.add(this);
|
|
22
|
+
this.type = "instrument";
|
|
23
|
+
this.accepts = "midi";
|
|
24
|
+
_VaporisateurDeviceBoxAdapter_context.set(this, void 0);
|
|
25
|
+
_VaporisateurDeviceBoxAdapter_box.set(this, void 0);
|
|
26
|
+
_VaporisateurDeviceBoxAdapter_parametric.set(this, void 0);
|
|
27
|
+
__classPrivateFieldSet(this, _VaporisateurDeviceBoxAdapter_context, context, "f");
|
|
28
|
+
__classPrivateFieldSet(this, _VaporisateurDeviceBoxAdapter_box, box, "f");
|
|
29
|
+
__classPrivateFieldSet(this, _VaporisateurDeviceBoxAdapter_parametric, new ParameterAdapterSet(__classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_context, "f")), "f");
|
|
30
|
+
this.namedParameter = __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_instances, "m", _VaporisateurDeviceBoxAdapter_wrapParameters).call(this, box);
|
|
17
31
|
}
|
|
18
|
-
get box() { return this
|
|
19
|
-
get uuid() { return this
|
|
20
|
-
get address() { return this
|
|
21
|
-
get labelField() { return this
|
|
22
|
-
get iconField() { return this
|
|
32
|
+
get box() { return __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_box, "f"); }
|
|
33
|
+
get uuid() { return __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_box, "f").address.uuid; }
|
|
34
|
+
get address() { return __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_box, "f").address; }
|
|
35
|
+
get labelField() { return __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_box, "f").label; }
|
|
36
|
+
get iconField() { return __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_box, "f").icon; }
|
|
23
37
|
get defaultTrackType() { return TrackType.Notes; }
|
|
24
|
-
get enabledField() { return this
|
|
25
|
-
get minimizedField() { return this
|
|
38
|
+
get enabledField() { return __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_box, "f").enabled; }
|
|
39
|
+
get minimizedField() { return __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_box, "f").minimized; }
|
|
26
40
|
get acceptsMidiEvents() { return true; }
|
|
27
41
|
deviceHost() {
|
|
28
|
-
return this
|
|
29
|
-
.adapterFor(this
|
|
42
|
+
return __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_context, "f").boxAdapters
|
|
43
|
+
.adapterFor(__classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_box, "f").host.targetVertex.unwrap("no device-host").box, Devices.isHost);
|
|
30
44
|
}
|
|
31
45
|
audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
|
|
32
|
-
terminate() { this
|
|
33
|
-
#wrapParameters(box) {
|
|
34
|
-
return {
|
|
35
|
-
volume: this.#parametric.createParameter(box.volume, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db", fractionDigits: 1 }), "volume"),
|
|
36
|
-
octave: this.#parametric.createParameter(box.octave, ValueMapping.linearInteger(-3, 3), StringMapping.numeric(), "octave", 0.5),
|
|
37
|
-
tune: this.#parametric.createParameter(box.tune, ValueMapping.linear(-1200.0, +1200.0), StringMapping.numeric({ unit: "cent", fractionDigits: 0 }), "tune", 0.5),
|
|
38
|
-
waveform: this.#parametric.createParameter(box.waveform, ValueMapping.linearInteger(0, 3), StringMapping.indices("", ["sine", "triangle", "sawtooth", "square"]), "waveform"),
|
|
39
|
-
cutoff: this.#parametric.createParameter(box.cutoff, ValueMapping.exponential(20.0, 18_000.0), StringMapping.numeric({ unit: "Hz" }), "cutoff"),
|
|
40
|
-
resonance: this.#parametric.createParameter(box.resonance, ValueMapping.exponential(0.01, 10.0), StringMapping.numeric({ unit: "q", fractionDigits: 3 }), "resonance"),
|
|
41
|
-
attack: this.#parametric.createParameter(box.attack, ValueMapping.exponential(0.001, 1.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "attack"),
|
|
42
|
-
release: this.#parametric.createParameter(box.release, ValueMapping.exponential(0.001, 1.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "release"),
|
|
43
|
-
filterEnvelope: this.#parametric.createParameter(box.filterEnvelope, ValueMapping.linear(-0.5, 0.5), StringMapping.percent(), "filter env", 0.5)
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
+
terminate() { __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").terminate(); }
|
|
46
47
|
}
|
|
48
|
+
_VaporisateurDeviceBoxAdapter_context = new WeakMap(), _VaporisateurDeviceBoxAdapter_box = new WeakMap(), _VaporisateurDeviceBoxAdapter_parametric = new WeakMap(), _VaporisateurDeviceBoxAdapter_instances = new WeakSet(), _VaporisateurDeviceBoxAdapter_wrapParameters = function _VaporisateurDeviceBoxAdapter_wrapParameters(box) {
|
|
49
|
+
const VoiceModes = [VoicingMode.Monophonic, VoicingMode.Polyphonic];
|
|
50
|
+
return {
|
|
51
|
+
oscillators: box.oscillators.fields().map(osc => ({
|
|
52
|
+
waveform: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(osc.waveform, ValueMapping.linearInteger(0, 3), StringMapping.indices("", ["Sine", "Triangle", "Sawtooth", "Square"]), "Waveform"),
|
|
53
|
+
volume: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(osc.volume, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db", fractionDigits: 1 }), "Volume"),
|
|
54
|
+
octave: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(osc.octave, ValueMapping.linearInteger(-3, 3), StringMapping.numeric({ unit: "oct" }), "Octave", 0.5),
|
|
55
|
+
tune: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(osc.tune, ValueMapping.linear(-1200.0, +1200.0), StringMapping.numeric({ unit: "ct", fractionDigits: 0 }), "Tune", 0.5)
|
|
56
|
+
})),
|
|
57
|
+
noise: {
|
|
58
|
+
volume: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.noise.volume, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: "db", fractionDigits: 1 }), "Volume"),
|
|
59
|
+
attack: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.noise.attack, ValueMapping.exponential(0.001, 5.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "Attack"),
|
|
60
|
+
hold: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.noise.hold, ValueMapping.exponential(0.001, 5.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "Hold"),
|
|
61
|
+
release: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.noise.release, ValueMapping.exponential(0.001, 5.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "Release")
|
|
62
|
+
},
|
|
63
|
+
filterOrder: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.filterOrder, VaporisateurSettings.FILTER_ORDER_VALUE_MAPPING, VaporisateurSettings.FILTER_ORDER_STRING_MAPPING, "Flt. Order"),
|
|
64
|
+
cutoff: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.cutoff, VaporisateurSettings.CUTOFF_VALUE_MAPPING, VaporisateurSettings.CUTOFF_STRING_MAPPING, "Flt. Cutoff"),
|
|
65
|
+
resonance: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.resonance, ValueMapping.exponential(0.01, 10.0), StringMapping.numeric({ unit: "q", fractionDigits: 3 }), "Flt. Q"),
|
|
66
|
+
attack: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.attack, ValueMapping.exponential(0.001, 5.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "Attack"),
|
|
67
|
+
decay: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.decay, ValueMapping.exponential(0.001, 5.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "Decay"),
|
|
68
|
+
sustain: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.sustain, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 1 }), "Sustain"),
|
|
69
|
+
release: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.release, ValueMapping.exponential(0.001, 5.0), StringMapping.numeric({ unit: "s", fractionDigits: 3 }), "Release"),
|
|
70
|
+
filterEnvelope: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.filterEnvelope, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 1 }), "Flt. Env.", 0.5),
|
|
71
|
+
filterKeyboard: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.filterKeyboard, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 1 }), "Flt. Kbd.", 0.5),
|
|
72
|
+
voicingMode: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.voicingMode, ValueMapping.values(VoiceModes), StringMapping.values("", VoiceModes, ["mono", "poly"]), "Play Mode", 0.5),
|
|
73
|
+
glideTime: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.glideTime, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 1 }), "Glide time", 0.0),
|
|
74
|
+
unisonCount: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.unisonCount, ValueMapping.values([1, 3, 5]), StringMapping.values("#", [1, 3, 5], [1, 3, 5].map(x => String(x))), "Unisono", 0.0),
|
|
75
|
+
unisonDetune: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.unisonDetune, ValueMapping.exponential(1.0, 1200.0), StringMapping.numeric({ unit: "ct", fractionDigits: 0 }), "Detune", 0.0),
|
|
76
|
+
unisonStereo: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.unisonStereo, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 0 }), "Stereo", 0.0),
|
|
77
|
+
lfoWaveform: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.lfo.waveform, VaporisateurSettings.LFO_WAVEFORM_VALUE_MAPPING, VaporisateurSettings.LFO_WAVEFORM_STRING_MAPPING, "LFO Shape", 0.0),
|
|
78
|
+
lfoRate: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.lfo.rate, ValueMapping.exponential(0.0001, 30.0), StringMapping.numeric({ unit: "Hz", fractionDigits: 1, unitPrefix: true }), "Rate", 0.0),
|
|
79
|
+
lfoTargetTune: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.lfo.targetTune, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 1 }), "Vibrato ⦿", 0.5),
|
|
80
|
+
lfoTargetVolume: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.lfo.targetVolume, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 1 }), "Tremolo ⦿", 0.5),
|
|
81
|
+
lfoTargetCutoff: __classPrivateFieldGet(this, _VaporisateurDeviceBoxAdapter_parametric, "f").createParameter(box.lfo.targetCutoff, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 1 }), "Cutoff ⦿", 0.5)
|
|
82
|
+
};
|
|
83
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { StringMapping, ValueMapping } from "@opendaw/lib-std";
|
|
2
|
+
import { ClassicWaveform } from "@opendaw/lib-dsp";
|
|
3
|
+
export declare const VaporisateurSettings: {
|
|
4
|
+
MIN_CUTOFF: number;
|
|
5
|
+
MAX_CUTOFF: number;
|
|
6
|
+
CUTOFF_VALUE_MAPPING: ValueMapping<number>;
|
|
7
|
+
CUTOFF_STRING_MAPPING: StringMapping<number>;
|
|
8
|
+
FILTER_ORDER_VALUES: number[];
|
|
9
|
+
FILTER_ORDER_STRINGS: string[];
|
|
10
|
+
FILTER_ORDER_VALUE_MAPPING: ValueMapping<number>;
|
|
11
|
+
FILTER_ORDER_STRING_MAPPING: StringMapping<number>;
|
|
12
|
+
LFO_WAVEFORM_VALUES: ClassicWaveform[];
|
|
13
|
+
LFO_WAVEFORM_STRINGS: string[];
|
|
14
|
+
LFO_WAVEFORM_VALUE_MAPPING: ValueMapping<ClassicWaveform>;
|
|
15
|
+
LFO_WAVEFORM_STRING_MAPPING: StringMapping<ClassicWaveform>;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=VaporisateurSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaporisateurSettings.d.ts","sourceRoot":"","sources":["../../../src/devices/instruments/VaporisateurSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAA;AAEhD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;CAqB7B,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StringMapping, ValueMapping } from "@opendaw/lib-std";
|
|
2
|
+
import { ClassicWaveform } from "@opendaw/lib-dsp";
|
|
3
|
+
export const VaporisateurSettings = (() => {
|
|
4
|
+
const MIN_CUTOFF = 20.0;
|
|
5
|
+
const MAX_CUTOFF = 20000;
|
|
6
|
+
const FILTER_ORDER_VALUES = [1, 2, 3, 4];
|
|
7
|
+
const FILTER_ORDER_STRINGS = ["12", "24", "36", "48"];
|
|
8
|
+
const LFO_WAVEFORM_VALUES = [ClassicWaveform.sine, ClassicWaveform.triangle, ClassicWaveform.saw, ClassicWaveform.square];
|
|
9
|
+
const LFO_WAVEFORM_STRINGS = ["Sine", "Triangle", "Saw", "Square"];
|
|
10
|
+
return {
|
|
11
|
+
MIN_CUTOFF,
|
|
12
|
+
MAX_CUTOFF,
|
|
13
|
+
CUTOFF_VALUE_MAPPING: ValueMapping.exponential(MIN_CUTOFF, MAX_CUTOFF),
|
|
14
|
+
CUTOFF_STRING_MAPPING: StringMapping.numeric({ unit: "Hz" }),
|
|
15
|
+
FILTER_ORDER_VALUES,
|
|
16
|
+
FILTER_ORDER_STRINGS,
|
|
17
|
+
FILTER_ORDER_VALUE_MAPPING: ValueMapping.values(FILTER_ORDER_VALUES),
|
|
18
|
+
FILTER_ORDER_STRING_MAPPING: StringMapping.values("db", FILTER_ORDER_VALUES, FILTER_ORDER_STRINGS),
|
|
19
|
+
LFO_WAVEFORM_VALUES,
|
|
20
|
+
LFO_WAVEFORM_STRINGS,
|
|
21
|
+
LFO_WAVEFORM_VALUE_MAPPING: ValueMapping.values(LFO_WAVEFORM_VALUES),
|
|
22
|
+
LFO_WAVEFORM_STRING_MAPPING: StringMapping.values("", LFO_WAVEFORM_VALUES, LFO_WAVEFORM_STRINGS)
|
|
23
|
+
};
|
|
24
|
+
})();
|
|
@@ -1,50 +1,62 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _ArpeggioDeviceBoxAdapter_instances, _a, _ArpeggioDeviceBoxAdapter_context, _ArpeggioDeviceBoxAdapter_box, _ArpeggioDeviceBoxAdapter_parametric, _ArpeggioDeviceBoxAdapter_wrapParameters;
|
|
1
13
|
import { Fraction } from "@opendaw/lib-dsp";
|
|
2
14
|
import { StringMapping, ValueMapping } from "@opendaw/lib-std";
|
|
3
15
|
import { Devices } from "../../DeviceAdapter";
|
|
4
16
|
import { ParameterAdapterSet } from "../../ParameterAdapterSet";
|
|
5
17
|
export class ArpeggioDeviceBoxAdapter {
|
|
6
|
-
static RateFractions = Fraction.builder()
|
|
7
|
-
.add([1, 1]).add([1, 2]).add([1, 3]).add([1, 4])
|
|
8
|
-
.add([3, 16]).add([1, 6]).add([1, 8]).add([3, 32])
|
|
9
|
-
.add([1, 12]).add([1, 16]).add([3, 64]).add([1, 24])
|
|
10
|
-
.add([1, 32]).add([1, 48]).add([1, 64])
|
|
11
|
-
.add([1, 96]).add([1, 128])
|
|
12
|
-
.asDescendingArray();
|
|
13
|
-
static RateStringMapping = StringMapping.indices("", this.RateFractions.map(([n, d]) => `${n}/${d}`));
|
|
14
|
-
type = "midi-effect";
|
|
15
|
-
accepts = "midi";
|
|
16
|
-
#context;
|
|
17
|
-
#box;
|
|
18
|
-
#parametric;
|
|
19
|
-
namedParameter; // let typescript infer the type
|
|
20
18
|
constructor(context, box) {
|
|
21
|
-
this
|
|
22
|
-
this
|
|
23
|
-
this
|
|
24
|
-
this
|
|
19
|
+
_ArpeggioDeviceBoxAdapter_instances.add(this);
|
|
20
|
+
this.type = "midi-effect";
|
|
21
|
+
this.accepts = "midi";
|
|
22
|
+
_ArpeggioDeviceBoxAdapter_context.set(this, void 0);
|
|
23
|
+
_ArpeggioDeviceBoxAdapter_box.set(this, void 0);
|
|
24
|
+
_ArpeggioDeviceBoxAdapter_parametric.set(this, void 0);
|
|
25
|
+
__classPrivateFieldSet(this, _ArpeggioDeviceBoxAdapter_context, context, "f");
|
|
26
|
+
__classPrivateFieldSet(this, _ArpeggioDeviceBoxAdapter_box, box, "f");
|
|
27
|
+
__classPrivateFieldSet(this, _ArpeggioDeviceBoxAdapter_parametric, new ParameterAdapterSet(__classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_context, "f")), "f");
|
|
28
|
+
this.namedParameter = __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_instances, "m", _ArpeggioDeviceBoxAdapter_wrapParameters).call(this, box);
|
|
25
29
|
}
|
|
26
|
-
get box() { return this
|
|
27
|
-
get uuid() { return this
|
|
28
|
-
get address() { return this
|
|
29
|
-
get indexField() { return this
|
|
30
|
-
get labelField() { return this
|
|
31
|
-
get enabledField() { return this
|
|
32
|
-
get minimizedField() { return this
|
|
33
|
-
get host() { return this
|
|
30
|
+
get box() { return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f"); }
|
|
31
|
+
get uuid() { return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f").address.uuid; }
|
|
32
|
+
get address() { return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f").address; }
|
|
33
|
+
get indexField() { return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f").index; }
|
|
34
|
+
get labelField() { return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f").label; }
|
|
35
|
+
get enabledField() { return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f").enabled; }
|
|
36
|
+
get minimizedField() { return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f").minimized; }
|
|
37
|
+
get host() { return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f").host; }
|
|
34
38
|
deviceHost() {
|
|
35
|
-
return this
|
|
36
|
-
.adapterFor(this
|
|
39
|
+
return __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_context, "f").boxAdapters
|
|
40
|
+
.adapterFor(__classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_box, "f").host.targetVertex.unwrap("no device-host").box, Devices.isHost);
|
|
37
41
|
}
|
|
38
42
|
audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
|
|
39
|
-
terminate() { this
|
|
40
|
-
#wrapParameters(box) {
|
|
41
|
-
return {
|
|
42
|
-
modeIndex: this.#parametric.createParameter(box.modeIndex, ValueMapping.linearInteger(0, 2), StringMapping.indices("", ["Up", "Down", "UpDown"]), "mode"),
|
|
43
|
-
numOctaves: this.#parametric.createParameter(box.numOctaves, ValueMapping.linearInteger(1, 5), StringMapping.numeric({ unit: "", fractionDigits: 0 }), "Octaves"),
|
|
44
|
-
rate: this.#parametric.createParameter(box.rateIndex, ValueMapping.linearInteger(0, ArpeggioDeviceBoxAdapter.RateFractions.length - 1), ArpeggioDeviceBoxAdapter.RateStringMapping, "Rate"),
|
|
45
|
-
gate: this.#parametric.createParameter(box.gate, ValueMapping.linear(0.0, 2.0), StringMapping.percent({ fractionDigits: 0 }), "Gate"),
|
|
46
|
-
repeat: this.#parametric.createParameter(box.repeat, ValueMapping.linearInteger(1, 16), StringMapping.numeric({ fractionDigits: 0 }), "Repeat"),
|
|
47
|
-
velocity: this.#parametric.createParameter(box.velocity, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 0, bipolar: false }), "Velocity")
|
|
48
|
-
};
|
|
49
|
-
}
|
|
43
|
+
terminate() { __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_parametric, "f").terminate(); }
|
|
50
44
|
}
|
|
45
|
+
_a = ArpeggioDeviceBoxAdapter, _ArpeggioDeviceBoxAdapter_context = new WeakMap(), _ArpeggioDeviceBoxAdapter_box = new WeakMap(), _ArpeggioDeviceBoxAdapter_parametric = new WeakMap(), _ArpeggioDeviceBoxAdapter_instances = new WeakSet(), _ArpeggioDeviceBoxAdapter_wrapParameters = function _ArpeggioDeviceBoxAdapter_wrapParameters(box) {
|
|
46
|
+
return {
|
|
47
|
+
modeIndex: __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_parametric, "f").createParameter(box.modeIndex, ValueMapping.linearInteger(0, 2), StringMapping.indices("", ["Up", "Down", "UpDown"]), "mode"),
|
|
48
|
+
numOctaves: __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_parametric, "f").createParameter(box.numOctaves, ValueMapping.linearInteger(1, 5), StringMapping.numeric({ unit: "", fractionDigits: 0 }), "Octaves"),
|
|
49
|
+
rate: __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_parametric, "f").createParameter(box.rateIndex, ValueMapping.linearInteger(0, _a.RateFractions.length - 1), _a.RateStringMapping, "Rate"),
|
|
50
|
+
gate: __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_parametric, "f").createParameter(box.gate, ValueMapping.linear(0.0, 2.0), StringMapping.percent({ fractionDigits: 0 }), "Gate"),
|
|
51
|
+
repeat: __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_parametric, "f").createParameter(box.repeat, ValueMapping.linearInteger(1, 16), StringMapping.numeric({ fractionDigits: 0 }), "Repeat"),
|
|
52
|
+
velocity: __classPrivateFieldGet(this, _ArpeggioDeviceBoxAdapter_parametric, "f").createParameter(box.velocity, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 0, bipolar: false }), "Velocity")
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
ArpeggioDeviceBoxAdapter.RateFractions = Fraction.builder()
|
|
56
|
+
.add([1, 1]).add([1, 2]).add([1, 3]).add([1, 4])
|
|
57
|
+
.add([3, 16]).add([1, 6]).add([1, 8]).add([3, 32])
|
|
58
|
+
.add([1, 12]).add([1, 16]).add([3, 64]).add([1, 24])
|
|
59
|
+
.add([1, 32]).add([1, 48]).add([1, 64])
|
|
60
|
+
.add([1, 96]).add([1, 128])
|
|
61
|
+
.asDescendingArray();
|
|
62
|
+
ArpeggioDeviceBoxAdapter.RateStringMapping = StringMapping.indices("", _a.RateFractions.map(([n, d]) => `${n}/${d}`));
|