@opendaw/studio-adapters 0.0.69 → 0.0.71
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.d.ts.map +1 -1
- package/dist/AutomatableParameterFieldAdapter.js +5 -3
- package/dist/BoxAdapters.d.ts.map +1 -1
- package/dist/BoxAdapters.js +2 -0
- package/dist/BoxAdaptersContext.d.ts +1 -2
- package/dist/BoxAdaptersContext.d.ts.map +1 -1
- package/dist/ClipSequencing.d.ts +1 -1
- package/dist/ClipSequencing.d.ts.map +1 -1
- package/dist/DeviceAdapter.d.ts +7 -6
- package/dist/DeviceAdapter.d.ts.map +1 -1
- package/dist/DeviceAdapter.js +1 -1
- package/dist/DeviceBox.d.ts +1 -1
- package/dist/DeviceBox.js +1 -1
- package/dist/EngineStateSchema.d.ts +1 -0
- package/dist/EngineStateSchema.d.ts.map +1 -1
- package/dist/EngineStateSchema.js +1 -0
- package/dist/LabeledAudioOutputsOwner.d.ts +11 -0
- package/dist/LabeledAudioOutputsOwner.d.ts.map +1 -0
- package/dist/LabeledAudioOutputsOwner.js +1 -0
- package/dist/NoteSignal.d.ts +11 -1
- package/dist/NoteSignal.d.ts.map +1 -1
- package/dist/NoteSignal.js +2 -0
- package/dist/RootBoxAdapter.d.ts +3 -1
- package/dist/RootBoxAdapter.d.ts.map +1 -1
- package/dist/RootBoxAdapter.js +10 -1
- package/dist/TempoRange.d.ts +5 -0
- package/dist/TempoRange.d.ts.map +1 -0
- package/dist/TempoRange.js +1 -0
- package/dist/Validator.d.ts +0 -2
- package/dist/Validator.d.ts.map +1 -1
- package/dist/Validator.js +4 -3
- package/dist/VaryingTempoMap.d.ts +18 -0
- package/dist/VaryingTempoMap.d.ts.map +1 -0
- package/dist/VaryingTempoMap.js +105 -0
- package/dist/audio/AudioFileBoxAdapter.js +1 -1
- package/dist/audio-unit/AudioBusBoxAdapter.d.ts +3 -1
- package/dist/audio-unit/AudioBusBoxAdapter.d.ts.map +1 -1
- package/dist/audio-unit/AudioBusBoxAdapter.js +4 -0
- package/dist/audio-unit/AudioUnitBoxAdapter.d.ts +4 -2
- package/dist/audio-unit/AudioUnitBoxAdapter.d.ts.map +1 -1
- package/dist/audio-unit/AudioUnitBoxAdapter.js +16 -2
- package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.d.ts +3 -0
- package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/CompressorDeviceBoxAdapter.js +8 -2
- package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/CrusherDeviceBoxAdapter.js +7 -2
- package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/DattorroReverbDeviceBoxAdapter.js +7 -2
- package/dist/devices/audio-effects/DelayDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/DelayDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/DelayDeviceBoxAdapter.js +7 -2
- package/dist/devices/audio-effects/FoldDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/FoldDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/FoldDeviceBoxAdapter.js +7 -2
- package/dist/devices/audio-effects/ModularDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/ModularDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/ModularDeviceBoxAdapter.js +4 -1
- package/dist/devices/audio-effects/RevampDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/RevampDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/RevampDeviceBoxAdapter.js +7 -2
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/ReverbDeviceBoxAdapter.js +7 -2
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/StereoToolDeviceBoxAdapter.js +7 -2
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/TidalDeviceBoxAdapter.js +7 -2
- package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/audio-effects/UnknownAudioEffectDeviceBoxAdapter.js +4 -0
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/MIDIOutputDeviceBoxAdapter.js +4 -1
- package/dist/devices/instruments/NanoDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/instruments/NanoDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/NanoDeviceBoxAdapter.js +7 -2
- package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts +5 -2
- package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/Playfield/PlayfieldSampleBoxAdapter.js +12 -1
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts +3 -1
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/PlayfieldDeviceBoxAdapter.js +18 -1
- package/dist/devices/instruments/SoundfontDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/instruments/SoundfontDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/SoundfontDeviceBoxAdapter.js +4 -1
- package/dist/devices/instruments/TapeDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/instruments/TapeDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/TapeDeviceBoxAdapter.js +7 -2
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts +2 -0
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.d.ts.map +1 -1
- package/dist/devices/instruments/VaporisateurDeviceBoxAdapter.js +7 -2
- package/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.d.ts +1 -1
- package/dist/devices/midi-effects/PitchDeviceBoxAdapter.d.ts +1 -1
- package/dist/devices/midi-effects/UnknownMidiEffectDeviceBoxAdapter.d.ts +1 -1
- package/dist/devices/midi-effects/VelocityDeviceBoxAdapter.d.ts +1 -1
- package/dist/devices/midi-effects/ZeitgeistDeviceBoxAdapter.d.ts +1 -1
- package/dist/editing/UserEditing.js +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/preset/PresetDecoder.d.ts.map +1 -1
- package/dist/preset/PresetDecoder.js +20 -9
- package/dist/project/ProjectSkeleton.d.ts.map +1 -1
- package/dist/project/ProjectSkeleton.js +5 -4
- package/dist/project/ProjectUtils.d.ts.map +1 -1
- package/dist/project/ProjectUtils.js +40 -10
- package/dist/selection/FilteredSelection.js +2 -2
- package/dist/selection/VertexSelection.d.ts +2 -1
- package/dist/selection/VertexSelection.d.ts.map +1 -1
- package/dist/selection/VertexSelection.js +1 -1
- package/dist/timeline/RegionBoxAdapter.d.ts +8 -0
- package/dist/timeline/RegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/SignatureEventBoxAdapter.d.ts +24 -0
- package/dist/timeline/SignatureEventBoxAdapter.d.ts.map +1 -0
- package/dist/timeline/SignatureEventBoxAdapter.js +42 -0
- package/dist/timeline/SignatureTrackAdapter.d.ts +41 -0
- package/dist/timeline/SignatureTrackAdapter.d.ts.map +1 -0
- package/dist/timeline/SignatureTrackAdapter.js +279 -0
- package/dist/timeline/TimelineBoxAdapter.d.ts +7 -2
- package/dist/timeline/TimelineBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TimelineBoxAdapter.js +52 -7
- package/dist/timeline/TrackBoxAdapter.d.ts +1 -0
- package/dist/timeline/TrackBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/TrackBoxAdapter.js +1 -0
- package/dist/timeline/clip/AudioClipBoxAdapter.d.ts +1 -2
- package/dist/timeline/clip/AudioClipBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/clip/AudioClipBoxAdapter.js +3 -4
- package/dist/timeline/collection/NoteEventCollectionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/collection/NoteEventCollectionBoxAdapter.js +10 -8
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts +2 -2
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/collection/ValueEventCollectionBoxAdapter.js +15 -8
- package/dist/timeline/event/ValueEventBoxAdapter.d.ts +1 -1
- package/dist/timeline/event/ValueEventBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts +4 -0
- package/dist/timeline/region/AudioRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/AudioRegionBoxAdapter.js +17 -17
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts +5 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/NoteRegionBoxAdapter.js +4 -0
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts +4 -0
- package/dist/timeline/region/ValueRegionBoxAdapter.d.ts.map +1 -1
- package/dist/timeline/region/ValueRegionBoxAdapter.js +4 -0
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,qBAAqB,EAIrB,QAAQ,EACR,MAAM,EAEN,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,SAAS,EACT,YAAY,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,OAAO,EAA8B,cAAc,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAiBlG,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAC7B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS;IA0D9B,mBAAmB,IAAI,UAAU;IAWjC,IAAI,KAAK,IAAI,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAqB;IACxE,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAA4B;IAC/D,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAA6B;IAClE,IAAI,IAAI,IAAI,MAAM,CAAoB;IACtC,IAAI,MAAM,IAAI,SAAS,CAAsB;IAC7C,IAAI,IAAI,IAAI,aAAa,CAA0B;IACnD,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC,CAA+B;IAEnE,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC;IAW1B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;
|
|
1
|
+
{"version":3,"file":"AutomatableParameterFieldAdapter.d.ts","sourceRoot":"","sources":["../src/AutomatableParameterFieldAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,qBAAqB,EAIrB,QAAQ,EACR,MAAM,EAEN,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,SAAS,EACT,YAAY,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,OAAO,EAA8B,cAAc,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AAQvD,qBAAa,gCAAgC,CAAC,CAAC,SAAS,eAAe,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU;;gBAiBlG,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,EAC7B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAC7B,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS;IA0D9B,mBAAmB,IAAI,UAAU;IAWjC,IAAI,KAAK,IAAI,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAqB;IACxE,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAA4B;IAC/D,IAAI,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAA6B;IAClE,IAAI,IAAI,IAAI,MAAM,CAAoB;IACtC,IAAI,MAAM,IAAI,SAAS,CAAsB;IAC7C,IAAI,IAAI,IAAI,aAAa,CAA0B;IACnD,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,KAAK,IAAI,MAAM,CAAC,eAAe,CAAC,CAA+B;IAEnE,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC;IAW1B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAIhF,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAK1F,iCAAiC,CAAC,QAAQ,EAAE,qBAAqB,GAAG,YAAY;IAMhF,QAAQ,IAAI,CAAC;IACb,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IACpC,YAAY,IAAI,SAAS;IACzB,kBAAkB,IAAI,CAAC;IACvB,sBAAsB,IAAI,SAAS;IACnC,uBAAuB,IAAI,QAAQ,CAAC,YAAY,CAAC;IACjD,aAAa,IAAI,QAAQ,CAAC,YAAY,CAAC;IACvC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWjC,KAAK,IAAI,IAAI;IAEb,SAAS,IAAI,IAAI;CAKpB"}
|
|
@@ -16,7 +16,7 @@ import { TrackBoxAdapter } from "./timeline/TrackBoxAdapter";
|
|
|
16
16
|
const ExternalControlTypes = [
|
|
17
17
|
Pointers.Automation,
|
|
18
18
|
Pointers.Modulation,
|
|
19
|
-
Pointers.
|
|
19
|
+
Pointers.MIDIControl,
|
|
20
20
|
Pointers.ParameterController
|
|
21
21
|
];
|
|
22
22
|
export class AutomatableParameterFieldAdapter {
|
|
@@ -119,7 +119,9 @@ export class AutomatableParameterFieldAdapter {
|
|
|
119
119
|
}
|
|
120
120
|
return this.getValue();
|
|
121
121
|
}
|
|
122
|
-
subscribe(observer) {
|
|
122
|
+
subscribe(observer) {
|
|
123
|
+
return __classPrivateFieldGet(this, _AutomatableParameterFieldAdapter_valueChangeNotifier, "f").subscribe(observer);
|
|
124
|
+
}
|
|
123
125
|
catchupAndSubscribe(observer) {
|
|
124
126
|
observer(this);
|
|
125
127
|
return this.subscribe(observer);
|
|
@@ -166,7 +168,7 @@ const mapPointerToControlSource = (pointer) => {
|
|
|
166
168
|
return "automated";
|
|
167
169
|
case Pointers.Modulation:
|
|
168
170
|
return "modulated";
|
|
169
|
-
case Pointers.
|
|
171
|
+
case Pointers.MIDIControl:
|
|
170
172
|
return "midi";
|
|
171
173
|
case Pointers.ParameterController:
|
|
172
174
|
return "external";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,KAAK,EAKL,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"BoxAdapters.d.ts","sourceRoot":"","sources":["../src/BoxAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,KAAK,EAKL,UAAU,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAC,GAAG,EAAS,MAAM,kBAAkB,CAAA;AAkG5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAoBvC,qBAAa,WAAY,YAAW,UAAU;;gBAO9B,OAAO,EAAE,kBAAkB;IAkBvC,SAAS,IAAI,IAAI;IAMjB,UAAU,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;CA8EtG"}
|
package/dist/BoxAdapters.js
CHANGED
|
@@ -66,6 +66,7 @@ import { AudioPitchStretchBoxAdapter } from "./audio/AudioPitchStretchBoxAdapter
|
|
|
66
66
|
import { TransientMarkerBoxAdapter } from "./audio/TransientMarkerBoxAdapter";
|
|
67
67
|
import { WarpMarkerBoxAdapter } from "./audio/WarpMarkerBoxAdapter";
|
|
68
68
|
import { AudioTimeStretchBoxAdapter } from "./audio/AudioTimeStretchBoxAdapter";
|
|
69
|
+
import { SignatureEventBoxAdapter } from "./timeline/SignatureEventBoxAdapter";
|
|
69
70
|
export class BoxAdapters {
|
|
70
71
|
constructor(context) {
|
|
71
72
|
_BoxAdapters_instances.add(this);
|
|
@@ -133,6 +134,7 @@ _BoxAdapters_context = new WeakMap(), _BoxAdapters_adapters = new WeakMap(), _Bo
|
|
|
133
134
|
visitFoldDeviceBox: (box) => new FoldDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
134
135
|
visitGrooveShuffleBox: (box) => new GrooveShuffleBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
135
136
|
visitMarkerBox: (box) => new MarkerBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
137
|
+
visitSignatureEventBox: (box) => new SignatureEventBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
136
138
|
visitMIDIOutputDeviceBox: (box) => new MIDIOutputDeviceBoxAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
137
139
|
visitModularAudioInputBox: (box) => new ModularAudioInputAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
138
140
|
visitModularAudioOutputBox: (box) => new ModularAudioOutputAdapter(__classPrivateFieldGet(this, _BoxAdapters_context, "f"), box),
|
|
@@ -8,7 +8,7 @@ import { ParameterFieldAdapters } from "./ParameterFieldAdapters";
|
|
|
8
8
|
import { BoxAdapters } from "./BoxAdapters";
|
|
9
9
|
import { SampleLoaderManager } from "./sample/SampleLoaderManager";
|
|
10
10
|
import { SoundfontLoaderManager } from "./soundfont/SoundfontLoaderManager";
|
|
11
|
-
import {
|
|
11
|
+
import { TempoMap } from "@opendaw/lib-dsp";
|
|
12
12
|
export interface BoxAdaptersContext extends Terminable {
|
|
13
13
|
get boxGraph(): BoxGraph;
|
|
14
14
|
get boxAdapters(): BoxAdapters;
|
|
@@ -20,7 +20,6 @@ export interface BoxAdaptersContext extends Terminable {
|
|
|
20
20
|
get liveStreamBroadcaster(): LiveStreamBroadcaster;
|
|
21
21
|
get clipSequencing(): ClipSequencing;
|
|
22
22
|
get parameterFieldAdapters(): ParameterFieldAdapters;
|
|
23
|
-
get signatureDuration(): ppqn;
|
|
24
23
|
get tempoMap(): TempoMap;
|
|
25
24
|
get isMainThread(): boolean;
|
|
26
25
|
get isAudioContext(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoxAdaptersContext.d.ts","sourceRoot":"","sources":["../src/BoxAdaptersContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAC,sBAAsB,EAAC,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"BoxAdaptersContext.d.ts","sourceRoot":"","sources":["../src/BoxAdaptersContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AACzC,OAAO,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAC,sBAAsB,EAAC,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAEzC,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IAClD,IAAI,QAAQ,IAAI,QAAQ,CAAA;IACxB,IAAI,WAAW,IAAI,WAAW,CAAA;IAC9B,IAAI,aAAa,IAAI,mBAAmB,CAAA;IACxC,IAAI,gBAAgB,IAAI,sBAAsB,CAAA;IAC9C,IAAI,cAAc,IAAI,cAAc,CAAA;IACpC,IAAI,kBAAkB,IAAI,kBAAkB,CAAA;IAC5C,IAAI,kBAAkB,IAAI,kBAAkB,CAAA;IAC5C,IAAI,qBAAqB,IAAI,qBAAqB,CAAA;IAClD,IAAI,cAAc,IAAI,cAAc,CAAA;IACpC,IAAI,sBAAsB,IAAI,sBAAsB,CAAA;IACpD,IAAI,QAAQ,IAAI,QAAQ,CAAA;IACxB,IAAI,YAAY,IAAI,OAAO,CAAA;IAC3B,IAAI,cAAc,IAAI,OAAO,CAAA;CAChC"}
|
package/dist/ClipSequencing.d.ts
CHANGED
|
@@ -7,6 +7,6 @@ export type Section = {
|
|
|
7
7
|
sectionTo: ppqn;
|
|
8
8
|
};
|
|
9
9
|
export interface ClipSequencing extends Terminable {
|
|
10
|
-
iterate(trackKey: UUID.Bytes, a: ppqn, b: ppqn):
|
|
10
|
+
iterate(trackKey: UUID.Bytes, a: ppqn, b: ppqn): IterableIterator<Section>;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=ClipSequencing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipSequencing.d.ts","sourceRoot":"","sources":["../src/ClipSequencing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD,MAAM,MAAM,OAAO,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAClC,WAAW,EAAE,IAAI,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"ClipSequencing.d.ts","sourceRoot":"","sources":["../src/ClipSequencing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD,MAAM,MAAM,OAAO,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAClC,WAAW,EAAE,IAAI,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAC9C,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;CAC7E"}
|
package/dist/DeviceAdapter.d.ts
CHANGED
|
@@ -6,20 +6,21 @@ import { IndexedBoxAdapterCollection } from "./IndexedBoxAdapterCollection";
|
|
|
6
6
|
import { BoxAdapter } from "./BoxAdapter";
|
|
7
7
|
import { AudioUnitInputAdapter } from "./audio-unit/AudioUnitInputAdapter";
|
|
8
8
|
import { AudioUnitBoxAdapter } from "./audio-unit/AudioUnitBoxAdapter";
|
|
9
|
+
import { LabeledAudioOutputsOwner } from "./LabeledAudioOutputsOwner";
|
|
9
10
|
export type DeviceType = "midi-effect" | "bus" | "instrument" | "audio-effect";
|
|
10
11
|
export type DeviceAccepts = "midi" | "audio" | false;
|
|
11
12
|
export declare namespace DeviceAccepts {
|
|
12
13
|
const toTrackType: (type: DeviceAccepts) => TrackType.Notes | TrackType.Audio;
|
|
13
14
|
}
|
|
14
|
-
export interface MidiEffectDeviceAdapter extends EffectDeviceBoxAdapter<Pointers.
|
|
15
|
+
export interface MidiEffectDeviceAdapter extends EffectDeviceBoxAdapter<Pointers.MIDIEffectHost> {
|
|
15
16
|
readonly type: "midi-effect";
|
|
16
17
|
readonly accepts: "midi";
|
|
17
18
|
}
|
|
18
|
-
export interface AudioEffectDeviceAdapter extends EffectDeviceBoxAdapter<Pointers.AudioEffectHost
|
|
19
|
+
export interface AudioEffectDeviceAdapter extends EffectDeviceBoxAdapter<Pointers.AudioEffectHost>, LabeledAudioOutputsOwner {
|
|
19
20
|
readonly type: "audio-effect";
|
|
20
21
|
readonly accepts: "audio";
|
|
21
22
|
}
|
|
22
|
-
export type EffectPointerType = Pointers.AudioEffectHost | Pointers.
|
|
23
|
+
export type EffectPointerType = Pointers.AudioEffectHost | Pointers.MIDIEffectHost;
|
|
23
24
|
export interface EffectDeviceBoxAdapter<P extends EffectPointerType = EffectPointerType> extends DeviceBoxAdapter {
|
|
24
25
|
readonly type: "audio-effect" | "midi-effect";
|
|
25
26
|
readonly accepts: "audio" | "midi";
|
|
@@ -27,15 +28,15 @@ export interface EffectDeviceBoxAdapter<P extends EffectPointerType = EffectPoin
|
|
|
27
28
|
get enabledField(): BooleanField;
|
|
28
29
|
get host(): PointerField<P>;
|
|
29
30
|
}
|
|
30
|
-
export interface InstrumentDeviceBoxAdapter extends DeviceBoxAdapter {
|
|
31
|
+
export interface InstrumentDeviceBoxAdapter extends DeviceBoxAdapter, LabeledAudioOutputsOwner {
|
|
31
32
|
readonly type: "instrument";
|
|
32
33
|
get iconField(): StringField;
|
|
33
34
|
get defaultTrackType(): TrackType;
|
|
34
35
|
get acceptsMidiEvents(): boolean;
|
|
35
36
|
}
|
|
36
|
-
export interface DeviceHost extends BoxAdapter {
|
|
37
|
+
export interface DeviceHost extends BoxAdapter, LabeledAudioOutputsOwner {
|
|
37
38
|
readonly class: "device-host";
|
|
38
|
-
get midiEffects(): IndexedBoxAdapterCollection<MidiEffectDeviceAdapter, Pointers.
|
|
39
|
+
get midiEffects(): IndexedBoxAdapterCollection<MidiEffectDeviceAdapter, Pointers.MIDIEffectHost>;
|
|
39
40
|
get inputAdapter(): Option<AudioUnitInputAdapter>;
|
|
40
41
|
get audioEffects(): IndexedBoxAdapterCollection<AudioEffectDeviceAdapter, Pointers.AudioEffectHost>;
|
|
41
42
|
get inputField(): Field<Pointers.InstrumentHost | Pointers.AudioOutput>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceAdapter.d.ts","sourceRoot":"","sources":["../src/DeviceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAChG,OAAO,EAAiB,UAAU,EAAO,MAAM,EAAc,MAAM,kBAAkB,CAAA;AACrF,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"DeviceAdapter.d.ts","sourceRoot":"","sources":["../src/DeviceAdapter.ts"],"names":[],"mappings":"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"}
|
package/dist/DeviceAdapter.js
CHANGED
|
@@ -35,7 +35,7 @@ export var Devices;
|
|
|
35
35
|
const targets = device.accepts === "audio"
|
|
36
36
|
? device.deviceHost().audioEffects.field().pointerHub.filter(Pointers.AudioEffectHost)
|
|
37
37
|
: device.accepts === "midi"
|
|
38
|
-
? device.deviceHost().midiEffects.field().pointerHub.filter(Pointers.
|
|
38
|
+
? device.deviceHost().midiEffects.field().pointerHub.filter(Pointers.MIDIEffectHost)
|
|
39
39
|
: panic("unknown type");
|
|
40
40
|
targets.map(({ box }) => DeviceBoxUtils.lookupIndexField(box))
|
|
41
41
|
.filter(index => devices.some(device => UUID.Comparator(device.uuid, index.address.uuid) !== 0))
|
package/dist/DeviceBox.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export type InstrumentDeviceBox = {
|
|
|
11
11
|
host: PointerField<Pointers.InstrumentHost>;
|
|
12
12
|
} & DeviceBox;
|
|
13
13
|
export type EffectDeviceBox = {
|
|
14
|
-
host: PointerField<Pointers.AudioEffectHost | Pointers.
|
|
14
|
+
host: PointerField<Pointers.AudioEffectHost | Pointers.MIDIEffectHost>;
|
|
15
15
|
index: Int32Field;
|
|
16
16
|
} & DeviceBox;
|
|
17
17
|
export declare namespace DeviceBoxUtils {
|
package/dist/DeviceBox.js
CHANGED
|
@@ -9,7 +9,7 @@ export var DeviceBoxUtils;
|
|
|
9
9
|
"minimized" in box && isInstanceOf(box.minimized, BooleanField);
|
|
10
10
|
DeviceBoxUtils.isInstrumentDeviceBox = (box) => DeviceBoxUtils.isDeviceBox(box) && box.host.pointerType === Pointers.InstrumentHost;
|
|
11
11
|
DeviceBoxUtils.isEffectDeviceBox = (box) => DeviceBoxUtils.isDeviceBox(box) && "index" in box && isInstanceOf(box.index, Int32Field) &&
|
|
12
|
-
(box.host.pointerType === Pointers.
|
|
12
|
+
(box.host.pointerType === Pointers.MIDIEffectHost || box.host.pointerType === Pointers.AudioEffectHost);
|
|
13
13
|
DeviceBoxUtils.lookupHostField = (box) => isDefined(box) && "host" in box && isInstanceOf(box.host, PointerField)
|
|
14
14
|
? box.host : panic(`Could not find 'host' field in '${box?.name}'`);
|
|
15
15
|
DeviceBoxUtils.lookupLabelField = (box) => isDefined(box) && "label" in box && isInstanceOf(box.label, StringField)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EngineStateSchema.d.ts","sourceRoot":"","sources":["../src/EngineStateSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAEvC,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"EngineStateSchema.d.ts","sourceRoot":"","sources":["../src/EngineStateSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAEvC,eAAO,MAAM,iBAAiB;;;;;;;;EAQ5B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Address } from "@opendaw/lib-box";
|
|
2
|
+
import { Option, Provider } from "@opendaw/lib-std";
|
|
3
|
+
export type LabeledAudioOutput = {
|
|
4
|
+
readonly address: Address;
|
|
5
|
+
readonly label: string;
|
|
6
|
+
readonly children: Provider<Option<Iterable<LabeledAudioOutput>>>;
|
|
7
|
+
};
|
|
8
|
+
export interface LabeledAudioOutputsOwner {
|
|
9
|
+
labeledAudioOutputs(): Iterable<LabeledAudioOutput>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=LabeledAudioOutputsOwner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabeledAudioOutputsOwner.d.ts","sourceRoot":"","sources":["../src/LabeledAudioOutputsOwner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;CACpE,CAAA;AAED,MAAM,WAAW,wBAAwB;IACrC,mBAAmB,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CACtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/NoteSignal.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { byte, unitValue, UUID } from "@opendaw/lib-std";
|
|
2
|
+
import { ppqn } from "@opendaw/lib-dsp";
|
|
2
3
|
export type NoteSignalOn = {
|
|
3
4
|
type: "note-on";
|
|
4
5
|
uuid: UUID.Bytes;
|
|
@@ -10,12 +11,21 @@ export type NoteSignalOff = {
|
|
|
10
11
|
uuid: UUID.Bytes;
|
|
11
12
|
pitch: byte;
|
|
12
13
|
};
|
|
13
|
-
export type
|
|
14
|
+
export type NoteSignalAudition = {
|
|
15
|
+
type: "note-audition";
|
|
16
|
+
uuid: UUID.Bytes;
|
|
17
|
+
duration: ppqn;
|
|
18
|
+
pitch: byte;
|
|
19
|
+
velocity: unitValue;
|
|
20
|
+
};
|
|
21
|
+
export type NoteSignal = NoteSignalOn | NoteSignalOff | NoteSignalAudition;
|
|
14
22
|
export declare namespace NoteSignal {
|
|
15
23
|
const on: (uuid: UUID.Bytes, pitch: byte, velocity: unitValue) => NoteSignalOn;
|
|
16
24
|
const off: (uuid: UUID.Bytes, pitch: byte) => NoteSignalOff;
|
|
25
|
+
const audition: (uuid: UUID.Bytes, pitch: byte, duration: ppqn, velocity: unitValue) => NoteSignalAudition;
|
|
17
26
|
const isOn: (signal: NoteSignal) => signal is NoteSignalOn;
|
|
18
27
|
const isOff: (signal: NoteSignal) => signal is NoteSignalOff;
|
|
28
|
+
const isAudition: (signal: NoteSignal) => signal is NoteSignalAudition;
|
|
19
29
|
const fromEvent: (event: MIDIMessageEvent, uuid: UUID.Bytes) => NoteSignal;
|
|
20
30
|
}
|
|
21
31
|
//# sourceMappingURL=NoteSignal.d.ts.map
|
package/dist/NoteSignal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoteSignal.d.ts","sourceRoot":"","sources":["../src/NoteSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"NoteSignal.d.ts","sourceRoot":"","sources":["../src/NoteSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAS,SAAS,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAErC,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAA;AAElG,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,CAAA;AAE/E,MAAM,MAAM,kBAAkB,GAAG;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,SAAS,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,kBAAkB,CAAA;AAE1E,yBAAiB,UAAU,CAAC;IACjB,MAAM,EAAE,GAAI,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,UAAU,SAAS,KAAG,YAC1B,CAAA;IACvC,MAAM,GAAG,GAAI,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,KAAG,aACf,CAAA;IAC9B,MAAM,QAAQ,GAAI,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,UAAU,IAAI,EAAE,UAAU,SAAS,KAAG,kBAChC,CAAA;IAEvD,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,MAAM,IAAI,YAAyC,CAAA;IACtF,MAAM,KAAK,GAAI,QAAQ,UAAU,KAAG,MAAM,IAAI,aAA2C,CAAA;IACzF,MAAM,UAAU,GAAI,QAAQ,UAAU,KAAG,MAAM,IAAI,kBAAqD,CAAA;IAExG,MAAM,SAAS,GAAI,OAAO,gBAAgB,EAAE,MAAM,IAAI,CAAC,KAAK,KAAG,UAWrE,CAAA;CACJ"}
|
package/dist/NoteSignal.js
CHANGED
|
@@ -4,8 +4,10 @@ export var NoteSignal;
|
|
|
4
4
|
(function (NoteSignal) {
|
|
5
5
|
NoteSignal.on = (uuid, pitch, velocity) => ({ type: "note-on", uuid, pitch, velocity });
|
|
6
6
|
NoteSignal.off = (uuid, pitch) => ({ type: "note-off", uuid, pitch });
|
|
7
|
+
NoteSignal.audition = (uuid, pitch, duration, velocity) => ({ type: "note-audition", uuid, pitch, duration, velocity });
|
|
7
8
|
NoteSignal.isOn = (signal) => signal.type === "note-on";
|
|
8
9
|
NoteSignal.isOff = (signal) => signal.type === "note-off";
|
|
10
|
+
NoteSignal.isAudition = (signal) => signal.type === "note-audition";
|
|
9
11
|
NoteSignal.fromEvent = (event, uuid) => {
|
|
10
12
|
const data = event.data;
|
|
11
13
|
if (MidiData.isNoteOn(data)) {
|
package/dist/RootBoxAdapter.d.ts
CHANGED
|
@@ -12,7 +12,8 @@ import { BoxAdapter } from "./BoxAdapter";
|
|
|
12
12
|
import { TimelineBoxAdapter } from "./timeline/TimelineBoxAdapter";
|
|
13
13
|
import { GrooveShuffleBoxAdapter } from "./grooves/GrooveShuffleBoxAdapter";
|
|
14
14
|
import { PianoModeAdapter } from "./PianoModeAdapter";
|
|
15
|
-
|
|
15
|
+
import { LabeledAudioOutput, LabeledAudioOutputsOwner } from "./LabeledAudioOutputsOwner";
|
|
16
|
+
export declare class RootBoxAdapter implements BoxAdapter, LabeledAudioOutputsOwner {
|
|
16
17
|
#private;
|
|
17
18
|
constructor(context: BoxAdaptersContext, box: RootBox);
|
|
18
19
|
get uuid(): UUID.Bytes;
|
|
@@ -26,6 +27,7 @@ export declare class RootBoxAdapter implements BoxAdapter {
|
|
|
26
27
|
get pianoMode(): PianoModeAdapter;
|
|
27
28
|
get created(): Date;
|
|
28
29
|
get midiOutputDevices(): ReadonlyArray<MIDIOutputBox>;
|
|
30
|
+
labeledAudioOutputs(): Iterable<LabeledAudioOutput>;
|
|
29
31
|
terminate(): void;
|
|
30
32
|
}
|
|
31
33
|
//# sourceMappingURL=RootBoxAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RootBoxAdapter.d.ts","sourceRoot":"","sources":["../src/RootBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"RootBoxAdapter.d.ts","sourceRoot":"","sources":["../src/RootBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAuB,IAAI,EAAC,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AACvC,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAC,uBAAuB,EAAC,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAC,MAAM,4BAA4B,CAAA;AAEvF,qBAAa,cAAe,YAAW,UAAU,EAAE,wBAAwB;;gBAQ3D,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO;IAarD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,GAAG,IAAI,OAAO,CAAmB;IACrC,IAAI,WAAW,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,CAA2B;IACtF,IAAI,UAAU,IAAI,2BAA2B,CAAC,mBAAmB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAA0B;IACjH,IAAI,KAAK,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAI5C;IACD,IAAI,MAAM,IAAI,uBAAuB,CAGpC;IACD,IAAI,QAAQ,IAAI,kBAAkB,CAGjC;IACD,IAAI,SAAS,IAAI,gBAAgB,CAAyB;IAC1D,IAAI,OAAO,IAAI,IAAI,CAAgD;IACnE,IAAI,iBAAiB,IAAI,aAAa,CAAC,aAAa,CAAC,CAEpD;IAEC,mBAAmB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAUrD,SAAS,IAAI,IAAI;CACpB"}
|
package/dist/RootBoxAdapter.js
CHANGED
|
@@ -11,7 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
11
11
|
};
|
|
12
12
|
var _RootBoxAdapter_context, _RootBoxAdapter_box, _RootBoxAdapter_audioUnits, _RootBoxAdapter_audioBusses, _RootBoxAdapter_pianoMode;
|
|
13
13
|
import { MIDIOutputBox } from "@opendaw/studio-boxes";
|
|
14
|
-
import { asInstanceOf } from "@opendaw/lib-std";
|
|
14
|
+
import { asInstanceOf, Option } from "@opendaw/lib-std";
|
|
15
15
|
import { AudioBusBoxAdapter } from "./audio-unit/AudioBusBoxAdapter";
|
|
16
16
|
import { Pointers } from "@opendaw/studio-enums";
|
|
17
17
|
import { IndexedBoxAdapterCollection } from "./IndexedBoxAdapterCollection";
|
|
@@ -56,6 +56,15 @@ export class RootBoxAdapter {
|
|
|
56
56
|
get midiOutputDevices() {
|
|
57
57
|
return __classPrivateFieldGet(this, _RootBoxAdapter_box, "f").outputMidiDevices.pointerHub.incoming().map(({ box }) => asInstanceOf(box, MIDIOutputBox));
|
|
58
58
|
}
|
|
59
|
+
*labeledAudioOutputs() {
|
|
60
|
+
for (const audioUnit of __classPrivateFieldGet(this, _RootBoxAdapter_audioUnits, "f").adapters()) {
|
|
61
|
+
yield {
|
|
62
|
+
label: audioUnit.label,
|
|
63
|
+
address: audioUnit.address,
|
|
64
|
+
children: () => Option.wrap(audioUnit.labeledAudioOutputs())
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
59
68
|
terminate() { __classPrivateFieldGet(this, _RootBoxAdapter_audioUnits, "f").terminate(); }
|
|
60
69
|
}
|
|
61
70
|
_RootBoxAdapter_context = new WeakMap(), _RootBoxAdapter_box = new WeakMap(), _RootBoxAdapter_audioUnits = new WeakMap(), _RootBoxAdapter_audioBusses = new WeakMap(), _RootBoxAdapter_pianoMode = new WeakMap();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TempoRange.d.ts","sourceRoot":"","sources":["../src/TempoRange.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;CAAgC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const TempoRange = { min: 30, max: 1000 };
|
package/dist/Validator.d.ts
CHANGED
|
@@ -2,8 +2,6 @@ import { BoxGraph } from "@opendaw/lib-box";
|
|
|
2
2
|
import { Attempt, int } from "@opendaw/lib-std";
|
|
3
3
|
export declare namespace Validator {
|
|
4
4
|
const isTimeSignatureValid: (numerator: int, denominator: int) => Attempt<[int, int], string>;
|
|
5
|
-
const MIN_BPM = 30;
|
|
6
|
-
const MAX_BPM = 1000;
|
|
7
5
|
const clampBpm: (bpm: number) => number;
|
|
8
6
|
const hasOverlappingRegions: (boxGraph: BoxGraph) => boolean;
|
|
9
7
|
}
|
package/dist/Validator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAS,OAAO,EAAmB,GAAG,EAAC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"Validator.d.ts","sourceRoot":"","sources":["../src/Validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAS,OAAO,EAAmB,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAKtE,yBAAiB,SAAS,CAAC;IAChB,MAAM,oBAAoB,GAAI,WAAW,GAAG,EAAE,aAAa,GAAG,KAAG,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAQjG,CAAA;IAEM,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,MAE5B,CAAA;IAEJ,MAAM,qBAAqB,GAAI,UAAU,QAAQ,KAAG,OAe3C,CAAA;CACnB"}
|
package/dist/Validator.js
CHANGED
|
@@ -2,6 +2,7 @@ import { AudioRegionBox } from "@opendaw/studio-boxes";
|
|
|
2
2
|
import { Arrays, Attempts, clamp } from "@opendaw/lib-std";
|
|
3
3
|
import { UnionBoxTypes } from "./unions";
|
|
4
4
|
import { TimeBase } from "@opendaw/lib-dsp";
|
|
5
|
+
import { TempoRange } from "./TempoRange";
|
|
5
6
|
export var Validator;
|
|
6
7
|
(function (Validator) {
|
|
7
8
|
Validator.isTimeSignatureValid = (numerator, denominator) => {
|
|
@@ -13,9 +14,9 @@ export var Validator;
|
|
|
13
14
|
}
|
|
14
15
|
return Attempts.ok([numerator, denominator]);
|
|
15
16
|
};
|
|
16
|
-
Validator.
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
Validator.clampBpm = (bpm) => Number.isFinite(bpm)
|
|
18
|
+
? clamp(bpm, TempoRange.min, TempoRange.max)
|
|
19
|
+
: 120.0;
|
|
19
20
|
Validator.hasOverlappingRegions = (boxGraph) => boxGraph.boxes()
|
|
20
21
|
.some(box => box.accept({
|
|
21
22
|
visitTrackBox: (box) => {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { bpm, ppqn, seconds, TempoMap } from "@opendaw/lib-dsp";
|
|
2
|
+
import { Observer, Subscription } from "@opendaw/lib-std";
|
|
3
|
+
import { TimelineBoxAdapter } from "./timeline/TimelineBoxAdapter";
|
|
4
|
+
/**
|
|
5
|
+
* TempoMap implementation that handles varying tempo (tempo automation).
|
|
6
|
+
* Steps through at TempoChangeGrid intervals to match BlockRenderer behavior.
|
|
7
|
+
*/
|
|
8
|
+
export declare class VaryingTempoMap implements TempoMap {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(adapter: TimelineBoxAdapter);
|
|
11
|
+
getTempoAt(position: ppqn): bpm;
|
|
12
|
+
ppqnToSeconds(position: ppqn): seconds;
|
|
13
|
+
secondsToPPQN(time: seconds): ppqn;
|
|
14
|
+
intervalToSeconds(fromPPQN: ppqn, toPPQN: ppqn): seconds;
|
|
15
|
+
intervalToPPQN(fromSeconds: seconds, toSeconds: seconds): ppqn;
|
|
16
|
+
subscribe(observer: Observer<TempoMap>): Subscription;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=VaryingTempoMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VaryingTempoMap.d.ts","sourceRoot":"","sources":["../src/VaryingTempoMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,IAAI,EAAQ,OAAO,EAAmB,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAC,QAAQ,EAAgB,YAAY,EAAa,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAA;AAEhE;;;GAGG;AACH,qBAAa,eAAgB,YAAW,QAAQ;;gBAGhC,OAAO,EAAE,kBAAkB;IAIvC,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,GAAG;IAQ/B,aAAa,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO;IAItC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IA+BlC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO;IAwBxD,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAQ9D,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,YAAY;CAQxD"}
|
|
@@ -0,0 +1,105 @@
|
|
|
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 _VaryingTempoMap_instances, _VaryingTempoMap_adapter, _VaryingTempoMap_absoluteSecondsToPPQN;
|
|
13
|
+
import { PPQN, TempoChangeGrid } from "@opendaw/lib-dsp";
|
|
14
|
+
import { quantizeCeil, Terminator } from "@opendaw/lib-std";
|
|
15
|
+
/**
|
|
16
|
+
* TempoMap implementation that handles varying tempo (tempo automation).
|
|
17
|
+
* Steps through at TempoChangeGrid intervals to match BlockRenderer behavior.
|
|
18
|
+
*/
|
|
19
|
+
export class VaryingTempoMap {
|
|
20
|
+
constructor(adapter) {
|
|
21
|
+
_VaryingTempoMap_instances.add(this);
|
|
22
|
+
_VaryingTempoMap_adapter.set(this, void 0);
|
|
23
|
+
__classPrivateFieldSet(this, _VaryingTempoMap_adapter, adapter, "f");
|
|
24
|
+
}
|
|
25
|
+
getTempoAt(position) {
|
|
26
|
+
const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
|
|
27
|
+
return __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents.mapOr(collection => collection.valueAt(position, storageBpm), storageBpm);
|
|
28
|
+
}
|
|
29
|
+
ppqnToSeconds(position) {
|
|
30
|
+
return this.intervalToSeconds(0, position);
|
|
31
|
+
}
|
|
32
|
+
secondsToPPQN(time) {
|
|
33
|
+
return __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, time);
|
|
34
|
+
}
|
|
35
|
+
intervalToSeconds(fromPPQN, toPPQN) {
|
|
36
|
+
if (fromPPQN >= toPPQN) {
|
|
37
|
+
return 0.0;
|
|
38
|
+
}
|
|
39
|
+
const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
|
|
40
|
+
const tempoEvents = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents;
|
|
41
|
+
if (tempoEvents.isEmpty()) {
|
|
42
|
+
return PPQN.pulsesToSeconds(toPPQN - fromPPQN, storageBpm);
|
|
43
|
+
}
|
|
44
|
+
const collection = tempoEvents.unwrap();
|
|
45
|
+
if (collection.events.isEmpty()) {
|
|
46
|
+
return PPQN.pulsesToSeconds(toPPQN - fromPPQN, storageBpm);
|
|
47
|
+
}
|
|
48
|
+
let totalSeconds = 0.0;
|
|
49
|
+
let currentPPQN = fromPPQN;
|
|
50
|
+
while (currentPPQN < toPPQN) {
|
|
51
|
+
const currentBpm = collection.valueAt(currentPPQN, storageBpm);
|
|
52
|
+
const nextGrid = quantizeCeil(currentPPQN, TempoChangeGrid);
|
|
53
|
+
const segmentEnd = nextGrid <= currentPPQN ? nextGrid + TempoChangeGrid : nextGrid;
|
|
54
|
+
const actualEnd = Math.min(segmentEnd, toPPQN);
|
|
55
|
+
totalSeconds += PPQN.pulsesToSeconds(actualEnd - currentPPQN, currentBpm);
|
|
56
|
+
currentPPQN = actualEnd;
|
|
57
|
+
}
|
|
58
|
+
return totalSeconds;
|
|
59
|
+
}
|
|
60
|
+
intervalToPPQN(fromSeconds, toSeconds) {
|
|
61
|
+
if (fromSeconds >= toSeconds) {
|
|
62
|
+
return 0.0;
|
|
63
|
+
}
|
|
64
|
+
// Find PPQN positions for both absolute times, return the difference
|
|
65
|
+
const fromPPQN = __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, fromSeconds);
|
|
66
|
+
const toPPQN = __classPrivateFieldGet(this, _VaryingTempoMap_instances, "m", _VaryingTempoMap_absoluteSecondsToPPQN).call(this, toSeconds);
|
|
67
|
+
return toPPQN - fromPPQN;
|
|
68
|
+
}
|
|
69
|
+
subscribe(observer) {
|
|
70
|
+
const terminator = new Terminator();
|
|
71
|
+
terminator.ownAll(__classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.subscribe(() => observer(this)), __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").catchupAndSubscribeTempoAutomation(() => observer(this)));
|
|
72
|
+
return terminator;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
_VaryingTempoMap_adapter = new WeakMap(), _VaryingTempoMap_instances = new WeakSet(), _VaryingTempoMap_absoluteSecondsToPPQN = function _VaryingTempoMap_absoluteSecondsToPPQN(targetSeconds) {
|
|
76
|
+
if (targetSeconds <= 0) {
|
|
77
|
+
return 0.0;
|
|
78
|
+
}
|
|
79
|
+
const storageBpm = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").box.bpm.getValue();
|
|
80
|
+
const tempoEvents = __classPrivateFieldGet(this, _VaryingTempoMap_adapter, "f").tempoTrackEvents;
|
|
81
|
+
if (tempoEvents.isEmpty()) {
|
|
82
|
+
return PPQN.secondsToPulses(targetSeconds, storageBpm);
|
|
83
|
+
}
|
|
84
|
+
const collection = tempoEvents.unwrap();
|
|
85
|
+
if (collection.events.isEmpty()) {
|
|
86
|
+
return PPQN.secondsToPulses(targetSeconds, storageBpm);
|
|
87
|
+
}
|
|
88
|
+
let accumulatedSeconds = 0.0;
|
|
89
|
+
let accumulatedPPQN = 0.0;
|
|
90
|
+
while (accumulatedSeconds < targetSeconds) {
|
|
91
|
+
const currentBpm = collection.valueAt(accumulatedPPQN, storageBpm);
|
|
92
|
+
const nextGrid = quantizeCeil(accumulatedPPQN, TempoChangeGrid);
|
|
93
|
+
const segmentEnd = nextGrid <= accumulatedPPQN ? nextGrid + TempoChangeGrid : nextGrid;
|
|
94
|
+
const segmentPPQN = segmentEnd - accumulatedPPQN;
|
|
95
|
+
const segmentSeconds = PPQN.pulsesToSeconds(segmentPPQN, currentBpm);
|
|
96
|
+
if (accumulatedSeconds + segmentSeconds >= targetSeconds) {
|
|
97
|
+
const remainingSeconds = targetSeconds - accumulatedSeconds;
|
|
98
|
+
accumulatedPPQN += PPQN.secondsToPulses(remainingSeconds, currentBpm);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
accumulatedSeconds += segmentSeconds;
|
|
102
|
+
accumulatedPPQN = segmentEnd;
|
|
103
|
+
}
|
|
104
|
+
return accumulatedPPQN;
|
|
105
|
+
};
|
|
@@ -2,10 +2,11 @@ import { Address, BooleanField, StringField } from "@opendaw/lib-box";
|
|
|
2
2
|
import { Observer, Subscription, UUID } from "@opendaw/lib-std";
|
|
3
3
|
import { AudioBusBox } from "@opendaw/studio-boxes";
|
|
4
4
|
import { DeviceBoxAdapter, DeviceHost } from "../DeviceAdapter";
|
|
5
|
+
import { LabeledAudioOutput, LabeledAudioOutputsOwner } from "../LabeledAudioOutputsOwner";
|
|
5
6
|
import { BoxAdaptersContext } from "../BoxAdaptersContext";
|
|
6
7
|
import { AudioUnitBoxAdapter } from "./AudioUnitBoxAdapter";
|
|
7
8
|
import { IconSymbol } from "@opendaw/studio-enums";
|
|
8
|
-
export declare class AudioBusBoxAdapter implements DeviceBoxAdapter {
|
|
9
|
+
export declare class AudioBusBoxAdapter implements DeviceBoxAdapter, LabeledAudioOutputsOwner {
|
|
9
10
|
#private;
|
|
10
11
|
readonly type = "bus";
|
|
11
12
|
readonly accepts = "audio";
|
|
@@ -22,6 +23,7 @@ export declare class AudioBusBoxAdapter implements DeviceBoxAdapter {
|
|
|
22
23
|
get iconSymbol(): IconSymbol;
|
|
23
24
|
deviceHost(): DeviceHost;
|
|
24
25
|
audioUnitBoxAdapter(): AudioUnitBoxAdapter;
|
|
26
|
+
labeledAudioOutputs(): Iterable<LabeledAudioOutput>;
|
|
25
27
|
terminate(): void;
|
|
26
28
|
toString(): string;
|
|
27
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioBusBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioBusBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAe,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"AudioBusBoxAdapter.d.ts","sourceRoot":"","sources":["../../src/audio-unit/AudioBusBoxAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAe,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAC,QAAQ,EAAU,YAAY,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAC,gBAAgB,EAAE,UAAU,EAAU,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAC,kBAAkB,EAAE,wBAAwB,EAAC,MAAM,6BAA6B,CAAA;AACxF,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAEhD,qBAAa,kBAAmB,YAAW,gBAAgB,EAAE,wBAAwB;;IACjF,QAAQ,CAAC,IAAI,SAAQ;IACrB,QAAQ,CAAC,OAAO,WAAU;gBAKd,OAAO,EAAE,kBAAkB,EAAE,GAAG,EAAE,WAAW;IAKzD,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY;IAK3D,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAgC;IACtD,IAAI,OAAO,IAAI,OAAO,CAA2B;IACjD,IAAI,GAAG,IAAI,WAAW,CAAmB;IACzC,IAAI,YAAY,IAAI,YAAY,CAA2B;IAC3D,IAAI,cAAc,IAAI,YAAY,CAA6B;IAC/D,IAAI,SAAS,IAAI,WAAW,CAAwB;IACpD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,UAAU,IAAI,WAAW,CAAyB;IACtD,IAAI,UAAU,IAAI,UAAU,CAAuE;IAEnG,UAAU,IAAI,UAAU;IAKxB,mBAAmB,IAAI,mBAAmB;IAEzC,mBAAmB,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAIpD,SAAS,IAAI,IAAI;IAEjB,QAAQ,IAAI,MAAM;CACrB"}
|
|
@@ -11,6 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
11
11
|
};
|
|
12
12
|
var _AudioBusBoxAdapter_context, _AudioBusBoxAdapter_box;
|
|
13
13
|
import { Propagation } from "@opendaw/lib-box";
|
|
14
|
+
import { Option } from "@opendaw/lib-std";
|
|
14
15
|
import { Devices } from "../DeviceAdapter";
|
|
15
16
|
import { IconSymbol } from "@opendaw/studio-enums";
|
|
16
17
|
export class AudioBusBoxAdapter {
|
|
@@ -40,6 +41,9 @@ export class AudioBusBoxAdapter {
|
|
|
40
41
|
.adapterFor(__classPrivateFieldGet(this, _AudioBusBoxAdapter_box, "f").output.targetVertex.unwrap("No AudioUnitBox found").box, Devices.isHost);
|
|
41
42
|
}
|
|
42
43
|
audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }
|
|
44
|
+
*labeledAudioOutputs() {
|
|
45
|
+
yield { address: this.address, label: this.labelField.getValue(), children: () => Option.None };
|
|
46
|
+
}
|
|
43
47
|
terminate() { }
|
|
44
48
|
toString() { return `{${this.constructor.name}}`; }
|
|
45
49
|
}
|