@opendaw/studio-core 0.0.7 → 0.0.8
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/EngineWorklet.d.ts +0 -2
- package/dist/EngineWorklet.d.ts.map +1 -1
- package/dist/EngineWorklet.js +0 -4
- package/dist/MeterWorklet.d.ts +1 -4
- package/dist/MeterWorklet.d.ts.map +1 -1
- package/dist/MeterWorklet.js +1 -8
- package/dist/RecordingWorklet.d.ts +2 -5
- package/dist/RecordingWorklet.d.ts.map +1 -1
- package/dist/RecordingWorklet.js +2 -13
- package/dist/RenderQuantum.d.ts +2 -0
- package/dist/RenderQuantum.d.ts.map +1 -0
- package/dist/RenderQuantum.js +1 -0
- package/dist/Worklets.d.ts +3 -9
- package/dist/Worklets.d.ts.map +1 -1
- package/dist/Worklets.js +13 -18
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/processors.js +6 -0
- package/dist/processors.js.map +7 -0
- package/package.json +20 -24
- package/dist/WorkletFactory.d.ts +0 -8
- package/dist/WorkletFactory.d.ts.map +0 -1
- package/dist/WorkletFactory.js +0 -9
- package/dist/engine-processor.js +0 -6
- package/dist/engine-processor.js.map +0 -7
- package/dist/meter-processor.js +0 -2
- package/dist/meter-processor.js.map +0 -7
- package/dist/recording-processor.js +0 -4
- package/dist/recording-processor.js.map +0 -7
@@ -1,7 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"version": 3,
|
3
|
-
"sources": ["../../../lib/std/dist/lang.js", "../../../lib/std/dist/arrays.js", "../../../lib/std/dist/option.js", "../../../lib/std/dist/attempts.js", "../../../lib/std/dist/binary-search.js", "../../../lib/std/dist/cache.js", "../../../lib/std/dist/color.js", "../../../lib/std/dist/comparators.js", "../../../lib/std/dist/math.js", "../../../lib/std/dist/curve.js", "../../../lib/std/dist/numeric.js", "../../../lib/std/dist/iterables.js", "../../../lib/std/dist/data.js", "../../../lib/std/dist/decorators.js", "../../../lib/std/dist/generators.js", "../../../lib/std/dist/geom.js", "../../../lib/std/dist/hash.js", "../../../lib/std/dist/intervals.js", "../../../lib/std/dist/listeners.js", "../../../lib/std/dist/sets.js", "../../../lib/std/dist/objects.js", "../../../lib/std/dist/terminable.js", "../../../lib/std/dist/observers.js", "../../../lib/std/dist/value-mapping.js", "../../../lib/std/dist/string-mapping.js", "../../../lib/std/dist/predicates.js", "../../../lib/std/dist/progress.js", "../../../lib/std/dist/random.js", "../../../lib/std/dist/schema.js", "../../../lib/std/dist/sorted-set.js", "../../../lib/std/dist/strings.js", "../../../lib/std/dist/time-span.js", "../../../lib/std/dist/sync-stream.js", "../../../lib/std/dist/uuid.js", "../../../lib/std/dist/value-guides.js", "../../../lib/std/dist/index.js", "../../enums/dist/Pointers.js", "../../enums/dist/AudioUnitType.js", "../../../lib/box/dist/address.js", "../../../lib/box/dist/pointer-hub.js", "../../../lib/box/dist/field.js", "../../../lib/box/dist/vertex.js", "../../../lib/box/dist/array.js", "../../../lib/box/dist/serializer.js", "../../../lib/box/dist/box.js", "../../../lib/box/dist/dispatchers.js", "../../../lib/box/dist/primitive.js", "../../../lib/box/dist/updates.js", "../../../lib/box/dist/pointer.js", "../../../lib/box/dist/graph-edges.js", "../../../lib/box/dist/graph.js", "../../../lib/box/dist/object.js", "../../../lib/runtime/dist/communicator.js", "../../../lib/runtime/dist/fetch.js", "../../../lib/runtime/dist/runtime.js", "../../../lib/runtime/dist/promises.js", "../../../lib/runtime/dist/network.js", "../../../lib/runtime/dist/timespan.js", "../../../lib/runtime/dist/wait.js", "../../../lib/runtime/dist/index.js", "../../../lib/box/dist/index.js", "../../adapters/dist/IndexComparator.js", "../../adapters/dist/SortedBoxAdapterCollection.js", "../../../lib/dsp/dist/bpm-tools.js", "../../../lib/dsp/dist/chords.js", "../../../lib/dsp/dist/events.js", "../../../lib/dsp/dist/ppqn.js", "../../../lib/dsp/dist/fractions.js", "../../../lib/dsp/dist/grooves.js", "../../../lib/dsp/dist/midi-keys.js", "../../../lib/dsp/dist/notes.js", "../../../lib/dsp/dist/osc.js", "../../../lib/dsp/dist/stereo.js", "../../../lib/dsp/dist/ramp.js", "../../../lib/dsp/dist/utils.js", "../../../lib/dsp/dist/value.js", "../../../lib/dsp/dist/window.js", "../../../lib/dsp/dist/index.js", "../../boxes/dist/io.js", "../../boxes/dist/PianoMode.js", "../../boxes/dist/RootBox.js", "../../boxes/dist/SelectionBox.js", "../../boxes/dist/UserInterfaceBox.js", "../../boxes/dist/Signature.js", "../../boxes/dist/LoopArea.js", "../../boxes/dist/MarkerTrack.js", "../../boxes/dist/TimelineBox.js", "../../boxes/dist/TrackBox.js", "../../boxes/dist/NoteEventBox.js", "../../boxes/dist/NoteEventRepeatBox.js", "../../boxes/dist/NoteEventCollectionBox.js", "../../boxes/dist/NoteRegionBox.js", "../../boxes/dist/ClipPlaybackFields.js", "../../boxes/dist/NoteClipBox.js", "../../boxes/dist/ValueEventBox.js", "../../boxes/dist/ValueEventCollectionBox.js", "../../boxes/dist/ValueEventCurveBox.js", "../../boxes/dist/ValueRegionBox.js", "../../boxes/dist/ValueClipBox.js", "../../boxes/dist/AudioRegionBox.js", "../../boxes/dist/AudioClipBox.js", "../../boxes/dist/MarkerBox.js", "../../boxes/dist/AudioFileBox.js", "../../boxes/dist/AudioUnitBox.js", "../../boxes/dist/AudioBusBox.js", "../../boxes/dist/AuxSendBox.js", "../../boxes/dist/StepAutomationBox.js", "../../boxes/dist/GrooveShuffleBox.js", "../../boxes/dist/DeviceInterfaceKnobBox.js", "../../boxes/dist/DeviceUserInterface.js", "../../boxes/dist/ModularDeviceBox.js", "../../boxes/dist/ClashStep.js", "../../boxes/dist/ClashPattern.js", "../../boxes/dist/DeviceClashBox.js", "../../boxes/dist/StereoToolDeviceBox.js", "../../boxes/dist/DelayDeviceBox.js", "../../boxes/dist/RevampPass.js", "../../boxes/dist/RevampShelf.js", "../../boxes/dist/RevampBell.js", "../../boxes/dist/RevampDeviceBox.js", "../../boxes/dist/ReverbDeviceBox.js", "../../boxes/dist/VaporisateurDeviceBox.js", "../../boxes/dist/NanoDeviceBox.js", "../../boxes/dist/PlayfieldDeviceBox.js", "../../boxes/dist/PlayfieldSampleBox.js", "../../boxes/dist/TapeDeviceBox.js", "../../boxes/dist/ArpeggioDeviceBox.js", "../../boxes/dist/PitchDeviceBox.js", "../../boxes/dist/ZeitgeistDeviceBox.js", "../../boxes/dist/ModularBox.js", "../../boxes/dist/ModuleConnectionBox.js", "../../boxes/dist/ModuleAttributes.js", "../../boxes/dist/ModularAudioInputBox.js", "../../boxes/dist/ModularAudioOutputBox.js", "../../boxes/dist/ModuleDelayBox.js", "../../boxes/dist/ModuleMultiplierBox.js", "../../boxes/dist/ModuleGainBox.js", "../../adapters/dist/timeline/event/InterpolationFieldAdapter.js", "../../adapters/dist/timeline/event/ValueEventBoxAdapter.js", "../../adapters/dist/timeline/collection/ValueEventCollectionBoxAdapter.js", "../../adapters/dist/timeline/clip/ValueClipBoxAdapter.js", "../../adapters/dist/audio/AudioFileBoxAdapter.js", "../../adapters/dist/timeline/clip/AudioClipBoxAdapter.js", "../../adapters/dist/timeline/event/NoteEventBoxAdapter.js", "../../adapters/dist/timeline/collection/NoteEventCollectionBoxAdapter.js", "../../adapters/dist/timeline/clip/NoteClipBoxAdapter.js", "../../adapters/dist/timeline/ClipBoxAdapter.js", "../../adapters/dist/timeline/TrackClips.js", "../../adapters/dist/timeline/region/AudioRegionBoxAdapter.js", "../../adapters/dist/timeline/region/NoteRegionBoxAdapter.js", "../../adapters/dist/timeline/region/ValueRegionBoxAdapter.js", "../../adapters/dist/timeline/RegionBoxAdapter.js", "../../adapters/dist/timeline/TrackRegions.js", "../../adapters/dist/IconSymbol.js", "../../adapters/dist/timeline/TrackType.js", "../../adapters/dist/devices.js", "../../adapters/dist/audio-unit/AudioUnitTracks.js", "../../adapters/dist/audio-unit/AudioBusBoxAdapter.js", "../../adapters/dist/audio-unit/AudioUnitInput.js", "../../adapters/dist/ParameterAdapterSet.js", "../../adapters/dist/audio-unit/AuxSendBoxAdapter.js", "../../adapters/dist/audio-unit/AudioUnitOutput.js", "../../adapters/dist/audio-unit/AudioUnitBoxAdapter.js", "../../adapters/dist/UpdateClockRate.js", "../../adapters/dist/timeline/TrackBoxAdapter.js", "../../adapters/dist/AutomatableParameterFieldAdapter.js", "../../adapters/dist/devices/audio-effects/DelayDeviceBoxAdapter.js", "../../adapters/dist/devices/audio-effects/RevampDeviceBoxAdapter.js", "../../adapters/dist/modular/connection.js", "../../adapters/dist/modular/abstract.js", "../../adapters/dist/modular/connector.js", "../../adapters/dist/modular/modules/delay.js", "../../adapters/dist/modular/modules/audio-output.js", "../../adapters/dist/modular/modules/gain.js", "../../adapters/dist/modular/modules/multiplier.js", "../../adapters/dist/modular/modules/audio-input.js", "../../adapters/dist/modular/module.js", "../../adapters/dist/modular/user-interface.js", "../../adapters/dist/devices/audio-effects/ModularDeviceBoxAdapter.js", "../../adapters/dist/modular/modular.js", "../../adapters/dist/grooves/GrooveShuffleBoxAdapter.js", "../../adapters/dist/devices/midi-effects/ArpeggioDeviceBoxAdapter.js", "../../adapters/dist/grooves/GrooveBoxAdapter.js", "../../adapters/dist/EngineProcessorOptions.js", "../../adapters/dist/EngineStateSchema.js", "../../adapters/dist/NoteSender.js", "../../adapters/dist/ProjectDecoder.js", "../../adapters/dist/RingBuffer.js", "../../adapters/dist/unions.js", "../../adapters/dist/UnionAdapterTypes.js", "../../adapters/dist/devices/instruments/Playfield/Gate.js", "../../adapters/dist/timeline/RegionEditing.js", "../../core-processors/src/RecordingProcessor.ts"],
|
4
|
-
"sourcesContent": ["export const identity = (value) => value;\nexport const isDefined = (value) => value !== undefined && value !== null;\nexport const ifDefined = (value, procedure) => { if (value !== undefined && value !== null) {\n procedure(value);\n} };\nexport const asDefined = (value, fail = \"asDefined failed\") => value === null || value === undefined ? panic(fail) : value;\nexport const isInstanceOf = (obj, clazz) => obj instanceof clazz;\nexport const asInstanceOf = (obj, clazz) => obj instanceof clazz ? obj : panic(`${obj} is not instance of ${clazz}`);\nexport const assertInstanceOf = (obj, clazz) => { if (!(obj instanceof clazz)) {\n panic(`${obj} is not instance of ${clazz}`);\n} };\nexport const tryProvide = (provider) => { try {\n return provider();\n}\ncatch (reason) {\n return panic(String(reason));\n} };\nexport const getOrProvide = (value) => value instanceof Function ? value() : value;\nexport const safeWrite = (object, property, value) => property in object ? object[property] = value : undefined;\nexport const safeExecute = (func, ...args) => func?.apply(null, args);\nexport const Unhandled = (empty) => { throw new Error(`Unhandled ${empty}`); };\nexport const panic = (issue) => { throw issue instanceof Error ? issue : new Error(issue); };\nexport const assert = (condition, fail) => condition ? undefined : panic(getOrProvide(fail));\nexport const checkIndex = (index, array) => index >= 0 && index < array.length ? index : panic(`Index ${index} is out of bounds`);\nexport const InaccessibleProperty = (failMessage) => new Proxy({}, { get() { return panic(failMessage); } });\nexport const canWrite = (obj, key) => {\n while (isDefined(obj)) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n if (isDefined(descriptor)) {\n return typeof descriptor.set === \"function\";\n }\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n};\nexport const requireProperty = (object, key) => {\n const { status, value } = tryCatch(() => object instanceof Function ? object.name : object.constructor.name);\n const feature = status === \"failure\" ? `${object}.${String(key)}` : `${value}.${String(key)}`;\n console.debug(`%c${feature}%c available`, \"color: hsl(200, 83%, 60%)\", \"color: inherit\");\n if (!(key in object)) {\n throw feature;\n }\n};\nexport const tryCatch = (statement) => {\n try {\n return { error: null, value: statement(), status: \"success\" };\n }\n catch (error) {\n return { error, value: null, status: \"failure\" };\n }\n};\nexport const isValidIdentifier = (identifier) => /^[A-Za-z_$][A-Za-z0-9_]*$/.test(identifier);\nexport const asValidIdentifier = (identifier) => isValidIdentifier(identifier) ? identifier : panic(`'${identifier}' is not a valid identifier`);\nexport const EmptyExec = () => { };\nexport const EmptyProvider = () => { };\nexport const EmptyProcedure = (_) => { };\nexport const flipComparator = (comparator) => (a, b) => -comparator(a, b);\n", "import { asDefined, panic } from \"./lang\";\nexport var Sorting;\n(function (Sorting) {\n Sorting[Sorting[\"Ascending\"] = 1] = \"Ascending\";\n Sorting[Sorting[\"Descending\"] = -1] = \"Descending\";\n})(Sorting || (Sorting = {}));\nexport class Arrays {\n static #empty = Object.freeze(new Array(0));\n static empty = () => (() => this.#empty)();\n static clear = (array) => { array.length = 0; };\n static replace = (array, newValues) => {\n array.length = 0;\n array.push(...newValues);\n };\n static consume = (array, procedure) => {\n for (let index = 0; index < array.length;) {\n if (procedure(array[index])) {\n array.splice(index, 1);\n }\n else {\n index++;\n }\n }\n };\n static peekFirst = (array) => array.at(0) ?? null;\n static peekLast = (array) => array.at(-1) ?? null;\n static getFirst = (array, fail) => asDefined(array.at(0), fail);\n static getLast = (array, fail) => asDefined(array.at(-1), fail);\n static removeLast = (array, fail) => asDefined(array.pop(), fail);\n static create = (factory, n) => {\n const array = new Array(n);\n for (let i = 0; i < n; i++) {\n array[i] = factory(i);\n }\n return array;\n };\n static equals = (a, b) => {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n };\n /**\n * The satisfy method checks if all elements in a given array satisfy a provided predicate function\n * when compared with the first element of the array. That essentially means that all tested properties\n * in the predicate function are equal throughout the array.\n * [1, 1, 1, 1, 1] > (a, b) => a === b returns true\n * [1, 1, 1, 1, 2] > (a, b) => a === b returns false\n * [1, 1, 3, 2, 1] > (a, b) => a === b returns false\n */\n static satisfy = (array, predicate) => {\n if (array.length < 2) {\n return true;\n }\n const first = array[0];\n for (let i = 1; i < array.length; i++) {\n if (!predicate(first, array[i])) {\n return false;\n }\n }\n return true;\n };\n static remove = (array, element) => {\n const index = array.indexOf(element);\n if (index === -1) {\n return panic(`${element} not found in ${array}`);\n }\n array.splice(index, 1);\n };\n static removeOpt = (array, element) => {\n const index = array.indexOf(element);\n if (index === -1) {\n return false;\n }\n array.splice(index, 1);\n return true;\n };\n static hasDuplicates = (array) => new Set(array).size < array.length;\n static removeDuplicates = (array) => {\n let index = 0 | 0;\n const result = new Set();\n for (const element of array) {\n if (!result.has(element)) {\n result.add(element);\n array[index++] = element;\n }\n }\n array.length = index;\n return array;\n };\n static removeDuplicateKeys = (array, key) => {\n let index = 0 | 0;\n const seen = new Set();\n for (const element of array) {\n const value = element[key];\n if (!seen.has(value)) {\n seen.add(value);\n array[index++] = element;\n }\n }\n array.length = index;\n return array;\n };\n static *iterate(array) {\n for (let i = 0; i < array.length; i++) {\n yield array[i];\n }\n }\n static *iterateReverse(array) {\n for (let i = array.length - 1; i >= 0; i--) {\n yield array[i];\n }\n }\n static *iterateStateFull(array) {\n const maxIndex = array.length - 1;\n for (let i = 0; i <= maxIndex; i++) {\n yield { value: array[i], isFirst: i === 0, isLast: i === maxIndex };\n }\n }\n static isSorted(array, sorting = Sorting.Ascending) {\n if (array.length < 2) {\n return true;\n }\n let prev = array[0];\n for (let i = 1; i < array.length; i++) {\n const next = array[i];\n if (Math.sign(prev - next) === sorting) {\n return false;\n }\n prev = next;\n }\n return true;\n }\n}\n", "import { asDefined, getOrProvide, isDefined, panic } from \"./lang\";\nexport var Option;\n(function (Option) {\n Option.wrap = (value) => isDefined(value) ? new Some(value) : Option.None;\n Option.from = (provider) => Option.wrap(provider());\n Option.tryFrom = (provider) => {\n try {\n return Option.wrap(provider());\n }\n catch (_error) {\n return Option.None;\n }\n };\n Option.execute = (func, ...args) => Option.wrap(func?.apply(null, args));\n Option.async = (promise) => promise.then(value => Option.wrap(value), () => Option.None);\n class Some {\n #value;\n constructor(value) { this.#value = asDefined(value); }\n unwrap() { return this.#value; }\n unwrapOrElse(_) { return this.#value; }\n unwrapOrNull() { return this.#value; }\n unwrapOrUndefined() { return this.#value; }\n contains(value) { return value === this.#value; }\n match(matchable) { return matchable.some(this.#value); }\n ifSome(run) { return run(this.#value); }\n isEmpty() { return false; }\n nonEmpty() { return true; }\n map(callback) { return Option.wrap(callback(this.#value)); }\n mapOr(func, _or) { return func(this.#value); }\n flatMap(callback) { return callback(this.#value); }\n equals(other) { return this.unwrapOrNull() === other.unwrapOrNull(); }\n assert(_fail) { return this; }\n toString() { return `{Option.Some(${this.#value})}`; }\n get [Symbol.toStringTag]() { return this.toString(); }\n }\n Option.Some = Some;\n Option.None = new class {\n unwrap = (fail) => panic(isDefined(fail) ? getOrProvide(fail) : \"unwrap failed\");\n unwrapOrElse = (value) => getOrProvide(value);\n unwrapOrNull = () => null;\n unwrapOrUndefined = () => undefined;\n contains = (_) => false;\n match = (matchable) => matchable.none();\n ifSome = (_) => { };\n isEmpty = () => true;\n nonEmpty = () => false;\n map = (_) => Option.None;\n mapOr = (_, or) => getOrProvide(or);\n flatMap = (_) => Option.None;\n equals = (other) => other.isEmpty();\n assert = (fail) => panic(getOrProvide(fail) ?? \"assert failed\");\n toString = () => \"{Option.None}\";\n get [Symbol.toStringTag]() { return this.toString(); }\n };\n})(Option || (Option = {}));\n", "import { Option } from \"./option\";\nexport var Attempts;\n(function (Attempts) {\n Attempts.async = (promise) => promise.then(value => Attempts.ok(value), reason => Attempts.err(reason));\n Attempts.tryGet = (provider) => {\n try {\n return Attempts.ok(provider());\n }\n catch (reason) {\n return Attempts.err(reason);\n }\n };\n Attempts.ok = (result) => new class {\n value;\n constructor(value) {\n this.value = value;\n }\n asOption = () => Option.wrap(this.value);\n failureReason = () => { throw new Error(\"Attempt was successful.\"); };\n isFailure = () => false;\n isSuccess = () => true;\n result = () => this.value;\n map = (map) => {\n try {\n return Attempts.ok(map(this.value));\n }\n catch (reason) {\n return Attempts.err(reason);\n }\n };\n flatMap = (map) => map(this.value);\n match = (matchable) => matchable.ok(this.value);\n toVoid = () => Attempts.ok(undefined);\n failure = () => { throw new Error(\"Attempt was successful.\"); };\n toString = () => `{Success: ${this.value}`;\n get [Symbol.toStringTag]() { return \"Success\"; }\n }(result);\n Attempts.Ok = new class {\n constructor() { }\n asOption = () => Option.None;\n failureReason = () => { throw new Error(\"Attempt was successful.\"); };\n isFailure = () => false;\n isSuccess = () => true;\n result = () => undefined;\n map = (map) => Attempts.ok(map());\n flatMap = (map) => map();\n match = (matchable) => matchable.ok();\n toVoid = () => Attempts.ok(undefined);\n failure = () => { throw new Error(\"Attempt was successful.\"); };\n toString = () => `{Success: Ok`;\n get [Symbol.toStringTag]() { return \"Success\"; }\n }();\n Attempts.err = (reason) => new class {\n reason;\n constructor(reason) {\n this.reason = reason;\n }\n asOption = () => Option.None;\n failureReason = () => this.reason;\n isFailure = () => true;\n isSuccess = () => false;\n result = () => { throw new Error(`No result because '${this.reason}'`); };\n map = () => this;\n flatMap = () => this;\n match = (matchable) => matchable.err(this.reason);\n toVoid = () => Attempts.err(this.reason);\n failure = () => this;\n toString = () => `{Failure: ${this.reason}`;\n get [Symbol.toStringTag]() { return \"Failure\"; }\n }(reason);\n})(Attempts || (Attempts = {}));\n", "// https://en.wikipedia.org/wiki/Binary_search_algorithm\n//\nexport var BinarySearch;\n(function (BinarySearch) {\n BinarySearch.exact = (sorted, key, comparator) => {\n let l = 0 | 0;\n let r = sorted.length - 1;\n while (l <= r) {\n const m = (l + r) >>> 1;\n const cmp = comparator(sorted[m], key);\n if (cmp === 0) {\n return m;\n }\n if (cmp < 0) {\n l = m + 1;\n }\n else {\n r = m - 1;\n }\n }\n return -1;\n };\n BinarySearch.exactMapped = (sorted, key, comparator, map) => {\n let l = 0 | 0;\n let r = sorted.length - 1;\n while (l <= r) {\n const m = (l + r) >>> 1;\n const cmp = comparator(map(sorted[m]), key);\n if (cmp === 0) {\n return m;\n }\n if (cmp < 0) {\n l = m + 1;\n }\n else {\n r = m - 1;\n }\n }\n return -1;\n };\n BinarySearch.leftMost = (sorted, key, comparator) => {\n let l = 0 | 0;\n let r = sorted.length;\n while (l < r) {\n const m = (l + r) >>> 1;\n if (comparator(sorted[m], key) < 0) {\n l = m + 1;\n }\n else {\n r = m;\n }\n }\n return l;\n };\n BinarySearch.rightMost = (sorted, key, comparator) => {\n let l = 0 | 0;\n let r = sorted.length;\n while (l < r) {\n const m = (l + r) >>> 1;\n if (comparator(sorted[m], key) <= 0) {\n l = m + 1;\n }\n else {\n r = m;\n }\n }\n return r - 1;\n };\n BinarySearch.leftMostMapped = (sorted, key, comparator, map) => {\n let l = 0 | 0;\n let r = sorted.length;\n while (l < r) {\n const m = (l + r) >>> 1;\n if (comparator(map(sorted[m]), key) < 0) {\n l = m + 1;\n }\n else {\n r = m;\n }\n }\n return l;\n };\n BinarySearch.rightMostMapped = (sorted, key, comparator, map) => {\n let l = 0 | 0;\n let r = sorted.length;\n while (l < r) {\n const m = (l + r) >>> 1;\n if (comparator(map(sorted[m]), key) <= 0) {\n l = m + 1;\n }\n else {\n r = m;\n }\n }\n return r - 1;\n };\n BinarySearch.rangeMapped = (sorted, key, comparator, map) => [BinarySearch.leftMostMapped(sorted, key, comparator, map), BinarySearch.rightMostMapped(sorted, key, comparator, map)];\n})(BinarySearch || (BinarySearch = {}));\n", "export class Cache {\n #provider;\n #value = null;\n constructor(provider) { this.#provider = provider; }\n invalidate = () => this.#value = null;\n get() {\n if (this.#value === null) {\n this.#value = this.#provider();\n }\n return this.#value;\n }\n terminate() { this.invalidate(); }\n}\n", "import { isDefined } from \"./lang\";\nexport var Color;\n(function (Color) {\n Color.parseCssRgbOrRgba = (color) => {\n const colorValues = color.match(/\\(([^)]+)\\)/)?.at(1)?.split(\",\")?.map(Number);\n if (isDefined(colorValues) && colorValues.every(value => !isNaN(value))) {\n if (colorValues.length === 3) {\n return [\n colorValues[0] / 255.0,\n colorValues[1] / 255.0,\n colorValues[2] / 255.0,\n 1.0\n ];\n }\n else if (colorValues.length === 4) {\n return [\n colorValues[0] / 255.0,\n colorValues[1] / 255.0,\n colorValues[2] / 255.0,\n colorValues[3]\n ];\n }\n }\n throw new Error(`${color} is not proper formatted. Example: 'rgb(255, 255, 255)' or 'rgba(255, 255, 255, 1)'`);\n };\n})(Color || (Color = {}));\n", "export const StringComparator = (a, b) => a > b ? 1 : b > a ? -1 : 0;\nexport const NumberComparator = (a, b) => a - b;\nexport const NumberArrayComparator = (a, b) => {\n const n = Math.min(a.length, b.length);\n for (let i = 0; i < n; i++) {\n const comparison = a[i] - b[i];\n if (comparison !== 0.0) {\n return comparison;\n }\n }\n return a.length - b.length;\n};\n", "// noinspection JSUnusedGlobalSymbols\nexport const TAU = Math.PI * 2.0;\nexport const PI_HALF = Math.PI / 2.0;\nexport const PI_QUART = Math.PI / 4.0;\nexport const INVERSE_SQRT_2 = 1.0 / Math.sqrt(2.0);\nexport const clamp = (value, min, max) => Math.max(min, Math.min(value, max));\nexport const clampUnit = (value) => Math.max(0.0, Math.min(value, 1.0));\nexport const squashUnit = (value, margin) => margin + (1.0 - 2.0 * margin) * Math.max(0.0, Math.min(value, 1.0));\nexport const quantizeFloor = (value, interval) => Math.floor(value / interval) * interval;\nexport const quantizeCeil = (value, interval) => Math.ceil(value / interval) * interval;\nexport const quantizeRound = (value, interval) => Math.round(value / interval) * interval;\nexport const linear = (y1, y2, mu) => y1 + (y2 - y1) * mu;\nexport const cosine = (y1, y2, mu) => {\n const mu2 = (1.0 - Math.cos(mu * Math.PI)) * 0.5;\n return y1 * (1.0 - mu2) + y2 * mu2;\n};\nexport const mod = (value, range) => fract(value / range) * range;\nexport const fract = (value) => value - Math.floor(value);\nexport const nextPowOf2 = (n) => Math.pow(2, Math.ceil(Math.log(n) / Math.log(2)));\nexport const radToDeg = (rad) => rad * 180.0 / Math.PI;\nexport const degToRad = (deg) => deg / 180.0 * Math.PI;\n// M\u00F6bius-Ease Curve\n// Only produces valid values between 0 and 1 (unitValues)\n// https://www.desmos.com/calculator/ht8cytaxsz\n// The inverse is h`=1-h\nexport const moebiusEase = (x, h) => (x * h) / ((2.0 * h - 1.0) * (x - 1.0) + h);\n", "import { clamp } from \"./math\";\n/**\n * original: http://werner.yellowcouch.org/Papers/fastenv12/index.html\n */\nexport var Curve;\n(function (Curve) {\n const EPLISON = 1.0e-15;\n Curve.valueAt = ({ slope, steps, y0, y1 }, x) => Curve.normalizedAt(x / steps, slope) * (y1 - y0) + y0;\n // https://www.desmos.com/calculator/9lwjajcfkw\n Curve.normalizedAt = (x, slope) => {\n if (slope > 0.499999 && slope < 0.500001) {\n return x;\n }\n else {\n const p = clamp(slope, EPLISON, 1.0 - EPLISON);\n return (p * p) / (1.0 - p * 2.0) * (Math.pow((1.0 - p) / p, 2.0 * x) - 1.0);\n }\n };\n Curve.inverseAt = (y, slope) => {\n const p = clamp(slope, EPLISON, 1.0 - EPLISON);\n return Math.log((y * (1.0 - 2.0 * p) / (p * p)) + 1.0) / (2.0 * Math.log((1.0 - p) / p));\n };\n Curve.coefficients = (definition) => {\n const f1 = Curve.valueAt(definition, 1.0);\n const f2 = Curve.valueAt(definition, 2.0);\n const m = (f2 - f1) / (f1 - definition.y0);\n const q = f1 - m * definition.y0;\n return { m, q };\n };\n function* walk(slope, steps, y0, y1) {\n const { m, q } = Curve.coefficients({ slope, steps, y0, y1 });\n for (let i = 0, v = y0; i < steps; i++) {\n yield v = m * v + q;\n }\n }\n Curve.walk = walk;\n function* walkNormalized(slope, steps) {\n const d = 1.0 / steps;\n const f1 = Curve.normalizedAt(d, slope);\n const f2 = Curve.normalizedAt(2.0 * d, slope);\n const m = (f2 - f1) / f1;\n for (let i = 0, v = 0.0; i < steps; i++) {\n yield v = m * v + f1;\n }\n }\n Curve.walkNormalized = walkNormalized;\n Curve.byHalf = (steps, y0, ym, y1) => ({\n slope: Curve.slopeByHalf(y0, ym, y1), steps, y0, y1\n });\n Curve.slopeByHalf = (y0, ym, y1) => Math.abs(y1 - y0) < 0.000001 ? 0.5 : (ym - y0) / (y1 - y0);\n})(Curve || (Curve = {}));\n", "const dataView = new DataView(new ArrayBuffer(8));\nexport var Integer;\n(function (Integer) {\n Integer.MIN_VALUE = -0x80000000;\n Integer.MAX_VALUE = 0x7fffffff;\n Integer.toByte = (value) => {\n dataView.setInt8(0, value);\n return dataView.getInt8(0);\n };\n Integer.toShort = (value) => {\n dataView.setInt16(0, value);\n return dataView.getInt16(0);\n };\n Integer.toInt = (value) => {\n dataView.setInt32(0, value);\n return dataView.getInt32(0);\n };\n})(Integer || (Integer = {}));\nexport var Float;\n(function (Float) {\n const EXP_BIT_MASK = 2139095040;\n const SIGNIFICANT_BIT_MASK = 8388607;\n const ARRAY_BUFFER = new ArrayBuffer(Float32Array.BYTES_PER_ELEMENT);\n const FLOAT_VIEW = new Float32Array(ARRAY_BUFFER);\n const INT_VIEW = new Int32Array(ARRAY_BUFFER);\n /**\n * Returns a representation of the specified floating-point value\n * according to the IEEE 754 floating-point \"single format\" bit layout.\n * @param value a floating-point number.\n * @returns the bits that represent the floating-point number.\n */\n Float.floatToIntBits = (value) => {\n const result = Float.floatToRawIntBits(value);\n if ((result & EXP_BIT_MASK) === EXP_BIT_MASK && (result & SIGNIFICANT_BIT_MASK) !== 0) {\n return 0x7fc00000;\n }\n return result;\n };\n Float.intBitsToFloat = (value) => {\n INT_VIEW[0] = value;\n return FLOAT_VIEW[0];\n };\n Float.floatToRawIntBits = (value) => {\n FLOAT_VIEW[0] = value;\n return INT_VIEW[0];\n };\n Float.toFloat32 = (value) => {\n dataView.setFloat32(0, value);\n return dataView.getFloat32(0);\n };\n})(Float || (Float = {}));\nexport var Float16;\n(function (Float16) {\n Float16.floatToIntBits = (value) => {\n const bits = Float.floatToIntBits(value);\n const sign = bits >>> 16 & 0x8000;\n let val = (bits & 0x7fffffff) + 0x1000;\n if (val >= 0x47800000) {\n if ((bits & 0x7fffffff) >= 0x47800000) {\n if (val < 0x7f800000) {\n return sign | 0x7c00;\n }\n return sign | 0x7c00 | (bits & 0x007fffff) >>> 13;\n }\n return sign | 0x7bff;\n }\n if (val >= 0x38800000) {\n return sign | val - 0x38000000 >>> 13;\n }\n if (val < 0x33000000) {\n return sign;\n }\n val = (bits & 0x7fffffff) >>> 23;\n return sign | ((bits & 0x7fffff | 0x800000) + (0x800000 >>> val - 102) >>> 126 - val);\n };\n Float16.intBitsToFloat = (bits) => {\n let mantissa = bits & 0x03ff;\n let exp = bits & 0x7c00;\n if (exp === 0x7c00) {\n exp = 0x3fc00;\n }\n else if (exp !== 0) {\n exp += 0x1c000;\n if (mantissa === 0 && exp > 0x1c400) {\n return Float.intBitsToFloat((bits & 0x8000) << 16 | exp << 13 | 0x3ff);\n }\n }\n else if (mantissa !== 0) {\n exp = 0x1c400;\n do {\n mantissa <<= 1;\n exp -= 0x400;\n } while ((mantissa & 0x400) === 0);\n mantissa &= 0x3ff;\n }\n return Float.intBitsToFloat((bits & 0x8000) << 16 | (exp | mantissa) << 13);\n };\n})(Float16 || (Float16 = {}));\nexport var Float64;\n(function (Float64) {\n const EXP_BIT_MASK = 9218868437227405312n;\n const SIGNIFICANT_BIT_MASK = 4503599627370495n;\n const ARRAY_BUFFER = new ArrayBuffer(BigInt64Array.BYTES_PER_ELEMENT);\n const FLOAT64_VIEW = new Float64Array(ARRAY_BUFFER);\n const LONG_VIEW = new BigInt64Array(ARRAY_BUFFER);\n Float64.float64ToLongBits = (value) => {\n const result = Float64.float64ToRawLongBits(value);\n if ((result & EXP_BIT_MASK) === EXP_BIT_MASK && (result & SIGNIFICANT_BIT_MASK) !== 0n) {\n return 0x7ff8000000000000n;\n }\n return result;\n };\n Float64.longBitsToFloat64 = (value) => {\n LONG_VIEW[0] = value;\n return FLOAT64_VIEW[0];\n };\n Float64.float64ToRawLongBits = (value) => {\n FLOAT64_VIEW[0] = value;\n return LONG_VIEW[0];\n };\n Float64.clamp = (value) => {\n dataView.setFloat64(0, value);\n return dataView.getFloat64(0);\n };\n})(Float64 || (Float64 = {}));\n", "import { isDefined } from \"./lang\";\nexport class Iterables {\n static *empty() { }\n static one(value) { return [value]; }\n static count(iterable) {\n let count = 0 | 0;\n for (const _ of iterable) {\n count++;\n }\n return count;\n }\n static some(iterable, predicate) {\n for (const value of iterable) {\n if (predicate(value)) {\n return true;\n }\n }\n return false;\n }\n static every(iterable, predicate) {\n for (const value of iterable) {\n if (!predicate(value)) {\n return false;\n }\n }\n return true;\n }\n static reduce(iterable, callback, initialValue) {\n let accumulator = initialValue;\n let index = 0;\n for (const value of iterable) {\n accumulator = callback(accumulator, value, index++);\n }\n return accumulator;\n }\n static includes(iterable, include) {\n for (const value of iterable) {\n if (value === include) {\n return true;\n }\n }\n return false;\n }\n static forEach(iterable, procedure) {\n for (const value of iterable) {\n procedure(value);\n }\n }\n static *map(iterable, map) {\n let count = 0 | 0;\n for (const value of iterable) {\n yield map(value, count++);\n }\n }\n static *take(iterator, count) {\n let i = 0;\n for (const value of iterator) {\n if (i++ >= count) {\n return;\n }\n yield value;\n }\n }\n static filter(iterable, fn) {\n const result = [];\n for (const value of iterable) {\n if (fn(value)) {\n result.push(value);\n }\n }\n return result;\n }\n static filterMap(iterable, fn) {\n const result = [];\n for (const value of iterable) {\n const mapped = fn(value);\n if (isDefined(mapped)) {\n result.push(mapped);\n }\n }\n return result;\n }\n static reverse(iterable) {\n const result = [];\n for (const value of iterable) {\n result.push(value);\n }\n return result.reverse();\n }\n static *pairWise(iterable) {\n const iterator = iterable[Symbol.iterator]();\n const { done, value } = iterator.next();\n let prev = value;\n if (done === true) {\n return;\n }\n while (true) {\n const { done, value } = iterator.next();\n if (done === true) {\n yield [prev, null];\n return;\n }\n yield [prev, value];\n prev = value;\n }\n }\n}\n", "import { panic } from \"./lang\";\nimport { nextPowOf2 } from \"./math\";\nimport { Float, Float64 } from \"./numeric\";\nimport { Iterables } from \"./iterables\";\nexport class ByteArrayOutput {\n static create(initialCapacity = 1024) {\n return this.use(new ArrayBuffer(initialCapacity));\n }\n static use(buffer, byteOffset = 0 | 0) {\n return new ByteArrayOutput(new DataView(buffer, byteOffset));\n }\n littleEndian = false;\n #view;\n #position = 0;\n constructor(view) { this.#view = view; }\n get remaining() { return this.#view.byteLength - this.#position; }\n get position() { return this.#position; }\n set position(value) {\n if (value < 0) {\n panic(`position(${value}) cannot be negative.`);\n }\n else if (value > this.#view.byteLength) {\n panic(`position(${value}) is outside range (${this.#view.byteLength}).`);\n }\n else {\n this.#position = value;\n }\n }\n writeBoolean(value) { this.writeByte(value ? 1 : 0); }\n writeByte(value) {\n this.#ensureSpace(1);\n this.#view.setInt8(this.#position++, value);\n }\n writeShort(value) {\n this.#ensureSpace(Int16Array.BYTES_PER_ELEMENT);\n this.#view.setInt16(this.#position, value, this.littleEndian);\n this.#position += Int16Array.BYTES_PER_ELEMENT;\n }\n writeInt(value) {\n this.#ensureSpace(Int32Array.BYTES_PER_ELEMENT);\n this.#view.setInt32(this.#position, value, this.littleEndian);\n this.#position += Int32Array.BYTES_PER_ELEMENT;\n }\n writeLong(value) {\n this.#ensureSpace(BigInt64Array.BYTES_PER_ELEMENT);\n this.#view.setBigInt64(this.#position, value, this.littleEndian);\n this.#position += BigInt64Array.BYTES_PER_ELEMENT;\n }\n writeFloat(value) {\n this.#ensureSpace(Float32Array.BYTES_PER_ELEMENT);\n this.#view.setFloat32(this.#position, value, this.littleEndian);\n this.#position += Float32Array.BYTES_PER_ELEMENT;\n }\n writeDouble(value) {\n this.#ensureSpace(Float64Array.BYTES_PER_ELEMENT);\n this.#view.setFloat64(this.#position, value, this.littleEndian);\n this.#position += Float64Array.BYTES_PER_ELEMENT;\n }\n writeBytes(bytes) {\n this.#ensureSpace(bytes.length);\n for (let i = 0; i < bytes.length; ++i) {\n this.#view.setInt8(this.#position++, bytes[i]);\n }\n }\n writeString(value) {\n const length = value.length;\n this.#ensureSpace(Int32Array.BYTES_PER_ELEMENT + length * Int16Array.BYTES_PER_ELEMENT);\n this.writeInt(length);\n for (let i = 0; i < length; i++) {\n this.writeShort(value.charCodeAt(i));\n }\n }\n toArrayBuffer() { return this.#view.buffer.slice(0, this.#position); }\n #ensureSpace(count) {\n const capacity = this.#view.byteLength;\n if (this.#position + count > capacity) {\n const o = this.#view;\n this.#view = new DataView(new ArrayBuffer(nextPowOf2(capacity + count)));\n for (let i = 0; i < this.#position; i++) {\n this.#view.setInt8(i, o.getInt8(i));\n }\n }\n }\n}\nexport class ByteCounter {\n #count = 0 | 0;\n writeByte(_) { this.#count++; }\n writeShort(_) { this.#count += 2; }\n writeInt(_) { this.#count += 4; }\n writeLong(_) { this.#count += 8; }\n writeFloat(_) { this.#count += 4; }\n writeDouble(_) { this.#count += 8; }\n writeBoolean(_) { this.#count++; }\n writeBytes(bytes) { this.#count += bytes.length; }\n writeString(value) { this.#count += value.length + 4; }\n get count() { return this.#count; }\n}\nexport class Checksum {\n #result;\n #cursor = 0;\n constructor(length = 32) {\n this.#result = new Int8Array(length);\n }\n result() { return this.#result; }\n equals(other) {\n if (other === this) {\n return true;\n }\n return this.#result.every((value, index) => other.#result[index] === value);\n }\n writeBoolean(value) {\n this.writeByte(value ? 31 : 11);\n }\n writeShort(value) {\n this.writeByte(value & 0xff);\n this.writeByte((value >>> 8) & 0xff);\n }\n writeByte(value) {\n if (this.#cursor >= this.#result.length) {\n this.#cursor = 0;\n }\n this.#result[this.#cursor++] ^= value;\n }\n writeInt(value) {\n this.writeByte(value & 0xff);\n this.writeByte((value >>> 8) & 0xff);\n this.writeByte((value >>> 16) & 0xff);\n this.writeByte((value >>> 24) & 0xff);\n }\n writeBytes(bytes) {\n bytes.forEach(value => this.writeByte(value));\n }\n writeFloat(value) {\n this.writeInt(Float.floatToIntBits(value));\n }\n writeDouble(value) {\n this.writeLong(Float64.float64ToLongBits(value));\n }\n writeLong(value) {\n this.writeByte(Number(value) & 0xff);\n this.writeByte(Number(value >> 8n) & 0xff);\n this.writeByte(Number(value >> 16n) & 0xff);\n this.writeByte(Number(value >> 24n) & 0xff);\n this.writeByte(Number(value >> 32n) & 0xff);\n this.writeByte(Number(value >> 40n) & 0xff);\n this.writeByte(Number(value >> 48n) & 0xff);\n this.writeByte(Number(value >> 56n) & 0xff);\n }\n writeString(value) {\n for (let i = 0; i < value.length; i++) {\n this.writeShort(value.charCodeAt(i));\n }\n }\n toHexString() {\n return Array.from(Iterables.map(this.#result.values(), value => (value & 0xff).toString(16).padStart(2, \"0\"))).join(\"\");\n }\n}\nexport class ByteArrayInput {\n littleEndian = false;\n #view;\n #position = 0;\n constructor(buffer, byteOffset = 0) { this.#view = new DataView(buffer, byteOffset); }\n get position() { return this.#position; }\n set position(value) {\n if (value < 0) {\n panic(`position(${value}) cannot be negative.`);\n }\n else if (value > this.#view.byteLength) {\n panic(`position(${value}) is outside range (${this.#view.byteLength}).`);\n }\n else {\n this.#position = value;\n }\n }\n readByte() { return this.#view.getInt8(this.#position++); }\n readShort() {\n const read = this.#view.getInt16(this.#position, this.littleEndian);\n this.#position += Int16Array.BYTES_PER_ELEMENT;\n return read;\n }\n readInt() {\n const read = this.#view.getInt32(this.#position, this.littleEndian);\n this.#position += Int32Array.BYTES_PER_ELEMENT;\n return read;\n }\n readLong() {\n const read = this.#view.getBigInt64(this.#position, this.littleEndian);\n this.#position += BigInt64Array.BYTES_PER_ELEMENT;\n return read;\n }\n readFloat() {\n const read = this.#view.getFloat32(this.#position, this.littleEndian);\n this.#position += Float32Array.BYTES_PER_ELEMENT;\n return read;\n }\n readDouble() {\n const read = this.#view.getFloat64(this.#position, this.littleEndian);\n this.#position += Float64Array.BYTES_PER_ELEMENT;\n return read;\n }\n readBoolean() { return this.readByte() === 1; }\n readBytes(array) {\n for (let i = 0; i < array.length; i++) {\n array[i] = this.readByte();\n }\n }\n readString() {\n const length = this.readInt();\n let result = \"\";\n for (let i = 0; i < length; i++) {\n result += String.fromCharCode(this.readShort());\n }\n return result;\n }\n available(count) { return this.#position + count <= this.#view.byteLength; }\n remaining() { return this.#view.byteLength - this.#position; }\n skip(count) { this.position += count; }\n}\n", "import { asDefined, isDefined, panic } from \"./lang\";\nconst findMethodType = (descriptor) => {\n if (!isDefined(descriptor)) {\n return panic(\"Cannot resolve method key of undefined descriptor\");\n }\n if (descriptor.value !== undefined) {\n return \"value\";\n }\n if (descriptor.get !== undefined) {\n return \"get\";\n }\n return panic(`Cannot resolve method key of ${descriptor}`);\n};\nexport const Lazy = (_, property, descriptor) => {\n // For stage 3 decorators, we need to handle the case where the descriptor might be undefined\n // and return a proper descriptor or function\n if (!isDefined(descriptor)) {\n // This is likely a stage 3 decorator call - return a function that returns the descriptor\n return function (_, context) {\n if (context && context.kind === \"getter\") {\n return function () {\n const originalDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this), property);\n if (!isDefined(originalDescriptor?.get)) {\n return panic(`Cannot find getter for property '${property}'`);\n }\n const value = originalDescriptor.get.apply(this);\n Object.defineProperty(this, property, {\n value: value,\n configurable: false,\n writable: false,\n enumerable: false\n });\n return value;\n };\n }\n // Fallback for other cases\n return undefined;\n };\n }\n const methodType = findMethodType(descriptor);\n const element = asDefined(descriptor[methodType]);\n return {\n [methodType]: function (...args) {\n if (args.length > 0) {\n return panic(\"lazy accessory must not have any construction parameters\");\n }\n const value = element.apply(this);\n Object.defineProperty(this, property, {\n value: methodType === \"get\" ? value : () => value,\n configurable: false,\n writable: false,\n enumerable: false\n });\n return value;\n }\n };\n};\n", "export var Generators;\n(function (Generators) {\n function* empty() { return; }\n Generators.empty = empty;\n Generators.next = (generator) => {\n const { value, done } = generator.next();\n return done ? null : value;\n };\n function* flatten(...generators) {\n for (const generator of generators) {\n for (const value of generator) {\n yield value;\n }\n }\n }\n Generators.flatten = flatten;\n})(Generators || (Generators = {}));\n", "import { Unhandled } from \"./lang\";\nimport { clamp } from \"./math\";\nexport var Axis;\n(function (Axis) {\n Axis[Axis[\"T\"] = 0] = \"T\";\n Axis[Axis[\"R\"] = 1] = \"R\";\n Axis[Axis[\"B\"] = 2] = \"B\";\n Axis[Axis[\"L\"] = 3] = \"L\";\n})(Axis || (Axis = {}));\nexport var Corner;\n(function (Corner) {\n Corner[Corner[\"TL\"] = 0] = \"TL\";\n Corner[Corner[\"TR\"] = 1] = \"TR\";\n Corner[Corner[\"BR\"] = 2] = \"BR\";\n Corner[Corner[\"BL\"] = 3] = \"BL\";\n})(Corner || (Corner = {}));\nexport var Geom;\n(function (Geom) {\n Geom.outerTangentPoints = (a, b) => {\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const angle = Math.atan2(dy, dx) + Math.acos((a.r - b.r) / Math.sqrt(dx * dx + dy * dy));\n const cs = Math.cos(angle);\n const sn = Math.sin(angle);\n return [\n { x: a.x + a.r * cs, y: a.y + a.r * sn },\n { x: b.x + b.r * cs, y: b.y + b.r * sn }\n ];\n };\n})(Geom || (Geom = {}));\nexport var Point;\n(function (Point) {\n Point.zero = () => ({ x: 0, y: 0 });\n Point.create = (x, y) => ({ x, y });\n Point.clone = (point) => ({ ...point });\n Point.floor = (point) => ({ x: Math.floor(point.x), y: Math.floor(point.y) });\n Point.length = (point) => Math.sqrt(point.x * point.x + point.y * point.y);\n Point.distance = (a, b) => Math.sqrt((b.x - a.x) ** 2 + (b.y - a.y) ** 2);\n Point.add = (a, b) => ({ x: a.x + b.x, y: a.y + b.y });\n Point.subtract = (a, b) => ({ x: a.x - b.x, y: a.y - b.y });\n Point.scaleBy = (point, scale) => ({ x: point.x * scale, y: point.y * scale });\n Point.scaleTo = (point, scale) => {\n const multiplier = scale / Point.length(point);\n return { x: point.x * multiplier, y: point.y * multiplier };\n };\n Point.fromClient = (object) => ({\n x: object.clientX,\n y: object.clientY\n });\n})(Point || (Point = {}));\nexport var Rect;\n(function (Rect) {\n Rect.Empty = Object.freeze({ x: 0, y: 0, width: 0, height: 0 });\n Rect.corners = (rectangle) => {\n const x0 = rectangle.x;\n const y0 = rectangle.y;\n const x1 = x0 + rectangle.width;\n const y1 = y0 + rectangle.height;\n return [{ x: x0, y: y0 }, { x: x1, y: y0 }, { x: x1, y: y1 }, { x: x0, y: y1 }];\n };\n Rect.inflate = (rect, amount) => {\n return {\n x: rect.x - amount,\n y: rect.y - amount,\n width: rect.width + amount * 2.0,\n height: rect.height + amount * 2.0\n };\n };\n Rect.contains = (outer, inner) => {\n const topLeftInside = inner.x >= outer.x && inner.y >= outer.y;\n const bottomRightInside = (inner.x + inner.width) <= (outer.x + outer.width)\n && (inner.y + inner.height) <= (outer.y + outer.height);\n return topLeftInside && bottomRightInside;\n };\n Rect.isPointInside = (point, rect) => point.x >= rect.x && point.x <= rect.x + rect.width && point.y >= rect.y && point.y <= rect.y + rect.height;\n Rect.intersect = (a, b) => {\n const xMin = Math.max(a.x, b.x);\n const xMax = Math.min(a.x + a.width, b.x + b.width);\n const yMax = Math.min(a.y + a.height, b.y + b.height);\n const yMin = Math.max(a.y, b.y);\n return xMax > xMin && yMax > yMin;\n };\n Rect.axis = (rectangle, axis) => {\n switch (axis) {\n case Axis.T:\n return rectangle.y;\n case Axis.R:\n return rectangle.x + rectangle.width;\n case Axis.B:\n return rectangle.y + rectangle.height;\n case Axis.L:\n return rectangle.x;\n default:\n return Unhandled(axis);\n }\n };\n Rect.corner = (rectangle, corner) => {\n switch (corner) {\n case Corner.TL:\n return { x: rectangle.x, y: rectangle.y };\n case Corner.TR:\n return { x: rectangle.x + rectangle.width, y: rectangle.y };\n case Corner.BR:\n return { x: rectangle.x + rectangle.width, y: rectangle.y + rectangle.height };\n case Corner.BL:\n return { x: rectangle.x, y: rectangle.y + rectangle.height };\n default:\n return Unhandled(corner);\n }\n };\n Rect.center = (rectangle) => ({\n x: rectangle.x + rectangle.width * 0.5,\n y: rectangle.y + rectangle.height * 0.5\n });\n Rect.isEmpty = (rectangle) => rectangle.width === 0 || rectangle.height === 0;\n Rect.union = (a, b) => {\n if (Rect.isEmpty(a)) {\n if (!Rect.isEmpty(b)) {\n a.x = b.x;\n a.y = b.y;\n a.width = b.width;\n a.height = b.height;\n }\n }\n else if (!Rect.isEmpty(b)) {\n const bx = b.x;\n const by = b.y;\n const ux = Math.min(a.x, bx);\n const uy = Math.min(a.y, by);\n a.width = Math.max(a.x + a.width, bx + b.width) - ux;\n a.height = Math.max(a.y + a.height, by + b.height) - uy;\n a.x = ux;\n a.y = uy;\n }\n };\n})(Rect || (Rect = {}));\nexport var AABB;\n(function (AABB) {\n AABB.width = (aabb) => aabb.xMax - aabb.xMin;\n AABB.height = (aabb) => aabb.yMax - aabb.yMin;\n AABB.from = (aabb, that) => {\n aabb.xMin = that.xMin;\n aabb.xMax = that.xMax;\n aabb.yMin = that.yMin;\n aabb.yMax = that.yMax;\n };\n AABB.extend = (aabb, offset) => {\n aabb.xMin -= offset;\n aabb.yMin -= offset;\n aabb.xMax += offset;\n aabb.yMax += offset;\n };\n AABB.padding = (aabb, [top, right, bottom, left]) => {\n aabb.xMin += left;\n aabb.yMin += top;\n aabb.xMax -= right;\n aabb.yMax -= bottom;\n return aabb;\n };\n AABB.intersectPoint = (aabb, point) => aabb.xMin <= point.x && point.x < aabb.xMax && aabb.yMin <= point.y && point.y < aabb.yMax;\n AABB.intersectThat = (aabb, that) => that.xMin < aabb.xMax && that.xMax > aabb.xMin && that.yMin < aabb.yMax && that.yMax > aabb.yMin;\n AABB.center = (aabb) => ({ x: (aabb.xMin + aabb.xMax) * 0.5, y: (aabb.yMin + aabb.yMax) * 0.5 });\n})(AABB || (AABB = {}));\nexport var Padding;\n(function (Padding) {\n Padding.Identity = Object.freeze([0.0, 0.0, 0.0, 0.0]);\n})(Padding || (Padding = {}));\nexport var CohenSutherland;\n(function (CohenSutherland) {\n CohenSutherland.intersects = (xMin, xMax, yMin, yMax, x0, y0, x1, y1) => {\n const c0 = code(xMin, xMax, yMin, yMax, x0, y0);\n const c1 = code(xMin, xMax, yMin, yMax, x1, y1);\n if ((c0 | c1) === 0) {\n return false;\n }\n if ((c0 & c1) !== 0) {\n return false;\n }\n const s = sign(x0, y0, x1, y1, xMin, yMin);\n return (s !== sign(x0, y0, x1, y1, xMax, yMin) ||\n s !== sign(x0, y0, x1, y1, xMax, yMax) ||\n s !== sign(x0, y0, x1, y1, xMin, yMax));\n };\n const code = (xMin, xMax, yMin, yMax, x, y) => {\n let code = 0;\n if (x <= xMin) {\n code |= 1;\n }\n else if (x >= xMax) {\n code |= 2;\n }\n if (y <= yMin) {\n code |= 8;\n }\n else if (y >= yMax) {\n code |= 4;\n }\n return code;\n };\n const sign = (x0, y0, x1, y1, x2, y2) => (x1 - x0) * (y2 - y0) - (x2 - x0) * (y1 - y0) >= 0;\n})(CohenSutherland || (CohenSutherland = {}));\nexport var ValueAxis;\n(function (ValueAxis) {\n ValueAxis.Identity = {\n valueToAxis: (value) => value,\n axisToValue: (axis) => axis\n };\n ValueAxis.toClamped = (valueAxis, min, max) => ({\n valueToAxis: (value) => valueAxis.valueToAxis(clamp(value, min, max)),\n axisToValue: (axis) => clamp(valueAxis.axisToValue(axis), min, max)\n });\n ValueAxis.createClamped = (min, max) => ({\n valueToAxis: (value) => clamp(value, min, max),\n axisToValue: (axis) => clamp(axis, min, max)\n });\n})(ValueAxis || (ValueAxis = {}));\n", "import { assert } from \"./lang\";\n//\n// SHA-256\n//\nexport var Hash;\n(function (Hash) {\n Hash.fromBuffers = async (...buffers) => {\n const totalLength = buffers.reduce((sum, buf) => sum + buf.byteLength, 0);\n const mergedArray = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n mergedArray.set(new Uint8Array(buffer), offset);\n offset += buffer.byteLength;\n }\n return await crypto.subtle.digest(\"SHA-256\", mergedArray);\n };\n Hash.equals = (a, b) => {\n assert(a.byteLength === 32, \"First hash has invalid length\");\n assert(b.byteLength === 32, \"Second hash has invalid length\");\n const viewA = new Uint8Array(a);\n const viewB = new Uint8Array(b);\n for (let i = 0; i < 32; i++) {\n if (viewA[i] !== viewB[i]) {\n return false;\n }\n }\n return true;\n };\n Hash.toString = (buffer) => Array.from(new Uint8Array(buffer)).map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n})(Hash || (Hash = {}));\n", "export var Intervals;\n(function (Intervals) {\n Intervals.intersect1D = (min0, max0, min1, max1) => Math.max(min0, min1) <= Math.min(max0, max1);\n})(Intervals || (Intervals = {}));\n", "import { safeExecute } from \"./lang\";\nexport class Listeners {\n #set = new Set();\n #proxy;\n constructor() {\n this.#proxy = new Proxy({}, {\n get: (_, func) => (...args) => this.#set.forEach((listener) => {\n if (Object.getPrototypeOf(listener) === Object.getPrototypeOf({})) {\n return safeExecute(listener[func], ...args);\n }\n return listener[func]?.apply(listener, args);\n })\n });\n }\n get proxy() { return this.#proxy; }\n get size() { return this.#set.size; }\n subscribe(listener) {\n this.#set.add(listener);\n return { terminate: () => this.#set.delete(listener) };\n }\n forEach(procedure) { this.#set.forEach(procedure); }\n terminate() { this.#set.clear(); }\n}\n", "export class Sets {\n static #EMPTY = Object.freeze(new Set());\n static empty = () => Sets.#EMPTY;\n}\n", "import { panic } from \"./lang\";\nexport var Objects;\n(function (Objects) {\n Objects.mergeNoOverlap = (u, v) => {\n const keys = new Set(Object.keys(u));\n for (const key of Object.keys(v)) {\n if (keys.has(key)) {\n return panic(`'${key}' is an overlapping key`);\n }\n }\n return ({ ...u, ...v });\n };\n Objects.include = (obj, ...keys) => keys.reduce((result, key) => {\n result[key] = obj[key];\n return result;\n }, {});\n Objects.exclude = (obj, ...keys) => {\n const exclude = new Set(keys);\n return Object.entries(obj).reduce((result, [key, value]) => {\n if (!exclude.has(key)) {\n result[key] = value;\n }\n return result;\n }, {});\n };\n Objects.overwrite = (target, patch) => Object.assign(target, patch);\n})(Objects || (Objects = {}));\n", "import { Arrays } from \"./arrays\";\nimport { EmptyExec } from \"./lang\";\nexport const Terminable = Object.freeze({\n Empty: { terminate: EmptyExec },\n create: (exec) => ({ terminate: exec }),\n many: (...terminables) => ({ terminate: () => { while (terminables.length > 0) {\n terminables.pop().terminate();\n } } })\n});\nexport class Terminator {\n #terminables = [];\n own(terminable) {\n this.#terminables.push(terminable);\n return terminable;\n }\n ownAll(...terminables) {\n for (const terminable of terminables) {\n this.#terminables.push(terminable);\n }\n }\n spawn() {\n const terminator = new Terminator();\n terminator.own({ terminate: () => Arrays.removeOpt(this.#terminables, terminator) });\n return this.own(terminator);\n }\n terminate() { while (this.#terminables.length > 0) {\n this.#terminables.pop().terminate();\n } }\n}\nexport class VitalSigns {\n #terminated = false;\n get isTerminated() { return this.#terminated; }\n terminate() { this.#terminated = true; }\n}\nexport class CascadingSubscriptions {\n #current;\n constructor() { this.#current = new Terminator(); }\n next() {\n const current = this.#current;\n const nested = current.own(new Terminator());\n this.#current = nested;\n return {\n own: (subscription) => {\n current.own(subscription);\n return current;\n },\n toObserver: (fn) => (value) => {\n nested.terminate();\n nested.own(fn(value));\n }\n };\n }\n append(subscribe, observer) {\n const current = this.#current;\n const nested = current.own(new Terminator());\n current.own(subscribe((value) => {\n nested.terminate();\n nested.own(observer(value));\n }));\n this.#current = nested;\n return current;\n }\n}\n", "import { Terminable } from \"./terminable\";\nimport { Option } from \"./option\";\nexport class Notifier {\n static subscribeMany(observer, ...observables) {\n return Terminable.many(...observables\n .map(observable => observable.subscribe(() => observer(observable))));\n }\n #observers = new Set(); // A set allows us to remove while iterating\n subscribe(observer) {\n this.#observers.add(observer);\n return { terminate: () => this.#observers.delete(observer) };\n }\n isEmpty() { return this.#observers.size === 0; }\n notify(value) { this.#observers.forEach((observer) => observer(value)); }\n observers() { return this.#observers; }\n terminate() { this.#observers.clear(); }\n}\nexport var ObservableValue;\n(function (ObservableValue) {\n ObservableValue.make = (value) => new class {\n getValue() { return value; }\n subscribe(_observer) { return Terminable.Empty; }\n catchupAndSubscribe(observer) {\n observer(this);\n return Terminable.Empty;\n }\n };\n})(ObservableValue || (ObservableValue = {}));\nexport var MutableObservableValue;\n(function (MutableObservableValue) {\n MutableObservableValue.False = new class {\n getValue() { return false; }\n setValue(_) { }\n subscribe(_) { return Terminable.Empty; }\n catchupAndSubscribe(observer) {\n observer(this);\n return Terminable.Empty;\n }\n };\n MutableObservableValue.inverseBoolean = (observableValue) => new class {\n getValue() { return !observableValue.getValue(); }\n setValue(value) { observableValue.setValue(!value); }\n subscribe(observer) { return observableValue.subscribe(observer); }\n catchupAndSubscribe(observer) {\n observer(this);\n return this.subscribe(observer);\n }\n };\n})(MutableObservableValue || (MutableObservableValue = {}));\nexport class DefaultObservableValue {\n #notifier;\n #guard = Option.None;\n #value;\n constructor(value, guard) {\n this.#notifier = new Notifier();\n this.#value = guard?.guard(value) ?? value;\n this.#guard = Option.wrap(guard);\n }\n setValue(value) {\n if (this.#guard.nonEmpty()) {\n value = this.#guard.unwrap().guard(value);\n }\n if (this.#value === value) {\n return;\n }\n this.#value = value;\n this.#notifier.notify(this);\n }\n getValue() { return this.#value; }\n subscribe(observer) { return this.#notifier.subscribe(observer); }\n catchupAndSubscribe(observer) {\n observer(this);\n return this.#notifier.subscribe(observer);\n }\n terminate() { this.#notifier.terminate(); }\n toString() { return `{DefaultObservableValue value: ${this.#value}`; }\n}\n", "import { asDefined, panic } from \"./lang\";\nimport { clamp } from \"./math\";\nimport { Integer } from \"./numeric\";\nclass Linear {\n #min;\n #max;\n #range;\n constructor(min, max) {\n this.#min = min;\n this.#max = max;\n this.#range = max - min;\n }\n x(y) { return (this.clamp(y) - this.#min) / this.#range; }\n y(x) { return this.#min + clamp(x, 0.0, 1.0) * this.#range; }\n clamp(y) { return clamp(y, this.#min, this.#max); }\n floating() { return true; }\n}\nclass LinearInteger {\n #min;\n #max;\n #range;\n constructor(min, max) {\n this.#min = clamp(Math.round(min), Integer.MIN_VALUE, Integer.MAX_VALUE);\n this.#max = clamp(Math.round(max), Integer.MIN_VALUE, Integer.MAX_VALUE);\n this.#range = this.#max - this.#min;\n }\n x(y) { return (this.clamp(y) - this.#min) / this.#range; }\n y(x) { return this.#min + Math.round(clamp(x, 0.0, 1.0) * this.#range); }\n clamp(y) { return clamp(Math.round(y), this.#min, this.#max); }\n floating() { return false; }\n}\nclass Exponential {\n #min;\n #max;\n #range;\n constructor(min, max) {\n this.#min = min;\n this.#max = max;\n this.#range = Math.log(max / min);\n }\n x(y) { return Math.log(clamp(y, this.#min, this.#max) / this.#min) / this.#range; }\n y(x) { return this.#min * Math.exp(clamp(x, 0.0, 1.0) * this.#range); }\n clamp(y) { return Math.min(this.#max, Math.max(this.#min, y)); }\n floating() { return true; }\n}\nclass Values {\n #values;\n constructor(values) {\n this.#values = values;\n }\n x(y) {\n const index = this.#values.findIndex(value => value === y);\n return index === -1\n ? panic(`Could not find index for ${y}`)\n : index / (this.#values.length - 1);\n }\n y(x) {\n const index = Math.round(clamp(x, 0.0, 1.0) * (this.#values.length - 1));\n return index > -1\n ? asDefined(this.#values.at(index), `Could not find value for ${x}`)\n : panic(`Index ${index} is out of box.`);\n }\n clamp(y) { return y; }\n floating() { return false; }\n}\nclass Decibel {\n #min;\n #max;\n #a;\n #b;\n #c;\n /**\n * @param min The lowest decibel value\n * @param mid The decibel value in the center\n * @param max The highest decibel value\n */\n constructor(min, mid, max) {\n this.#min = min;\n this.#max = max;\n const min2 = min * min;\n const max2 = max * max;\n const mid2 = mid * mid;\n const tmp0 = min + max - 2.0 * mid;\n const tmp1 = max - mid;\n this.#a = ((2.0 * max - mid) * min - mid * max) / tmp0;\n this.#b = (tmp1 * min2 + (mid2 - max2) * min + mid * max2 - mid2 * max)\n / (min2 + (2.0 * max - 4.0 * mid) * min + max2 - 4.0 * mid * max + 4.0 * mid2);\n this.#c = -tmp1 / tmp0;\n }\n y(x) {\n if (x <= 0.0) {\n return Number.NEGATIVE_INFINITY;\n }\n if (x >= 1.0) {\n return this.#max;\n }\n return this.#a - this.#b / (x + this.#c);\n }\n x(y) {\n if (this.#min >= y) {\n return 0.0;\n }\n if (this.#max <= y) {\n return 1.0;\n }\n return -this.#b / (y - this.#a) - this.#c;\n }\n clamp(y) { return Math.min(this.#max, y); }\n floating() { return true; }\n}\nexport var ValueMapping;\n(function (ValueMapping) {\n ValueMapping.linear = (min, max) => new Linear(min, max);\n ValueMapping.linearInteger = (min, max) => new LinearInteger(min, max);\n ValueMapping.exponential = (min, max) => new Exponential(min, max);\n ValueMapping.values = (values) => new Values(values);\n ValueMapping.decibel = (min, mid, max) => new Decibel(min, mid, max);\n const Bool = new class {\n x(y) { return y ? 1.0 : 0.0; }\n y(x) { return x >= 0.5; }\n clamp(y) { return y; }\n floating() { return false; }\n };\n const Unipolar = ValueMapping.linear(0.0, 1.0);\n const Bipolar = ValueMapping.linear(-1.0, 1.0);\n ValueMapping.bool = Bool;\n const DefaultDecibelInstance = ValueMapping.decibel(-72.0, -12.0, 0.0);\n ValueMapping.unipolar = () => Unipolar;\n ValueMapping.bipolar = () => Bipolar;\n ValueMapping.DefaultDecibel = DefaultDecibelInstance;\n})(ValueMapping || (ValueMapping = {}));\n", "import { isDefined } from \"./lang\";\nimport { clamp } from \"./math\";\nexport var StringMapping;\n(function (StringMapping) {\n StringMapping.percent = ({ bipolar, fractionDigits } = {}) => new Numeric(\"%\", fractionDigits, false, bipolar);\n StringMapping.numeric = ({ unit, fractionDigits, unitPrefix, bipolar } = {}) => new Numeric(unit, fractionDigits, unitPrefix, bipolar);\n StringMapping.indices = (unit, values) => new class {\n x(y) {\n return { unit, value: values[y] };\n }\n y(x) {\n const index = values.indexOf(x);\n return index === -1 ? { type: \"unknown\", value: \"\uD83D\uDCA3\" } : { type: \"explicit\", value: index };\n }\n };\n StringMapping.values = (unit, values, strings) => new class {\n x(y) {\n return { unit, value: strings.at(values.indexOf(y)) ?? \"N/A\" };\n }\n y(x) {\n const index = strings.indexOf(x);\n return index === -1 ? { type: \"unknown\", value: \"\uD83D\uDCA3\" } : { type: \"explicit\", value: values[index] };\n }\n };\n StringMapping.bool = new class {\n y(x) {\n switch (x.trim()) {\n case \"on\":\n case \"yes\":\n case \"true\":\n return { type: \"explicit\", value: true };\n default:\n return { type: \"explicit\", value: false };\n }\n }\n x(y) {\n return { value: String(y), unit: \"\" };\n }\n };\n class Numeric {\n #unit;\n #fractionDigits;\n #unitPrefix;\n #bipolar;\n constructor(unit, fractionDigits, unitPrefix, bipolar) {\n this.#unit = unit ?? \"\";\n this.#fractionDigits = fractionDigits ?? 0;\n this.#unitPrefix = unitPrefix ?? false;\n this.#bipolar = bipolar ?? false;\n }\n y(x) {\n let value = x.trim();\n const float = parseFloat(value);\n if (isNaN(float)) {\n return { type: \"unknown\", value: value };\n }\n else if (this.#unit === \"%\") {\n return {\n type: \"explicit\",\n value: float / 100.0\n };\n }\n else if (value.endsWith(\"%\")) {\n return {\n type: \"unitValue\",\n value: this.#bipolar\n ? clamp(float / 200.0 + 0.5, 0.0, 1.0)\n : clamp(float / 100.0, 0.0, 1.0)\n };\n }\n else {\n if (value.endsWith(this.#unit) && this.#unit.length > 0) {\n // remove unit\n value = value.slice(0, -this.#unit.length);\n }\n const regex = /(\\d+)(\\D+)/;\n const match = regex.exec(value);\n const last = match?.at(2)?.at(0);\n if (isDefined(last)) {\n const index = prefixes.indexOf(last);\n if (index > -1) {\n return { type: \"explicit\", value: float * Math.pow(10.0, (index - 4) * 3.0) };\n }\n }\n return { type: \"explicit\", value: float };\n }\n }\n x(y) {\n if (Number.isNaN(y)) {\n return { value: \"\uD83D\uDCA3\", unit: this.#unit };\n }\n else if (Number.isFinite(y)) {\n if (this.#unit === \"%\") {\n return this.#bipolar\n ? { value: (y * 200 - 100).toFixed(this.#fractionDigits), unit: this.#unit }\n : { value: (y * 100).toFixed(this.#fractionDigits), unit: this.#unit };\n }\n if (this.#unitPrefix) {\n const { value, prefix } = computePrefix(y);\n return { value: value.toFixed(this.#fractionDigits), unit: `${prefix}${this.#unit}` };\n }\n else {\n return { value: y.toFixed(this.#fractionDigits), unit: this.#unit };\n }\n }\n else {\n return { value: y === Number.POSITIVE_INFINITY ? \"\u221E\" : \"-\u221E\", unit: this.#unit };\n }\n }\n }\n const prefixes = Object.freeze([\"p\", \"n\", \"\u03BC\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\"]);\n // this magic number rounds the result perfectly to integers, while the mathematically correct 10 doesn't:\n // computeBase10(1000) = 3\n // computeBase10(0.001) = -3\n const computeBase10 = (value) => Math.log(value) / Math.log(9.999999999999999);\n const computePrefix = (value) => {\n const location = Math.floor(computeBase10(value) / 3.0);\n const prefix = prefixes[location + 4];\n return isDefined(prefix) ? { value: value * Math.pow(10.0, location * -3.0), prefix } : { value, prefix: \"\" };\n };\n StringMapping.decible = StringMapping.numeric({ unit: \"db\", fractionDigits: 1 });\n StringMapping.panning = StringMapping.percent({ unit: \"%\", fractionDigits: 0 });\n})(StringMapping || (StringMapping = {}));\n", "export var Predicates;\n(function (Predicates) {\n Predicates.alwaysTrue = () => true;\n Predicates.alwaysFalse = () => false;\n Predicates.definedPredicate = (value) => value !== null && value !== undefined;\n})(Predicates || (Predicates = {}));\n", "import { Arrays } from \"./arrays\";\nexport const SilentProgressHandler = _ => { };\nexport var Progress;\n(function (Progress) {\n Progress.split = (progress, count) => {\n const collect = new Float32Array(count);\n return Arrays.create(index => (value) => {\n collect[index] = value;\n progress(collect.reduce((total, value) => total + value, 0.0) / count);\n }, count);\n };\n})(Progress || (Progress = {}));\n", "import { panic } from \"./lang\";\nexport var Random;\n(function (Random) {\n Random.create = (seed = 0xF123F42) => new Mulberry32(seed);\n /**\n * Generates a monotone ascending sequence of random unitValue numbers.\n * @param target The target array to fill with random values.\n * @param noise Tell the method how noisy the sequence should be. 0 leads to a linear sequence.\n * @param random The random number generator to use.\n * @returns The target array.\n */\n Random.monotoneAscending = (target, noise = 128, random = Random.create()) => {\n const length = target.length;\n if (length < 2) {\n return panic(\"Array must have at least 2 elements\");\n }\n let sum = 0.0;\n for (let i = 1; i < length; i++) {\n const value = Math.floor(random.uniform() * (1.0 + noise)) + 1.0;\n target[i] = value;\n sum += value;\n }\n let acc = 0.0;\n target[0] = 0.0;\n for (let i = 1; i < length; i++) {\n acc += target[i];\n target[i] = acc / sum;\n }\n return target;\n };\n})(Random || (Random = {}));\nexport class Mulberry32 {\n #seed = 0;\n constructor(seed) { this.setSeed(seed); }\n setSeed(value) { this.#seed = value & 0xFFFFFFFF; }\n nextDouble(min, max) { return min + this.uniform() * (max - min); }\n nextInt(min, max) { return min + Math.floor(this.uniform() * (max - min)); }\n nextElement(array) { return array[Math.floor(this.uniform() * array.length)]; }\n nextBoolean() { return this.uniform() < 0.5; }\n uniform() {\n let t = this.#seed += 0x6D2B79F5;\n t = Math.imul(t ^ t >>> 15, t | 1);\n t ^= t + Math.imul(t ^ t >>> 7, t | 61);\n return ((t ^ t >>> 14) >>> 0) / 4294967296.0;\n }\n}\n", "import { ByteCounter } from \"./data\";\n/**\n * Schema defines a fixed structure for numbers and boolean\n */\nexport var Schema;\n(function (Schema) {\n class Serializer {\n }\n Schema.createBuilder = (schema) => {\n const replace = (schema) => {\n const clone = schema instanceof Array ? [] : {};\n Object.entries(schema).forEach(([key, value]) => {\n if (value instanceof Serializer) {\n clone[key] = value.initialValue();\n }\n else if (typeof value === \"object\") {\n clone[key] = replace(value);\n }\n });\n return clone;\n };\n return () => new IOImpl(schema, Object.seal(replace(schema)));\n };\n Schema.bool = new class extends Serializer {\n read(input) { return input.readByte() === 1; }\n write(output, value) { output.writeByte(value ? 1 : 0); }\n initialValue() { return false; }\n };\n Schema.int8 = new class extends Serializer {\n read(input) { return input.readByte(); }\n write(output, value) { output.writeByte(value); }\n initialValue() { return 0; }\n };\n Schema.int16 = new class extends Serializer {\n read(input) { return input.readShort(); }\n write(output, value) { output.writeShort(value); }\n initialValue() { return 0; }\n };\n Schema.int32 = new class extends Serializer {\n read(input) { return input.readInt(); }\n write(output, value) { output.writeInt(value); }\n initialValue() { return 0; }\n };\n Schema.float = new class extends Serializer {\n read(input) { return input.readFloat(); }\n write(output, value) { output.writeFloat(value); }\n initialValue() { return 0.0; }\n };\n Schema.double = new class extends Serializer {\n read(input) { return input.readDouble(); }\n write(output, value) { output.writeDouble(value); }\n initialValue() { return 0.0; }\n };\n Schema.int64 = new class extends Serializer {\n read(input) { return input.readLong(); }\n write(output, value) { output.writeLong(value); }\n initialValue() { return 0n; }\n };\n Schema.floats = (length) => new class extends Serializer {\n read(input, values) {\n for (let i = 0; i < values.length; i++) {\n values[i] = input.readFloat();\n }\n return values;\n }\n write(output, values) {\n for (let i = 0; i < values.length; i++) {\n output.writeFloat(values[i]);\n }\n }\n initialValue() { return new Float32Array(length); }\n };\n Schema.doubles = (length) => new class extends Serializer {\n read(input, values) {\n for (let i = 0; i < values.length; i++) {\n values[i] = input.readDouble();\n }\n return values;\n }\n write(output, values) {\n for (let i = 0; i < values.length; i++) {\n output.writeDouble(values[i]);\n }\n }\n initialValue() { return new Float64Array(length); }\n };\n class IOImpl {\n #schema;\n #object;\n #bytesTotal;\n constructor(schema, object) {\n this.#schema = schema;\n this.#object = object;\n this.#bytesTotal = this.#count();\n }\n get object() { return this.#object; }\n get bytesTotal() { return this.#bytesTotal; }\n read(input) {\n const collector = (schema, object) => {\n Object.entries(schema).forEach(([key, value]) => {\n const data = object;\n if (value instanceof Serializer) {\n data[key] = value.read(input, data[key]);\n }\n else if (typeof value === \"object\") {\n collector(value, data[key]);\n }\n });\n };\n collector(this.#schema, this.#object);\n }\n write(output) {\n const collector = (schema, object) => {\n Object.entries(schema).forEach(([key, value]) => {\n const data = object;\n if (value instanceof Serializer) {\n value.write(output, data[key]);\n }\n else if (typeof value === \"object\") {\n collector(value, data[key]);\n }\n });\n };\n collector(this.#schema, this.#object);\n }\n #count() {\n const counter = new ByteCounter();\n this.write(counter);\n return counter.count;\n }\n }\n})(Schema || (Schema = {}));\n", "import { isDefined, panic } from \"./lang\";\nimport { Arrays } from \"./arrays\";\nimport { Option } from \"./option\";\nimport { BinarySearch } from \"./binary-search\";\n/**\n * SortedSet\n * ---------------------------\n * Advantages Over Native Set\n * ---------------------------\n * Custom Key Extraction: Allows using complex keys (like UUID) with custom comparison logic\n * Ordered Iteration: Elements are always iterated in sorted order (not necessarily favored)\n * Efficient Lookups: O(log n) lookups using binary search\n * Flexible Duplicate Handling: Control whether to replace or duplicates or throw an error\n * -----------------------------\n * Disadvantages Over Native Set\n * -----------------------------\n * No Range Operations: No efficient range-based operations\n * Losing insert order: Elements get sorted by key and not insert order\n */\nexport class SortedSet {\n #extractor;\n #comparator;\n #array;\n constructor(extractor, comparator) {\n this.#extractor = extractor;\n this.#comparator = comparator;\n this.#array = [];\n }\n add(value, replace = false) {\n const key = this.#extractor(value);\n const insertIndex = BinarySearch.leftMostMapped(this.#array, key, this.#comparator, this.#extractor);\n const current = this.#array[insertIndex];\n if (isDefined(current) && this.#comparator(this.#extractor(current), key) === 0) {\n if (replace) {\n this.#array.splice(insertIndex, 1, value);\n return true;\n }\n return false;\n }\n this.#array.splice(insertIndex, 0, value);\n return true;\n }\n getOrCreate(key, factory) {\n const insertIndex = BinarySearch.leftMostMapped(this.#array, key, this.#comparator, this.#extractor);\n const current = this.#array[insertIndex];\n if (isDefined(current) && this.#comparator(this.#extractor(current), key) === 0) {\n return current;\n }\n const value = factory(key);\n this.#array.splice(insertIndex, 0, value);\n return value;\n }\n addMany(values) {\n for (const value of values) {\n this.#array.push(value);\n }\n try {\n this.#array.sort((a, b) => {\n const delta = this.#comparator(this.#extractor(a), this.#extractor(b));\n if (delta === 0) {\n throw \"cancel\";\n }\n return delta;\n });\n return true;\n }\n catch (reason) {\n if (reason === \"cancel\") {\n const uniqueKeys = new Map(this.entries());\n this.#array.splice(0, this.#array.length, ...uniqueKeys.values());\n this.#array.sort((a, b) => this.#comparator(this.#extractor(a), this.#extractor(b)));\n return false;\n }\n return panic(reason);\n }\n }\n removeByValue(value) { return this.removeByKey(this.#extractor(value)); }\n removeByKey(key) {\n const deleteIndex = BinarySearch.leftMostMapped(this.#array, key, this.#comparator, this.#extractor);\n const candidate = this.#array[deleteIndex];\n if (isDefined(candidate) && this.#comparator(this.#extractor(candidate), key) === 0) {\n this.#array.splice(deleteIndex, 1);\n return candidate;\n }\n return panic(`Could not remove ${key}`);\n }\n removeRange(startIndex, endIndex) {\n this.#array.splice(startIndex, (endIndex ?? this.#array.length) - startIndex);\n }\n removeByPredicate(predicate) {\n let count = 0 | 0;\n let index = this.#array.length;\n while (--index >= 0) {\n if (predicate(this.#array[index])) {\n this.#array.splice(index, 1);\n count++;\n }\n }\n return count;\n }\n get(key) {\n const candidate = this.#lookup(key);\n if (isDefined(candidate)) {\n return candidate;\n }\n else {\n return panic(`Unknown key: ${key}`);\n }\n }\n getOrThrow(key, provider) {\n const candidate = this.#lookup(key);\n if (isDefined(candidate)) {\n return candidate;\n }\n else {\n throw provider();\n }\n }\n opt(key) { return Option.wrap(this.#lookup(key)); }\n getOrNull(key) { return this.#lookup(key) ?? null; }\n getByIndex(index) { return this.#array[index]; }\n hasKey(key) { return isDefined(this.#lookup(key)); }\n hasValue(value) { return isDefined(this.#lookup(this.#extractor(value))); }\n size() { return this.#array.length; }\n isEmpty() { return this.#array.length === 0; }\n forEach(procedure) { this.values().forEach(procedure); }\n values() { return this.#array; }\n entries() { return this.#array.map((entry) => [this.#extractor(entry), entry]); }\n clear() { Arrays.clear(this.#array); }\n [Symbol.iterator]() { return this.#array.values(); }\n #lookup(key) {\n const index = BinarySearch.leftMostMapped(this.#array, key, this.#comparator, this.#extractor);\n const candidate = this.#array[index];\n return isDefined(candidate) && this.#comparator(this.#extractor(candidate), key) === 0 ? candidate : undefined;\n }\n}\n", "import { isDefined } from \"./lang\";\nexport var Strings;\n(function (Strings) {\n Strings.hyphenToCamelCase = (value) => value\n .replace(/-([a-z])/g, (g) => g[1].toUpperCase());\n Strings.fallback = (value, fallback) => isDefined(value) && value.length > 0 ? value : fallback;\n Strings.endsWithDigit = (str) => /\\d$/.test(str);\n Strings.nonEmpty = (str, fallback) => isDefined(str) && str.trim().length > 0 ? str : fallback;\n // UTF-8\n Strings.toArrayBuffer = (str) => {\n const buffer = new ArrayBuffer(str.length);\n const view = new Uint8Array(buffer);\n for (let i = 0; i < str.length; i++) {\n view[i] = str.charCodeAt(i);\n }\n return buffer;\n };\n})(Strings || (Strings = {}));\n", "import { Unhandled } from \"./lang\";\nexport class TimeSpan {\n static POSITIVE_INFINITY = new TimeSpan(Number.POSITIVE_INFINITY);\n static millis = (value) => new TimeSpan(value);\n static seconds = (value) => new TimeSpan(value * TimeSpan.#MILLI_SECONDS_PER_SECOND);\n static minutes = (value) => new TimeSpan(value * TimeSpan.#MILLI_SECONDS_PER_MINUTE);\n static hours = (value) => new TimeSpan(value * TimeSpan.#MILLI_SECONDS_PER_HOUR);\n static days = (value) => new TimeSpan(value * TimeSpan.#MILLI_SECONDS_PER_DAY);\n static #MILLI_SECONDS_PER_SECOND = 1_000;\n static #MILLI_SECONDS_PER_MINUTE = 60_000;\n static #MILLI_SECONDS_PER_HOUR = 3_600_000;\n static #MILLI_SECONDS_PER_DAY = 86_400_000;\n #ms;\n constructor(ms) { this.#ms = ms; }\n millis() { return this.#ms; }\n absSeconds() { return Math.abs(this.#ms) / TimeSpan.#MILLI_SECONDS_PER_SECOND; }\n absMinutes() { return Math.abs(this.#ms) / TimeSpan.#MILLI_SECONDS_PER_MINUTE; }\n absHours() { return Math.abs(this.#ms) / TimeSpan.#MILLI_SECONDS_PER_HOUR; }\n absDays() { return Math.abs(this.#ms) / TimeSpan.#MILLI_SECONDS_PER_DAY; }\n split() {\n return {\n d: Math.floor(this.absDays()),\n h: Math.floor(this.absHours()) % 24,\n m: Math.floor(this.absMinutes()) % 60,\n s: Math.floor(this.absSeconds()) % 60\n };\n }\n isNow() { return this.#ms === 0.0; }\n isPast() { return this.#ms < 0.0; }\n isFuture() { return this.#ms > 0.0; }\n toUnitString() {\n let value, unit;\n const seconds = Math.floor(Math.abs(this.#ms) / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n if (seconds < 60) {\n value = seconds;\n unit = \"second\";\n }\n else if (minutes < 60) {\n value = minutes;\n unit = \"minute\";\n }\n else if (hours < 24) {\n value = hours;\n unit = \"hour\";\n }\n else {\n value = days;\n unit = \"day\";\n }\n return new Intl.RelativeTimeFormat(\"en\", { numeric: \"auto\", style: \"long\" })\n .format(value * Math.sign(this.#ms), unit);\n }\n toString() {\n if (isNaN(this.#ms)) {\n return \"NaN\";\n }\n if (!isFinite(this.#ms)) {\n return \"\u221E\";\n }\n const { d, h, m, s } = this.split();\n if (d > 0) {\n return [\n TimeSpan.#quantity(\"d\", d), TimeSpan.#quantity(\"h\", h),\n TimeSpan.#quantity(\"m\", m), TimeSpan.#quantity(\"s\", s)\n ]\n .join(\", \");\n }\n else if (h > 0) {\n return [\n TimeSpan.#quantity(\"h\", h), TimeSpan.#quantity(\"m\", m),\n TimeSpan.#quantity(\"s\", s)\n ]\n .join(\", \");\n }\n else if (m > 0) {\n return [TimeSpan.#quantity(\"m\", m), TimeSpan.#quantity(\"s\", s)]\n .join(\", \");\n }\n else if (s > 0) {\n return TimeSpan.#quantity(\"s\", s);\n }\n else {\n return \"now\";\n }\n }\n static #quantity = (name, count) => {\n switch (name) {\n case \"d\":\n return `${count} ${count < 2 ? \"day\" : \"days\"}`;\n case \"h\":\n return `${count} ${count < 2 ? \"hour\" : \"hours\"}`;\n case \"m\":\n return `${count} ${count < 2 ? \"minute\" : \"minutes\"}`;\n case \"s\":\n return `${count} ${count < 2 ? \"second\" : \"seconds\"}`;\n default:\n return Unhandled(name);\n }\n };\n}\n", "import { ByteArrayInput, ByteArrayOutput } from \"./data\";\nimport { panic } from \"./lang\";\nexport var SyncStream;\n(function (SyncStream) {\n let State;\n (function (State) {\n State[State[\"READING\"] = 0] = \"READING\";\n State[State[\"READ\"] = 1] = \"READ\";\n State[State[\"WRITING\"] = 2] = \"WRITING\";\n State[State[\"WRITTEN\"] = 3] = \"WRITTEN\";\n })(State || (State = {}));\n SyncStream.writer = (io, buffer, populate) => {\n if (io.bytesTotal + 1 > buffer.byteLength) {\n return panic(\"Insufficient memory allocated.\");\n }\n const array = new Uint8Array(buffer);\n const output = ByteArrayOutput.use(buffer, 1);\n Atomics.store(array, 0, State.READ);\n return {\n tryWrite: () => {\n if (Atomics.compareExchange(array, 0, State.READ, State.WRITING) === State.WRITING) {\n populate(io.object);\n output.position = 0;\n io.write(output);\n Atomics.store(array, 0, State.WRITTEN);\n return true;\n }\n return false;\n }\n };\n };\n SyncStream.reader = (io, procedure) => {\n const buffer = new SharedArrayBuffer(io.bytesTotal + 1);\n const array = new Uint8Array(buffer);\n const input = new ByteArrayInput(buffer, 1);\n return {\n buffer,\n tryRead: () => {\n if (Atomics.compareExchange(array, 0, State.WRITTEN, State.READING) === State.READING) {\n input.position = 0;\n io.read(input);\n procedure(io.object);\n Atomics.store(array, 0, State.READ);\n return true;\n }\n return false;\n }\n };\n };\n})(SyncStream || (SyncStream = {}));\n", "import { Arrays } from \"./arrays\";\nimport { assert, panic } from \"./lang\";\nimport { SortedSet } from \"./sorted-set\";\nexport var UUID;\n(function (UUID) {\n UUID.length = 16;\n UUID.generate = () => {\n return fromUint8Array(crypto.getRandomValues(new Uint8Array(UUID.length)));\n };\n UUID.sha256 = async (buffer) => {\n return crypto.subtle.digest(\"SHA-256\", buffer)\n .then(buffer => fromUint8Array(new Uint8Array(buffer.slice(0, UUID.length))));\n };\n UUID.validate = (uuid) => UUID.parse(UUID.toString(uuid));\n UUID.fromDataInput = (input) => {\n const arr = new Uint8Array(UUID.length);\n input.readBytes(new Int8Array(arr.buffer));\n return arr;\n };\n UUID.toDataOutput = (output, uuid) => output.writeBytes(new Int8Array(uuid.buffer));\n UUID.toString = (format) => {\n const hex = Arrays.create(index => (index + 0x100).toString(16).substring(1), 256);\n return hex[format[0]] + hex[format[1]] +\n hex[format[2]] + hex[format[3]] + \"-\" +\n hex[format[4]] + hex[format[5]] + \"-\" +\n hex[format[6]] + hex[format[7]] + \"-\" +\n hex[format[8]] + hex[format[9]] + \"-\" +\n hex[format[10]] + hex[format[11]] +\n hex[format[12]] + hex[format[13]] +\n hex[format[14]] + hex[format[15]];\n };\n UUID.parse = (string) => {\n const cleanUuid = string.replace(/-/g, \"\").toLowerCase();\n if (cleanUuid.length !== 32) {\n return panic(\"Invalid UUID format\");\n }\n const bytes = new Uint8Array(UUID.length);\n for (let i = 0, j = 0; i < 32; i += 2, j++) {\n bytes[j] = parseInt(cleanUuid.slice(i, i + 2), 16);\n }\n return bytes;\n };\n UUID.Comparator = (a, b) => {\n if (a.length !== UUID.length || b.length !== UUID.length) {\n return panic(\"Unexpected array length for uuid(v4)\");\n }\n for (let i = 0; i < UUID.length; i++) {\n const delta = a[i] - b[i];\n if (delta !== 0) {\n return delta;\n }\n }\n return 0;\n };\n UUID.equals = (a, b) => UUID.Comparator(a, b) === 0;\n UUID.newSet = (key) => new SortedSet(key, UUID.Comparator);\n UUID.Lowest = UUID.parse(\"00000000-0000-4000-8000-000000000000\");\n UUID.Highest = UUID.parse(\"FFFFFFFF-FFFF-4FFF-BFFF-FFFFFFFFFFFF\");\n UUID.fromInt = (value) => {\n const result = new Uint8Array(UUID.Lowest);\n const array = new Uint8Array(new Uint32Array([value]).buffer);\n for (let i = 0; i < 4; i++) {\n result[i] = array[i];\n }\n return result;\n };\n const fromUint8Array = (arr) => {\n assert(arr.length === UUID.length, \"UUID must be 16 bytes long\");\n arr[6] = (arr[6] & 0x0f) | 0x40; // Version 4 (random)\n arr[8] = (arr[8] & 0x3f) | 0x80; // Variant 10xx for UUID\n return arr;\n };\n})(UUID || (UUID = {}));\n", "import { Arrays } from \"./arrays\";\nimport { NumberComparator } from \"./comparators\";\nimport { assert, isDefined } from \"./lang\";\nimport { clamp } from \"./math\";\nimport { BinarySearch } from \"./binary-search\";\nexport var ValueGuide;\n(function (ValueGuide) {\n ValueGuide.create = (option) => {\n if (isDefined(option)) {\n if (isDefined(option?.snap)) {\n return ValueGuide.snap(option?.trackLength, option?.snap?.snapLength, Array.isArray(option?.snap?.threshold)\n ? option?.snap.threshold\n : [option?.snap?.threshold]);\n }\n else {\n return ValueGuide.identity(option?.trackLength);\n }\n }\n else {\n return ValueGuide.identity();\n }\n };\n ValueGuide.snap = (trackLength = DEFAULT_TRACK_LENGTH, snapLength = DEFAULT_SNAP_LENGTH, thresholds) => new Snap(trackLength, snapLength / trackLength, thresholds);\n ValueGuide.identity = (trackLength = DEFAULT_TRACK_LENGTH) => new Identity(trackLength);\n const DEFAULT_TRACK_LENGTH = 128;\n const DEFAULT_SNAP_LENGTH = 24;\n class Identity {\n length;\n #x = NaN;\n #value = NaN;\n #ratio = 1.0;\n constructor(length) {\n this.length = length;\n }\n begin(value) { this.#value = this.#x = value; }\n moveBy(delta) {\n assert(!isNaN(this.#value), () => \"value has never been set\");\n this.#x += delta / this.length * this.#ratio;\n this.#value = clamp(this.#x, 0.0, 1.0);\n }\n ratio(value) { this.#ratio = value; }\n value() {\n assert(!isNaN(this.#value), () => \"value has never been set\");\n return this.#value;\n }\n disable() { }\n enable() { }\n }\n class Snap {\n #length;\n #margin;\n #thresholds;\n #ranges;\n #x = NaN; // unhinged floating value including the snapping margin\n #value = NaN; // clamped normalised, exposable value\n #ratio = 1.0;\n #enabled = true;\n constructor(length, margin, thresholds) {\n assert(margin > 0.0, () => `margin(${margin}) must be greater then 0`);\n assert(Arrays.isSorted(thresholds), () => \"thresholds are not sorted\");\n assert(margin < length, () => `margin(${margin}) must be lower then length(${length})`);\n this.#length = length;\n this.#margin = margin;\n this.#thresholds = thresholds;\n this.#ranges = thresholds.map((x, index) => x + index * this.#margin);\n }\n begin(value) {\n if (this.#enabled) {\n this.#x = this.valueToX(value);\n }\n this.#value = value;\n }\n moveBy(delta) {\n assert(!isNaN(this.#value), () => \"value has never been set\");\n this.#x += delta / this.#length * this.#ratio;\n this.#value = this.#enabled ? this.xToValue(this.#x) : clamp(this.#x, 0.0, 1.0);\n }\n ratio(value) { this.#ratio = value; }\n value() {\n assert(!isNaN(this.#value), () => \"value has never been set\");\n return this.#value;\n }\n disable() {\n if (!this.#enabled) {\n return;\n }\n this.#enabled = false;\n this.#x = this.xToValue(this.#x);\n }\n enable() {\n if (this.#enabled) {\n return;\n }\n this.#enabled = true;\n this.#x = this.valueToX(this.#x);\n }\n valueToX(value) {\n const index = BinarySearch.rightMost(this.#thresholds, value, NumberComparator);\n if (index < 0) {\n return value;\n }\n else {\n const range = this.#ranges[index];\n const threshold = this.#thresholds[index];\n return value === threshold ? range + this.#margin / 2.0 : range + this.#margin + (value - threshold);\n }\n }\n xToValue(x) {\n const clamped = clamp(x, 0.0, 1.0 + this.#margin * this.#thresholds.length);\n const index = BinarySearch.rightMost(this.#ranges, clamped, NumberComparator);\n if (index < 0) {\n return clamped;\n }\n else {\n const range = this.#ranges[index];\n const threshold = this.#thresholds[index];\n if (clamped > range + this.#margin) {\n return clamped - (range + this.#margin) + threshold;\n }\n else {\n return threshold;\n }\n }\n }\n get margin() { return this.#margin; }\n }\n})(ValueGuide || (ValueGuide = {}));\n", "const key = Symbol.for(\"@openDAW/lib-std\");\nif (globalThis[key]) {\n console.debug(`%c${key.description}%c is already available in ${globalThis.constructor.name}.`, \"color: hsl(10, 83%, 60%)\", \"color: inherit\");\n}\nelse {\n globalThis[key] = true;\n console.debug(`%c${key.description}%c is now available in ${globalThis.constructor.name}.`, \"color: hsl(200, 83%, 60%)\", \"color: inherit\");\n}\nexport * from \"./arrays\";\nexport * from \"./attempts\";\nexport * from \"./bijective\";\nexport * from \"./binary-search\";\nexport * from \"./bits\";\nexport * from \"./cache\";\nexport * from \"./color\";\nexport * from \"./comparators\";\nexport * from \"./curve\";\nexport * from \"./data\";\nexport * from \"./decorators\";\nexport * from \"./generators\";\nexport * from \"./geom\";\nexport * from \"./hash\";\nexport * from \"./intervals\";\nexport * from \"./iterables\";\nexport * from \"./lang\";\nexport * from \"./listeners\";\nexport * from \"./math\";\nexport * from \"./maps\";\nexport * from \"./multimap\";\nexport * from \"./numeric\";\nexport * from \"./objects\";\nexport * from \"./observers\";\nexport * from \"./option\";\nexport * from \"./parameters\";\nexport * from \"./predicates\";\nexport * from \"./progress\";\nexport * from \"./random\";\nexport * from \"./range\";\nexport * from \"./schema\";\nexport * from \"./selection\";\nexport * from \"./sets\";\nexport * from \"./sorted-set\";\nexport * from \"./string-mapping\";\nexport * from \"./strings\";\nexport * from \"./terminable\";\nexport * from \"./time-span\";\nexport * from \"./sync-stream\";\nexport * from \"./uuid\";\nexport * from \"./value-guides\";\nexport * from \"./value-mapping\";\n", "export var Pointers;\n(function (Pointers) {\n Pointers[Pointers[\"Timeline\"] = 0] = \"Timeline\";\n Pointers[Pointers[\"Selection\"] = 1] = \"Selection\";\n Pointers[Pointers[\"PianoMode\"] = 2] = \"PianoMode\";\n Pointers[Pointers[\"User\"] = 3] = \"User\";\n Pointers[Pointers[\"AudioConnection\"] = 4] = \"AudioConnection\";\n Pointers[Pointers[\"InstrumentHost\"] = 5] = \"InstrumentHost\";\n Pointers[Pointers[\"AudioOutput\"] = 6] = \"AudioOutput\";\n Pointers[Pointers[\"NotesConnection\"] = 7] = \"NotesConnection\";\n Pointers[Pointers[\"VoltageConnection\"] = 8] = \"VoltageConnection\";\n Pointers[Pointers[\"AudioUnits\"] = 9] = \"AudioUnits\";\n Pointers[Pointers[\"MidiEffectHost\"] = 10] = \"MidiEffectHost\";\n Pointers[Pointers[\"AudioEffectHost\"] = 11] = \"AudioEffectHost\";\n Pointers[Pointers[\"AudioBusses\"] = 12] = \"AudioBusses\";\n Pointers[Pointers[\"AuxSend\"] = 13] = \"AuxSend\";\n Pointers[Pointers[\"Modulation\"] = 14] = \"Modulation\";\n Pointers[Pointers[\"Automation\"] = 15] = \"Automation\";\n Pointers[Pointers[\"ParameterController\"] = 16] = \"ParameterController\";\n Pointers[Pointers[\"MidiControl\"] = 17] = \"MidiControl\";\n Pointers[Pointers[\"StepAutomation\"] = 18] = \"StepAutomation\";\n Pointers[Pointers[\"Editing\"] = 19] = \"Editing\";\n Pointers[Pointers[\"AudioFile\"] = 20] = \"AudioFile\";\n Pointers[Pointers[\"AudioUnit\"] = 21] = \"AudioUnit\";\n Pointers[Pointers[\"MarkerTrack\"] = 22] = \"MarkerTrack\";\n Pointers[Pointers[\"MarkerEvents\"] = 23] = \"MarkerEvents\";\n Pointers[Pointers[\"ClipCollection\"] = 24] = \"ClipCollection\";\n Pointers[Pointers[\"RegionCollection\"] = 25] = \"RegionCollection\";\n Pointers[Pointers[\"TrackCollection\"] = 26] = \"TrackCollection\";\n Pointers[Pointers[\"Device\"] = 27] = \"Device\";\n Pointers[Pointers[\"Groove\"] = 28] = \"Groove\";\n Pointers[Pointers[\"ModularSetup\"] = 29] = \"ModularSetup\";\n Pointers[Pointers[\"ModuleCollection\"] = 30] = \"ModuleCollection\";\n Pointers[Pointers[\"ConnectionCollection\"] = 31] = \"ConnectionCollection\";\n Pointers[Pointers[\"DeviceUserInterface\"] = 32] = \"DeviceUserInterface\";\n Pointers[Pointers[\"NoteEvents\"] = 33] = \"NoteEvents\";\n Pointers[Pointers[\"NoteEventFeature\"] = 34] = \"NoteEventFeature\";\n Pointers[Pointers[\"NoteEventCollection\"] = 35] = \"NoteEventCollection\";\n Pointers[Pointers[\"ValueEvents\"] = 36] = \"ValueEvents\";\n Pointers[Pointers[\"ValueEventCollection\"] = 37] = \"ValueEventCollection\";\n Pointers[Pointers[\"ValueInterpolation\"] = 38] = \"ValueInterpolation\";\n Pointers[Pointers[\"Sample\"] = 39] = \"Sample\";\n})(Pointers || (Pointers = {}));\n", "export var AudioUnitType;\n(function (AudioUnitType) {\n AudioUnitType[\"Instrument\"] = \"instrument\";\n AudioUnitType[\"Bus\"] = \"bus\";\n AudioUnitType[\"Aux\"] = \"aux\";\n AudioUnitType[\"Output\"] = \"output\";\n})(AudioUnitType || (AudioUnitType = {}));\n", "import { Arrays, assert, BinarySearch, SortedSet, UUID } from \"@opendaw/lib-std\";\nexport class Address {\n static newSet(keyExtractor) {\n return new SortedSet(keyExtractor, Address.Comparator);\n }\n static compose = (uuid, ...fieldKeys) => {\n const keys = fieldKeys.length === 0 ? this.#EMPTY_FIELD_KEYS : new Int16Array(fieldKeys);\n assert(keys.every((value, index) => value === fieldKeys[index]), `fieldKeys (${keys.join(\",\")}) only allows i16`);\n return new Address(uuid, keys);\n };\n static decode(str) {\n const parts = str.split(\"/\");\n assert(parts.length > 0, \"Unable to parse Address\");\n return Address.compose(UUID.parse(parts[0]), ...parts.slice(1).map(x => parseInt(x)));\n }\n static reconstruct(layout) { return this.compose(layout[0], ...layout[1]); }\n static boxRange(set, id, map) {\n const sorted = set.values();\n const startIndex = BinarySearch.leftMostMapped(sorted, id, UUID.Comparator, map);\n const length = sorted.length;\n if (startIndex < 0 || startIndex >= length) {\n return null;\n }\n for (let endIndex = startIndex; endIndex < length; endIndex++) {\n if (UUID.Comparator(map(sorted[endIndex]), id) !== 0) {\n if (startIndex < endIndex) {\n return [startIndex, endIndex];\n }\n else {\n return null;\n }\n }\n }\n return [startIndex, length];\n }\n static Comparator = (a, b) => {\n const compareId = UUID.Comparator(a.#uuid, b.#uuid);\n if (compareId !== 0) {\n return compareId;\n }\n const n = Math.min(a.#fieldKeys.length, b.#fieldKeys.length);\n for (let i = 0; i < n; i++) {\n const comparison = (a.#fieldKeys)[i] - (b.#fieldKeys)[i];\n if (comparison !== 0) {\n return comparison;\n }\n }\n return a.#fieldKeys.length - b.#fieldKeys.length;\n };\n static MinimalComparator = (a, b) => {\n const compareId = UUID.Comparator(a.#uuid, b.#uuid);\n if (compareId !== 0) {\n return compareId;\n }\n const n = Math.min(a.#fieldKeys.length, b.#fieldKeys.length);\n for (let i = 0; i < n; i++) {\n const comparison = (a.#fieldKeys)[i] - (b.#fieldKeys)[i];\n if (comparison !== 0) {\n return comparison;\n }\n }\n return 0;\n };\n static LengthComparator = (a, b) => {\n const compareId = UUID.Comparator(a.#uuid, b.#uuid);\n if (compareId !== 0) {\n return compareId;\n }\n return b.#fieldKeys.length - a.#fieldKeys.length;\n };\n static #EMPTY_FIELD_KEYS = new Int16Array(0);\n #uuid;\n #fieldKeys;\n constructor(uuid, fieldKeys) {\n this.#uuid = uuid;\n this.#fieldKeys = fieldKeys;\n }\n get uuid() { return this.#uuid; }\n get fieldKeys() { return this.#fieldKeys; }\n isBox() { return this.#fieldKeys.length === 0; }\n isContent() { return !this.isBox(); }\n equals(other) { return Address.Comparator(this, other) === 0; }\n compareTo(other) { return Address.Comparator(this, other); }\n append(key) {\n return new Address(this.#uuid, new Int16Array([...this.#fieldKeys, key]));\n }\n startsWith(other) {\n return UUID.Comparator(other.#uuid, this.#uuid) === 0\n && other.#fieldKeys.length <= this.#fieldKeys.length\n && other.#fieldKeys.every((value, index) => this.#fieldKeys[index] === value);\n }\n write(output) {\n output.writeBytes(new Int8Array(this.#uuid.buffer));\n output.writeByte(this.#fieldKeys.length);\n this.#fieldKeys.forEach(key => output.writeShort(key));\n }\n decompose() { return [this.#uuid, this.#fieldKeys]; }\n toJSON() { return { uuid: Array.from(this.#uuid.values()), fields: Array.from(this.#fieldKeys.values()) }; }\n toArrayBuffer() {\n const array = new Uint8Array(UUID.length + this.#fieldKeys.length);\n array.set(this.#uuid, 0);\n array.set(this.#fieldKeys, UUID.length);\n return array.buffer;\n }\n toString() { return [UUID.toString(this.#uuid), ...this.#fieldKeys].join(\"/\"); }\n static read(input) {\n const uuidBytes = UUID.fromDataInput(input);\n const numFields = input.readByte();\n return Address.compose(uuidBytes, ...Arrays.create(() => input.readShort(), numFields));\n }\n}\nexport var Addressable;\n(function (Addressable) {\n Addressable.AddressReader = (addressable) => addressable.address;\n Addressable.Comparator = ({ address: a }, { address: b }) => Address.Comparator(a, b);\n Addressable.equals = (address, sorted) => {\n const [l, r] = BinarySearch.rangeMapped(sorted, address, Address.Comparator, Addressable.AddressReader);\n return sorted.slice(l, r + 1);\n };\n Addressable.startsWith = (address, sorted) => {\n const [l, r] = BinarySearch.rangeMapped(sorted, address, Address.MinimalComparator, Addressable.AddressReader);\n return sorted\n .slice(l, r + 1)\n .filter((addressable) => addressable.address.startsWith(address));\n };\n Addressable.endsWith = (address, sorted) => {\n const l = BinarySearch.leftMostMapped(sorted, address, Address.LengthComparator, Addressable.AddressReader);\n const r = BinarySearch.rightMostMapped(sorted, address, Address.MinimalComparator, Addressable.AddressReader);\n return sorted\n .slice(l, r + 1)\n .filter((addressable) => address.startsWith(addressable.address));\n };\n})(Addressable || (Addressable = {}));\n", "import { Iterables, Listeners, Option, panic } from \"@opendaw/lib-std\";\nimport { Address } from \"./address\";\nexport class PointerHub {\n static validate(pointer, target) {\n if (pointer.address.equals(target.address)) {\n return Option.wrap(`PointerField cannot point to itself: ${pointer}`);\n }\n if (!target.pointerRules.accepts.some((type) => type === pointer.pointerType)) {\n console.warn(target.pointerRules);\n return Option.wrap(`${pointer.toString()} does not satisfy any of the allowed types (${(target.pointerRules)}).`);\n }\n return Option.None;\n }\n #vertex;\n #immediateListeners;\n #transactualListeners;\n #inTransaction = Option.None;\n constructor(vertex) {\n this.#vertex = vertex;\n this.#immediateListeners = new Listeners();\n this.#transactualListeners = new Listeners();\n }\n subscribeImmediate(listener, ...filter) {\n return this.#addFilteredListener(this.#immediateListeners, listener, filter);\n }\n subscribeTransactual(listener, ...filter) {\n return this.#addFilteredListener(this.#transactualListeners, listener, filter);\n }\n catchupAndSubscribeTransactual(listener, ...filter) {\n const added = Address.newSet(pointer => pointer.address);\n added.addMany(this.filter(...filter));\n added.forEach(pointer => listener.onAdd(pointer));\n // This takes track of the listeners notification state.\n // It is possible that the pointer has been added, but it has not been notified yet.\n // That would cause the listener.onAdd method to be involked twice.\n return this.subscribeTransactual({\n onAdd: (pointer) => {\n if (added.add(pointer)) {\n listener.onAdd(pointer);\n }\n },\n onRemove: (pointer) => {\n added.removeByKey(pointer.address);\n listener.onRemove(pointer);\n }\n }, ...filter);\n }\n filter(...types) {\n return (types.length === 0 ? this.incoming() : Iterables.filter(this, (pointerField) => types.some((type) => type === pointerField.pointerType)));\n }\n size() { return this.incoming().length; }\n isEmpty() { return this.size() === 0; }\n nonEmpty() { return this.size() > 0; }\n contains(pointer) { return this.incoming().some(incoming => pointer.address.equals(incoming.address)); }\n incoming() { return this.#vertex.graph.edges().incomingEdgesOf(this.#vertex); }\n onAdded(pointerField) {\n const issue = PointerHub.validate(pointerField, this.#vertex);\n if (issue.nonEmpty()) {\n return panic(issue.unwrap());\n }\n if (this.#inTransaction.isEmpty()) {\n this.#vertex.graph.subscribeEndTransaction(this.#onEndTransaction);\n this.#inTransaction = Option.wrap(new Set(this));\n }\n this.#immediateListeners.proxy.onAdd(pointerField);\n }\n onRemoved(pointerField) {\n if (this.#inTransaction.isEmpty()) {\n this.#vertex.graph.subscribeEndTransaction(this.#onEndTransaction);\n this.#inTransaction = Option.wrap(new Set(this));\n }\n this.#immediateListeners.proxy.onRemove(pointerField);\n }\n [Symbol.iterator]() { return this.incoming().values(); }\n toString() {\n return `{Pointers ${this.#vertex.address}, pointers: ${Array.from(this)\n .map((pointerField) => pointerField.toString())}}`;\n }\n #addFilteredListener(listeners, listener, filter) {\n return listeners.subscribe({\n onAdd: (pointer) => {\n if (filter.length === 0 || filter.some((type) => type === pointer.pointerType)) {\n listener.onAdd(pointer);\n }\n },\n onRemove: (pointer) => {\n if (filter.length === 0 || filter.some((type) => type === pointer.pointerType)) {\n listener.onRemove(pointer);\n }\n }\n });\n }\n #onEndTransaction = () => {\n if (this.#vertex.isAttached()) {\n const beforeState = this.#inTransaction.unwrap(\"Callback without transaction\");\n const afterState = new Set(this);\n beforeState.forEach(pointer => {\n if (!afterState.has(pointer)) {\n this.#transactualListeners.proxy.onRemove(pointer);\n }\n });\n afterState.forEach(pointer => {\n if (!beforeState.has(pointer)) {\n this.#transactualListeners.proxy.onAdd(pointer);\n }\n });\n }\n this.#inTransaction = Option.None;\n };\n}\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Iterables, Lazy, Option, panic, safeExecute } from \"@opendaw/lib-std\";\nimport { Address } from \"./address\";\nimport { PointerHub } from \"./pointer-hub\";\nexport class Field {\n static hook(construct) {\n return new Field(construct);\n }\n #parent;\n #fieldKey;\n #fieldName;\n #pointerRules;\n constructor({ parent, fieldKey, fieldName, pointerRules }) {\n this.#parent = parent;\n this.#fieldKey = fieldKey;\n this.#fieldName = fieldName;\n this.#pointerRules = pointerRules;\n if (pointerRules.mandatory) {\n this.graph.edges().watchVertex(this);\n }\n }\n accept(visitor) {\n return safeExecute(visitor.visitField, this);\n }\n get box() { return this.#parent.box; }\n get graph() { return this.#parent.graph; }\n get parent() { return this.#parent; }\n get fieldKey() { return this.#fieldKey; }\n get fieldName() { return this.#fieldName; }\n get pointerRules() { return this.#pointerRules; }\n get pointerHub() { return new PointerHub(this); }\n get address() { return this.#parent.address.append(this.#fieldKey); }\n get debugPath() {\n return `${this.box.name}:${this.box.mapFields(field => field.fieldName, ...this.address.fieldKeys).join(\"/\")}`;\n }\n isBox() { return false; }\n isField() { return true; }\n isAttached() { return this.graph.findBox(this.address.uuid).nonEmpty(); }\n fields() { return Iterables.empty(); }\n getField(_key) { return panic(); }\n optField(_key) { return Option.None; }\n read(_input) { }\n write(_output) { }\n disconnect() {\n if (this.pointerHub.isEmpty()) {\n return;\n }\n const incoming = this.pointerHub.incoming();\n incoming.forEach(pointer => {\n pointer.defer();\n if (pointer.mandatory || (this.pointerRules.mandatory && incoming.length === 1)) {\n pointer.box.delete();\n }\n });\n }\n toString() { return `{${this.box.constructor.name}:${this.constructor.name} (${this.fieldName}) ${this.address.toString()}`; }\n}\n__decorate([\n Lazy,\n __metadata(\"design:type\", PointerHub),\n __metadata(\"design:paramtypes\", [])\n], Field.prototype, \"pointerHub\", null);\n__decorate([\n Lazy,\n __metadata(\"design:type\", Address),\n __metadata(\"design:paramtypes\", [])\n], Field.prototype, \"address\", null);\n__decorate([\n Lazy,\n __metadata(\"design:type\", String),\n __metadata(\"design:paramtypes\", [])\n], Field.prototype, \"debugPath\", null);\n", "export const NoPointers = Object.freeze({ mandatory: false, accepts: [] });\n", "import { Field } from \"./field\";\nimport { Arrays, asDefined, Option, safeExecute } from \"@opendaw/lib-std\";\nimport { NoPointers } from \"./vertex\";\nexport class ArrayField extends Field {\n static create(construct, factory, length) {\n return new ArrayField(construct, factory, length);\n }\n #fields;\n constructor(construct, factory, length) {\n super(construct);\n this.#fields = Arrays.create((index) => factory({\n parent: this,\n fieldKey: index,\n fieldName: String(index),\n pointerRules: NoPointers\n }), length);\n }\n accept(visitor) {\n return safeExecute(visitor.visitArrayField, this);\n }\n fields() { return this.#fields; }\n getField(key) {\n return asDefined(this.#fields[key]);\n }\n optField(key) {\n return Option.wrap(this.#fields[key]);\n }\n read(input) { this.#fields.forEach(field => field.read(input)); }\n write(output) { this.#fields.forEach(field => field.write(output)); }\n size() { return this.#fields.length; }\n toJSON() { return this.#fields; }\n}\n", "import { assert, ByteArrayInput, ByteArrayOutput } from \"@opendaw/lib-std\";\nexport var Serializer;\n(function (Serializer) {\n const MAGIC_HEADER = 0x464c4453;\n Serializer.writeFields = (output, fields) => {\n const entries = Object.entries(fields);\n output.writeInt(MAGIC_HEADER);\n output.writeShort(entries.length);\n entries.forEach(([key, field]) => {\n const bytes = ByteArrayOutput.create();\n field.write(bytes);\n const buffer = new Int8Array(bytes.toArrayBuffer());\n output.writeShort(Number(key));\n output.writeInt(buffer.length);\n output.writeBytes(buffer);\n });\n };\n Serializer.readFields = (input, fields) => {\n assert(input.readInt() === MAGIC_HEADER, \"Serializer header is corrupt\");\n const numFields = input.readShort();\n for (let fieldIndex = 0; fieldIndex < numFields; fieldIndex++) {\n const key = input.readShort();\n const byteLength = input.readInt();\n const bytes = new Int8Array(byteLength);\n input.readBytes(bytes);\n fields[key]?.read(new ByteArrayInput(bytes.buffer));\n }\n };\n})(Serializer || (Serializer = {}));\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Address } from \"./address\";\nimport { Arrays, asDefined, ByteArrayOutput, ByteCounter, Lazy, Option } from \"@opendaw/lib-std\";\nimport { PointerHub } from \"./pointer-hub\";\nimport { Serializer } from \"./serializer\";\nexport class Box {\n static DEBUG_DELETION = false;\n static Index = 0 | 0;\n #address;\n #graph;\n #name;\n #pointerRules;\n #fields;\n #creationIndex = Box.Index++;\n constructor({ uuid, graph, name, pointerRules }) {\n this.#address = Address.compose(uuid);\n this.#graph = graph;\n this.#name = name;\n this.#pointerRules = pointerRules;\n this.#fields = this.initializeFields();\n if (pointerRules.mandatory) {\n this.graph.edges().watchVertex(this);\n }\n }\n fields() { return Object.values(this.#fields); }\n getField(key) { return asDefined(this.#fields[key]); }\n optField(key) { return Option.wrap(this.#fields[key]); }\n subscribe(propagation, procedure) {\n return this.graph.subscribeVertexUpdates(propagation, this.address, procedure);\n }\n get box() { return this; }\n get name() { return this.#name; }\n get graph() { return this.#graph; }\n get parent() { return this; }\n get address() { return this.#address; }\n get pointerRules() { return this.#pointerRules; }\n get creationIndex() { return this.#creationIndex; }\n get pointerHub() { return new PointerHub(this); }\n estimateMemory() {\n const byteCounter = new ByteCounter();\n this.write(byteCounter);\n return byteCounter.count;\n }\n isBox() { return true; }\n isField() { return false; }\n isAttached() { return this.#graph.findBox(this.address.uuid).nonEmpty(); }\n read(input) { Serializer.readFields(input, this.#fields); }\n write(output) { Serializer.writeFields(output, this.#fields); }\n serialize() {\n const output = ByteArrayOutput.create();\n output.writeInt(this.#creationIndex); // allows to re-load the boxes in same order as created\n output.writeString(this.name);\n output.writeBytes(new Int8Array(this.address.uuid.buffer));\n this.write(output);\n return output.toArrayBuffer();\n }\n toArrayBuffer() {\n const output = ByteArrayOutput.create();\n this.write(output);\n return output.toArrayBuffer();\n }\n incomingEdges() { return this.graph.edges().incomingEdgesOf(this); }\n outgoingEdges() { return this.graph.edges().outgoingEdgesOf(this); }\n mapFields(map, ...keys) {\n if (keys.length === 0) {\n return Arrays.empty();\n }\n let parent = this.getField(keys[0]);\n const result = [map(parent)];\n for (let index = 1; index < keys.length; index++) {\n parent = parent.getField(keys[index]);\n result.push(map(parent));\n }\n return result;\n }\n searchVertex(keys) {\n if (keys.length === 0) {\n return Option.wrap(this);\n }\n let parent = this.optField(keys[0]);\n if (parent.isEmpty()) {\n return Option.None;\n }\n for (let index = 1; index < keys.length; index++) {\n parent = parent.unwrap().optField(keys[index]);\n if (parent.isEmpty()) {\n return Option.None;\n }\n }\n return parent;\n }\n delete() {\n const { boxes, pointers } = this.graph.dependenciesOf(this);\n if (Box.DEBUG_DELETION) {\n console.debug(`Delete ${this.toString()}`);\n console.debug(\"\\tunplugs\", [...pointers].map(x => x.toString()).join(\"\\n\"));\n console.debug(\"\\tunstages\", [...boxes].map(x => x.toString()).join(\"\\n\"), this);\n }\n for (const pointer of pointers) {\n pointer.defer();\n }\n for (const box of boxes) {\n box.unstage();\n }\n this.unstage();\n }\n unstage() { this.graph.unstageBox(this); }\n toString() { return `${this.constructor.name} ${this.address.toString()}`; }\n}\n__decorate([\n Lazy,\n __metadata(\"design:type\", PointerHub),\n __metadata(\"design:paramtypes\", [])\n], Box.prototype, \"pointerHub\", null);\n", "import { Terminator, Unhandled } from \"@opendaw/lib-std\";\nimport { Addressable } from \"./address\";\nexport var Propagation;\n(function (Propagation) {\n Propagation[Propagation[\"This\"] = 0] = \"This\";\n Propagation[Propagation[\"Parent\"] = 1] = \"Parent\";\n Propagation[Propagation[\"Children\"] = 2] = \"Children\";\n})(Propagation || (Propagation = {}));\nexport var Dispatchers;\n(function (Dispatchers) {\n Dispatchers.create = () => new DispatchersImpl();\n})(Dispatchers || (Dispatchers = {}));\nclass DispatchersImpl {\n #thisDispatcher = new Dispatcher(Addressable.equals);\n #parentDispatcher = new Dispatcher(Addressable.startsWith);\n #childrenDispatcher = new Dispatcher(Addressable.endsWith);\n #deferredStations = [];\n #order = 0 | 0;\n #dispatching = false;\n subscribe(propagation, address, procedure) {\n const monitor = new Monitor(address, propagation, this.#order++, procedure);\n if (this.#dispatching) {\n const deferred = new DeferredMonitor(monitor, propagation);\n this.#deferredStations.push(deferred);\n return deferred;\n }\n else {\n return this.subscribeMonitor(monitor, propagation);\n }\n }\n dispatch(target) {\n this.#dispatching = true;\n const invoked = [\n ...this.#thisDispatcher.filter(target),\n ...this.#parentDispatcher.filter(target),\n ...this.#childrenDispatcher.filter(target)\n ];\n invoked\n .sort(({ order: a }, { order: b }) => a - b)\n .forEach((station) => station.procedure(target));\n this.#dispatching = false;\n this.#deferredStations.forEach((station) => station.subscribe(this));\n this.#deferredStations.length = 0;\n }\n subscribeMonitor(monitor, propagation) {\n switch (propagation) {\n case Propagation.This:\n return this.#thisDispatcher.subscribe(monitor);\n case Propagation.Parent:\n return this.#parentDispatcher.subscribe(monitor);\n case Propagation.Children:\n return this.#childrenDispatcher.subscribe(monitor);\n default:\n return Unhandled(propagation);\n }\n }\n countStations() {\n return this.#thisDispatcher.count() + this.#parentDispatcher.count() + this.#childrenDispatcher.count();\n }\n}\nclass Monitor {\n address;\n propagation;\n order;\n procedure;\n constructor(address, propagation, order, procedure) {\n this.address = address;\n this.propagation = propagation;\n this.order = order;\n this.procedure = procedure;\n }\n toString() {\n return `{ Monitor address: ${this.address}, propagation: ${Propagation[this.propagation]}, order: ${this.order} }`;\n }\n}\nclass Dispatcher {\n filterStrategy;\n #monitors = [];\n #sorted = true;\n constructor(filterStrategy) {\n this.filterStrategy = filterStrategy;\n }\n subscribe(monitor) {\n this.#monitors.push(monitor);\n this.#sorted = this.#monitors.length < 2;\n return {\n terminate: () => {\n let index = this.#monitors.length;\n while (--index >= 0) {\n if (this.#monitors[index] === monitor) {\n this.#monitors.splice(index, 1);\n }\n }\n }\n };\n }\n stations() {\n if (!this.#sorted) {\n this.#monitors.sort(Addressable.Comparator);\n this.#sorted = true;\n }\n return this.#monitors;\n }\n filter(target) { return this.filterStrategy(target.address, this.stations()); }\n count() { return this.#monitors.length; }\n}\nclass DeferredMonitor {\n monitor;\n propagation;\n #terminator = new Terminator();\n #terminated = false;\n constructor(monitor, propagation) {\n this.monitor = monitor;\n this.propagation = propagation;\n }\n subscribe(dispatchers) {\n if (this.#terminated) {\n return;\n }\n this.#terminator.terminate();\n this.#terminator.own(dispatchers.subscribeMonitor(this.monitor, this.propagation));\n }\n terminate() {\n this.#terminated = true;\n this.#terminator.terminate();\n }\n}\n", "import { Field } from \"./field\";\nimport { assert, Float, Integer, safeExecute } from \"@opendaw/lib-std\";\nimport { Propagation } from \"./dispatchers\";\nexport var PrimitiveType;\n(function (PrimitiveType) {\n PrimitiveType[\"Boolean\"] = \"boolean\";\n PrimitiveType[\"Float32\"] = \"float32\";\n PrimitiveType[\"Int32\"] = \"int32\";\n PrimitiveType[\"String\"] = \"string\";\n PrimitiveType[\"Bytes\"] = \"bytes\";\n})(PrimitiveType || (PrimitiveType = {}));\nexport const ValueSerialization = {\n [PrimitiveType.Boolean]: {\n type: PrimitiveType.Boolean,\n encode: (output, value) => output.writeBoolean(value),\n decode: (input) => input.readBoolean()\n },\n [PrimitiveType.Float32]: {\n type: PrimitiveType.Float32,\n encode: (output, value) => output.writeFloat(value),\n decode: (input) => input.readFloat()\n },\n [PrimitiveType.Int32]: {\n type: PrimitiveType.Int32,\n encode: (output, value) => output.writeInt(value),\n decode: (input) => input.readInt()\n },\n [PrimitiveType.String]: {\n type: PrimitiveType.String,\n encode: (output, value) => output.writeString(value),\n decode: (input) => input.readString()\n },\n [PrimitiveType.Bytes]: {\n type: PrimitiveType.Bytes,\n encode: (output, value) => {\n output.writeInt(value.length);\n output.writeBytes(value);\n },\n decode: (input) => {\n const array = new Int8Array(input.readInt());\n input.readBytes(array);\n return array;\n }\n }\n};\nexport class PrimitiveField extends Field {\n #type;\n #initValue;\n #value;\n constructor(field, type, value) {\n super(field);\n this.#type = type;\n this.#initValue = this.clamp(value);\n this.#value = this.#initValue;\n }\n accept(visitor) {\n return safeExecute(visitor.visitPrimitiveField, this);\n }\n subscribe(observer) {\n return this.graph.subscribeVertexUpdates(Propagation.This, this.address, () => observer(this));\n }\n catchupAndSubscribe(observer) {\n observer(this);\n return this.subscribe(observer);\n }\n get type() { return this.#type; }\n get initValue() { return this.#initValue; }\n setInitValue(value) {\n assert(this.graph.constructingBox(), \"Cannot change initial value at runtime\");\n this.setValue(this.#initValue = value);\n }\n getValue() { return this.#value; }\n setValue(value) {\n const oldValue = this.#value;\n const newValue = this.clamp(value);\n if (this.equals(newValue)) {\n return;\n }\n this.#value = value;\n this.graph.onPrimitiveValueUpdate(this, oldValue, newValue);\n }\n writeValue(output, value) { this.serialization().encode(output, value); }\n readValue(input) { return this.serialization().decode(input); }\n reset() { this.setValue(this.#initValue); }\n}\nexport class BooleanField extends PrimitiveField {\n static create(construct, value = false) {\n return new BooleanField(construct, value);\n }\n constructor(construct, value) { super(construct, PrimitiveType.Boolean, value); }\n toggle() { this.setValue(!this.getValue()); }\n serialization() { return ValueSerialization[PrimitiveType.Boolean]; }\n equals(value) { return this.getValue() === value; }\n clamp(value) { return value; }\n read(input) { this.setValue(input.readBoolean()); }\n write(output) { output.writeBoolean(this.getValue()); }\n}\nexport class Float32Field extends PrimitiveField {\n static create(construct, value = 0.0) {\n return new Float32Field(construct, value);\n }\n constructor(construct, value) { super(construct, PrimitiveType.Float32, value); }\n serialization() { return ValueSerialization[PrimitiveType.Float32]; }\n equals(value) { return this.getValue() === value; }\n clamp(value) { return Float.toFloat32(value); }\n read(input) { this.setValue(input.readFloat()); }\n write(output) { output.writeFloat(this.getValue()); }\n}\nexport class Int32Field extends PrimitiveField {\n static create(construct, value = 0) {\n return new Int32Field(construct, value);\n }\n constructor(construct, value) { super(construct, PrimitiveType.Int32, value); }\n serialization() { return ValueSerialization[PrimitiveType.Int32]; }\n equals(value) { return this.getValue() === value; }\n clamp(value) { return Integer.toInt(value); }\n read(input) { this.setValue(input.readInt()); }\n write(output) { output.writeInt(this.getValue()); }\n}\nexport class StringField extends PrimitiveField {\n static create(construct, value = \"\") {\n return new StringField(construct, value);\n }\n constructor(construct, value) { super(construct, PrimitiveType.String, value); }\n serialization() { return ValueSerialization[PrimitiveType.String]; }\n equals(value) { return this.getValue() === value; }\n clamp(value) { return value; }\n read(input) { this.setValue(input.readString()); }\n write(output) { output.writeString(this.getValue()); }\n}\nexport class ByteArrayField extends PrimitiveField {\n static create(construct, value = this.#empty) {\n return new ByteArrayField(construct, value);\n }\n static #empty = Object.freeze(new Int8Array(0));\n constructor(construct, value) { super(construct, PrimitiveType.Bytes, value); }\n serialization() { return ValueSerialization[PrimitiveType.Bytes]; }\n equals(value) {\n return this.getValue().length === value.length && this.getValue().every((x, index) => value[index] === x);\n }\n clamp(value) { return value; }\n read(input) {\n const bytes = new Int8Array(input.readInt());\n input.readBytes(bytes);\n this.setValue(bytes);\n }\n write(output) {\n const bytes = this.getValue();\n output.writeInt(bytes.length);\n output.writeBytes(bytes);\n }\n}\n", "import { ValueSerialization } from \"./primitive\";\nimport { Address } from \"./address\";\nimport { Arrays, ByteArrayInput, Option, UUID } from \"@opendaw/lib-std\";\nexport var Updates;\n(function (Updates) {\n Updates.decode = (input) => {\n const numBlocks = input.readInt();\n return Arrays.create(() => {\n const type = input.readString();\n switch (type) {\n case \"new\": {\n const uuid = UUID.fromDataInput(input);\n const name = input.readString();\n const settings = new Int8Array(input.readInt());\n input.readBytes(settings);\n return new NewUpdate(uuid, name, settings.buffer);\n }\n case \"pointer\": {\n const address = Address.read(input);\n const oldAddress = input.readBoolean() ? Option.wrap(Address.read(input)) : Option.None;\n const newAddress = input.readBoolean() ? Option.wrap(Address.read(input)) : Option.None;\n return new PointerUpdate(address, oldAddress, newAddress);\n }\n case \"primitive\": {\n const address = Address.read(input);\n const type = input.readString();\n const serializer = ValueSerialization[type];\n const oldValue = serializer.decode(input);\n const newValue = serializer.decode(input);\n return new PrimitiveUpdate(address, serializer, oldValue, newValue);\n }\n case \"delete\": {\n const uuid = UUID.fromDataInput(input);\n const name = input.readString();\n const settings = new Int8Array(input.readInt());\n input.readBytes(settings);\n return new DeleteUpdate(uuid, name, settings.buffer);\n }\n }\n }, numBlocks);\n };\n})(Updates || (Updates = {}));\nexport class NewUpdate {\n type = \"new\";\n #uuid;\n #name;\n #settings;\n constructor(uuid, name, settings) {\n this.#uuid = uuid;\n this.#name = name;\n this.#settings = settings;\n }\n get uuid() { return this.#uuid; }\n get name() { return this.#name; }\n get settings() { return this.#settings; }\n forward(graph) {\n graph.createBox(this.#name, this.#uuid, box => box.read(new ByteArrayInput(this.#settings)));\n }\n inverse(graph) {\n graph.findBox(this.#uuid).unwrap(() => `Could not find ${this.#name}`).unstage();\n }\n write(output) {\n output.writeString(this.type);\n UUID.toDataOutput(output, this.#uuid);\n output.writeString(this.#name);\n output.writeInt(this.#settings.byteLength);\n output.writeBytes(new Int8Array(this.#settings));\n }\n toString() {\n return `{NewUpdate uuid: ${UUID.toString(this.#uuid)}, attachment: ${this.settings.byteLength}b`;\n }\n toDebugString(_graph) { return this.toString(); }\n}\nexport class PrimitiveUpdate {\n type = \"primitive\";\n #address;\n #serialization;\n #oldValue;\n #newValue;\n constructor(address, serialization, oldValue, newValue) {\n this.#address = address;\n this.#serialization = serialization;\n this.#oldValue = oldValue;\n this.#newValue = newValue;\n }\n get address() { return this.#address; }\n get oldValue() { return this.#oldValue; }\n get newValue() { return this.#newValue; }\n matches(field) { return field.address.equals(this.address); }\n inverse(graph) { this.field(graph).setValue(this.#oldValue); }\n forward(graph) { this.field(graph).setValue(this.#newValue); }\n field(graph) {\n return graph.findVertex(this.#address)\n .unwrap(() => `Could not find PrimitiveField at ${this.#address}`);\n }\n write(output) {\n output.writeString(this.type);\n this.#address.write(output);\n output.writeString(this.#serialization.type);\n this.#serialization.encode(output, this.#oldValue);\n this.#serialization.encode(output, this.#newValue);\n }\n toString() {\n return `{PrimitiveUpdate oldValue: ${this.#oldValue}, newValue: ${this.#newValue}`;\n }\n}\nexport class PointerUpdate {\n type = \"pointer\";\n #address;\n #oldValue;\n #newValue;\n constructor(address, oldValue, newValue) {\n this.#address = address;\n this.#oldValue = oldValue;\n this.#newValue = newValue;\n }\n get address() { return this.#address; }\n get oldValue() { return this.#oldValue; }\n get newValue() { return this.#newValue; }\n matches(field) { return field.address.equals(this.address); }\n inverse(graph) { this.field(graph).targetAddress = this.#oldValue; }\n forward(graph) { this.field(graph).targetAddress = this.#newValue; }\n field(graph) {\n return graph.findVertex(this.#address)\n .unwrap(() => `Could not find PointerField at ${this.#address}`);\n }\n write(output) {\n output.writeString(this.type);\n this.#address.write(output);\n this.#oldValue.match({\n none: () => output.writeBoolean(false),\n some: address => {\n output.writeBoolean(true);\n address.write(output);\n }\n });\n this.#newValue.match({\n none: () => output.writeBoolean(false),\n some: address => {\n output.writeBoolean(true);\n address.write(output);\n }\n });\n }\n toString() {\n return `{PointerUpdate oldValue: ${this.#oldValue.unwrapOrNull()}, newValue: ${this.#newValue.unwrapOrNull()}`;\n }\n}\nexport class DeleteUpdate {\n type = \"delete\";\n #uuid;\n #name;\n #settings;\n constructor(uuid, name, settings) {\n this.#uuid = uuid;\n this.#name = name;\n this.#settings = settings;\n }\n get uuid() { return this.#uuid; }\n get name() { return this.#name; }\n get settings() { return this.#settings; }\n forward(graph) {\n graph.findBox(this.#uuid).unwrap(() => `Could not find ${this.#name}`).unstage();\n }\n inverse(graph) {\n graph.createBox(this.#name, this.#uuid, box => box.read(new ByteArrayInput(this.#settings)));\n }\n write(output) {\n output.writeString(this.type);\n UUID.toDataOutput(output, this.#uuid);\n output.writeString(this.#name);\n output.writeInt(this.#settings.byteLength);\n output.writeBytes(new Int8Array(this.#settings));\n }\n toString() {\n return `{DeleteUpdate uuid: ${UUID.toString(this.#uuid)}, attachment: ${this.settings.byteLength}b`;\n }\n}\n", "import { Option, panic, safeExecute } from \"@opendaw/lib-std\";\nimport { Address } from \"./address\";\nimport { PointerHub } from \"./pointer-hub\";\nimport { Field } from \"./field\";\nimport { Propagation } from \"./dispatchers\";\nconst _Unreferenceable = Symbol(\"Unreferenceable\");\nexport class PointerField extends Field {\n static create(construct, pointerType, mandatory) {\n return new PointerField(construct, pointerType, mandatory);\n }\n #pointerType;\n #mandatory;\n #targetVertex = Option.None;\n #targetAddress = Option.None;\n constructor(field, pointerType, mandatory) {\n super(field);\n this.#pointerType = pointerType;\n this.#mandatory = mandatory;\n if (mandatory) {\n this.graph.edges().watchVertex(this);\n }\n }\n get pointerHub() { return panic(`${this} cannot be pointed to`); }\n get pointerType() { return this.#pointerType; }\n get mandatory() { return this.#mandatory; }\n accept(visitor) {\n return safeExecute(visitor.visitPointerField, this);\n }\n subscribe(observer) {\n return this.graph.subscribeVertexUpdates(Propagation.This, this.address, () => observer(this));\n }\n catchupAndSubscribe(observer) {\n observer(this);\n return this.graph.subscribeVertexUpdates(Propagation.This, this.address, () => this.graph.subscribeEndTransaction(() => observer(this)));\n }\n refer(vertex) {\n this.targetVertex = Option.wrap(vertex);\n }\n defer() { this.targetVertex = Option.None; }\n get targetVertex() { return this.#targetVertex; }\n set targetVertex(option) {\n if (option.nonEmpty()) {\n const issue = PointerHub.validate(this, option.unwrap());\n if (issue.nonEmpty()) {\n panic(issue.unwrap());\n }\n }\n this.targetAddress = option.map(vertex => vertex.address);\n }\n get targetAddress() { return this.#targetAddress; }\n set targetAddress(newValue) {\n const oldValue = this.#targetAddress;\n if ((oldValue.isEmpty() && newValue.isEmpty())\n || (newValue.nonEmpty() && oldValue.unwrapOrNull()?.equals(newValue.unwrap())) === true) {\n return;\n }\n this.#targetAddress = newValue;\n this.graph.onPointerAddressUpdated(this, oldValue, newValue);\n }\n isEmpty() { return this.targetAddress.isEmpty(); }\n nonEmpty() { return this.targetAddress.nonEmpty(); }\n resolve() {\n const targetAddress = this.targetAddress;\n const target = targetAddress.flatMap((address) => this.graph.findVertex(address));\n if (targetAddress.nonEmpty() && target.isEmpty()) {\n return panic(`${targetAddress.unwrapOrNull()?.toString()} could not be resolved`);\n }\n this.#targetVertex = target;\n }\n read(input) {\n this.targetAddress = input.readBoolean() ? Option.wrap(Address.read(input)) : Option.None;\n }\n write(output) {\n this.#targetAddress.match({\n none: () => output.writeBoolean(false),\n some: address => {\n output.writeBoolean(true);\n address.write(output);\n }\n });\n }\n}\n", "import { Arrays, assert, isDefined, isInstanceOf, panic } from \"@opendaw/lib-std\";\nimport { Address } from \"./address\";\nimport { PointerField } from \"./pointer\";\nexport class GraphEdges {\n #requiresTarget;\n #requiresPointer;\n #incoming;\n #outgoing;\n constructor() {\n this.#requiresTarget = Address.newSet(source => source.address);\n this.#requiresPointer = Address.newSet(vertex => vertex.address);\n this.#incoming = Address.newSet(([vertex]) => vertex.address);\n this.#outgoing = Address.newSet(([source]) => source.address);\n }\n watchVertex(vertex) {\n if (isInstanceOf(vertex, PointerField)) {\n if (!vertex.mandatory) {\n return panic(\"watchVertex called but has no edge requirement\");\n }\n this.#requiresTarget.add(vertex);\n }\n else {\n if (!vertex.pointerRules.mandatory) {\n return panic(\"watchVertex called but has no edge requirement\");\n }\n this.#requiresPointer.add(vertex);\n }\n }\n unwatchVerticesOf(...boxes) {\n const map = ({ box: { address: { uuid } } }) => uuid;\n for (const { address: { uuid } } of boxes) {\n this.#removeSameBox(this.#requiresTarget, uuid, map);\n this.#removeSameBox(this.#requiresPointer, uuid, map);\n }\n for (const box of boxes) {\n const outgoingLinks = this.outgoingEdgesOf(box);\n if (outgoingLinks.length > 0) {\n return panic(`${box} has outgoing edges: ${outgoingLinks.map(([source, target]) => `[${source.toString()}, ${target.toString()}]`)}`);\n }\n const incomingPointers = this.incomingEdgesOf(box);\n if (incomingPointers.length > 0) {\n return panic(`${box} has incoming edges from: ${incomingPointers.map((source) => source.toString())}`);\n }\n }\n }\n connect(source, target) {\n this.#outgoing.add([source, target]);\n this.#incoming.opt(target.address).match({\n none: () => this.#incoming.add([target, [source]]),\n some: ([, sources]) => sources.push(source)\n });\n }\n disconnect(source) {\n const [, target] = this.#outgoing.removeByKey(source.address);\n const [, sources] = this.#incoming.get(target.address);\n Arrays.remove(sources, source);\n if (sources.length === 0) {\n this.#incoming.removeByKey(target.address);\n }\n }\n outgoingEdgesOf(box) {\n return this.#collectSameBox(this.#outgoing, box.address.uuid, ([{ box: { address: { uuid } } }]) => uuid);\n }\n incomingEdgesOf(vertex) {\n if (vertex.isBox()) {\n return this.#collectSameBox(this.#incoming, vertex.address.uuid, ([{ address: { uuid } }]) => uuid)\n .flatMap(([_, pointers]) => pointers);\n }\n else {\n return this.#incoming.opt(vertex.address).mapOr(([_, pointers]) => pointers, Arrays.empty());\n }\n }\n validateRequirements() {\n this.#requiresTarget.forEach(pointer => {\n if (pointer.isEmpty()) {\n if (pointer.mandatory) {\n return panic(`Pointer ${pointer.toString()} requires an edge.`);\n }\n else {\n return panic(`Illegal state: ${pointer} has no edge requirements.`);\n }\n }\n });\n this.#requiresPointer.forEach(target => {\n if (target.pointerHub.isEmpty()) {\n if (target.pointerRules.mandatory) {\n return panic(`Target ${target.toString()} requires an edge.`);\n }\n else {\n return panic(`Illegal state: ${target} has no edge requirements.`);\n }\n }\n });\n }\n verifyPointers() {\n this.#requiresTarget.forEach(pointer => assert(pointer.isAttached(), `${pointer.address.toString()} is not attached`));\n this.#requiresPointer.forEach(pointer => assert(pointer.isAttached(), `${pointer.address.toString()} is not attached`));\n }\n #collectSameBox(set, id, map) {\n const range = Address.boxRange(set, id, map);\n return isDefined(range) ? set.values().slice(range[0], range[1]) : Arrays.empty();\n }\n #removeSameBox(set, id, map) {\n const range = Address.boxRange(set, id, map);\n if (isDefined(range)) {\n set.removeRange(range[0], range[1]);\n }\n }\n}\n", "import { assert, ByteArrayInput, ByteArrayOutput, Checksum, isDefined, Listeners, Option, panic, UUID } from \"@opendaw/lib-std\";\nimport { Dispatchers } from \"./dispatchers\";\nimport { DeleteUpdate, NewUpdate, PointerUpdate, PrimitiveUpdate } from \"./updates\";\nimport { GraphEdges } from \"./graph-edges\";\nexport class BoxGraph {\n #boxFactory;\n #boxes;\n #deferredPointerUpdates;\n #updateListeners;\n #immediateUpdateListeners;\n #transactionListeners;\n #dispatchers;\n #edges;\n #finalizeTransactionObservers;\n #inTransaction = false;\n #constructingBox = false;\n constructor(boxFactory = Option.None) {\n this.#boxFactory = boxFactory;\n this.#boxes = UUID.newSet(box => box.address.uuid);\n this.#deferredPointerUpdates = [];\n this.#dispatchers = Dispatchers.create();\n this.#updateListeners = new Listeners();\n this.#immediateUpdateListeners = new Listeners();\n this.#transactionListeners = new Listeners();\n this.#edges = new GraphEdges();\n this.#finalizeTransactionObservers = [];\n }\n beginTransaction() {\n assert(!this.#inTransaction, \"Transaction already in progress\");\n this.#inTransaction = true;\n this.#transactionListeners.proxy.onBeginTransaction();\n }\n endTransaction() {\n assert(this.#inTransaction, \"No transaction in progress\");\n this.#inTransaction = false;\n this.resolvePointers();\n // it is possible that new observers will be added while executing\n while (this.#finalizeTransactionObservers.length > 0) {\n this.#finalizeTransactionObservers.splice(0).forEach(observer => observer());\n if (this.#finalizeTransactionObservers.length > 0) {\n console.debug(`${this.#finalizeTransactionObservers.length} new observers while notifying`);\n }\n }\n this.#transactionListeners.proxy.onEndTransaction();\n }\n inTransaction() { return this.#inTransaction; }\n constructingBox() { return this.#constructingBox; }\n resolvePointers() {\n if (this.#deferredPointerUpdates.length === 0) {\n return;\n }\n this.#deferredPointerUpdates.forEach(({ pointerField, update }) => this.#processPointerValueUpdate(pointerField, update));\n this.#deferredPointerUpdates.length = 0;\n }\n createBox(name, uuid, constructor) {\n this.#boxFactory.unwrap(\"No box-factory installed\")(name, this, uuid, constructor);\n }\n stageBox(box, constructor) {\n this.#assertTransaction();\n assert(!this.#constructingBox, \"Cannot construct box while other box is constructing\");\n if (isDefined(constructor)) {\n this.#constructingBox = true;\n constructor(box);\n this.#constructingBox = false;\n }\n const added = this.#boxes.add(box);\n assert(added, `${box} already staged`);\n const update = new NewUpdate(box.address.uuid, box.name, box.toArrayBuffer());\n this.#updateListeners.proxy.onUpdate(update);\n this.#immediateUpdateListeners.proxy.onUpdate(update);\n return box;\n }\n subscribeTransaction(listener) {\n return this.#transactionListeners.subscribe(listener);\n }\n subscribeToAllUpdates(listener) {\n return this.#updateListeners.subscribe(listener);\n }\n subscribeToAllUpdatesImmediate(listener) {\n return this.#immediateUpdateListeners.subscribe(listener);\n }\n subscribeVertexUpdates(propagation, address, procedure) {\n return this.#dispatchers.subscribe(propagation, address, procedure);\n }\n subscribeEndTransaction(observer) { this.#finalizeTransactionObservers.push(observer); }\n unstageBox(box) {\n this.#assertTransaction();\n const deleted = this.#boxes.removeByKey(box.address.uuid);\n assert(deleted === box, `${box} could not be found to unstage`);\n this.#edges.unwatchVerticesOf(box);\n const update = new DeleteUpdate(box.address.uuid, box.name, box.toArrayBuffer());\n this.#updateListeners.proxy.onUpdate(update);\n this.#immediateUpdateListeners.proxy.onUpdate(update);\n }\n findBox(uuid) {\n return this.#boxes.opt(uuid);\n }\n findVertex(address) {\n return this.#boxes.opt(address.uuid).flatMap(box => box.searchVertex(address.fieldKeys));\n }\n boxes() { return this.#boxes.values(); }\n edges() { return this.#edges; }\n checksum() {\n const checksum = new Checksum();\n this.boxes().forEach(box => box.write(checksum));\n return checksum.result();\n }\n onPrimitiveValueUpdate(field, oldValue, newValue) {\n this.#assertTransaction();\n if (field.isAttached() && !this.#constructingBox) {\n const update = new PrimitiveUpdate(field.address, field.serialization(), oldValue, newValue);\n this.#dispatchers.dispatch(update);\n this.#updateListeners.proxy.onUpdate(update);\n this.#immediateUpdateListeners.proxy.onUpdate(update);\n }\n }\n onPointerAddressUpdated(pointerField, oldValue, newValue) {\n this.#assertTransaction();\n const update = new PointerUpdate(pointerField.address, oldValue, newValue);\n if (this.#constructingBox) {\n this.#deferredPointerUpdates.push({ pointerField, update });\n }\n else {\n this.#processPointerValueUpdate(pointerField, update);\n this.#immediateUpdateListeners.proxy.onUpdate(update);\n }\n }\n #processPointerValueUpdate(pointerField, update) {\n const oldVertex = pointerField.targetVertex.unwrapOrNull();\n pointerField.resolve();\n const newVertex = pointerField.targetVertex.unwrapOrNull();\n if (oldVertex !== newVertex) {\n oldVertex?.pointerHub.onRemoved(pointerField);\n newVertex?.pointerHub.onAdded(pointerField);\n if (oldVertex !== null) {\n this.#edges.disconnect(pointerField);\n }\n if (newVertex !== null) {\n this.#edges.connect(pointerField, newVertex);\n }\n }\n this.#dispatchers.dispatch(update);\n this.#updateListeners.proxy.onUpdate(update);\n }\n dependenciesOf(box) {\n const boxes = new Set();\n const pointers = new Set();\n const trace = (box) => {\n if (boxes.has(box)) {\n return;\n }\n boxes.add(box);\n box.outgoingEdges()\n .filter(([pointer]) => !pointers.has(pointer))\n .forEach(([source, target]) => {\n pointers.add(source);\n if (target.pointerRules.mandatory &&\n target.pointerHub.incoming().every(pointer => pointers.has(pointer))) {\n return trace(target.box);\n }\n });\n box.incomingEdges()\n .forEach(pointer => {\n pointers.add(pointer);\n if (pointer.mandatory) {\n trace(pointer.box);\n }\n });\n };\n trace(box);\n boxes.delete(box);\n return { boxes: boxes, pointers: Array.from(pointers).reverse() };\n }\n verifyPointers() {\n console.debug(\"validate requirements\");\n this.#edges.validateRequirements();\n this.#edges.verifyPointers();\n console.debug(\"verify pointers\");\n let count = 0 | 0;\n const verify = (vertex) => {\n for (const field of vertex.fields()) {\n field.accept({\n visitPointerField: (pointer) => {\n if (pointer.targetAddress.nonEmpty()) {\n const isResolved = pointer.targetVertex.nonEmpty();\n const inGraph = this.findVertex(pointer.targetAddress.unwrap()).nonEmpty();\n assert(isResolved, `pointer ${pointer.address} is broken`);\n assert(inGraph, `Cannot find target for pointer ${pointer.address}`);\n count++;\n }\n },\n visitObjectField: (object) => verify(object)\n });\n }\n };\n this.#boxes.forEach((box) => verify(box));\n console.debug(\"verification complete.\");\n return { count };\n }\n debugBoxes() {\n console.table(this.#boxes.values().reduce((dict, box) => {\n dict[UUID.toString(box.address.uuid)] = {\n class: box.name,\n \"incoming links\": box.incomingEdges().length,\n \"outgoing links\": box.outgoingEdges().length,\n \"est. memory (bytes)\": box.estimateMemory()\n };\n return dict;\n }, {}));\n }\n debugDependencies() {\n console.debug(\"Dependencies:\");\n this.boxes().forEach(box => {\n console.debug(`\\t${box}`);\n for (const dependency of this.dependenciesOf(box).boxes) {\n console.debug(`\\t\\t${dependency}`);\n }\n });\n }\n addressToDebugPath(address) {\n return address.flatMap(address => address.isBox()\n ? this.findBox(address.uuid).map(box => box.name)\n : this.findBox(address.uuid)\n .flatMap(box => box.searchVertex(address.fieldKeys)\n .map(vertex => vertex.isField() ? vertex.debugPath : panic(\"Unknown address\"))));\n }\n toArrayBuffer() {\n const output = ByteArrayOutput.create();\n const boxes = this.#boxes.values();\n output.writeInt(boxes.length);\n boxes.forEach(box => {\n const buffer = box.serialize();\n output.writeInt(buffer.byteLength);\n output.writeBytes(new Int8Array(buffer));\n });\n return output.toArrayBuffer();\n }\n fromArrayBuffer(arrayBuffer) {\n assert(this.#boxes.isEmpty(), \"Cannot call fromArrayBuffer if boxes is not empty\");\n const input = new ByteArrayInput(arrayBuffer);\n const numBoxes = input.readInt();\n this.beginTransaction();\n const boxes = [];\n for (let i = 0; i < numBoxes; i++) {\n const length = input.readInt();\n const int8Array = new Int8Array(length);\n input.readBytes(int8Array);\n const boxStream = new ByteArrayInput(int8Array.buffer);\n const creationIndex = boxStream.readInt();\n const name = boxStream.readString();\n const uuid = UUID.fromDataInput(boxStream);\n boxes.push({ creationIndex, name, uuid, boxStream });\n }\n boxes\n .sort((a, b) => a.creationIndex - b.creationIndex)\n .forEach(({ name, uuid, boxStream }) => this.createBox(name, uuid, box => box.read(boxStream)));\n this.endTransaction();\n }\n #assertTransaction() {\n assert(this.#inTransaction, () => \"Modification only prohibited in transaction mode.\");\n }\n}\n", "import { Field } from \"./field\";\nimport { asDefined, Option, safeExecute } from \"@opendaw/lib-std\";\nimport { Serializer } from \"./serializer\";\nexport class ObjectField extends Field {\n #fields;\n constructor(construct) {\n super(construct);\n this.#fields = this.initializeFields();\n }\n accept(visitor) {\n return safeExecute(visitor.visitObjectField, this);\n }\n fields() { return Object.values(this.#fields); }\n getField(key) { return asDefined(this.#fields[key]); }\n optField(key) { return Option.wrap(this.#fields[key]); }\n read(input) { Serializer.readFields(input, this.#fields); }\n write(output) { Serializer.writeFields(output, this.#fields); }\n toJSON() { return this.#fields; }\n}\n", "import { asDefined, assert, isDefined, Iterables, panic } from \"@opendaw/lib-std\";\n/**\n * Communicator provides type-safe communication between Window, Worker, MessagePort, BroadcastChannel.\n * Passed objects are structured cloned: https://developer.mozilla.org/en-US/docs/Web/API/structuredClone\n * It is highly advised not to pass classes with methods and or real private properties (starting with #).\n * They will lose their prototype and private property inheritance, and it is cumbersome to patch that up later.\n * Also read: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain\n */\nexport var Communicator;\n(function (Communicator) {\n Communicator.sender = (messenger, bind) => bind(new Sender(messenger));\n Communicator.executor = (messenger, protocol) => new Executor(messenger, protocol);\n class Sender {\n #messenger;\n #expected = new Map();\n #subscription;\n #returnId = 0;\n constructor(messenger) {\n this.#messenger = messenger;\n this.#subscription = messenger.subscribe(this.#messageHandler);\n }\n terminate() { this.#subscription.terminate(); }\n dispatchAndForget = (func, ...args) => this.#messenger.send({\n type: \"send\",\n returnId: false,\n func: func.name,\n args: Array.from(Iterables.map(args, arg => ({ value: arg })))\n });\n dispatchAndReturn = (func, ...args) => new Promise((resolve, reject) => {\n const entries = Iterables.reduce(args, (callbacks, arg, index) => {\n if (typeof arg === \"function\") {\n callbacks.push([index, arg]);\n }\n return callbacks;\n }, []);\n this.#expected.set(this.#returnId, {\n executorTuple: { resolve, reject },\n callbacks: new Map(entries)\n });\n this.#messenger.send({\n type: \"send\",\n returnId: this.#returnId,\n func: func.name,\n args: Array.from(Iterables.map(args, (arg, index) => typeof arg === \"function\" ? ({ callback: index }) : ({ value: arg })))\n });\n this.#returnId++;\n });\n #messageHandler = (message) => {\n const returns = this.#expected.get(message.returnId);\n if (isDefined(returns)) {\n if (message.type === \"resolve\") {\n returns.executorTuple.resolve(message.resolve);\n this.#expected.delete(message.returnId);\n }\n else if (message.type === \"reject\") {\n returns.executorTuple.reject(message.reject);\n this.#expected.delete(message.returnId);\n }\n else if (message.type === \"callback\") {\n returns.callbacks?.get(message.funcAt).apply(this, message.args);\n }\n }\n else {\n panic(`Promise has already been resolved. ${JSON.stringify(message)}`);\n }\n };\n }\n class Executor {\n #messenger;\n #protocol;\n #subscription;\n constructor(messenger, protocol) {\n this.#messenger = messenger;\n this.#protocol = protocol;\n this.#subscription = messenger.subscribe(this.#messageHandler);\n }\n terminate() { this.#subscription.terminate(); }\n #messageHandler = (message) => {\n assert(message.type === \"send\", () => \"Message type must be 'send'\");\n const object = Object.getPrototypeOf(this.#protocol) === Object.getPrototypeOf({})\n ? this.#protocol\n : Object.getPrototypeOf(this.#protocol);\n const func = asDefined(object[message.func], `${message.func.toString()} does not exists on ${this.#protocol}`);\n const returnId = message.returnId;\n if (returnId === false) {\n func.apply(this.#protocol, message.args.map((arg) => {\n return \"value\" in arg\n ? arg.value\n : panic(`${message.func.toString()} has no promise.`);\n }));\n }\n else {\n try {\n const promise = func.apply(this.#protocol, message.args\n .map(arg => \"callback\" in arg\n ? (...args) => this.#sendCallback(returnId, arg.callback, args)\n : arg.value));\n promise.then(value => this.#sendResolve(returnId, value), reason => this.#sendReject(returnId, reason));\n }\n catch (reason) {\n this.#sendReject(returnId, reason);\n }\n }\n };\n #sendResolve = (returnId, value) => this.#messenger.send({ type: \"resolve\", returnId, resolve: value });\n #sendReject = (returnId, reason) => this.#messenger.send({ type: \"reject\", returnId, reject: reason });\n #sendCallback = (returnId, func, args) => this.#messenger.send({ type: \"callback\", returnId, funcAt: func, args });\n }\n Communicator.Executor = Executor;\n})(Communicator || (Communicator = {}));\n", "import { asDefined, ByteArrayOutput } from \"@opendaw/lib-std\";\nexport var Fetch;\n(function (Fetch) {\n Fetch.ProgressArrayBuffer = (progress) => async (response) => {\n if (!response.headers.has(\"Content-Length\")) {\n console.debug(\"No Content-Length\");\n return response.arrayBuffer();\n }\n const length = parseInt(response.headers.get(\"Content-Length\"));\n console.debug(`Content-Length: ${length}b`);\n if (isNaN(length) || length < 4096) {\n return response.arrayBuffer();\n } // smaller sizes do not need progress\n progress(0.0);\n const output = ByteArrayOutput.create(length);\n const reader = asDefined(response.body, \"response.body is empty\").getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n value.forEach((value) => output.writeByte(value));\n progress(output.position / length);\n }\n progress(1.0);\n return output.toArrayBuffer();\n };\n})(Fetch || (Fetch = {}));\n", "export var Runtime;\n(function (Runtime) {\n // Debounces execution by delaying the call until after the timeout has passed without new invocations.\n Runtime.debounce = (() => {\n let id = undefined;\n return (exec, timeout = 1000) => {\n clearTimeout(id);\n id = setTimeout(exec, timeout);\n };\n })();\n Runtime.scheduleInterval = (exec, time, ...args) => {\n const id = setInterval(exec, time, ...args);\n return { terminate: () => clearInterval(id) };\n };\n Runtime.scheduleTimeout = (exec, time, ...args) => {\n const id = setTimeout(exec, time, ...args);\n return { terminate: () => clearTimeout(id) };\n };\n})(Runtime || (Runtime = {}));\n", "import { assert, InaccessibleProperty, Option, safeExecute, Terminable, TimeSpan } from \"@opendaw/lib-std\";\nexport class IntervalRetryOption {\n maxRetry;\n timeSpan;\n #count = 0 | 0;\n constructor(maxRetry, timeSpan) {\n this.maxRetry = maxRetry;\n this.timeSpan = timeSpan;\n }\n retry(reason, exec) {\n if (++this.#count === this.maxRetry) {\n return false;\n }\n console.debug(`${reason} > will retry in ${this.timeSpan.toString()}`);\n setTimeout(exec, this.timeSpan.millis());\n return true;\n }\n}\nexport var Promises;\n(function (Promises) {\n class ResolveResult {\n value;\n status = \"resolved\";\n constructor(value) {\n this.value = value;\n }\n error = InaccessibleProperty(\"Cannot access error when promise is resolved\");\n }\n class RejectedResult {\n error;\n status = \"rejected\";\n constructor(error) {\n this.error = error;\n }\n value = InaccessibleProperty(\"Cannot access value when promise is rejected\");\n }\n Promises.makeAbortable = async (owner, promise) => {\n let running = true;\n owner.own(Terminable.create(() => running = false));\n return new Promise((resolve, reject) => promise.then(value => { if (running) {\n resolve(value);\n } }, reason => { if (running) {\n reject(reason);\n } }));\n };\n Promises.tryCatch = (promise) => promise.then(value => new ResolveResult(value), error => new RejectedResult(error));\n Promises.retry = (call, retryOption = new IntervalRetryOption(3, TimeSpan.seconds(3))) => call().catch(reason => new Promise((resolve, reject) => {\n const onFailure = (reason) => {\n if (!retryOption.retry(reason, () => call().then((value) => resolve(value), onFailure))) {\n reject(reason);\n }\n };\n onFailure(reason);\n }));\n // this is for testing the catch branch\n Promises.fail = (after, thenUse) => {\n let use = () => new Promise((_, reject) => setTimeout(() => reject(\"fails first\"), after.millis()));\n return () => {\n const promise = use();\n use = thenUse;\n return promise;\n };\n };\n Promises.timeout = (promise, timeSpan, fail) => {\n return new Promise((resolve, reject) => {\n let running = true;\n const timeout = setTimeout(() => {\n running = false;\n reject(new Error(fail ?? \"timeout\"));\n }, timeSpan.millis());\n promise\n .then((value) => { if (running) {\n resolve(value);\n } }, reason => { if (running) {\n reject(reason);\n } })\n .finally(() => clearTimeout(timeout));\n });\n };\n Promises.sequential = (fn) => {\n let lastPromise = Promise.resolve(null);\n return (arg) => lastPromise = lastPromise.then(() => fn(arg));\n };\n class Limit {\n max;\n #waiting;\n #running = 0 | 0;\n constructor(max = 1) {\n this.max = max;\n this.#waiting = [];\n }\n async add(provider) {\n if (this.#running < this.max) {\n this.#running++;\n return provider().finally(() => this.#continue());\n }\n else {\n const resolvers = Promise.withResolvers();\n this.#waiting.push([provider, resolvers]);\n return resolvers.promise.finally(() => this.#continue());\n }\n }\n #continue() {\n assert(this.#running > 0, \"Internal Error in Promises.Limit\");\n if (--this.#running < this.max) {\n if (this.#waiting.length > 0) {\n const [provider, { resolve, reject }] = this.#waiting.shift();\n this.#running++;\n provider().then(resolve, reject);\n }\n }\n }\n }\n Promises.Limit = Limit;\n class Latest {\n #onResolve;\n #onReject;\n #onFinally;\n #latest = Option.None;\n constructor(onResolve, onReject, onFinally) {\n this.#onResolve = onResolve;\n this.#onReject = onReject;\n this.#onFinally = onFinally;\n }\n update(promise) {\n this.#latest = Option.wrap(promise);\n promise\n .then(value => { if (this.#latest.contains(promise)) {\n this.#onResolve(value);\n } })\n .catch(reason => { if (this.#latest.contains(promise)) {\n this.#onReject(reason);\n } })\n .finally(() => {\n if (this.#latest.contains(promise)) {\n this.terminate();\n safeExecute(this.#onFinally);\n }\n });\n }\n terminate() { this.#latest = Option.None; }\n }\n Promises.Latest = Latest;\n})(Promises || (Promises = {}));\n", "import { Promises } from \"./promises\";\nexport var network;\n(function (network) {\n const limit = new Promises.Limit(4);\n network.limitFetch = (input, init) => limit.add(() => fetch(input, init));\n})(network || (network = {}));\n", "import { TimeSpan } from \"@opendaw/lib-std\";\nexport var TimeSpanUtils;\n(function (TimeSpanUtils) {\n TimeSpanUtils.startEstimator = () => {\n const startTime = performance.now();\n return (progress) => {\n if (progress === 0.0) {\n return TimeSpan.POSITIVE_INFINITY;\n }\n const runtime = (performance.now() - startTime);\n return TimeSpan.millis(runtime / progress - runtime);\n };\n };\n})(TimeSpanUtils || (TimeSpanUtils = {}));\n", "import { tryCatch } from \"@opendaw/lib-std\";\nexport var Wait;\n(function (Wait) {\n Wait.frame = () => new Promise(resolve => requestAnimationFrame(() => resolve()));\n Wait.frames = (numFrames) => new Promise(resolve => {\n let count = numFrames;\n const callback = () => { if (--count <= 0) {\n resolve();\n }\n else {\n requestAnimationFrame(callback);\n } };\n requestAnimationFrame(callback);\n });\n Wait.timeSpan = (time, ...args) => new Promise(resolve => setTimeout(resolve, time.millis(), ...args));\n Wait.event = (target, type) => new Promise(resolve => target.addEventListener(type, resolve, { once: true }));\n Wait.observable = (observable) => new Promise(resolve => {\n const terminable = observable.subscribe(() => {\n terminable.terminate();\n resolve();\n });\n });\n Wait.complete = (generator) => new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const { status, value: next, error } = tryCatch(() => generator.next());\n if (status === \"success\") {\n const { done, value } = next;\n if (done) {\n clearInterval(interval);\n resolve(value);\n }\n }\n else {\n clearInterval(interval);\n reject(error);\n }\n }, 0);\n });\n})(Wait || (Wait = {}));\n", "const key = Symbol.for(\"@openDAW/lib-runtime\");\nif (globalThis[key]) {\n console.debug(`%c${key.description}%c is already available in ${globalThis.constructor.name}.`, \"color: hsl(10, 83%, 60%)\", \"color: inherit\");\n}\nelse {\n globalThis[key] = true;\n console.debug(`%c${key.description}%c is now available in ${globalThis.constructor.name}.`, \"color: hsl(200, 83%, 60%)\", \"color: inherit\");\n}\nexport * from \"./communicator\";\nexport * from \"./fetch\";\nexport * from \"./runtime\";\nexport * from \"./messenger\";\nexport * from \"./network\";\nexport * from \"./promises\";\nexport * from \"./stopwatch\";\nexport * from \"./timespan\";\nexport * from \"./wait\";\n", "const key = Symbol.for(\"@openDAW/lib-box\");\nif (globalThis[key]) {\n console.debug(`%c${key.description}%c is already available in ${globalThis.constructor.name}.`, \"color: hsl(10, 83%, 60%)\", \"color: inherit\");\n}\nelse {\n globalThis[key] = true;\n console.debug(`%c${key.description}%c is now available in ${globalThis.constructor.name}.`, \"color: hsl(200, 83%, 60%)\", \"color: inherit\");\n}\nexport * from \"./address\";\nexport * from \"./array\";\nexport * from \"./box\";\nexport * from \"./dispatchers\";\nexport * from \"./editing\";\nexport * from \"./field\";\nexport * from \"./graph\";\nexport * from \"./graph-edges\";\nexport * from \"./object\";\nexport * from \"./pointer\";\nexport * from \"./pointer-hub\";\nexport * from \"./primitive\";\nexport * from \"./sync\";\nexport * from \"./sync-source\";\nexport * from \"./sync-target\";\nexport * from \"./updates\";\nexport * from \"./vertex\";\n", "import { panic } from \"@opendaw/lib-std\";\nexport const IndexComparator = (a, b) => {\n if (a === b) {\n return 0;\n }\n const difference = a - b;\n if (difference === 0) {\n return panic(`Indices cannot be equal (${a}, ${b})`);\n }\n return difference;\n};\n", "import { assert, BinarySearch, clamp, Listeners, Option, UUID } from \"@opendaw/lib-std\";\nimport { IndexComparator } from \"./IndexComparator\";\nexport class SortedBoxAdapterCollection {\n static create(field, provider, pointers) {\n return new SortedBoxAdapterCollection(field, provider, pointers);\n }\n #field;\n #entries;\n #listeners;\n #subscription;\n #sorted = null;\n constructor(field, provider, pointers) {\n this.#field = field;\n this.#entries = UUID.newSet(entry => entry.adapter.uuid);\n this.#listeners = new Listeners();\n this.#subscription = field.pointerHub.catchupAndSubscribeTransactual({\n onAdd: (pointer) => {\n this.#sorted = null;\n const adapter = provider(pointer.box);\n const subscription = adapter.indexField.subscribe(() => {\n this.#sorted = null;\n this.#listeners.proxy.onReorder(adapter);\n });\n const added = this.#entries.add({ adapter, subscription });\n assert(added, `Could not add ${adapter}`);\n this.#listeners.proxy.onAdd(adapter);\n },\n onRemove: (pointer) => {\n this.#sorted = null;\n const uuid = pointer.box.address.uuid;\n const { adapter, subscription } = this.#entries.removeByKey(uuid);\n subscription.terminate();\n this.#listeners.proxy.onRemove(adapter);\n }\n }, pointers);\n }\n field() { return this.#field; }\n subscribe(listener) {\n return this.#listeners.subscribe(listener);\n }\n catchupAndSubscribe(listener) {\n this.#entries.forEach(({ adapter }) => listener.onAdd(adapter));\n return this.subscribe(listener);\n }\n getAdapterByIndex(index) {\n const idx = BinarySearch.exactMapped(this.adapters(), index, IndexComparator, adapter => adapter.indexField.getValue());\n return idx === -1 ? Option.None : Option.wrap(this.adapters()[idx]);\n }\n getAdapterById(uuid) { return this.#entries.opt(uuid).map(({ adapter }) => adapter); }\n getMinFreeIndex() {\n const adapters = this.adapters();\n for (let index = 0; index < adapters.length; index++) {\n if (adapters[index].indexField.getValue() > index) {\n return index;\n }\n }\n return adapters.length;\n }\n adapters() {\n if (this.#sorted === null) {\n this.#sorted = this.#entries.values()\n .map(({ adapter }) => adapter)\n .sort((a, b) => a.indexField.getValue() - b.indexField.getValue());\n }\n return this.#sorted;\n }\n move(adapter, delta) {\n this.moveIndex(adapter.indexField.getValue(), delta);\n }\n moveIndex(startIndex, delta) {\n const adapters = this.adapters();\n const adapter = adapters[startIndex];\n if (delta < 0) {\n const newIndex = clamp(startIndex + delta, 0, adapters.length - 1);\n for (let index = newIndex; index < startIndex; index++) {\n adapters[index].indexField.setValue(index + 1);\n }\n adapter.indexField.setValue(newIndex);\n }\n else if (delta > 1) {\n const newIndex = clamp(startIndex + (delta - 1), 0, adapters.length - 1);\n for (let index = startIndex; index < newIndex; index++) {\n adapters[index + 1].indexField.setValue(index);\n }\n adapter.indexField.setValue(newIndex);\n }\n else {\n console.warn(`moveIndex had no effect: startIndex: ${startIndex}, delta: ${delta}`);\n }\n }\n size() { return this.#entries.size(); }\n isEmpty() { return this.size() === 0; }\n terminate() {\n this.#sorted = null;\n this.#entries.forEach(({ subscription }) => subscription.terminate());\n this.#entries.clear();\n this.#listeners.terminate();\n this.#subscription.terminate();\n }\n}\n", "/**\n * BPM detector (90-180 BPM) for a mono Float32Array.\n * Port of Mark Hills bpm(1) with a light \"low-BPM penalty\" to dodge \u00BD-tempo aliases.\n */\nexport var BPMTools;\n(function (BPMTools) {\n function detect(buf, sampleRate, options = {}) {\n const { interval = 64, // samples between energy taps\n scanSteps = 1_024, // coarse grid\n scanSamples = 2_048, // autodiff averages / point\n minBPM = 90, maxBPM = 180 } = options;\n const env = new Float32Array(Math.floor(buf.length / interval));\n let v = 0.0, k = 0.0, i = 0;\n for (const x of buf) {\n const z = Math.abs(x);\n v += (z - v) * (z > v ? 1 / 8 : 1 / 512);\n if (++k === interval) {\n k = 0;\n env[i++] = v;\n }\n }\n if (!env.length)\n return NaN;\n const sample = (frames, index) => frames[Math.floor(index)] ?? 0.0;\n const bpmToIv = (b) => (sampleRate / (b / 60.0)) / interval;\n const ivToBpm = (iv) => (sampleRate / (iv * interval)) * 60.0;\n const BEATS = [-32, -16, -8, -4, -2, -1, 1, 2, 4, 8, 16, 32];\n const NO_BEATS = [-0.5, -0.25, 0.25, 0.5];\n const autodiff = (iv) => {\n const mid = Math.random() * env.length;\n const v0 = sample(env, mid);\n let d = 0, t = 0;\n for (const b of BEATS) {\n const w = 1 / Math.abs(b);\n d += w * Math.abs(sample(env, mid + b * iv) - v0);\n t += w;\n }\n for (const nb of NO_BEATS) {\n const w = Math.abs(nb);\n d -= w * Math.abs(sample(env, mid + nb * iv) - v0);\n t += w;\n }\n return d / t;\n };\n const avgDiff = (iv) => {\n let s = 0.0;\n for (let i = 0; i < scanSamples; ++i)\n s += autodiff(iv);\n return s / scanSamples;\n };\n const slow = bpmToIv(minBPM);\n const fast = bpmToIv(maxBPM);\n const step = (slow - fast) / scanSteps;\n let bestBpm = minBPM, bestScore = Infinity;\n for (let iv = fast; iv <= slow; iv += step) {\n const bpm = ivToBpm(iv);\n const cost = avgDiff(iv) * (minBPM / bpm);\n if (cost < bestScore) {\n bestScore = cost;\n bestBpm = bpm;\n }\n }\n return bestBpm;\n }\n BPMTools.detect = detect;\n})(BPMTools || (BPMTools = {}));\n", "import { Arrays } from \"@opendaw/lib-std\";\nexport var Chord;\n(function (Chord) {\n Chord.Major = [0, 2, 4, 5, 7, 9, 11];\n Chord.Minor = [0, 2, 3, 5, 7, 8, 10];\n Chord.NoteLabels = [\"C\", \"C#\", \"D\", \"D#\", \"E\", \"F\", \"F#\", \"G\", \"G#\", \"A\", \"A#\", \"B\"];\n Chord.compile = (scale, root, variation, n) => Arrays.create(index => {\n const step = variation + index * 2;\n const interval = scale[step % 7] + Math.floor(step / 7) * 12;\n return root + interval;\n }, n);\n Chord.toString = (midiNote) => Chord.NoteLabels[midiNote % 12] + (Math.floor(midiNote / 12) - 2);\n})(Chord || (Chord = {}));\n", "import { Arrays, BinarySearch, Generators, Integer, isDefined, mod, NumberComparator, Option, Predicates } from \"@opendaw/lib-std\";\nexport var Event;\n(function (Event) {\n Event.Comparator = (a, b) => a.position - b.position;\n Event.PositionExtractor = (event) => event.position;\n})(Event || (Event = {}));\nexport var EventSpan;\n(function (EventSpan) {\n EventSpan.complete = (event) => event.position + event.duration;\n EventSpan.DescendingComparator = (a, b) => EventSpan.complete(b) - EventSpan.complete(a);\n})(EventSpan || (EventSpan = {}));\n// https://www.desmos.com/calculator/xz4tl5a9o9\nexport var LoopableRegion;\n(function (LoopableRegion) {\n LoopableRegion.globalToLocal = (region, ppqn) => mod(ppqn - region.position + region.loopOffset, region.loopDuration);\n // This locates the first loop iteration and returns a LoopPass, if the loop overlaps the passed range\n // It is probably only used in region editors to render the region's content with the same renderer.\n LoopableRegion.locateLoop = ({ position, complete, loopOffset, loopDuration }, from, to) => {\n const rawStart = position - loopOffset;\n const rawEnd = rawStart + loopDuration;\n if (rawStart >= to || rawEnd <= from) {\n return Option.None;\n } // no overlap\n const resultStart = Math.max(rawStart, from);\n const resultEnd = Math.min(rawEnd, to);\n return Option.wrap({\n index: 0,\n rawStart,\n rawEnd,\n regionStart: Math.max(rawStart, position),\n regionEnd: Math.min(rawEnd, complete),\n resultStart,\n resultEnd,\n resultStartValue: rawStart < resultStart ? (resultStart - rawStart) / loopDuration : 0.0,\n resultEndValue: rawEnd > resultEnd ? (resultEnd - rawStart) / loopDuration : 1.0\n });\n };\n // This locates all loop passes within a given range.\n // This is used for region rendering but can also be used for sequencing region's content.\n function* locateLoops({ position, complete, loopOffset, loopDuration }, from, to) {\n const offset = position - loopOffset;\n const seekMin = Math.max(position, from);\n const seekMax = Math.min(complete, to);\n let passIndex = Math.floor((seekMin - offset) / loopDuration);\n let rawStart = offset + passIndex * loopDuration;\n while (rawStart < seekMax) {\n const rawEnd = rawStart + loopDuration;\n const regionStart = Math.max(rawStart, position);\n const regionEnd = Math.min(rawEnd, complete);\n const resultStart = Math.max(rawStart, seekMin);\n const resultEnd = Math.min(rawEnd, seekMax);\n const resultStartValue = rawStart < resultStart ? (resultStart - rawStart) / loopDuration : 0.0;\n const resultEndValue = rawEnd > resultEnd ? (resultEnd - rawStart) / loopDuration : 1.0;\n yield {\n index: passIndex++,\n rawStart,\n rawEnd,\n regionStart,\n regionEnd,\n resultStart,\n resultEnd,\n resultStartValue,\n resultEndValue\n };\n rawStart = rawEnd;\n }\n }\n LoopableRegion.locateLoops = locateLoops;\n})(LoopableRegion || (LoopableRegion = {}));\nexport class EventCollection {\n static DefaultComparator = (a, b) => a.position - b.position;\n static create(comparator) {\n return new EventCollection(comparator ?? EventCollection.DefaultComparator);\n }\n #array;\n constructor(comparator) { this.#array = new EventArrayImpl(comparator); }\n add(event) { this.#array.add(event); }\n remove(event) { return this.#array.remove(event); }\n contains(event) { return this.#array.contains(event); }\n clear() { this.#array.clear(); }\n optAt(index) { return this.#array.optAt(index); }\n asArray() { return this.#array.asArray(); }\n lowerEqual(position, predicate) {\n return this.#array.lowerEqual(position, predicate);\n }\n greaterEqual(position, predicate) {\n return this.#array.greaterEqual(position, predicate);\n }\n floorLastIndex(position) { return this.#array.floorLastIndex(position); }\n ceilFirstIndex(position) { return this.#array.ceilFirstIndex(position); }\n iterateFrom(fromPosition, predicate) {\n if (this.#array.isEmpty()) {\n return Generators.empty();\n }\n return this.#array.iterateFrom(fromPosition, predicate);\n }\n iterateRange(fromPosition, toPosition, predicate) {\n if (this.#array.isEmpty()) {\n return Generators.empty();\n }\n return this.#array.iterate(this.#array.ceilFirstIndex(fromPosition), toPosition, predicate);\n }\n length() { return this.#array.length(); }\n isEmpty() { return this.#array.isEmpty(); }\n onIndexingChanged() { this.#array.onIndexingChanged(); }\n}\nexport class RegionCollection {\n static Comparator = (a, b) => a.position - b.position;\n static create(comparator) {\n return new RegionCollection(comparator);\n }\n #array;\n constructor(comparator = RegionCollection.Comparator) {\n this.#array = new EventArrayImpl(comparator);\n }\n add(event) { this.#array.add(event); }\n remove(event) { return this.#array.remove(event); }\n contains(event) { return this.#array.contains(event); }\n clear() { this.#array.clear(); }\n optAt(index) { return this.#array.optAt(index); }\n asArray() { return this.#array.asArray(); }\n lowerEqual(position, predicate) {\n return this.#array.lowerEqual(position, predicate);\n }\n greaterEqual(position, predicate) {\n return this.#array.greaterEqual(position, predicate);\n }\n floorLastIndex(position) { return this.#array.floorLastIndex(position); }\n ceilFirstIndex(position) { return this.#array.ceilFirstIndex(position); }\n iterateFrom(fromPosition, predicate) {\n return this.#array.isEmpty() ? Generators.empty() : this.#array.iterateFrom(fromPosition, predicate);\n }\n iterateRange(fromPosition, toPosition) {\n if (this.#array.isEmpty()) {\n return Generators.empty();\n }\n let index = Math.max(0, this.#array.floorLastIndex(fromPosition));\n let period = this.#array.optAt(index);\n if (period === null) {\n return Generators.empty();\n }\n while (period.position + period.duration <= fromPosition) {\n period = this.#array.optAt(++index);\n if (period === null || period.position >= toPosition) {\n return Generators.empty();\n }\n }\n return this.#array.iterate(index, toPosition);\n }\n length() { return this.#array.length(); }\n isEmpty() { return this.#array.isEmpty(); }\n onIndexingChanged() { this.#array.onIndexingChanged(); }\n}\nexport class EventSpanRetainer {\n #array;\n constructor() { this.#array = []; }\n addAndRetain(event) {\n if (this.#array.length === 0) {\n this.#array.push(event);\n }\n else {\n const insertIndex = BinarySearch.leftMost(this.#array, event, EventSpan.DescendingComparator);\n this.#array.splice(insertIndex, 0, event);\n }\n }\n *overlapping(position, comparator) {\n const result = this.#array.filter(event => event.position <= position && position < event.position + event.duration);\n yield* isDefined(comparator) ? result.sort(comparator) : result;\n }\n *releaseLinearCompleted(position) {\n if (this.#array.length === 0) {\n return;\n }\n for (let lastIndex = this.#array.length - 1; lastIndex >= 0; lastIndex--) {\n const event = this.#array[lastIndex];\n if (EventSpan.complete(event) < position) {\n this.#array.splice(lastIndex, 1);\n yield event;\n }\n else {\n return;\n }\n }\n }\n *releaseAll() {\n if (this.#array.length === 0) {\n return;\n }\n for (let lastIndex = this.#array.length - 1; lastIndex >= 0; lastIndex--) {\n const event = this.#array[lastIndex];\n if (Number.POSITIVE_INFINITY > event.duration) {\n this.#array.splice(lastIndex, 1);\n yield event;\n }\n }\n }\n isEmpty() { return this.#array.length === 0; }\n nonEmpty() { return this.#array.length > 0; }\n clear() { Arrays.clear(this.#array); }\n}\nclass EventArrayImpl {\n comparator;\n #array = [];\n #unsorted = false;\n modCount = 0;\n constructor(comparator) {\n this.comparator = comparator;\n }\n add(event) {\n ++this.modCount;\n this.#array.push(event);\n if (this.#array.length > 1) {\n this.#unsorted = true;\n }\n }\n remove(event) {\n ++this.modCount;\n const index = this.#array.indexOf(event);\n if (-1 === index) {\n return false;\n }\n this.#array.splice(index, 1);\n return true;\n }\n contains(event) {\n const size = this.#array.length;\n if (size === 0) {\n return false;\n }\n if (this.#unsorted) {\n this.#sort();\n }\n const key = event.position;\n const startIndex = BinarySearch.leftMostMapped(this.#array, key, NumberComparator, Event.PositionExtractor);\n for (let i = startIndex; i < this.#array.length; i++) {\n const other = this.#array[i];\n if (other === event) {\n return true;\n }\n if (other.position !== key) {\n return false;\n }\n }\n return false;\n }\n clear() {\n ++this.modCount;\n Arrays.clear(this.#array);\n this.#unsorted = false;\n }\n optAt(index) {\n if (index < 0 || index >= this.#array.length) {\n return null;\n }\n if (this.#unsorted) {\n this.#sort();\n }\n return this.#array[index];\n }\n asArray() {\n if (this.#unsorted) {\n this.#sort();\n }\n return this.#array;\n }\n lowerEqual(position, predicate) {\n if (predicate === undefined) {\n return this.optAt(this.floorLastIndex(position));\n }\n let index = this.floorLastIndex(position);\n while (index >= 0) {\n const event = this.#array[index--];\n if (predicate(event)) {\n return event;\n }\n }\n return null;\n }\n greaterEqual(position, predicate) {\n if (predicate === undefined) {\n return this.optAt(this.ceilFirstIndex(position));\n }\n let index = this.ceilFirstIndex(position);\n while (index < this.#array.length) {\n const event = this.#array[index++];\n if (predicate(event)) {\n return event;\n }\n }\n return null;\n }\n floorLastIndex(position) {\n if (this.#unsorted) {\n this.#sort();\n }\n return BinarySearch.rightMostMapped(this.#array, position, NumberComparator, Event.PositionExtractor);\n }\n ceilFirstIndex(position) {\n if (this.#unsorted) {\n this.#sort();\n }\n return BinarySearch.leftMostMapped(this.#array, position, NumberComparator, Event.PositionExtractor);\n }\n iterateFrom(fromPosition, predicate) {\n const floorLastIndex = this.floorLastIndex(fromPosition);\n let startIndex = floorLastIndex;\n if (startIndex < 0) {\n return this.iterate(0, Integer.MAX_VALUE, predicate);\n }\n while (startIndex >= 0) {\n const event = this.optAt(startIndex);\n if (event !== null && predicate !== undefined && predicate(event)) {\n return this.iterate(startIndex, Integer.MAX_VALUE, predicate);\n }\n startIndex--;\n }\n return this.iterate(floorLastIndex, Integer.MAX_VALUE, predicate);\n }\n length() { return this.#array.length; }\n isEmpty() { return this.#array.length === 0; }\n onIndexingChanged() { this.#unsorted = this.length() > 1; }\n *iterate(fromIndex, toPosition, predicate = Predicates.alwaysTrue) {\n if (this.#unsorted) {\n this.#sort();\n }\n while (fromIndex < this.#array.length) {\n const element = this.#array[fromIndex++];\n if (element.position >= toPosition) {\n return;\n }\n if (predicate(element)) {\n yield element;\n }\n }\n }\n #sort() {\n this.#array.sort(this.comparator);\n this.#unsorted = false;\n }\n}\n", "// Pulses per quarter note (PPQN)\n// 960 = 3*5*2^6\nconst Quarter = 960;\nconst Bar = Quarter << 2; // 3_840\nconst SemiQuaver = Quarter >>> 2; // 240\nconst fromSignature = (nominator, denominator) => Math.floor(Bar / denominator) * nominator;\nconst toParts = (ppqn, nominator = 4, denominator = 4) => {\n const lowerPulses = fromSignature(1, denominator);\n const beats = Math.floor(ppqn / lowerPulses);\n const bars = Math.floor(beats / nominator);\n const remainingPulses = Math.floor(ppqn) - fromSignature(bars * nominator, denominator);\n const ticks = remainingPulses % lowerPulses;\n const semiquavers = Math.floor(ticks / SemiQuaver);\n const remainingTicks = ticks % SemiQuaver;\n return {\n bars,\n beats: beats - bars * nominator,\n semiquavers,\n ticks: remainingTicks\n };\n};\nconst secondsToPulses = (seconds, bpm) => seconds * bpm / 60.0 * Quarter;\nconst pulsesToSeconds = (pulses, bpm) => (pulses * 60.0 / Quarter) / bpm;\nconst samplesToPulses = (samples, bpm, sampleRate) => secondsToPulses(samples / sampleRate, bpm);\nconst pulsesToSamples = (pulses, bpm, sampleRate) => pulsesToSeconds(pulses, bpm) * sampleRate;\nexport const PPQN = {\n Bar,\n Quarter,\n SemiQuaver,\n fromSignature,\n toParts,\n secondsToPulses,\n pulsesToSeconds,\n samplesToPulses,\n pulsesToSamples,\n toString: (pulses, nominator = 4, denominator = 4) => {\n const { bars, beats, semiquavers, ticks } = toParts(pulses | 0, nominator, denominator);\n return `${bars + 1}.${beats + 1}.${semiquavers + 1}:${ticks}`;\n }\n};\n", "import { PPQN } from \"./ppqn\";\nexport var Fraction;\n(function (Fraction) {\n Fraction.builder = () => new Builder();\n Fraction.toDouble = ([n, d]) => n / d;\n Fraction.toPPQN = ([n, d]) => PPQN.fromSignature(n, d);\n class Builder {\n #list = [];\n add(fraction) {\n this.#list.push(fraction);\n return this;\n }\n asArray() { return this.#list; }\n asAscendingArray() { return this.#list.toSorted((a, b) => Fraction.toDouble(a) - Fraction.toDouble(b)); }\n asDescendingArray() { return this.#list.toSorted((a, b) => Fraction.toDouble(b) - Fraction.toDouble(a)); }\n }\n})(Fraction || (Fraction = {}));\n", "import { assert, BinarySearch, NumberComparator, quantizeFloor } from \"@opendaw/lib-std\";\nexport var Groove;\n(function (Groove) {\n Groove.Identity = {\n warp: (position) => position,\n unwarp: (position) => position\n };\n})(Groove || (Groove = {}));\nexport class GroovePattern {\n #func;\n constructor(func) { this.#func = func; }\n warp(position) { return this.#transform(true, position); }\n unwarp(position) { return this.#transform(false, position); }\n #transform(forward, position) {\n const duration = this.#func.duration();\n const start = quantizeFloor(position, duration);\n const normalized = (position - start) / duration;\n const transformed = forward ? this.#func.fx(normalized) : this.#func.fy(normalized);\n return start + transformed * duration;\n }\n}\nexport class QuantisedGrooveFunction {\n #values;\n constructor(values) {\n assert(values.length >= 2, \"Must have at least two values [0, 1]\");\n assert(values[0] === 0.0, \"First entry must be zero\");\n assert(values[values.length - 1] === 1.0, \"Last entry must be one\");\n this.#values = values;\n }\n fx(x) {\n if (x <= 0.0) {\n return 0.0;\n }\n if (x >= 1.0) {\n return 1.0;\n }\n const idxFloat = x * (this.#values.length - 1);\n const idxInteger = idxFloat | 0;\n const valueFloor = this.#values[idxInteger];\n const alpha = idxFloat - idxInteger;\n return valueFloor + alpha * (this.#values[idxInteger + 1] - valueFloor);\n }\n fy(y) {\n if (y <= 0.0) {\n return 0.0;\n }\n if (y >= 1.0) {\n return 1.0;\n }\n const index = BinarySearch.rightMost(this.#values, y, NumberComparator);\n const curr = this.#values[index];\n const next = this.#values[index + 1];\n const alpha = (y - curr) / (next - curr);\n return (index + alpha) / (this.#values.length - 1);\n }\n}\nexport class GrooveChain {\n #grooves;\n constructor(grooves) { this.#grooves = grooves; }\n warp(position) {\n for (let i = 0; i < this.#grooves.length; i++) {\n position = this.#grooves[i].warp(position);\n }\n return position;\n }\n unwarp(position) {\n for (let i = this.#grooves.length - 1; i >= 0; i--) {\n position = this.#grooves[i].unwarp(position);\n }\n return position;\n }\n}\n", "export var MidiKeys;\n(function (MidiKeys) {\n MidiKeys.BlackKeyIndices = [1, 3, 6, 8, 10];\n MidiKeys.BlackKeyBits = MidiKeys.BlackKeyIndices.reduce((bits, keyIndex) => (bits |= 1 << keyIndex), 0);\n MidiKeys.Names = {\n English: [\"C\", \"C#\", \"D\", \"D#\", \"E\", \"F\", \"F#\", \"G\", \"G#\", \"A\", \"A#\", \"B\"],\n German: [\"C\", \"Cis\", \"D\", \"Dis\", \"E\", \"F\", \"Fis\", \"G\", \"Gis\", \"A\", \"Ais\", \"H\"],\n Solfege: [\"Do\", \"Do#\", \"R\u00E9\", \"R\u00E9#\", \"Mi\", \"Fa\", \"Fa#\", \"Sol\", \"Sol#\", \"La\", \"La#\", \"Si\"],\n French: [\"Do\", \"Do#\", \"R\u00E9\", \"R\u00E9#\", \"Mi\", \"Fa\", \"Fa#\", \"Sol\", \"Sol#\", \"La\", \"La#\", \"Si\"],\n Spanish: [\"Do\", \"Do#\", \"Re\", \"Re#\", \"Mi\", \"Fa\", \"Fa#\", \"Sol\", \"Sol#\", \"La\", \"La#\", \"Si\"],\n Japanese: [\"\u30C9\", \"\u30C9\u266F\", \"\u30EC\", \"\u30EC\u266F\", \"\u30DF\", \"\u30D5\u30A1\", \"\u30D5\u30A1\u266F\", \"\u30BD\", \"\u30BD\u266F\", \"\u30E9\", \"\u30E9\u266F\", \"\u30B7\"]\n };\n MidiKeys.isBlackKey = (note) => (MidiKeys.BlackKeyBits & (1 << (note % 12))) !== 0;\n MidiKeys.toFullString = (note) => `${MidiKeys.Names.English[note % 12]}${(Math.floor(note / 12) - 2)}`;\n class PredefinedScaleImpl {\n #name;\n #bits;\n constructor(name, ...keys) {\n this.#name = name;\n this.#bits = keys.reduce((bits, keyIndex) => (bits |= 1 << keyIndex), 0);\n }\n get name() { return this.#name; }\n get bits() { return this.#bits; }\n has(note) { return (this.#bits & (1 << (note % 12))) !== 0; }\n equals(other) { return this.#bits === other.bits; }\n }\n MidiKeys.StockScales = [\n new PredefinedScaleImpl(\"Major\", 0, 2, 4, 5, 7, 9, 11),\n new PredefinedScaleImpl(\"Natural Minor\", 0, 2, 3, 5, 7, 8, 10),\n new PredefinedScaleImpl(\"Harmonic Minor\", 0, 2, 3, 5, 7, 8, 11),\n new PredefinedScaleImpl(\"Melodic Minor\", 0, 2, 3, 5, 7, 9, 11),\n new PredefinedScaleImpl(\"Dorian\", 0, 2, 3, 5, 7, 9, 10),\n new PredefinedScaleImpl(\"Phrygian\", 0, 1, 3, 5, 7, 8, 10),\n new PredefinedScaleImpl(\"Lydian\", 0, 2, 4, 6, 7, 9, 11),\n new PredefinedScaleImpl(\"Mixolydian\", 0, 2, 4, 5, 7, 9, 10),\n new PredefinedScaleImpl(\"Locrian\", 0, 1, 3, 5, 6, 8, 10),\n new PredefinedScaleImpl(\"Pentatonic Major\", 0, 2, 4, 7, 9),\n new PredefinedScaleImpl(\"Pentatonic Minor\", 0, 3, 5, 7, 10),\n new PredefinedScaleImpl(\"Blues\", 0, 3, 5, 6, 7, 10),\n new PredefinedScaleImpl(\"Whole Tone\", 0, 2, 4, 6, 8, 10),\n new PredefinedScaleImpl(\"Diminished\", 0, 2, 3, 5, 6, 8, 9, 11),\n new PredefinedScaleImpl(\"Augmented\", 0, 3, 4, 7, 8, 11)\n ];\n})(MidiKeys || (MidiKeys = {}));\n", "import { EventSpan } from \"./events\";\nexport var NoteEvent;\n(function (NoteEvent) {\n NoteEvent.isOfType = (event) => event.type === \"note-event\";\n NoteEvent.Comparator = (a, b) => {\n const positionDiff = a.position - b.position;\n if (positionDiff !== 0) {\n return positionDiff;\n }\n const pitchDiff = a.pitch - b.pitch;\n if (pitchDiff !== 0) {\n return pitchDiff;\n }\n // We should allow this and leave it to the user to resolve issues like that\n return 0;\n };\n // TODO Replace with https://www.desmos.com/calculator/ekbzuu5j2x\n NoteEvent.curveFunc = (ratio, curve) => curve < 0.0 ? ratio ** (2.0 ** -curve) : 1.0 - (1.0 - ratio) ** (2.0 ** curve);\n NoteEvent.inverseCurveFunc = (ratio, curve) => curve < 0.0 ? ratio ** (2.0 ** curve) : 1.0 - Math.max(0.0, 1.0 - ratio) ** (2.0 ** -curve);\n NoteEvent.CompleteComparator = (a, b) => {\n const diffComplete = EventSpan.complete(a) - EventSpan.complete(b);\n if (diffComplete !== 0) {\n return diffComplete;\n }\n return a.pitch - b.pitch;\n };\n})(NoteEvent || (NoteEvent = {}));\n", "export var Waveform;\n(function (Waveform) {\n Waveform[Waveform[\"sine\"] = 0] = \"sine\";\n Waveform[Waveform[\"triangle\"] = 1] = \"triangle\";\n Waveform[Waveform[\"sawtooth\"] = 2] = \"sawtooth\";\n Waveform[Waveform[\"square\"] = 3] = \"square\";\n})(Waveform || (Waveform = {}));\nexport class BandLimitedOscillator {\n #phase = 0.0;\n #integrator = 0.0;\n generate(buffer, phaseInc, waveform, fromIndex, toIndex) {\n for (let i = fromIndex; i < toIndex; i++) {\n const t = this.#phase % 1.0;\n let out = 0.0;\n switch (waveform) {\n case Waveform.sine:\n out = Math.sin(2.0 * Math.PI * t);\n break;\n case Waveform.sawtooth:\n out = 2.0 * t - 1.0;\n out -= this.#polyBLEP(t, phaseInc);\n break;\n case Waveform.square:\n out = t < 0.5 ? 1.0 : -1.0;\n out += this.#polyBLEP(t, phaseInc);\n out -= this.#polyBLEP((t + 0.5) % 1.0, phaseInc);\n break;\n case Waveform.triangle:\n let sq = t < 0.5 ? 1.0 : -1.0;\n sq += this.#polyBLEP(t, phaseInc);\n sq -= this.#polyBLEP((t + 0.5) % 1.0, phaseInc);\n this.#integrator += sq * (4.0 * phaseInc);\n out = this.#integrator;\n break;\n }\n buffer[i] = out;\n this.#phase += phaseInc;\n }\n }\n #polyBLEP(t, dt) {\n if (t < dt) {\n t /= dt;\n return t + t - t * t - 1.0;\n }\n else if (t > 1.0 - dt) {\n t = (t - 1.0) / dt;\n return t * t + t + t + 1.0;\n }\n return 0.0;\n }\n}\n", "import { clamp, PI_QUART } from \"@opendaw/lib-std\";\nexport var StereoMatrix;\n(function (StereoMatrix) {\n let Mixing;\n (function (Mixing) {\n Mixing[Mixing[\"Linear\"] = 0] = \"Linear\";\n Mixing[Mixing[\"EqualPower\"] = 1] = \"EqualPower\";\n })(Mixing = StereoMatrix.Mixing || (StereoMatrix.Mixing = {}));\n StereoMatrix.zero = () => ({ ll: 0.0, lr: 0.0, rl: 0.0, rr: 0.0 });\n StereoMatrix.identity = () => ({ ll: 1.0, lr: 0.0, rl: 0.0, rr: 1.0 });\n StereoMatrix.update = (m, { gain, panning, invertL, invertR, stereo, swap }, mixing = Mixing.EqualPower) => {\n const [panL, panR] = StereoMatrix.panningToGains(panning, mixing);\n let lGain = panL * gain;\n let rGain = panR * gain;\n if (invertL)\n lGain *= -1.0;\n if (invertR)\n rGain *= -1.0;\n const mono = Math.max(0.0, -stereo);\n const expand = Math.max(0.0, stereo);\n const midGain = 1.0 - expand;\n const sideGain = 1.0 + expand;\n const monoAmount = mono * 0.5;\n const stereoWidth = 1.0 - mono;\n const m00 = (midGain + sideGain) * 0.5;\n const m01 = (midGain - sideGain) * 0.5;\n const m10 = (midGain - sideGain) * 0.5;\n const m11 = (midGain + sideGain) * 0.5;\n const ll = (lGain * (monoAmount + stereoWidth)) * m00 + (rGain * monoAmount) * m01;\n const rl = (lGain * (monoAmount + stereoWidth)) * m10 + (rGain * monoAmount) * m11;\n const lr = (lGain * monoAmount) * m00 + (rGain * (monoAmount + stereoWidth)) * m01;\n const rr = (lGain * monoAmount) * m10 + (rGain * (monoAmount + stereoWidth)) * m11;\n if (swap) {\n m.ll = rl;\n m.rl = ll;\n m.lr = rr;\n m.rr = lr;\n }\n else {\n m.ll = ll;\n m.lr = lr;\n m.rl = rl;\n m.rr = rr;\n }\n };\n StereoMatrix.panningToGains = (panning, mixing) => {\n const x = clamp(panning, -1.0, 1.0);\n switch (mixing) {\n case Mixing.Linear:\n return [\n Math.min(1.0 - x, 1.0),\n Math.min(x + 1.0, 1.0)\n ];\n case Mixing.EqualPower:\n return [\n Math.cos((x + 1.0) * PI_QUART),\n Math.sin((x + 1.0) * PI_QUART)\n ];\n }\n };\n StereoMatrix.applyFrame = (m, l, r) => [m.ll * l + m.rl * r, m.lr * l + m.rr * r];\n StereoMatrix.processFrames = (m, source, target, fromIndex, toIndex) => {\n const [src0, src1] = source;\n const [trg0, trg1] = target;\n for (let i = fromIndex; i < toIndex; i++) {\n const l = src0[i];\n const r = src1[i];\n trg0[i] = m.ll * l + m.rl * r;\n trg1[i] = m.lr * l + m.rr * r;\n }\n };\n StereoMatrix.replaceFrames = (m, [ch0, ch1], fromIndex, toIndex) => {\n for (let i = fromIndex; i < toIndex; i++) {\n const l = ch0[i];\n const r = ch1[i];\n ch0[i] = m.ll * l + m.rl * r;\n ch1[i] = m.lr * l + m.rr * r;\n }\n };\n})(StereoMatrix || (StereoMatrix = {}));\n", "import { StereoMatrix } from \"./stereo\";\nexport var Ramp;\n(function (Ramp) {\n Ramp.linear = (sampleRate, durationInSeconds = 0.005) => {\n return new LinearRamp(Math.ceil(sampleRate * durationInSeconds) | 0);\n };\n Ramp.stereoMatrix = (sampleRate, durationInSeconds = 0.005) => {\n return new StereoMatrixRamp(Math.ceil(sampleRate * durationInSeconds) | 0);\n };\n class LinearRamp {\n #length;\n #value = 0.0;\n #target = 0.0;\n #delta = 0.0;\n #remaining = 0 | 0;\n constructor(length) { this.#length = length; }\n set(target, smooth) {\n if (this.#value === target) {\n return;\n }\n if (smooth === true) {\n this.#target = target;\n this.#delta = (target - this.#value) / this.#length;\n this.#remaining = this.#length;\n }\n else {\n this.#value = this.#target = target;\n this.#delta = 0.0;\n this.#remaining = 0;\n }\n }\n get() { return this.#value; }\n moveAndGet() {\n if (0 < this.#remaining) {\n this.#value += this.#delta;\n if (0 === --this.#remaining) {\n this.#delta = 0.0;\n this.#value = this.#target;\n }\n }\n return this.#value;\n }\n isFixed(value) { return this.#value === value && 0 === this.#remaining; }\n isInterpolating() { return this.#remaining > 0; }\n }\n class StereoMatrixRamp {\n #length;\n #value = StereoMatrix.zero();\n #target = StereoMatrix.zero();\n #delta = StereoMatrix.zero();\n #remaining = 0 | 0;\n constructor(length) { this.#length = length; }\n update(params, mixing, smooth) {\n StereoMatrix.update(this.#target, params, mixing);\n if (smooth === true) {\n this.#delta.ll = (this.#target.ll - this.#value.ll) / this.#length;\n this.#delta.lr = (this.#target.lr - this.#value.lr) / this.#length;\n this.#delta.rl = (this.#target.rl - this.#value.rl) / this.#length;\n this.#delta.rr = (this.#target.rr - this.#value.rr) / this.#length;\n this.#remaining = this.#length;\n }\n else {\n this.#value.ll = this.#target.ll;\n this.#value.lr = this.#target.lr;\n this.#value.rl = this.#target.rl;\n this.#value.rr = this.#target.rr;\n this.#delta.ll = 0.0;\n this.#delta.lr = 0.0;\n this.#delta.rl = 0.0;\n this.#delta.rr = 0.0;\n this.#remaining = 0;\n }\n }\n processFrames(source, target, fromIndex, toIndex) {\n const [src0, src1] = source;\n const [trg0, trg1] = target;\n if (this.isInterpolating()) {\n for (let i = fromIndex; i < toIndex; i++) {\n const l = src0[i];\n const r = src1[i];\n const m = this.moveAndGet();\n trg0[i] = m.ll * l + m.rl * r;\n trg1[i] = m.lr * l + m.rr * r;\n }\n }\n else {\n const m = this.#target;\n for (let i = fromIndex; i < toIndex; i++) {\n const l = src0[i];\n const r = src1[i];\n trg0[i] = m.ll * l + m.rl * r;\n trg1[i] = m.lr * l + m.rr * r;\n }\n }\n }\n set(target, smooth) {\n if (this.#equals(target)) {\n return;\n }\n if (smooth === true) {\n this.#target.ll = target.ll;\n this.#target.lr = target.lr;\n this.#target.rl = target.rl;\n this.#target.rr = target.rr;\n this.#delta.ll = (target.ll - this.#value.ll) / this.#length;\n this.#delta.lr = (target.lr - this.#value.lr) / this.#length;\n this.#delta.rl = (target.rl - this.#value.rl) / this.#length;\n this.#delta.rr = (target.rr - this.#value.rr) / this.#length;\n this.#remaining = this.#length;\n }\n else {\n this.#value.ll = this.#target.ll = target.ll;\n this.#value.lr = this.#target.lr = target.lr;\n this.#value.rl = this.#target.rl = target.rl;\n this.#value.rr = this.#target.rr = target.rr;\n this.#delta.ll = 0.0;\n this.#delta.lr = 0.0;\n this.#delta.rl = 0.0;\n this.#delta.rr = 0.0;\n this.#remaining = 0;\n }\n }\n get() { return this.#value; }\n moveAndGet() {\n if (0 < this.#remaining) {\n this.#value.ll += this.#delta.ll;\n this.#value.lr += this.#delta.lr;\n this.#value.rl += this.#delta.rl;\n this.#value.rr += this.#delta.rr;\n if (0 === --this.#remaining) {\n this.#delta.ll = 0.0;\n this.#delta.lr = 0.0;\n this.#delta.rl = 0.0;\n this.#delta.rr = 0.0;\n this.#value.ll = this.#target.ll;\n this.#value.lr = this.#target.lr;\n this.#value.rl = this.#target.rl;\n this.#value.rr = this.#target.rr;\n }\n }\n return this.#value;\n }\n isFixed(value) { return this.#equals(value) && this.#remaining === 0; }\n isInterpolating() { return this.#remaining > 0; }\n #equals(value) {\n return this.#value.ll === value.ll && this.#value.lr === value.lr\n && this.#value.rl === value.rl && this.#value.rr === value.rr;\n }\n }\n Ramp.StereoMatrixRamp = StereoMatrixRamp;\n})(Ramp || (Ramp = {}));\n", "import { panic } from \"@opendaw/lib-std\";\nconst LogDb = Math.log(10.0) / 20.0;\nexport const midiToHz = (note = 60.0, baseFrequency = 440.0) => baseFrequency * Math.pow(2.0, (note + 3.0) / 12.0 - 6.0);\nexport const hzToMidi = (hz, baseFrequency = 440.0) => (12.0 * Math.log(hz / baseFrequency) + 69.0 * Math.LN2) / Math.LN2;\nexport const dbToGain = (db) => Math.exp(db * LogDb);\nexport const gainToDb = (gain) => Math.log(gain) / LogDb;\nexport const velocityToGain = (velocity) => dbToGain(20 * Math.log10(velocity));\nexport const barsToBpm = (bars, duration) => (bars * 240.0) / duration;\nexport const bpmToBars = (bpm, duration) => (bpm * duration) / 240.0;\nexport const estimateBpm = (duration, maxBpm = 180.0) => {\n const bpm = barsToBpm(Math.pow(2.0, Math.floor(Math.log(bpmToBars(maxBpm, duration)) / Math.LN2)), duration);\n return Math.round(bpm * 1000.0) / 1000.0;\n};\nexport const parseTimeSignature = (input) => {\n const [first, second] = input.split(\"/\");\n const numerator = parseInt(first, 10);\n const denominator = parseInt(second, 10);\n if (!Number.isInteger(numerator) || !Number.isInteger(denominator)) {\n return panic(\"Invalid format. Must be two integers separated by '/'\");\n }\n if ((denominator & (denominator - 1)) !== 0) {\n return panic(\"Denominator must be a power of two\");\n }\n return [numerator, denominator];\n};\n", "import { BinarySearch, Curve, Iterables, panic } from \"@opendaw/lib-std\";\nexport const Interpolation = {\n None: { type: \"none\" },\n Linear: { type: \"linear\" },\n Curve: (slope) => ({ type: \"curve\", slope })\n};\nexport var ValueEvent;\n(function (ValueEvent) {\n ValueEvent.Comparator = (a, b) => {\n const positionDiff = a.position - b.position;\n if (positionDiff !== 0) {\n return positionDiff;\n }\n const indexDiff = a.index - b.index;\n if (indexDiff !== 0) {\n return indexDiff;\n }\n return a === b ? 0 : panic(`${a} and ${b} are identical in terms of comparison`);\n };\n function* iterateWindow(events, fromPosition, toPosition) {\n if (events.isEmpty()) {\n return Iterables.empty();\n }\n for (const event of events.iterateFrom(fromPosition)) {\n yield event;\n if (event.position >= toPosition) {\n return;\n }\n }\n }\n ValueEvent.iterateWindow = iterateWindow;\n ValueEvent.nextEvent = (events, precursor) => {\n const sorted = events.asArray();\n const index = BinarySearch.rightMost(sorted, precursor, ValueEvent.Comparator);\n return index === -1 ? null : sorted[index + 1] ?? null;\n };\n /**\n * Computes a value at a given position\n */\n ValueEvent.valueAt = (events, position, fallback) => {\n if (events.isEmpty()) {\n return fallback;\n } // no events, nothing to iterate\n const iterator = events.iterateFrom(position);\n const { done, value: prevEvent } = iterator.next();\n if (done) {\n return fallback;\n }\n if (prevEvent.position <= position) {\n const { done, value: nextEvent } = iterator.next();\n if (done) {\n return prevEvent.value;\n }\n else if (position < nextEvent.position) {\n return interpolate(prevEvent, nextEvent, position);\n }\n else if (prevEvent.interpolation === Interpolation.None) {\n return prevEvent.value;\n }\n }\n return prevEvent.value;\n };\n /**\n * Quantize an automation in equal segments but also include min/max values.\n * This is used for the ValueClipPainter to draw circular automation curves.\n * It has been tested in the AutomationPage.\n */\n function* quantise(events, position, duration, numSteps) {\n if (events.isEmpty()) {\n return;\n } // no events, nothing to iterate\n const iterator = events.iterateFrom(position);\n const { done, value } = iterator.next();\n if (done) {\n return;\n }\n const step = duration / numSteps;\n let prevEvent = value;\n if (prevEvent.position > position) {\n while (position < prevEvent.position) {\n yield { position, value: prevEvent.value };\n position += step;\n if (position > duration) {\n return;\n }\n }\n if (prevEvent.position <= duration) {\n yield prevEvent;\n }\n }\n while (position <= duration) {\n const { done, value: nextEvent } = iterator.next();\n if (done) {\n break;\n }\n while (position < nextEvent.position) {\n if (position > duration) {\n return;\n }\n yield { position, value: interpolate(prevEvent, nextEvent, position) };\n position += step;\n }\n if (nextEvent.position < duration) {\n if (prevEvent.interpolation === Interpolation.None) {\n yield { position: nextEvent.position, value: prevEvent.value };\n }\n yield nextEvent;\n }\n prevEvent = nextEvent;\n }\n while (position <= duration) {\n yield { position, value: prevEvent.value };\n position += step;\n }\n }\n ValueEvent.quantise = quantise;\n const interpolate = ({ value, position, interpolation }, b, x) => {\n if (interpolation.type === \"none\") {\n return value;\n }\n else if (interpolation.type === \"linear\") {\n return value + (x - position) / (b.position - position) * (b.value - value);\n }\n else if (interpolation.type === \"curve\") {\n return Curve.valueAt({\n slope: interpolation.slope,\n steps: b.position - position,\n y0: value,\n y1: b.value\n }, x - position);\n }\n else {\n return panic(\"Unknown interpolation\");\n }\n };\n})(ValueEvent || (ValueEvent = {}));\n", "export var Window;\n(function (Window) {\n let Type;\n (function (Type) {\n Type[Type[\"Bartlett\"] = 0] = \"Bartlett\";\n Type[Type[\"Blackman\"] = 1] = \"Blackman\";\n Type[Type[\"BlackmanHarris\"] = 2] = \"BlackmanHarris\";\n Type[Type[\"Hamming\"] = 3] = \"Hamming\";\n Type[Type[\"Hanning\"] = 4] = \"Hanning\";\n })(Type = Window.Type || (Window.Type = {}));\n Window.create = (type, n) => {\n const values = new Float32Array(n);\n const a = Math.PI / (n - 1);\n switch (type) {\n case Type.Bartlett: {\n const n2 = (n >> 1) - 1;\n let i = 0;\n for (; i <= n2; ++i) {\n values[i] = 2.0 * i / (n - 1.0);\n }\n for (; i < n; ++i) {\n values[i] = 2.0 - 2.0 * i / (n - 1.0);\n }\n return values;\n }\n case Type.Blackman: {\n const c = 2.0 * a;\n const d = 4.0 * a;\n for (let i = 0; i < n; ++i) {\n values[i] = 0.42323 - 0.49755 * Math.cos(c * i) + 0.07922 * Math.cos(d * i);\n }\n return values;\n }\n case Type.BlackmanHarris: {\n const c = 2.0 * a;\n const d = 4.0 * a;\n const e = 6.0 * a;\n for (let i = 0; i < n; ++i) {\n values[i] = 0.35875 - 0.48829 * Math.cos(c * i) + 0.14128 * Math.cos(d * i) - 0.01168 * Math.cos(e * i);\n }\n return values;\n }\n case Type.Hamming: {\n const c = 2.0 * a;\n for (let i = 0; i < n; ++i) {\n values[i] = 0.54 - 0.46 * Math.cos(c * i);\n }\n return values;\n }\n case Type.Hanning: {\n const c = 2.0 * a;\n for (let i = 0; i < n; ++i) {\n values[i] = 0.5 - 0.5 * Math.cos(c * i);\n }\n return values;\n }\n }\n };\n})(Window || (Window = {}));\n", "const key = Symbol.for(\"@openDAW/lib-dsp\");\nif (globalThis[key]) {\n console.debug(`%c${key.description}%c is already available in ${globalThis.constructor.name}.`, \"color: hsl(10, 83%, 60%)\", \"color: inherit\");\n}\nelse {\n globalThis[key] = true;\n console.debug(`%c${key.description}%c is now available in ${globalThis.constructor.name}.`, \"color: hsl(200, 83%, 60%)\", \"color: inherit\");\n}\nexport * from \"./biquad-coeff\";\nexport * from \"./biquad-processor\";\nexport * from \"./bpm-tools\";\nexport * from \"./chords\";\nexport * from \"./delay\";\nexport * from \"./events\";\nexport * from \"./fft\";\nexport * from \"./fractions\";\nexport * from \"./fragmentor\";\nexport * from \"./graph\";\nexport * from \"./grooves\";\nexport * from \"./midi-keys\";\nexport * from \"./notes\";\nexport * from \"./osc\";\nexport * from \"./ppqn\";\nexport * from \"./ramp\";\nexport * from \"./rms\";\nexport * from \"./stereo\";\nexport * from \"./utils\";\nexport * from \"./value\";\nexport * from \"./window\";\n", "import { RootBox, SelectionBox, UserInterfaceBox, TimelineBox, TrackBox, NoteEventBox, NoteEventRepeatBox, NoteEventCollectionBox, NoteRegionBox, NoteClipBox, ValueEventBox, ValueEventCollectionBox, ValueEventCurveBox, ValueRegionBox, ValueClipBox, AudioRegionBox, AudioClipBox, MarkerBox, AudioFileBox, AudioUnitBox, AudioBusBox, AuxSendBox, StepAutomationBox, GrooveShuffleBox, DeviceInterfaceKnobBox, ModularDeviceBox, DeviceClashBox, StereoToolDeviceBox, DelayDeviceBox, RevampDeviceBox, ReverbDeviceBox, VaporisateurDeviceBox, NanoDeviceBox, PlayfieldDeviceBox, PlayfieldSampleBox, TapeDeviceBox, ArpeggioDeviceBox, PitchDeviceBox, ZeitgeistDeviceBox, ModularBox, ModuleConnectionBox, ModularAudioInputBox, ModularAudioOutputBox, ModuleDelayBox, ModuleMultiplierBox, ModuleGainBox, } from \".\";\nimport { ByteArrayInput, panic, UUID } from \"@opendaw/lib-std\";\n//\n// ___ ___\n// | _ ) _____ _| __|__ _ _ __ _ ___\n// | _ \\/ _ \\ \\ / _/ _ \\ '_/ _` / -_)\n// |___/\\___/_\\_\\_|\\___/_| \\__, \\___|\n// |___/\n//\n// auto-generated | do not edit | blame andre.michelle@opendaw.org\n//\nexport var BoxIO;\n(function (BoxIO) {\n BoxIO.create = (name, graph, uuid, constructor) => {\n switch (name) {\n case \"RootBox\":\n return RootBox.create(graph, uuid, constructor);\n case \"SelectionBox\":\n return SelectionBox.create(graph, uuid, constructor);\n case \"UserInterfaceBox\":\n return UserInterfaceBox.create(graph, uuid, constructor);\n case \"TimelineBox\":\n return TimelineBox.create(graph, uuid, constructor);\n case \"TrackBox\":\n return TrackBox.create(graph, uuid, constructor);\n case \"NoteEventBox\":\n return NoteEventBox.create(graph, uuid, constructor);\n case \"NoteEventRepeatBox\":\n return NoteEventRepeatBox.create(graph, uuid, constructor);\n case \"NoteEventCollectionBox\":\n return NoteEventCollectionBox.create(graph, uuid, constructor);\n case \"NoteRegionBox\":\n return NoteRegionBox.create(graph, uuid, constructor);\n case \"NoteClipBox\":\n return NoteClipBox.create(graph, uuid, constructor);\n case \"ValueEventBox\":\n return ValueEventBox.create(graph, uuid, constructor);\n case \"ValueEventCollectionBox\":\n return ValueEventCollectionBox.create(graph, uuid, constructor);\n case \"ValueEventCurveBox\":\n return ValueEventCurveBox.create(graph, uuid, constructor);\n case \"ValueRegionBox\":\n return ValueRegionBox.create(graph, uuid, constructor);\n case \"ValueClipBox\":\n return ValueClipBox.create(graph, uuid, constructor);\n case \"AudioRegionBox\":\n return AudioRegionBox.create(graph, uuid, constructor);\n case \"AudioClipBox\":\n return AudioClipBox.create(graph, uuid, constructor);\n case \"MarkerBox\":\n return MarkerBox.create(graph, uuid, constructor);\n case \"AudioFileBox\":\n return AudioFileBox.create(graph, uuid, constructor);\n case \"AudioUnitBox\":\n return AudioUnitBox.create(graph, uuid, constructor);\n case \"AudioBusBox\":\n return AudioBusBox.create(graph, uuid, constructor);\n case \"AuxSendBox\":\n return AuxSendBox.create(graph, uuid, constructor);\n case \"StepAutomationBox\":\n return StepAutomationBox.create(graph, uuid, constructor);\n case \"GrooveShuffleBox\":\n return GrooveShuffleBox.create(graph, uuid, constructor);\n case \"DeviceInterfaceKnobBox\":\n return DeviceInterfaceKnobBox.create(graph, uuid, constructor);\n case \"ModularDeviceBox\":\n return ModularDeviceBox.create(graph, uuid, constructor);\n case \"DeviceClashBox\":\n return DeviceClashBox.create(graph, uuid, constructor);\n case \"StereoToolDeviceBox\":\n return StereoToolDeviceBox.create(graph, uuid, constructor);\n case \"DelayDeviceBox\":\n return DelayDeviceBox.create(graph, uuid, constructor);\n case \"RevampDeviceBox\":\n return RevampDeviceBox.create(graph, uuid, constructor);\n case \"ReverbDeviceBox\":\n return ReverbDeviceBox.create(graph, uuid, constructor);\n case \"VaporisateurDeviceBox\":\n return VaporisateurDeviceBox.create(graph, uuid, constructor);\n case \"NanoDeviceBox\":\n return NanoDeviceBox.create(graph, uuid, constructor);\n case \"PlayfieldDeviceBox\":\n return PlayfieldDeviceBox.create(graph, uuid, constructor);\n case \"PlayfieldSampleBox\":\n return PlayfieldSampleBox.create(graph, uuid, constructor);\n case \"TapeDeviceBox\":\n return TapeDeviceBox.create(graph, uuid, constructor);\n case \"ArpeggioDeviceBox\":\n return ArpeggioDeviceBox.create(graph, uuid, constructor);\n case \"PitchDeviceBox\":\n return PitchDeviceBox.create(graph, uuid, constructor);\n case \"ZeitgeistDeviceBox\":\n return ZeitgeistDeviceBox.create(graph, uuid, constructor);\n case \"ModularBox\":\n return ModularBox.create(graph, uuid, constructor);\n case \"ModuleConnectionBox\":\n return ModuleConnectionBox.create(graph, uuid, constructor);\n case \"ModularAudioInputBox\":\n return ModularAudioInputBox.create(graph, uuid, constructor);\n case \"ModularAudioOutputBox\":\n return ModularAudioOutputBox.create(graph, uuid, constructor);\n case \"ModuleDelayBox\":\n return ModuleDelayBox.create(graph, uuid, constructor);\n case \"ModuleMultiplierBox\":\n return ModuleMultiplierBox.create(graph, uuid, constructor);\n case \"ModuleGainBox\":\n return ModuleGainBox.create(graph, uuid, constructor);\n default:\n return panic(`Unknown box class '${name}'`);\n }\n };\n BoxIO.deserialize = (graph, buffer) => {\n const stream = new ByteArrayInput(buffer);\n const className = stream.readString();\n const uuidBytes = UUID.fromDataInput(stream);\n const box = BoxIO.create(className, graph, uuidBytes);\n box.read(stream);\n return box;\n };\n})(BoxIO || (BoxIO = {}));\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, NoPointers, Int32Field, Float32Field, BooleanField, } from \"@opendaw/lib-box\";\nexport class PianoMode extends ObjectField {\n static create(construct) {\n return new PianoMode(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get keyboard() {\n return this.getField(1);\n }\n get timeRangeInQuarters() {\n return this.getField(2);\n }\n get noteScale() {\n return this.getField(3);\n }\n get noteLabels() {\n return this.getField(4);\n }\n get transpose() {\n return this.getField(5);\n }\n initializeFields() {\n return {\n 1: Int32Field.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"keyboard\",\n pointerRules: NoPointers,\n }, 0),\n 2: Float32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"timeRangeInQuarters\",\n pointerRules: NoPointers,\n }, 8),\n 3: Float32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"noteScale\",\n pointerRules: NoPointers,\n }, 1.5),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"noteLabels\",\n pointerRules: NoPointers,\n }, true),\n 5: Int32Field.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"transpose\",\n pointerRules: NoPointers,\n }, 0),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Field, StringField, } from \"@opendaw/lib-box\";\nimport { PianoMode } from \"./PianoMode\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class RootBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new RootBox({ uuid, graph, name: \"RootBox\", pointerRules: NoPointers }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitRootBox, this);\n }\n get timeline() {\n return this.getField(1);\n }\n get users() {\n return this.getField(2);\n }\n get created() {\n return this.getField(3);\n }\n get groove() {\n return this.getField(4);\n }\n get modularSetups() {\n return this.getField(10);\n }\n get audioUnits() {\n return this.getField(20);\n }\n get audioBusses() {\n return this.getField(21);\n }\n get outputDevice() {\n return this.getField(30);\n }\n get pianoMode() {\n return this.getField(40);\n }\n get editingChannel() {\n return this.getField(111);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"timeline\",\n pointerRules: NoPointers,\n }, Pointers.Timeline, true),\n 2: Field.hook({\n parent: this,\n fieldKey: 2,\n fieldName: \"users\",\n pointerRules: { accepts: [Pointers.User], mandatory: true },\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"created\",\n pointerRules: NoPointers,\n }),\n 4: PointerField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"groove\",\n pointerRules: NoPointers,\n }, Pointers.Groove, true),\n 10: Field.hook({\n parent: this,\n fieldKey: 10,\n fieldName: \"modularSetups\",\n pointerRules: { accepts: [Pointers.ModularSetup], mandatory: false },\n }),\n 20: Field.hook({\n parent: this,\n fieldKey: 20,\n fieldName: \"audioUnits\",\n pointerRules: { accepts: [Pointers.AudioUnits], mandatory: false },\n }),\n 21: Field.hook({\n parent: this,\n fieldKey: 21,\n fieldName: \"audioBusses\",\n pointerRules: { accepts: [Pointers.AudioBusses], mandatory: false },\n }),\n 30: Field.hook({\n parent: this,\n fieldKey: 30,\n fieldName: \"outputDevice\",\n pointerRules: { accepts: [Pointers.AudioOutput], mandatory: true },\n }),\n 40: PianoMode.create({\n parent: this,\n fieldKey: 40,\n fieldName: \"pianoMode\",\n pointerRules: NoPointers,\n }),\n 111: PointerField.create({\n parent: this,\n fieldKey: 111,\n fieldName: \"editingChannel\",\n pointerRules: NoPointers,\n }, Pointers.Editing, false),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class SelectionBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new SelectionBox({\n uuid,\n graph,\n name: \"SelectionBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitSelectionBox, this);\n }\n get selection() {\n return this.getField(1);\n }\n get selectable() {\n return this.getField(2);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"selection\",\n pointerRules: NoPointers,\n }, Pointers.Selection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"selectable\",\n pointerRules: NoPointers,\n }, Pointers.Selection, true),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class UserInterfaceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new UserInterfaceBox({\n uuid,\n graph,\n name: \"UserInterfaceBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitUserInterfaceBox, this);\n }\n get root() {\n return this.getField(1);\n }\n get selection() {\n return this.getField(10);\n }\n get editingDeviceChain() {\n return this.getField(21);\n }\n get editingTimelineRegion() {\n return this.getField(22);\n }\n get editingModularSystem() {\n return this.getField(23);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"root\",\n pointerRules: NoPointers,\n }, Pointers.User, true),\n 10: Field.hook({\n parent: this,\n fieldKey: 10,\n fieldName: \"selection\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }),\n 21: PointerField.create({\n parent: this,\n fieldKey: 21,\n fieldName: \"editingDeviceChain\",\n pointerRules: NoPointers,\n }, Pointers.Editing, false),\n 22: PointerField.create({\n parent: this,\n fieldKey: 22,\n fieldName: \"editingTimelineRegion\",\n pointerRules: NoPointers,\n }, Pointers.Editing, false),\n 23: PointerField.create({\n parent: this,\n fieldKey: 23,\n fieldName: \"editingModularSystem\",\n pointerRules: NoPointers,\n }, Pointers.Editing, false),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, NoPointers, Int32Field, } from \"@opendaw/lib-box\";\nexport class Signature extends ObjectField {\n static create(construct) {\n return new Signature(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get nominator() {\n return this.getField(1);\n }\n get denominator() {\n return this.getField(2);\n }\n initializeFields() {\n return {\n 1: Int32Field.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"nominator\",\n pointerRules: NoPointers,\n }, 4),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"denominator\",\n pointerRules: NoPointers,\n }, 4),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, NoPointers, BooleanField, Int32Field, } from \"@opendaw/lib-box\";\nexport class LoopArea extends ObjectField {\n static create(construct) {\n return new LoopArea(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get enabled() {\n return this.getField(1);\n }\n get from() {\n return this.getField(2);\n }\n get to() {\n return this.getField(3);\n }\n initializeFields() {\n return {\n 1: BooleanField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"from\",\n pointerRules: NoPointers,\n }, 0),\n 3: Int32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"to\",\n pointerRules: NoPointers,\n }, 15360),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, NoPointers, Field, Int32Field, BooleanField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class MarkerTrack extends ObjectField {\n static create(construct) {\n return new MarkerTrack(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get markers() {\n return this.getField(1);\n }\n get index() {\n return this.getField(10);\n }\n get enabled() {\n return this.getField(20);\n }\n initializeFields() {\n return {\n 1: Field.hook({\n parent: this,\n fieldKey: 1,\n fieldName: \"markers\",\n pointerRules: { accepts: [Pointers.MarkerTrack], mandatory: false },\n }),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 20: BooleanField.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, Field, Int32Field, Float32Field, } from \"@opendaw/lib-box\";\nimport { Signature } from \"./Signature\";\nimport { LoopArea } from \"./LoopArea\";\nimport { MarkerTrack } from \"./MarkerTrack\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class TimelineBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new TimelineBox({\n uuid,\n graph,\n name: \"TimelineBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitTimelineBox, this);\n }\n get root() {\n return this.getField(1);\n }\n get signature() {\n return this.getField(10);\n }\n get loopArea() {\n return this.getField(11);\n }\n get deprecatedMarkerTrack() {\n return this.getField(20);\n }\n get markerTrack() {\n return this.getField(21);\n }\n get durationInPulses() {\n return this.getField(30);\n }\n get bpm() {\n return this.getField(31);\n }\n initializeFields() {\n return {\n 1: Field.hook({\n parent: this,\n fieldKey: 1,\n fieldName: \"root\",\n pointerRules: { accepts: [Pointers.Timeline], mandatory: true },\n }),\n 10: Signature.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"signature\",\n pointerRules: NoPointers,\n }),\n 11: LoopArea.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"loopArea\",\n pointerRules: NoPointers,\n }),\n 20: Field.hook({\n parent: this,\n fieldKey: 20,\n fieldName: \"deprecatedMarkerTrack\",\n pointerRules: { accepts: [Pointers.MarkerTrack], mandatory: false },\n }),\n 21: MarkerTrack.create({\n parent: this,\n fieldKey: 21,\n fieldName: \"markerTrack\",\n pointerRules: NoPointers,\n }),\n 30: Int32Field.create({\n parent: this,\n fieldKey: 30,\n fieldName: \"durationInPulses\",\n pointerRules: NoPointers,\n }, 491520),\n 31: Float32Field.create({\n parent: this,\n fieldKey: 31,\n fieldName: \"bpm\",\n pointerRules: NoPointers,\n }, 120),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Field, Int32Field, BooleanField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class TrackBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new TrackBox({\n uuid,\n graph,\n name: \"TrackBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.PianoMode],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitTrackBox, this);\n }\n get tracks() {\n return this.getField(1);\n }\n get target() {\n return this.getField(2);\n }\n get regions() {\n return this.getField(3);\n }\n get clips() {\n return this.getField(4);\n }\n get index() {\n return this.getField(10);\n }\n get type() {\n return this.getField(11);\n }\n get enabled() {\n return this.getField(20);\n }\n get excludePianoMode() {\n return this.getField(30);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"tracks\",\n pointerRules: NoPointers,\n }, Pointers.TrackCollection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"target\",\n pointerRules: NoPointers,\n }, Pointers.Automation, true),\n 3: Field.hook({\n parent: this,\n fieldKey: 3,\n fieldName: \"regions\",\n pointerRules: {\n accepts: [Pointers.RegionCollection],\n mandatory: false,\n },\n }),\n 4: Field.hook({\n parent: this,\n fieldKey: 4,\n fieldName: \"clips\",\n pointerRules: { accepts: [Pointers.ClipCollection], mandatory: false },\n }),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"type\",\n pointerRules: NoPointers,\n }),\n 20: BooleanField.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 30: BooleanField.create({\n parent: this,\n fieldKey: 30,\n fieldName: \"excludePianoMode\",\n pointerRules: NoPointers,\n }, false),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class NoteEventBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new NoteEventBox({\n uuid,\n graph,\n name: \"NoteEventBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.NoteEventFeature],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitNoteEventBox, this);\n }\n get events() {\n return this.getField(1);\n }\n get position() {\n return this.getField(10);\n }\n get duration() {\n return this.getField(11);\n }\n get pitch() {\n return this.getField(20);\n }\n get velocity() {\n return this.getField(21);\n }\n get playCount() {\n return this.getField(22);\n }\n get playCurve() {\n return this.getField(23);\n }\n get cent() {\n return this.getField(24);\n }\n get chance() {\n return this.getField(25);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"events\",\n pointerRules: NoPointers,\n }, Pointers.NoteEvents, true),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"position\",\n pointerRules: NoPointers,\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"duration\",\n pointerRules: NoPointers,\n }, 240),\n 20: Int32Field.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"pitch\",\n pointerRules: NoPointers,\n }, 60),\n 21: Float32Field.create({\n parent: this,\n fieldKey: 21,\n fieldName: \"velocity\",\n pointerRules: NoPointers,\n }, 0.7874015748031497),\n 22: Int32Field.create({\n parent: this,\n fieldKey: 22,\n fieldName: \"playCount\",\n pointerRules: NoPointers,\n }, 1),\n 23: Float32Field.create({\n parent: this,\n fieldKey: 23,\n fieldName: \"playCurve\",\n pointerRules: NoPointers,\n }, 0),\n 24: Float32Field.create({\n parent: this,\n fieldKey: 24,\n fieldName: \"cent\",\n pointerRules: NoPointers,\n }, 0),\n 25: Int32Field.create({\n parent: this,\n fieldKey: 25,\n fieldName: \"chance\",\n pointerRules: NoPointers,\n }, 100),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class NoteEventRepeatBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new NoteEventRepeatBox({\n uuid,\n graph,\n name: \"NoteEventRepeatBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitNoteEventRepeatBox, this);\n }\n get event() {\n return this.getField(1);\n }\n get count() {\n return this.getField(2);\n }\n get curve() {\n return this.getField(3);\n }\n get length() {\n return this.getField(4);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"event\",\n pointerRules: NoPointers,\n }, Pointers.NoteEventFeature, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"count\",\n pointerRules: NoPointers,\n }, 1),\n 3: Float32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"curve\",\n pointerRules: NoPointers,\n }, 0),\n 4: Float32Field.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"length\",\n pointerRules: NoPointers,\n }, 1),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, Field } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class NoteEventCollectionBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new NoteEventCollectionBox({\n uuid,\n graph,\n name: \"NoteEventCollectionBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitNoteEventCollectionBox, this);\n }\n get events() {\n return this.getField(1);\n }\n get owners() {\n return this.getField(2);\n }\n initializeFields() {\n return {\n 1: Field.hook({\n parent: this,\n fieldKey: 1,\n fieldName: \"events\",\n pointerRules: { accepts: [Pointers.NoteEvents], mandatory: false },\n }),\n 2: Field.hook({\n parent: this,\n fieldKey: 2,\n fieldName: \"owners\",\n pointerRules: {\n accepts: [Pointers.NoteEventCollection],\n mandatory: true,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, BooleanField, StringField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class NoteRegionBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new NoteRegionBox({\n uuid,\n graph,\n name: \"NoteRegionBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.Editing],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitNoteRegionBox, this);\n }\n get regions() {\n return this.getField(1);\n }\n get events() {\n return this.getField(2);\n }\n get position() {\n return this.getField(10);\n }\n get duration() {\n return this.getField(11);\n }\n get loopOffset() {\n return this.getField(12);\n }\n get loopDuration() {\n return this.getField(13);\n }\n get eventOffset() {\n return this.getField(14);\n }\n get mute() {\n return this.getField(15);\n }\n get label() {\n return this.getField(16);\n }\n get hue() {\n return this.getField(17);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"regions\",\n pointerRules: NoPointers,\n }, Pointers.RegionCollection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"events\",\n pointerRules: NoPointers,\n }, Pointers.NoteEventCollection, true),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"position\",\n pointerRules: NoPointers,\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"duration\",\n pointerRules: NoPointers,\n }),\n 12: Int32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"loopOffset\",\n pointerRules: NoPointers,\n }),\n 13: Int32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"loopDuration\",\n pointerRules: NoPointers,\n }),\n 14: Int32Field.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"eventOffset\",\n pointerRules: NoPointers,\n }),\n 15: BooleanField.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"mute\",\n pointerRules: NoPointers,\n }),\n 16: StringField.create({\n parent: this,\n fieldKey: 16,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 17: Int32Field.create({\n parent: this,\n fieldKey: 17,\n fieldName: \"hue\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, NoPointers, BooleanField, Int32Field, } from \"@opendaw/lib-box\";\nexport class ClipPlaybackFields extends ObjectField {\n static create(construct) {\n return new ClipPlaybackFields(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get loop() {\n return this.getField(1);\n }\n get reverse() {\n return this.getField(2);\n }\n get mute() {\n return this.getField(3);\n }\n get speed() {\n return this.getField(4);\n }\n get quantise() {\n return this.getField(5);\n }\n get trigger() {\n return this.getField(6);\n }\n initializeFields() {\n return {\n 1: BooleanField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"loop\",\n pointerRules: NoPointers,\n }, true),\n 2: BooleanField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"reverse\",\n pointerRules: NoPointers,\n }),\n 3: BooleanField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"mute\",\n pointerRules: NoPointers,\n }),\n 4: Int32Field.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"speed\",\n pointerRules: NoPointers,\n }),\n 5: Int32Field.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"quantise\",\n pointerRules: NoPointers,\n }),\n 6: Int32Field.create({\n parent: this,\n fieldKey: 6,\n fieldName: \"trigger\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, BooleanField, StringField, } from \"@opendaw/lib-box\";\nimport { ClipPlaybackFields } from \"./ClipPlaybackFields\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class NoteClipBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new NoteClipBox({\n uuid,\n graph,\n name: \"NoteClipBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.Editing],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitNoteClipBox, this);\n }\n get clips() {\n return this.getField(1);\n }\n get events() {\n return this.getField(2);\n }\n get index() {\n return this.getField(3);\n }\n get playback() {\n return this.getField(4);\n }\n get duration() {\n return this.getField(10);\n }\n get mute() {\n return this.getField(11);\n }\n get label() {\n return this.getField(12);\n }\n get hue() {\n return this.getField(13);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"clips\",\n pointerRules: NoPointers,\n }, Pointers.ClipCollection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"events\",\n pointerRules: NoPointers,\n }, Pointers.NoteEventCollection, true),\n 3: Int32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 4: ClipPlaybackFields.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"playback\",\n pointerRules: NoPointers,\n }),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"duration\",\n pointerRules: NoPointers,\n }),\n 11: BooleanField.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"mute\",\n pointerRules: NoPointers,\n }),\n 12: StringField.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 13: Int32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"hue\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ValueEventBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ValueEventBox({\n uuid,\n graph,\n name: \"ValueEventBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitValueEventBox, this);\n }\n get events() {\n return this.getField(1);\n }\n get position() {\n return this.getField(10);\n }\n get index() {\n return this.getField(11);\n }\n get interpolation() {\n return this.getField(12);\n }\n get value() {\n return this.getField(13);\n }\n get slope() {\n return this.getField(14);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"events\",\n pointerRules: NoPointers,\n }, Pointers.ValueEvents, true),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"position\",\n pointerRules: NoPointers,\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 12: Int32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"interpolation\",\n pointerRules: {\n accepts: [Pointers.ValueInterpolation],\n mandatory: false,\n },\n }, 1),\n 13: Float32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"value\",\n pointerRules: NoPointers,\n }),\n 14: Float32Field.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"slope\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, Field } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ValueEventCollectionBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ValueEventCollectionBox({\n uuid,\n graph,\n name: \"ValueEventCollectionBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitValueEventCollectionBox, this);\n }\n get events() {\n return this.getField(1);\n }\n get owners() {\n return this.getField(2);\n }\n initializeFields() {\n return {\n 1: Field.hook({\n parent: this,\n fieldKey: 1,\n fieldName: \"events\",\n pointerRules: { accepts: [Pointers.ValueEvents], mandatory: false },\n }),\n 2: Field.hook({\n parent: this,\n fieldKey: 2,\n fieldName: \"owners\",\n pointerRules: {\n accepts: [Pointers.ValueEventCollection],\n mandatory: true,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ValueEventCurveBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ValueEventCurveBox({\n uuid,\n graph,\n name: \"ValueEventCurveBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitValueEventCurveBox, this);\n }\n get event() {\n return this.getField(1);\n }\n get slope() {\n return this.getField(2);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"event\",\n pointerRules: NoPointers,\n }, Pointers.ValueInterpolation, true),\n 2: Float32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"slope\",\n pointerRules: NoPointers,\n }, 0.5),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, BooleanField, StringField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ValueRegionBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ValueRegionBox({\n uuid,\n graph,\n name: \"ValueRegionBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.Editing],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitValueRegionBox, this);\n }\n get regions() {\n return this.getField(1);\n }\n get events() {\n return this.getField(2);\n }\n get position() {\n return this.getField(10);\n }\n get duration() {\n return this.getField(11);\n }\n get loopOffset() {\n return this.getField(12);\n }\n get loopDuration() {\n return this.getField(13);\n }\n get mute() {\n return this.getField(14);\n }\n get label() {\n return this.getField(15);\n }\n get hue() {\n return this.getField(16);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"regions\",\n pointerRules: NoPointers,\n }, Pointers.RegionCollection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"events\",\n pointerRules: NoPointers,\n }, Pointers.ValueEventCollection, true),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"position\",\n pointerRules: NoPointers,\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"duration\",\n pointerRules: NoPointers,\n }),\n 12: Int32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"loopOffset\",\n pointerRules: NoPointers,\n }),\n 13: Int32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"loopDuration\",\n pointerRules: NoPointers,\n }),\n 14: BooleanField.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"mute\",\n pointerRules: NoPointers,\n }),\n 15: StringField.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 16: Int32Field.create({\n parent: this,\n fieldKey: 16,\n fieldName: \"hue\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, BooleanField, StringField, } from \"@opendaw/lib-box\";\nimport { ClipPlaybackFields } from \"./ClipPlaybackFields\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ValueClipBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ValueClipBox({\n uuid,\n graph,\n name: \"ValueClipBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.Editing],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitValueClipBox, this);\n }\n get clips() {\n return this.getField(1);\n }\n get events() {\n return this.getField(2);\n }\n get index() {\n return this.getField(3);\n }\n get playback() {\n return this.getField(4);\n }\n get duration() {\n return this.getField(10);\n }\n get mute() {\n return this.getField(11);\n }\n get label() {\n return this.getField(12);\n }\n get hue() {\n return this.getField(13);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"clips\",\n pointerRules: NoPointers,\n }, Pointers.ClipCollection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"events\",\n pointerRules: NoPointers,\n }, Pointers.ValueEventCollection, true),\n 3: Int32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 4: ClipPlaybackFields.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"playback\",\n pointerRules: NoPointers,\n }),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"duration\",\n pointerRules: NoPointers,\n }),\n 11: BooleanField.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"mute\",\n pointerRules: NoPointers,\n }),\n 12: StringField.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 13: Int32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"hue\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, BooleanField, StringField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class AudioRegionBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new AudioRegionBox({\n uuid,\n graph,\n name: \"AudioRegionBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.Editing],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitAudioRegionBox, this);\n }\n get regions() {\n return this.getField(1);\n }\n get file() {\n return this.getField(2);\n }\n get position() {\n return this.getField(10);\n }\n get duration() {\n return this.getField(11);\n }\n get loopOffset() {\n return this.getField(12);\n }\n get loopDuration() {\n return this.getField(13);\n }\n get mute() {\n return this.getField(14);\n }\n get label() {\n return this.getField(15);\n }\n get hue() {\n return this.getField(16);\n }\n get gain() {\n return this.getField(17);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"regions\",\n pointerRules: NoPointers,\n }, Pointers.RegionCollection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"file\",\n pointerRules: NoPointers,\n }, Pointers.AudioFile, true),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"position\",\n pointerRules: NoPointers,\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"duration\",\n pointerRules: NoPointers,\n }),\n 12: Int32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"loopOffset\",\n pointerRules: NoPointers,\n }),\n 13: Int32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"loopDuration\",\n pointerRules: NoPointers,\n }),\n 14: BooleanField.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"mute\",\n pointerRules: NoPointers,\n }),\n 15: StringField.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 16: Int32Field.create({\n parent: this,\n fieldKey: 16,\n fieldName: \"hue\",\n pointerRules: NoPointers,\n }),\n 17: Float32Field.create({\n parent: this,\n fieldKey: 17,\n fieldName: \"gain\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, BooleanField, StringField, Float32Field, } from \"@opendaw/lib-box\";\nimport { ClipPlaybackFields } from \"./ClipPlaybackFields\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class AudioClipBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new AudioClipBox({\n uuid,\n graph,\n name: \"AudioClipBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.Editing],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitAudioClipBox, this);\n }\n get clips() {\n return this.getField(1);\n }\n get file() {\n return this.getField(2);\n }\n get index() {\n return this.getField(3);\n }\n get playback() {\n return this.getField(4);\n }\n get duration() {\n return this.getField(10);\n }\n get mute() {\n return this.getField(11);\n }\n get label() {\n return this.getField(12);\n }\n get hue() {\n return this.getField(13);\n }\n get gain() {\n return this.getField(14);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"clips\",\n pointerRules: NoPointers,\n }, Pointers.ClipCollection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"file\",\n pointerRules: NoPointers,\n }, Pointers.AudioFile, true),\n 3: Int32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 4: ClipPlaybackFields.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"playback\",\n pointerRules: NoPointers,\n }),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"duration\",\n pointerRules: NoPointers,\n }),\n 11: BooleanField.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"mute\",\n pointerRules: NoPointers,\n }),\n 12: StringField.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 13: Int32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"hue\",\n pointerRules: NoPointers,\n }),\n 14: Float32Field.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"gain\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class MarkerBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new MarkerBox({\n uuid,\n graph,\n name: \"MarkerBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitMarkerBox, this);\n }\n get track() {\n return this.getField(1);\n }\n get position() {\n return this.getField(2);\n }\n get plays() {\n return this.getField(3);\n }\n get label() {\n return this.getField(4);\n }\n get hue() {\n return this.getField(5);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"track\",\n pointerRules: NoPointers,\n }, Pointers.MarkerTrack, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"position\",\n pointerRules: NoPointers,\n }),\n 3: Int32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"plays\",\n pointerRules: NoPointers,\n }, 1),\n 4: StringField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 5: Int32Field.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"hue\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, Int32Field, StringField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class AudioFileBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new AudioFileBox({\n uuid,\n graph,\n name: \"AudioFileBox\",\n pointerRules: { accepts: [Pointers.AudioFile], mandatory: true },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitAudioFileBox, this);\n }\n get startInSeconds() {\n return this.getField(1);\n }\n get endInSeconds() {\n return this.getField(2);\n }\n get fileName() {\n return this.getField(3);\n }\n initializeFields() {\n return {\n 1: Int32Field.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"startInSeconds\",\n pointerRules: NoPointers,\n }),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"endInSeconds\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"fileName\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, StringField, PointerField, Field, Int32Field, Float32Field, BooleanField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class AudioUnitBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new AudioUnitBox({\n uuid,\n graph,\n name: \"AudioUnitBox\",\n pointerRules: {\n accepts: [Pointers.Selection, Pointers.Automation],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitAudioUnitBox, this);\n }\n get type() {\n return this.getField(1);\n }\n get collection() {\n return this.getField(2);\n }\n get editing() {\n return this.getField(3);\n }\n get index() {\n return this.getField(11);\n }\n get volume() {\n return this.getField(12);\n }\n get panning() {\n return this.getField(13);\n }\n get mute() {\n return this.getField(14);\n }\n get solo() {\n return this.getField(15);\n }\n get tracks() {\n return this.getField(20);\n }\n get midiEffects() {\n return this.getField(21);\n }\n get input() {\n return this.getField(22);\n }\n get audioEffects() {\n return this.getField(23);\n }\n get auxSends() {\n return this.getField(24);\n }\n get output() {\n return this.getField(25);\n }\n initializeFields() {\n return {\n 1: StringField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"type\",\n pointerRules: NoPointers,\n }, \"instrument\"),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"collection\",\n pointerRules: NoPointers,\n }, Pointers.AudioUnits, true),\n 3: Field.hook({\n parent: this,\n fieldKey: 3,\n fieldName: \"editing\",\n pointerRules: { accepts: [Pointers.Editing], mandatory: false },\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"volume\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 13: Float32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"panning\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 14: BooleanField.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"mute\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 15: BooleanField.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"solo\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 20: Field.hook({\n parent: this,\n fieldKey: 20,\n fieldName: \"tracks\",\n pointerRules: { accepts: [Pointers.TrackCollection], mandatory: false },\n }),\n 21: Field.hook({\n parent: this,\n fieldKey: 21,\n fieldName: \"midiEffects\",\n pointerRules: { accepts: [Pointers.MidiEffectHost], mandatory: false },\n }),\n 22: Field.hook({\n parent: this,\n fieldKey: 22,\n fieldName: \"input\",\n pointerRules: {\n accepts: [Pointers.InstrumentHost, Pointers.AudioOutput],\n mandatory: false,\n },\n }),\n 23: Field.hook({\n parent: this,\n fieldKey: 23,\n fieldName: \"audioEffects\",\n pointerRules: { accepts: [Pointers.AudioEffectHost], mandatory: false },\n }),\n 24: Field.hook({\n parent: this,\n fieldKey: 24,\n fieldName: \"auxSends\",\n pointerRules: { accepts: [Pointers.AuxSend], mandatory: false },\n }),\n 25: PointerField.create({\n parent: this,\n fieldKey: 25,\n fieldName: \"output\",\n pointerRules: NoPointers,\n }, Pointers.AudioOutput, false),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Field, BooleanField, StringField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class AudioBusBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new AudioBusBox({\n uuid,\n graph,\n name: \"AudioBusBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitAudioBusBox, this);\n }\n get collection() {\n return this.getField(1);\n }\n get output() {\n return this.getField(2);\n }\n get input() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get icon() {\n return this.getField(5);\n }\n get label() {\n return this.getField(6);\n }\n get color() {\n return this.getField(7);\n }\n get minimized() {\n return this.getField(8);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"collection\",\n pointerRules: NoPointers,\n }, Pointers.AudioBusses, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"output\",\n pointerRules: NoPointers,\n }, Pointers.AudioOutput, true),\n 3: Field.hook({\n parent: this,\n fieldKey: 3,\n fieldName: \"input\",\n pointerRules: { accepts: [Pointers.AudioOutput], mandatory: false },\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: StringField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"icon\",\n pointerRules: NoPointers,\n }),\n 6: StringField.create({\n parent: this,\n fieldKey: 6,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 7: StringField.create({\n parent: this,\n fieldKey: 7,\n fieldName: \"color\",\n pointerRules: NoPointers,\n }, \"red\"),\n 8: BooleanField.create({\n parent: this,\n fieldKey: 8,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class AuxSendBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new AuxSendBox({\n uuid,\n graph,\n name: \"AuxSendBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitAuxSendBox, this);\n }\n get audioUnit() {\n return this.getField(1);\n }\n get targetBus() {\n return this.getField(2);\n }\n get index() {\n return this.getField(3);\n }\n get routing() {\n return this.getField(4);\n }\n get sendGain() {\n return this.getField(5);\n }\n get sendPan() {\n return this.getField(6);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"audioUnit\",\n pointerRules: NoPointers,\n }, Pointers.AuxSend, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"targetBus\",\n pointerRules: NoPointers,\n }, Pointers.AudioOutput, true),\n 3: Int32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 4: Int32Field.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"routing\",\n pointerRules: NoPointers,\n }),\n 5: Float32Field.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"sendGain\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 6: Float32Field.create({\n parent: this,\n fieldKey: 6,\n fieldName: \"sendPan\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class StepAutomationBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new StepAutomationBox({\n uuid,\n graph,\n name: \"StepAutomationBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitStepAutomationBox, this);\n }\n get step() {\n return this.getField(1);\n }\n get parameter() {\n return this.getField(2);\n }\n get value() {\n return this.getField(3);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"step\",\n pointerRules: NoPointers,\n }, Pointers.StepAutomation, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"parameter\",\n pointerRules: NoPointers,\n }, Pointers.StepAutomation, true),\n 3: Float32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"value\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, StringField, Float32Field, Int32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class GrooveShuffleBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new GrooveShuffleBox({\n uuid,\n graph,\n name: \"GrooveShuffleBox\",\n pointerRules: { accepts: [Pointers.Groove], mandatory: true },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitGrooveShuffleBox, this);\n }\n get label() {\n return this.getField(1);\n }\n get amount() {\n return this.getField(10);\n }\n get duration() {\n return this.getField(11);\n }\n initializeFields() {\n return {\n 1: StringField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"amount\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0.6),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"duration\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 480),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, Float32Field, StringField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class DeviceInterfaceKnobBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new DeviceInterfaceKnobBox({\n uuid,\n graph,\n name: \"DeviceInterfaceKnobBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitDeviceInterfaceKnobBox, this);\n }\n get userInterface() {\n return this.getField(1);\n }\n get parameter() {\n return this.getField(2);\n }\n get index() {\n return this.getField(3);\n }\n get anchor() {\n return this.getField(10);\n }\n get color() {\n return this.getField(11);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"userInterface\",\n pointerRules: NoPointers,\n }, Pointers.DeviceUserInterface, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"parameter\",\n pointerRules: NoPointers,\n }, Pointers.ParameterController, true),\n 3: Int32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"anchor\",\n pointerRules: NoPointers,\n }),\n 11: StringField.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"color\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class DeviceUserInterface extends ObjectField {\n static create(construct) {\n return new DeviceUserInterface(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get elements() {\n return this.getField(1);\n }\n initializeFields() {\n return {\n 1: Field.hook({\n parent: this,\n fieldKey: 1,\n fieldName: \"elements\",\n pointerRules: {\n accepts: [Pointers.DeviceUserInterface],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, BooleanField, } from \"@opendaw/lib-box\";\nimport { DeviceUserInterface } from \"./DeviceUserInterface\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModularDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ModularDeviceBox({\n uuid,\n graph,\n name: \"ModularDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitModularDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get index() {\n return this.getField(2);\n }\n get label() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get modularSetup() {\n return this.getField(10);\n }\n get userInterface() {\n return this.getField(11);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.AudioEffectHost, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: PointerField.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"modularSetup\",\n pointerRules: NoPointers,\n }, Pointers.ModularSetup, true),\n 11: DeviceUserInterface.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"userInterface\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, BooleanField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ClashStep extends ObjectField {\n static create(construct) {\n return new ClashStep(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get active() {\n return this.getField(1);\n }\n initializeFields() {\n return {\n 1: BooleanField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"active\",\n pointerRules: { accepts: [Pointers.StepAutomation], mandatory: false },\n }),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, NoPointers, ArrayField, Int32Field, } from \"@opendaw/lib-box\";\nimport { ClashStep } from \"./ClashStep\";\nexport class ClashPattern extends ObjectField {\n static create(construct) {\n return new ClashPattern(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get steps() {\n return this.getField(10);\n }\n get length() {\n return this.getField(11);\n }\n get scale() {\n return this.getField(12);\n }\n initializeFields() {\n return {\n 10: ArrayField.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"steps\",\n pointerRules: NoPointers,\n }, (construct) => ClashStep.create(construct), 128),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"length\",\n pointerRules: NoPointers,\n }, 16),\n 12: Int32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"scale\",\n pointerRules: NoPointers,\n }, 960),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, StringField, BooleanField, Float32Field, ArrayField, } from \"@opendaw/lib-box\";\nimport { ClashPattern } from \"./ClashPattern\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class DeviceClashBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new DeviceClashBox({\n uuid,\n graph,\n name: \"DeviceClashBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitDeviceClashBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get label() {\n return this.getField(2);\n }\n get icon() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get delay() {\n return this.getField(10);\n }\n get feedback() {\n return this.getField(11);\n }\n get cross() {\n return this.getField(12);\n }\n get filter() {\n return this.getField(13);\n }\n get wet() {\n return this.getField(14);\n }\n get dry() {\n return this.getField(15);\n }\n get patterns() {\n return this.getField(30);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.InstrumentHost, true),\n 2: StringField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"icon\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"delay\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.StepAutomation,\n ],\n mandatory: false,\n },\n }, 0.5),\n 11: Float32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"feedback\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.StepAutomation,\n ],\n mandatory: false,\n },\n }, 0.9),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"cross\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.StepAutomation,\n ],\n mandatory: false,\n },\n }, 0),\n 13: Float32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"filter\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.StepAutomation,\n ],\n mandatory: false,\n },\n }, 0),\n 14: Float32Field.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"wet\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.StepAutomation,\n ],\n mandatory: false,\n },\n }, -3),\n 15: Float32Field.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"dry\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.StepAutomation,\n ],\n mandatory: false,\n },\n }, -3),\n 30: ArrayField.create({\n parent: this,\n fieldKey: 30,\n fieldName: \"patterns\",\n pointerRules: NoPointers,\n }, (construct) => ClashPattern.create(construct), 16),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class StereoToolDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new StereoToolDeviceBox({\n uuid,\n graph,\n name: \"StereoToolDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitStereoToolDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get index() {\n return this.getField(2);\n }\n get label() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get volume() {\n return this.getField(10);\n }\n get panning() {\n return this.getField(11);\n }\n get stereo() {\n return this.getField(12);\n }\n get invertL() {\n return this.getField(13);\n }\n get invertR() {\n return this.getField(14);\n }\n get swap() {\n return this.getField(15);\n }\n get panningMixing() {\n return this.getField(20);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.AudioEffectHost, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"volume\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 11: Float32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"panning\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"stereo\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 13: BooleanField.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"invertL\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 14: BooleanField.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"invertR\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 15: BooleanField.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"swap\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 20: Int32Field.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"panningMixing\",\n pointerRules: NoPointers,\n }, 1),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class DelayDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new DelayDeviceBox({\n uuid,\n graph,\n name: \"DelayDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitDelayDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get index() {\n return this.getField(2);\n }\n get label() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get delay() {\n return this.getField(10);\n }\n get feedback() {\n return this.getField(11);\n }\n get cross() {\n return this.getField(12);\n }\n get filter() {\n return this.getField(13);\n }\n get wet() {\n return this.getField(14);\n }\n get dry() {\n return this.getField(15);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.AudioEffectHost, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"delay\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 4),\n 11: Float32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"feedback\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0.5),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"cross\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0),\n 13: Float32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"filter\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0),\n 14: Float32Field.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"wet\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, -6),\n 15: Float32Field.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"dry\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, BooleanField, Float32Field, Int32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class RevampPass extends ObjectField {\n static create(construct) {\n return new RevampPass(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get enabled() {\n return this.getField(1);\n }\n get frequency() {\n return this.getField(10);\n }\n get order() {\n return this.getField(11);\n }\n get q() {\n return this.getField(12);\n }\n initializeFields() {\n return {\n 1: BooleanField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"enabled\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"frequency\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"order\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"q\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class RevampShelf extends ObjectField {\n static create(construct) {\n return new RevampShelf(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get enabled() {\n return this.getField(1);\n }\n get frequency() {\n return this.getField(10);\n }\n get gain() {\n return this.getField(11);\n }\n initializeFields() {\n return {\n 1: BooleanField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"enabled\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"frequency\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 11: Float32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"gain\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class RevampBell extends ObjectField {\n static create(construct) {\n return new RevampBell(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get enabled() {\n return this.getField(1);\n }\n get frequency() {\n return this.getField(10);\n }\n get gain() {\n return this.getField(11);\n }\n get q() {\n return this.getField(12);\n }\n initializeFields() {\n return {\n 1: BooleanField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"enabled\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"frequency\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 11: Float32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"gain\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"q\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { RevampPass } from \"./RevampPass\";\nimport { RevampShelf } from \"./RevampShelf\";\nimport { RevampBell } from \"./RevampBell\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class RevampDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new RevampDeviceBox({\n uuid,\n graph,\n name: \"RevampDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitRevampDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get index() {\n return this.getField(2);\n }\n get label() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get highPass() {\n return this.getField(10);\n }\n get lowShelf() {\n return this.getField(11);\n }\n get lowBell() {\n return this.getField(12);\n }\n get midBell() {\n return this.getField(13);\n }\n get highBell() {\n return this.getField(14);\n }\n get highShelf() {\n return this.getField(15);\n }\n get lowPass() {\n return this.getField(16);\n }\n get gain() {\n return this.getField(17);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.AudioEffectHost, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: RevampPass.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"highPass\",\n pointerRules: NoPointers,\n }),\n 11: RevampShelf.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"lowShelf\",\n pointerRules: NoPointers,\n }),\n 12: RevampBell.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"lowBell\",\n pointerRules: NoPointers,\n }),\n 13: RevampBell.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"midBell\",\n pointerRules: NoPointers,\n }),\n 14: RevampBell.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"highBell\",\n pointerRules: NoPointers,\n }),\n 15: RevampShelf.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"highShelf\",\n pointerRules: NoPointers,\n }),\n 16: RevampPass.create({\n parent: this,\n fieldKey: 16,\n fieldName: \"lowPass\",\n pointerRules: NoPointers,\n }),\n 17: Float32Field.create({\n parent: this,\n fieldKey: 17,\n fieldName: \"gain\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ReverbDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ReverbDeviceBox({\n uuid,\n graph,\n name: \"ReverbDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitReverbDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get index() {\n return this.getField(2);\n }\n get label() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get decay() {\n return this.getField(10);\n }\n get preDelay() {\n return this.getField(11);\n }\n get damp() {\n return this.getField(12);\n }\n get filter() {\n return this.getField(13);\n }\n get wet() {\n return this.getField(14);\n }\n get dry() {\n return this.getField(15);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.AudioEffectHost, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"decay\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0.5),\n 11: Float32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"preDelay\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"damp\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0.5),\n 13: Float32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"filter\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0),\n 14: Float32Field.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"wet\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, -3),\n 15: Float32Field.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"dry\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, StringField, BooleanField, Float32Field, Int32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class VaporisateurDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new VaporisateurDeviceBox({\n uuid,\n graph,\n name: \"VaporisateurDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitVaporisateurDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get label() {\n return this.getField(2);\n }\n get icon() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get volume() {\n return this.getField(10);\n }\n get octave() {\n return this.getField(11);\n }\n get tune() {\n return this.getField(12);\n }\n get waveform() {\n return this.getField(13);\n }\n get cutoff() {\n return this.getField(14);\n }\n get resonance() {\n return this.getField(15);\n }\n get attack() {\n return this.getField(16);\n }\n get release() {\n return this.getField(17);\n }\n get filterEnvelope() {\n return this.getField(18);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.InstrumentHost, true),\n 2: StringField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"icon\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"volume\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"octave\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"tune\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 13: Int32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"waveform\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 14: Float32Field.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"cutoff\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 15: Float32Field.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"resonance\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 16: Float32Field.create({\n parent: this,\n fieldKey: 16,\n fieldName: \"attack\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 17: Float32Field.create({\n parent: this,\n fieldKey: 17,\n fieldName: \"release\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 18: Float32Field.create({\n parent: this,\n fieldKey: 18,\n fieldName: \"filterEnvelope\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class NanoDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new NanoDeviceBox({\n uuid,\n graph,\n name: \"NanoDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitNanoDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get label() {\n return this.getField(2);\n }\n get icon() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get volume() {\n return this.getField(10);\n }\n get file() {\n return this.getField(15);\n }\n get release() {\n return this.getField(20);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.InstrumentHost, true),\n 2: StringField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"icon\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"volume\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, -3),\n 15: PointerField.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"file\",\n pointerRules: NoPointers,\n }, Pointers.AudioFile, false),\n 20: Float32Field.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"release\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0.1),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, StringField, BooleanField, Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class PlayfieldDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new PlayfieldDeviceBox({\n uuid,\n graph,\n name: \"PlayfieldDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitPlayfieldDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get label() {\n return this.getField(2);\n }\n get icon() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get samples() {\n return this.getField(10);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.InstrumentHost, true),\n 2: StringField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"icon\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Field.hook({\n parent: this,\n fieldKey: 10,\n fieldName: \"samples\",\n pointerRules: { accepts: [Pointers.Sample], mandatory: false },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Field, Int32Field, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class PlayfieldSampleBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new PlayfieldSampleBox({\n uuid,\n graph,\n name: \"PlayfieldSampleBox\",\n pointerRules: { accepts: [Pointers.Editing], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitPlayfieldSampleBox, this);\n }\n get device() {\n return this.getField(10);\n }\n get file() {\n return this.getField(11);\n }\n get midiEffects() {\n return this.getField(12);\n }\n get audioEffects() {\n return this.getField(13);\n }\n get index() {\n return this.getField(15);\n }\n get label() {\n return this.getField(20);\n }\n get icon() {\n return this.getField(21);\n }\n get enabled() {\n return this.getField(22);\n }\n get minimized() {\n return this.getField(23);\n }\n get mute() {\n return this.getField(40);\n }\n get solo() {\n return this.getField(41);\n }\n get exclude() {\n return this.getField(42);\n }\n get polyphone() {\n return this.getField(43);\n }\n get gate() {\n return this.getField(44);\n }\n get pitch() {\n return this.getField(45);\n }\n get sampleStart() {\n return this.getField(46);\n }\n get sampleEnd() {\n return this.getField(47);\n }\n get attack() {\n return this.getField(48);\n }\n get release() {\n return this.getField(49);\n }\n initializeFields() {\n return {\n 10: PointerField.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"device\",\n pointerRules: NoPointers,\n }, Pointers.Sample, true),\n 11: PointerField.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"file\",\n pointerRules: NoPointers,\n }, Pointers.AudioFile, true),\n 12: Field.hook({\n parent: this,\n fieldKey: 12,\n fieldName: \"midiEffects\",\n pointerRules: { accepts: [Pointers.MidiEffectHost], mandatory: false },\n }),\n 13: Field.hook({\n parent: this,\n fieldKey: 13,\n fieldName: \"audioEffects\",\n pointerRules: { accepts: [Pointers.AudioEffectHost], mandatory: false },\n }),\n 15: Int32Field.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }, 60),\n 20: StringField.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 21: StringField.create({\n parent: this,\n fieldKey: 21,\n fieldName: \"icon\",\n pointerRules: NoPointers,\n }),\n 22: BooleanField.create({\n parent: this,\n fieldKey: 22,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 23: BooleanField.create({\n parent: this,\n fieldKey: 23,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 40: BooleanField.create({\n parent: this,\n fieldKey: 40,\n fieldName: \"mute\",\n pointerRules: NoPointers,\n }),\n 41: BooleanField.create({\n parent: this,\n fieldKey: 41,\n fieldName: \"solo\",\n pointerRules: NoPointers,\n }),\n 42: BooleanField.create({\n parent: this,\n fieldKey: 42,\n fieldName: \"exclude\",\n pointerRules: NoPointers,\n }),\n 43: BooleanField.create({\n parent: this,\n fieldKey: 43,\n fieldName: \"polyphone\",\n pointerRules: NoPointers,\n }),\n 44: Int32Field.create({\n parent: this,\n fieldKey: 44,\n fieldName: \"gate\",\n pointerRules: NoPointers,\n }, 0),\n 45: Float32Field.create({\n parent: this,\n fieldKey: 45,\n fieldName: \"pitch\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 46: Float32Field.create({\n parent: this,\n fieldKey: 46,\n fieldName: \"sampleStart\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0),\n 47: Float32Field.create({\n parent: this,\n fieldKey: 47,\n fieldName: \"sampleEnd\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 1),\n 48: Float32Field.create({\n parent: this,\n fieldKey: 48,\n fieldName: \"attack\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0.001),\n 49: Float32Field.create({\n parent: this,\n fieldKey: 49,\n fieldName: \"release\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 0.02),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class TapeDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new TapeDeviceBox({\n uuid,\n graph,\n name: \"TapeDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection, Pointers.Automation],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitTapeDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get label() {\n return this.getField(2);\n }\n get icon() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get flutter() {\n return this.getField(10);\n }\n get wow() {\n return this.getField(11);\n }\n get noise() {\n return this.getField(12);\n }\n get saturation() {\n return this.getField(13);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.InstrumentHost, true),\n 2: StringField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"icon\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Float32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"flutter\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 11: Float32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"wow\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 12: Float32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"noise\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 13: Float32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"saturation\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ArpeggioDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ArpeggioDeviceBox({\n uuid,\n graph,\n name: \"ArpeggioDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitArpeggioDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get index() {\n return this.getField(2);\n }\n get label() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get modeIndex() {\n return this.getField(10);\n }\n get numOctaves() {\n return this.getField(11);\n }\n get rateIndex() {\n return this.getField(12);\n }\n get gate() {\n return this.getField(13);\n }\n get repeat() {\n return this.getField(14);\n }\n get velocity() {\n return this.getField(15);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.MidiEffectHost, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"modeIndex\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 11: Int32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"numOctaves\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 1),\n 12: Int32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"rateIndex\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 9),\n 13: Float32Field.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"gate\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 1),\n 14: Int32Field.create({\n parent: this,\n fieldKey: 14,\n fieldName: \"repeat\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }, 1),\n 15: Float32Field.create({\n parent: this,\n fieldKey: 15,\n fieldName: \"velocity\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, BooleanField, Float32Field, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class PitchDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new PitchDeviceBox({\n uuid,\n graph,\n name: \"PitchDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitPitchDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get index() {\n return this.getField(2);\n }\n get label() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get semiTones() {\n return this.getField(10);\n }\n get cents() {\n return this.getField(11);\n }\n get octaves() {\n return this.getField(12);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.MidiEffectHost, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: Int32Field.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"semiTones\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 11: Float32Field.create({\n parent: this,\n fieldKey: 11,\n fieldName: \"cents\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n 12: Int32Field.create({\n parent: this,\n fieldKey: 12,\n fieldName: \"octaves\",\n pointerRules: {\n accepts: [\n Pointers.Modulation,\n Pointers.Automation,\n Pointers.MidiControl,\n ],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Int32Field, StringField, BooleanField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ZeitgeistDeviceBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ZeitgeistDeviceBox({\n uuid,\n graph,\n name: \"ZeitgeistDeviceBox\",\n pointerRules: {\n accepts: [Pointers.Device, Pointers.Selection],\n mandatory: false,\n },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitZeitgeistDeviceBox, this);\n }\n get host() {\n return this.getField(1);\n }\n get index() {\n return this.getField(2);\n }\n get label() {\n return this.getField(3);\n }\n get enabled() {\n return this.getField(4);\n }\n get minimized() {\n return this.getField(5);\n }\n get groove() {\n return this.getField(10);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"host\",\n pointerRules: NoPointers,\n }, Pointers.MidiEffectHost, true),\n 2: Int32Field.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"index\",\n pointerRules: NoPointers,\n }),\n 3: StringField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 4: BooleanField.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"enabled\",\n pointerRules: NoPointers,\n }, true),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"minimized\",\n pointerRules: NoPointers,\n }, false),\n 10: PointerField.create({\n parent: this,\n fieldKey: 10,\n fieldName: \"groove\",\n pointerRules: NoPointers,\n }, Pointers.Groove, true),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, Field, StringField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModularBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ModularBox({\n uuid,\n graph,\n name: \"ModularBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitModularBox, this);\n }\n get collection() {\n return this.getField(1);\n }\n get device() {\n return this.getField(2);\n }\n get editing() {\n return this.getField(3);\n }\n get modules() {\n return this.getField(11);\n }\n get connections() {\n return this.getField(12);\n }\n get label() {\n return this.getField(13);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"collection\",\n pointerRules: NoPointers,\n }, Pointers.ModularSetup, true),\n 2: Field.hook({\n parent: this,\n fieldKey: 2,\n fieldName: \"device\",\n pointerRules: { accepts: [Pointers.ModularSetup], mandatory: true },\n }),\n 3: Field.hook({\n parent: this,\n fieldKey: 3,\n fieldName: \"editing\",\n pointerRules: { accepts: [Pointers.Editing], mandatory: false },\n }),\n 11: Field.hook({\n parent: this,\n fieldKey: 11,\n fieldName: \"modules\",\n pointerRules: {\n accepts: [Pointers.ModuleCollection],\n mandatory: false,\n },\n }),\n 12: Field.hook({\n parent: this,\n fieldKey: 12,\n fieldName: \"connections\",\n pointerRules: {\n accepts: [Pointers.ConnectionCollection],\n mandatory: false,\n },\n }),\n 13: StringField.create({\n parent: this,\n fieldKey: 13,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, PointerField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModuleConnectionBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ModuleConnectionBox({\n uuid,\n graph,\n name: \"ModuleConnectionBox\",\n pointerRules: NoPointers,\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitModuleConnectionBox, this);\n }\n get collection() {\n return this.getField(1);\n }\n get source() {\n return this.getField(2);\n }\n get target() {\n return this.getField(3);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"collection\",\n pointerRules: NoPointers,\n }, Pointers.ConnectionCollection, true),\n 2: PointerField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"source\",\n pointerRules: NoPointers,\n }, Pointers.VoltageConnection, true),\n 3: PointerField.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"target\",\n pointerRules: NoPointers,\n }, Pointers.VoltageConnection, true),\n };\n }\n}\n", "import \"@opendaw/lib-std\";\nimport { ObjectField, NoPointers, PointerField, StringField, Int32Field, BooleanField, } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModuleAttributes extends ObjectField {\n static create(construct) {\n return new ModuleAttributes(construct);\n }\n constructor(construct) {\n super(construct);\n }\n get collection() {\n return this.getField(1);\n }\n get label() {\n return this.getField(2);\n }\n get x() {\n return this.getField(3);\n }\n get y() {\n return this.getField(4);\n }\n get collapsed() {\n return this.getField(5);\n }\n get removable() {\n return this.getField(6);\n }\n initializeFields() {\n return {\n 1: PointerField.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"collection\",\n pointerRules: NoPointers,\n }, Pointers.ModuleCollection, true),\n 2: StringField.create({\n parent: this,\n fieldKey: 2,\n fieldName: \"label\",\n pointerRules: NoPointers,\n }),\n 3: Int32Field.create({\n parent: this,\n fieldKey: 3,\n fieldName: \"x\",\n pointerRules: NoPointers,\n }),\n 4: Int32Field.create({\n parent: this,\n fieldKey: 4,\n fieldName: \"y\",\n pointerRules: NoPointers,\n }),\n 5: BooleanField.create({\n parent: this,\n fieldKey: 5,\n fieldName: \"collapsed\",\n pointerRules: NoPointers,\n }, false),\n 6: BooleanField.create({\n parent: this,\n fieldKey: 6,\n fieldName: \"removable\",\n pointerRules: NoPointers,\n }, true),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, Field, } from \"@opendaw/lib-box\";\nimport { ModuleAttributes } from \"./ModuleAttributes\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModularAudioInputBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ModularAudioInputBox({\n uuid,\n graph,\n name: \"ModularAudioInputBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitModularAudioInputBox, this);\n }\n get attributes() {\n return this.getField(1);\n }\n get output() {\n return this.getField(10);\n }\n initializeFields() {\n return {\n 1: ModuleAttributes.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"attributes\",\n pointerRules: NoPointers,\n }),\n 10: Field.hook({\n parent: this,\n fieldKey: 10,\n fieldName: \"output\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, Field, } from \"@opendaw/lib-box\";\nimport { ModuleAttributes } from \"./ModuleAttributes\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModularAudioOutputBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ModularAudioOutputBox({\n uuid,\n graph,\n name: \"ModularAudioOutputBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitModularAudioOutputBox, this);\n }\n get attributes() {\n return this.getField(1);\n }\n get input() {\n return this.getField(10);\n }\n initializeFields() {\n return {\n 1: ModuleAttributes.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"attributes\",\n pointerRules: NoPointers,\n }),\n 10: Field.hook({\n parent: this,\n fieldKey: 10,\n fieldName: \"input\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, Field, Float32Field, } from \"@opendaw/lib-box\";\nimport { ModuleAttributes } from \"./ModuleAttributes\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModuleDelayBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ModuleDelayBox({\n uuid,\n graph,\n name: \"ModuleDelayBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitModuleDelayBox, this);\n }\n get attributes() {\n return this.getField(1);\n }\n get voltageInput() {\n return this.getField(10);\n }\n get voltageOutput() {\n return this.getField(11);\n }\n get time() {\n return this.getField(20);\n }\n initializeFields() {\n return {\n 1: ModuleAttributes.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"attributes\",\n pointerRules: NoPointers,\n }),\n 10: Field.hook({\n parent: this,\n fieldKey: 10,\n fieldName: \"voltageInput\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n 11: Field.hook({\n parent: this,\n fieldKey: 11,\n fieldName: \"voltageOutput\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n 20: Float32Field.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"time\",\n pointerRules: {\n accepts: [Pointers.ParameterController],\n mandatory: false,\n },\n }, 500),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, Field, Float32Field, } from \"@opendaw/lib-box\";\nimport { ModuleAttributes } from \"./ModuleAttributes\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModuleMultiplierBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ModuleMultiplierBox({\n uuid,\n graph,\n name: \"ModuleMultiplierBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitModuleMultiplierBox, this);\n }\n get attributes() {\n return this.getField(1);\n }\n get voltageInputX() {\n return this.getField(10);\n }\n get voltageInputY() {\n return this.getField(11);\n }\n get voltageOutput() {\n return this.getField(12);\n }\n get multiplier() {\n return this.getField(20);\n }\n initializeFields() {\n return {\n 1: ModuleAttributes.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"attributes\",\n pointerRules: NoPointers,\n }),\n 10: Field.hook({\n parent: this,\n fieldKey: 10,\n fieldName: \"voltageInputX\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n 11: Field.hook({\n parent: this,\n fieldKey: 11,\n fieldName: \"voltageInputY\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n 12: Field.hook({\n parent: this,\n fieldKey: 12,\n fieldName: \"voltageOutput\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n 20: Float32Field.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"multiplier\",\n pointerRules: NoPointers,\n }),\n };\n }\n}\n", "import { safeExecute } from \"@opendaw/lib-std\";\nimport { Box, NoPointers, Field, Float32Field, } from \"@opendaw/lib-box\";\nimport { ModuleAttributes } from \"./ModuleAttributes\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nexport class ModuleGainBox extends Box {\n static create(graph, uuid, constructor) {\n return graph.stageBox(new ModuleGainBox({\n uuid,\n graph,\n name: \"ModuleGainBox\",\n pointerRules: { accepts: [Pointers.Selection], mandatory: false },\n }), constructor);\n }\n constructor(construct) {\n super(construct);\n }\n accept(visitor) {\n return safeExecute(visitor.visitModuleGainBox, this);\n }\n get attributes() {\n return this.getField(1);\n }\n get voltageInput() {\n return this.getField(10);\n }\n get voltageOutput() {\n return this.getField(12);\n }\n get gain() {\n return this.getField(20);\n }\n initializeFields() {\n return {\n 1: ModuleAttributes.create({\n parent: this,\n fieldKey: 1,\n fieldName: \"attributes\",\n pointerRules: NoPointers,\n }),\n 10: Field.hook({\n parent: this,\n fieldKey: 10,\n fieldName: \"voltageInput\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n 12: Field.hook({\n parent: this,\n fieldKey: 12,\n fieldName: \"voltageOutput\",\n pointerRules: {\n accepts: [Pointers.VoltageConnection],\n mandatory: false,\n },\n }),\n 20: Float32Field.create({\n parent: this,\n fieldKey: 20,\n fieldName: \"gain\",\n pointerRules: {\n accepts: [Pointers.ParameterController],\n mandatory: false,\n },\n }),\n };\n }\n}\n", "import { Pointers } from \"@opendaw/studio-enums\";\nimport { Interpolation } from \"@opendaw/lib-dsp\";\nimport { ValueEventCurveBox } from \"@opendaw/studio-boxes\";\nimport { assertInstanceOf, isDefined, panic, UUID } from \"@opendaw/lib-std\";\nexport var InterpolationFieldAdapter;\n(function (InterpolationFieldAdapter) {\n InterpolationFieldAdapter.write = (field, value) => {\n if (value.type === \"none\") {\n field.disconnect();\n field.setValue(0);\n }\n else if (value.type === \"linear\") {\n field.disconnect();\n field.setValue(1);\n }\n else if (value.type === \"curve\") {\n field.setValue(0);\n const curveBox = field.pointerHub.filter(Pointers.ValueInterpolation).at(0)?.box;\n if (isDefined(curveBox)) {\n assertInstanceOf(curveBox, ValueEventCurveBox);\n curveBox.slope.setValue(value.slope);\n }\n else {\n ValueEventCurveBox.create(field.box.graph, UUID.generate(), box => {\n box.slope.setValue(value.slope);\n box.event.refer(field);\n });\n }\n }\n };\n InterpolationFieldAdapter.read = (field) => {\n const curveBox = field.pointerHub.incoming().at(0)?.box;\n if (isDefined(curveBox)) {\n assertInstanceOf(curveBox, ValueEventCurveBox);\n return { type: \"curve\", slope: curveBox.slope.getValue() };\n }\n if (field.getValue() === 0) {\n return Interpolation.None;\n }\n else if (field.getValue() === 1) {\n return Interpolation.Linear;\n }\n else {\n return panic(\"Unknown Interpolation value\");\n }\n };\n})(InterpolationFieldAdapter || (InterpolationFieldAdapter = {}));\n", "import { Arrays, Cache, Terminable, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { Propagation } from \"@opendaw/lib-box\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { ValueEventBox } from \"@opendaw/studio-boxes\";\nimport { ValueEventCollectionBoxAdapter } from \"../collection/ValueEventCollectionBoxAdapter\";\nimport { InterpolationFieldAdapter } from \"./InterpolationFieldAdapter\";\nexport class ValueEventBoxAdapter {\n static Comparator = (a, b) => {\n const positionDiff = a.position - b.position;\n if (positionDiff !== 0) {\n return positionDiff;\n }\n const indexDiff = a.index - b.index;\n if (indexDiff !== 0) {\n return indexDiff;\n }\n throw new Error(`${a} and ${b} are identical in terms of comparison`);\n };\n type = \"value-event\";\n #terminator = new Terminator();\n #context;\n #box;\n #interpolation;\n #interpolationSubscription;\n #isSelected = false;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#interpolation = this.#terminator.own(new Cache(() => InterpolationFieldAdapter.read(this.#box.interpolation)));\n const invalidateInterpolation = () => {\n this.#interpolation.invalidate();\n this.collection.ifSome(collection => collection.onEventPropertyChanged());\n };\n this.#terminator.ownAll(this.#box.subscribe(Propagation.Children, (update) => {\n if (this.collection.isEmpty()) {\n return;\n }\n if (update.type === \"primitive\" || update.type === \"pointer\") {\n const collection = this.collection.unwrap();\n const updatedFieldKeys = update.address.fieldKeys;\n const indexChanged = Arrays.equals(this.#box.index.address.fieldKeys, updatedFieldKeys);\n const positionChanged = Arrays.equals(this.#box.position.address.fieldKeys, updatedFieldKeys);\n if (indexChanged || positionChanged) {\n collection.requestSorting();\n }\n else {\n collection.onEventPropertyChanged();\n }\n }\n }), this.#box.interpolation.subscribe(invalidateInterpolation), this.#box.interpolation.pointerHub.subscribeImmediate({\n onAdd: ({ targetVertex }) => {\n this.#interpolationSubscription.terminate();\n this.#interpolationSubscription = targetVertex.unwrap().box\n .subscribe(Propagation.Children, invalidateInterpolation);\n invalidateInterpolation();\n },\n onRemove: () => {\n this.#interpolationSubscription.terminate();\n this.#interpolationSubscription = Terminable.Empty;\n invalidateInterpolation();\n }\n }));\n this.#interpolationSubscription = this.#box.interpolation.pointerHub\n .filter(Pointers.ValueInterpolation)\n .at(0)?.box\n .subscribe(Propagation.Children, invalidateInterpolation)\n ?? Terminable.Empty;\n }\n onSelected() {\n this.#isSelected = true;\n this.collection.ifSome(region => region.onEventPropertyChanged());\n }\n onDeselected() {\n this.#isSelected = false;\n this.collection.ifSome(region => region.onEventPropertyChanged());\n }\n terminate() {\n this.#interpolationSubscription.terminate();\n this.#terminator.terminate();\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get position() { return this.#box.position.getValue(); }\n get index() { return this.#box.index.getValue(); }\n set interpolation(value) { InterpolationFieldAdapter.write(this.#box.interpolation, value); }\n get interpolation() { return this.#interpolation.get(); }\n get value() { return this.#box.value.getValue(); }\n get isSelected() { return this.#isSelected; }\n get collection() {\n return this.#box.events.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, ValueEventCollectionBoxAdapter));\n }\n copyTo(options) {\n const eventBox = ValueEventBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.position.setValue(options?.position ?? this.position);\n box.index.setValue(options?.index ?? this.index);\n box.events.refer(options?.events ?? this.collection.unwrap().box.events);\n box.value.setValue(options?.value ?? this.value);\n });\n InterpolationFieldAdapter.write(eventBox.interpolation, options?.interpolation ?? this.interpolation);\n return this.#context.boxAdapters.adapterFor(eventBox, ValueEventBoxAdapter);\n }\n copyFrom(options) {\n this.#box.position.setValue(options?.position ?? this.position);\n this.#box.index.setValue(options?.index ?? this.index);\n this.#box.events.refer(options?.events ?? this.collection.unwrap().box.events);\n this.#box.value.setValue(options?.value ?? this.value);\n InterpolationFieldAdapter.write(this.#box.interpolation, options?.interpolation ?? this.interpolation);\n return this;\n }\n toString() { return `{ValueEventBoxAdapter position: ${this.position} index: ${this.index}}`; }\n}\n", "import { ValueEventBox, ValueEventCollectionBox } from \"@opendaw/studio-boxes\";\nimport { asDefined, Curve, linear, Notifier, Option, panic, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { EventCollection, Interpolation, ValueEvent } from \"@opendaw/lib-dsp\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { ValueEventBoxAdapter } from \"../event/ValueEventBoxAdapter\";\nimport { InterpolationFieldAdapter } from \"../event/InterpolationFieldAdapter\";\nexport class ValueEventCollectionBoxAdapter {\n #terminator = new Terminator();\n #context;\n #box;\n #changeNotifier;\n #adapters;\n #events;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#changeNotifier = new Notifier();\n this.#adapters = UUID.newSet(adapter => adapter.uuid);\n this.#events = EventCollection.create(ValueEventBoxAdapter.Comparator);\n const addValueProcedure = (box) => {\n const adapter = asDefined(box.accept({\n visitValueEventBox: (box) => this.#context.boxAdapters.adapterFor(box, ValueEventBoxAdapter)\n }), `Could not find adapter for ${box}`);\n if (this.#adapters.add(adapter)) {\n this.#events.add(adapter);\n this.#onEventsChanged();\n }\n };\n this.#box.events.pointerHub.incoming().forEach(({ box }) => addValueProcedure(box));\n this.#terminator.own(this.#box.events.pointerHub.subscribeTransactual({\n onAdd: ({ box }) => addValueProcedure(box),\n onRemove: ({ box: { address: { uuid } } }) => {\n this.#events.remove(this.#adapters.removeByKey(uuid));\n this.#onEventsChanged();\n }\n }));\n this.#terminator.own(this.#box.owners.pointerHub.subscribeTransactual({\n onAdd: () => this.#changeNotifier.notify(this),\n onRemove: () => this.#changeNotifier.notify(this)\n }));\n }\n valueAt(position, fallback) { return ValueEvent.valueAt(this.#events, position, fallback); }\n copy() {\n const graph = this.#context.boxGraph;\n const boxCopy = ValueEventCollectionBox.create(graph, UUID.generate());\n this.#events.asArray().forEach(source => source.copyTo({ events: boxCopy.events }));\n return this.#context.boxAdapters.adapterFor(boxCopy, ValueEventCollectionBoxAdapter);\n }\n cut(position) {\n const low = this.events.lowerEqual(position);\n const high = this.events.greaterEqual(position);\n if (null === high) {\n if (null === low) {\n return Option.None;\n }\n return Option.wrap(this.createEvent({\n position,\n value: low.value,\n index: low.index,\n interpolation: low.interpolation\n }));\n }\n if (null === low) {\n return Option.wrap(this.createEvent({\n position,\n value: high.value,\n index: high.index,\n interpolation: high.interpolation\n }));\n }\n if (low.position === position) {\n return Option.wrap(low);\n }\n if (low.interpolation.type === \"none\") {\n return Option.wrap(this.createEvent({\n position,\n value: low.value,\n index: low.index,\n interpolation: low.interpolation\n }));\n }\n if (low.interpolation.type === \"linear\") {\n const { position: p0, value: v0 } = low;\n const { position: p1, value: v1 } = high;\n return Option.wrap(this.createEvent({\n position,\n value: linear(v0, v1, (position - p0) / (p1 - p0)),\n index: 0,\n interpolation: low.interpolation\n }));\n }\n if (low.interpolation.type === \"curve\") {\n const { position: p0, value: y0 } = low;\n const { position: p1, value: y1 } = high;\n const steps = p1 - p0;\n const cutOffset = position - p0;\n const curve = Curve.byHalf(steps, y0, Curve.valueAt({\n slope: low.interpolation.slope,\n steps,\n y0,\n y1\n }, steps * 0.5), y1);\n const cutValue = Curve.valueAt(curve, cutOffset);\n const lowSlope = Curve.slopeByHalf(y0, Curve.valueAt(curve, cutOffset * 0.5), cutValue);\n InterpolationFieldAdapter.write(low.box.interpolation, Interpolation.Curve(lowSlope));\n return Option.wrap(this.createEvent({\n position,\n value: cutValue,\n index: 0,\n interpolation: Interpolation.Curve(Curve.slopeByHalf(cutValue, Curve.valueAt(curve, (cutOffset + steps) * 0.5), y1))\n }));\n }\n return panic(\"Unknown interpolation type\");\n }\n subscribeChange(observer) { return this.#changeNotifier.subscribe(observer); }\n createEvent({ position, index, value, interpolation }) {\n const eventBox = ValueEventBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.position.setValue(position);\n box.index.setValue(index);\n box.value.setValue(value);\n box.events.refer(this.#box.events);\n });\n InterpolationFieldAdapter.write(eventBox.interpolation, interpolation);\n return this.#context.boxAdapters.adapterFor(eventBox, ValueEventBoxAdapter);\n }\n requestSorting() {\n this.#events.onIndexingChanged();\n this.onEventPropertyChanged();\n }\n onEventPropertyChanged() { this.#onEventsChanged(); }\n terminate() { this.#terminator.terminate(); }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get numOwners() { return this.#box.owners.pointerHub.filter(Pointers.ValueEventCollection).length; }\n get events() { return this.#events; }\n toString() { return `{ValueEventCollectionBox ${UUID.toString(this.#box.address.uuid)}}`; }\n #onEventsChanged() { this.#changeNotifier.notify(this); }\n}\n", "import { PPQN } from \"@opendaw/lib-dsp\";\nimport { DefaultObservableValue, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { Propagation } from \"@opendaw/lib-box\";\nimport { TrackBoxAdapter } from \"../TrackBoxAdapter\";\nimport { ValueEventCollectionBoxAdapter } from \"../collection/ValueEventCollectionBoxAdapter\";\nimport { ValueClipBox } from \"@opendaw/studio-boxes\";\nexport class ValueClipBoxAdapter {\n type = \"value-clip\";\n #terminator = new Terminator();\n #context;\n #box;\n #selectedValue;\n #changeNotifier;\n #isConstructing; // Prevents stack overflow due to infinite adapter queries\n #eventCollectionSubscription = Terminable.Empty;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#isConstructing = true;\n this.#selectedValue = this.#terminator.own(new DefaultObservableValue(false));\n this.#changeNotifier = this.#terminator.own(new Notifier());\n this.#terminator.own(this.#box.pointerHub.subscribeImmediate({\n onAdd: () => this.#dispatchChange(),\n onRemove: () => this.#dispatchChange()\n }));\n this.#terminator.own(this.#box.subscribe(Propagation.Children, (_update) => this.#dispatchChange()));\n this.#terminator.own(this.#box.events.catchupAndSubscribe(({ targetVertex }) => {\n this.#eventCollectionSubscription.terminate();\n this.#eventCollectionSubscription = targetVertex.match({\n none: () => Terminable.Empty,\n some: ({ box }) => this.#context.boxAdapters\n .adapterFor(box, ValueEventCollectionBoxAdapter)\n .subscribeChange(() => this.#dispatchChange())\n });\n this.#dispatchChange();\n }));\n this.#isConstructing = false;\n }\n valueAt(position, fallback) {\n const content = this.optCollection;\n return content.isEmpty() ? fallback : content.unwrap().valueAt(position % this.duration, fallback);\n }\n catchupAndSubscribeSelected(observer) {\n return this.#selectedValue.catchupAndSubscribe(observer);\n }\n subscribeChange(observer) { return this.#changeNotifier.subscribe(observer); }\n accept(visitor) { return safeExecute(visitor.visitValueClipBoxAdapter, this); }\n consolidate() { this.#box.events.refer(this.optCollection.unwrap().copy().box.owners); }\n clone(consolidate) {\n const events = consolidate ? this.optCollection.unwrap().copy().box.owners : this.#box.events.targetVertex.unwrap();\n ValueClipBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.index.setValue(this.indexField.getValue());\n box.label.setValue(this.label);\n box.hue.setValue(this.hue);\n box.duration.setValue(this.duration);\n box.mute.setValue(this.mute);\n box.clips.refer(this.#box.clips.targetVertex.unwrap());\n box.events.refer(events);\n });\n }\n onSelected() { this.#selectedValue.setValue(true); }\n onDeselected() { this.#selectedValue.setValue(false); }\n get isSelected() { return this.#selectedValue.getValue(); }\n terminate() {\n this.#eventCollectionSubscription.terminate();\n this.#terminator.terminate();\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get indexField() { return this.#box.index; }\n get duration() { return this.#box.duration.getValue(); }\n get mute() { return this.#box.mute.getValue(); }\n get hue() { return this.#box.hue.getValue(); }\n get hasCollection() { return !this.optCollection.isEmpty(); }\n get events() {\n return this.optCollection.map(collection => collection.events);\n }\n get optCollection() {\n return this.#box.events.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, ValueEventCollectionBoxAdapter));\n }\n get label() { return this.#box.label.getValue(); }\n get trackBoxAdapter() {\n if (this.#isConstructing) {\n return Option.None;\n }\n return this.#box.clips.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));\n }\n get isMirrowed() { return this.optCollection.mapOr(adapter => adapter.numOwners > 1, false); }\n get canMirror() { return true; }\n toString() { return `{ValueClipBoxAdapter ${UUID.toString(this.#box.address.uuid)} d: ${PPQN.toString(this.duration)}}`; }\n #dispatchChange() {\n this.#changeNotifier.notify();\n this.trackBoxAdapter.unwrapOrNull()?.clips?.dispatchChange();\n }\n}\n", "export class AudioFileBoxAdapter {\n #context;\n #box;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get startInSeconds() { return this.#box.startInSeconds.getValue(); }\n get endInSeconds() { return this.#box.endInSeconds.getValue(); }\n get data() { return this.getOrCreateLoader().data; }\n get peaks() { return this.getOrCreateLoader().peaks; }\n getOrCreateLoader() {\n return this.#context.audioManager.getOrCreate(this.#box.address.uuid);\n }\n terminate() { }\n}\n", "import { PPQN } from \"@opendaw/lib-dsp\";\nimport { DefaultObservableValue, Notifier, Option, safeExecute, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { AudioClipBox } from \"@opendaw/studio-boxes\";\nimport { Propagation } from \"@opendaw/lib-box\";\nimport { TrackBoxAdapter } from \"../TrackBoxAdapter\";\nimport { AudioFileBoxAdapter } from \"../../audio/AudioFileBoxAdapter\";\nexport class AudioClipBoxAdapter {\n type = \"audio-clip\";\n #terminator = new Terminator();\n #context;\n #box;\n #selectedValue;\n #changeNotifier;\n #isConstructing; // Prevents stack overflow due to infinite adapter queries\n #fileAdapter = Option.None;\n #fileSubscription = Option.None;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#isConstructing = true;\n this.#selectedValue = this.#terminator.own(new DefaultObservableValue(false));\n this.#changeNotifier = this.#terminator.own(new Notifier());\n this.#terminator.ownAll(this.#box.pointerHub.subscribeImmediate({\n onAdd: () => this.#dispatchChange(),\n onRemove: () => this.#dispatchChange()\n }), this.#box.file.catchupAndSubscribe((pointerField) => {\n this.#fileAdapter = pointerField.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, AudioFileBoxAdapter));\n this.#fileSubscription.ifSome(subscription => subscription.terminate());\n this.#fileSubscription = this.#fileAdapter.map(adapter => adapter.getOrCreateLoader().subscribe(() => this.#dispatchChange()));\n }), this.#box.subscribe(Propagation.Children, (_update) => this.#dispatchChange()), {\n terminate: () => {\n this.#fileSubscription.ifSome(subscription => subscription.terminate());\n this.#fileSubscription = Option.None;\n }\n });\n this.#isConstructing = false;\n }\n catchupAndSubscribeSelected(observer) {\n return this.#selectedValue.catchupAndSubscribe(observer);\n }\n subscribeChange(observer) { return this.#changeNotifier.subscribe(observer); }\n accept(visitor) { return safeExecute(visitor.visitAudioClipBoxAdapter, this); }\n consolidate() { }\n clone(_mirrored) {\n AudioClipBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.index.setValue(this.indexField.getValue());\n box.gain.setValue(this.gain);\n box.label.setValue(this.label);\n box.hue.setValue(this.hue);\n box.duration.setValue(this.duration);\n box.mute.setValue(this.mute);\n box.clips.refer(this.#box.clips.targetVertex.unwrap());\n box.file.refer(this.#box.file.targetVertex.unwrap());\n });\n }\n onSelected() { this.#selectedValue.setValue(true); }\n onDeselected() { this.#selectedValue.setValue(false); }\n get isSelected() { return this.#selectedValue.getValue(); }\n terminate() { this.#terminator.terminate(); }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get indexField() { return this.#box.index; }\n get duration() { return this.#box.duration.getValue(); }\n get mute() { return this.#box.mute.getValue(); }\n get hue() { return this.#box.hue.getValue(); }\n get gain() { return this.#box.gain.getValue(); }\n get file() { return this.#fileAdapter.unwrap(\"Cannot access file.\"); }\n get hasCollection() { return !this.optCollection.isEmpty(); }\n get optCollection() { return Option.None; }\n get label() { return this.#box.label.getValue(); }\n get trackBoxAdapter() {\n if (this.#isConstructing) {\n return Option.None;\n }\n return this.#box.clips.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));\n }\n get isMirrowed() { return false; }\n get canMirror() { return false; }\n toString() { return `{AudioClipBoxAdapter ${UUID.toString(this.#box.address.uuid)} d: ${PPQN.toString(this.duration)}}`; }\n #dispatchChange() {\n this.#changeNotifier.notify();\n this.trackBoxAdapter.unwrapOrNull()?.clips?.dispatchChange();\n }\n}\n", "import { NoteEvent } from \"@opendaw/lib-dsp\";\nimport { Arrays, UUID } from \"@opendaw/lib-std\";\nimport { NoteEventBox } from \"@opendaw/studio-boxes\";\nimport { Propagation } from \"@opendaw/lib-box\";\nimport { NoteEventCollectionBoxAdapter } from \"../collection/NoteEventCollectionBoxAdapter\";\nexport class NoteEventBoxAdapter {\n type = \"note-event\";\n #context;\n #box;\n #subscription;\n #isSelected = false;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#subscription = this.#box.subscribe(Propagation.Children, (update) => {\n if (this.collection.isEmpty()) {\n return;\n }\n if (update.type === \"primitive\" || update.type === \"pointer\") {\n const collection = this.collection.unwrap();\n const updatedFieldKeys = update.address.fieldKeys;\n const pitchChanged = Arrays.equals(this.#box.pitch.address.fieldKeys, updatedFieldKeys);\n const positionChanged = Arrays.equals(this.#box.position.address.fieldKeys, updatedFieldKeys);\n if (pitchChanged || positionChanged) {\n collection.requestSorting();\n }\n else {\n collection.onEventPropertyChanged();\n }\n }\n });\n }\n onSelected() {\n this.#isSelected = true;\n this.collection.ifSome(region => region.onEventPropertyChanged());\n }\n onDeselected() {\n this.#isSelected = false;\n this.collection.ifSome(region => region.onEventPropertyChanged());\n }\n terminate() { this.#subscription.terminate(); }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get position() { return this.#box.position.getValue(); }\n get duration() { return this.#box.duration.getValue(); }\n get complete() { return this.position + this.duration; }\n get velocity() { return this.#box.velocity.getValue(); } // 0.0...1.0\n get pitch() { return this.#box.pitch.getValue(); } // 0...127\n get cent() { return this.#box.cent.getValue(); } // -50.0...+50.0\n get chance() { return this.#box.chance.getValue(); } // 0...100%\n get playCount() { return this.#box.playCount.getValue(); } // 1...16\n get playCurve() { return this.#box.playCurve.getValue(); } // -1...+1\n get isSelected() { return this.#isSelected; }\n get collection() {\n return this.#box.events.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, NoteEventCollectionBoxAdapter));\n }\n normalizedPitch() {\n if (this.collection.isEmpty()) {\n return 0.5;\n }\n const { minPitch, maxPitch } = this.collection.unwrap();\n return minPitch === maxPitch ? 0.5 : 1.0 - (this.pitch - minPitch) / (maxPitch - minPitch);\n }\n copyAsNoteEvent() {\n return {\n type: \"note-event\",\n position: this.position,\n duration: this.duration,\n pitch: this.pitch,\n cent: this.cent,\n velocity: this.velocity\n };\n }\n copyTo(options) {\n return this.#context.boxAdapters.adapterFor(NoteEventBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.position.setValue(options?.position ?? this.position);\n box.duration.setValue(options?.duration ?? this.duration);\n box.pitch.setValue(options?.pitch ?? this.pitch);\n box.playCount.setValue(options?.playCount ?? this.playCount);\n box.events.refer(options?.events ?? this.collection.unwrap().box.events);\n box.velocity.setValue(this.velocity);\n box.cent.setValue(this.cent);\n box.chance.setValue(this.chance);\n }), NoteEventBoxAdapter);\n }\n computeCurveValue(ratio) { return NoteEvent.curveFunc(ratio, this.playCurve); }\n canConsolidate() { return this.playCount > 1; }\n consolidate() {\n const playCount = this.playCount;\n const events = this.collection.unwrap().box.events;\n const adapters = Arrays.create((index) => {\n const a = Math.floor(this.computeCurveValue(index / playCount) * this.duration);\n const b = Math.floor(this.computeCurveValue((index + 1) / playCount) * this.duration);\n return this.copyTo({\n position: Math.floor(this.position + a),\n duration: Math.max(1, b - a),\n playCount: 1,\n events\n });\n }, playCount);\n this.#box.delete();\n return adapters;\n }\n}\n", "import { NoteEventBox, NoteEventCollectionBox } from \"@opendaw/studio-boxes\";\nimport { asDefined, Intervals, Iterables, Notifier, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { EventCollection, NoteEvent } from \"@opendaw/lib-dsp\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { NoteEventBoxAdapter } from \"../event/NoteEventBoxAdapter\";\nexport class NoteEventCollectionBoxAdapter {\n #terminator = new Terminator();\n #context;\n #box;\n #changeNotifier;\n #adapters;\n #events;\n #minPitch = 60;\n #maxPitch = 60;\n #maxDuration = 0;\n #computedExtremas = false;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#changeNotifier = new Notifier();\n this.#adapters = UUID.newSet(adapter => adapter.uuid);\n this.#events = EventCollection.create(NoteEvent.Comparator);\n const addNoteProcedure = (box) => {\n const adapter = asDefined(box.accept({\n visitNoteEventBox: (box) => this.#context.boxAdapters.adapterFor(box, NoteEventBoxAdapter)\n }), `Could not find adapter for ${box}`);\n if (this.#adapters.add(adapter)) {\n this.#events.add(adapter);\n this.#onEventsChanged();\n }\n };\n this.#box.events.pointerHub.incoming().forEach(({ box }) => addNoteProcedure(box));\n this.#terminator.own(this.#box.events.pointerHub.subscribeTransactual({\n onAdd: ({ box }) => addNoteProcedure(box),\n onRemove: ({ box: { address: { uuid } } }) => {\n this.#events.remove(this.#adapters.removeByKey(uuid));\n this.#onEventsChanged();\n }\n }));\n this.#terminator.own(this.#box.owners.pointerHub.subscribeTransactual({\n onAdd: () => this.#changeNotifier.notify(this),\n onRemove: () => this.#changeNotifier.notify(this)\n }));\n }\n copy() {\n const graph = this.#context.boxGraph;\n const boxCopy = NoteEventCollectionBox.create(graph, UUID.generate());\n this.#events.asArray().forEach(source => source.copyTo({ events: boxCopy.events }));\n return this.#context.boxAdapters.adapterFor(boxCopy, NoteEventCollectionBoxAdapter);\n }\n createEvent({ position, duration, velocity, pitch, chance, playCount, cent }) {\n return this.#context.boxAdapters.adapterFor(NoteEventBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.position.setValue(position);\n box.duration.setValue(duration);\n box.velocity.setValue(velocity);\n box.pitch.setValue(pitch);\n box.chance.setValue(chance);\n box.playCount.setValue(playCount);\n box.cent.setValue(cent);\n box.events.refer(this.#box.events);\n }), NoteEventBoxAdapter);\n }\n subscribeChange(observer) { return this.#changeNotifier.subscribe(observer); }\n selectable() { return this.#events.asArray(); }\n selectableAt(coordinates) {\n for (const element of this.#events.asArray()) { // TODO Optimise\n if (element.position <= coordinates.u && coordinates.u < element.complete && element.pitch === coordinates.v) {\n return Iterables.one(element);\n }\n }\n return Iterables.empty();\n }\n selectablesBetween(begin, end) {\n const events = [];\n for (const element of this.#events.asArray()) { // TODO Optimise\n if (Intervals.intersect1D(element.position, element.complete, begin.u, end.u)\n && Intervals.intersect1D(element.pitch, element.pitch, begin.v, end.v)) {\n events.push(element);\n }\n }\n return events;\n }\n requestSorting() {\n this.#events.onIndexingChanged();\n this.onEventPropertyChanged();\n }\n onEventPropertyChanged() { this.#onEventsChanged(); }\n terminate() { this.#terminator.terminate(); }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get numOwners() { return this.#box.owners.pointerHub.filter(Pointers.NoteEventCollection).length; }\n get events() {\n if (!this.#computedExtremas) {\n this.#computeExtremas();\n }\n return this.#events;\n }\n get minPitch() {\n if (!this.#computedExtremas) {\n this.#computeExtremas();\n }\n return this.#minPitch;\n }\n get maxPitch() {\n if (!this.#computedExtremas) {\n this.#computeExtremas();\n }\n return this.#maxPitch;\n }\n get maxDuration() {\n if (!this.#computedExtremas) {\n this.#computeExtremas();\n }\n return this.#maxDuration;\n }\n toString() { return `{NoteEventCollectionBox ${UUID.toString(this.#box.address.uuid)}}`; }\n #onEventsChanged() {\n this.#computedExtremas = false;\n this.#changeNotifier.notify(this);\n }\n #computeExtremas() {\n let min = 127 | 0;\n let max = 0 | 0;\n let maxDuration = 0;\n this.#events.asArray().forEach(({ pitch, duration }) => {\n min = Math.min(min, pitch);\n max = Math.max(max, pitch);\n maxDuration = Math.max(maxDuration, duration);\n });\n this.#minPitch = min;\n this.#maxPitch = max;\n this.#maxDuration = maxDuration;\n this.#computedExtremas = true;\n }\n}\n", "import { DefaultObservableValue, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { PPQN } from \"@opendaw/lib-dsp\";\nimport { Propagation } from \"@opendaw/lib-box\";\nimport { NoteClipBox } from \"@opendaw/studio-boxes\";\nimport { NoteEventCollectionBoxAdapter } from \"../collection/NoteEventCollectionBoxAdapter\";\nimport { TrackBoxAdapter } from \"../TrackBoxAdapter\";\nexport class NoteClipBoxAdapter {\n type = \"note-clip\";\n #terminator = new Terminator();\n #context;\n #box;\n #selectedValue;\n #changeNotifier;\n #isConstructing; // Prevents stack overflow due to infinite adapter queries\n #eventCollectionSubscription = Terminable.Empty;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#isConstructing = true;\n this.#selectedValue = this.#terminator.own(new DefaultObservableValue(false));\n this.#changeNotifier = this.#terminator.own(new Notifier());\n this.#terminator.ownAll(this.#box.pointerHub.subscribeImmediate({\n onAdd: () => this.#dispatchChange(),\n onRemove: () => this.#dispatchChange()\n }), this.#box.subscribe(Propagation.Children, (_update) => this.#dispatchChange()), this.#box.events.catchupAndSubscribe(({ targetVertex }) => {\n this.#eventCollectionSubscription.terminate();\n this.#eventCollectionSubscription = targetVertex.match({\n none: () => Terminable.Empty,\n some: ({ box }) => this.#context.boxAdapters\n .adapterFor(box, NoteEventCollectionBoxAdapter)\n .subscribeChange(() => this.#dispatchChange())\n });\n this.#dispatchChange();\n }));\n this.#isConstructing = false;\n }\n catchupAndSubscribeSelected(observer) {\n return this.#selectedValue.catchupAndSubscribe(observer);\n }\n subscribeChange(observer) { return this.#changeNotifier.subscribe(observer); }\n accept(visitor) { return safeExecute(visitor.visitNoteClipBoxAdapter, this); }\n consolidate() { this.#box.events.refer(this.optCollection.unwrap().copy().box.owners); }\n clone(consolidate) {\n const events = consolidate ? this.optCollection.unwrap().copy().box.owners : this.#box.events.targetVertex.unwrap();\n NoteClipBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.index.setValue(this.indexField.getValue());\n box.label.setValue(this.label);\n box.hue.setValue(this.hue);\n box.duration.setValue(this.duration);\n box.mute.setValue(this.mute);\n box.clips.refer(this.#box.clips.targetVertex.unwrap());\n box.events.refer(events);\n });\n }\n onSelected() { this.#selectedValue.setValue(true); }\n onDeselected() { this.#selectedValue.setValue(false); }\n get isSelected() { return this.#selectedValue.getValue(); }\n terminate() {\n this.#eventCollectionSubscription.terminate();\n this.#terminator.terminate();\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get indexField() { return this.#box.index; }\n get duration() { return this.#box.duration.getValue(); }\n get mute() { return this.#box.mute.getValue(); }\n get hue() { return this.#box.hue.getValue(); }\n get events() {\n return this.optCollection.map(collection => collection.events);\n }\n get hasCollection() { return !this.optCollection.isEmpty(); }\n get optCollection() {\n return this.#box.events.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, NoteEventCollectionBoxAdapter));\n }\n get label() { return this.#box.label.getValue(); }\n get trackBoxAdapter() {\n if (this.#isConstructing) {\n return Option.None;\n }\n return this.#box.clips.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));\n }\n get isMirrowed() { return this.optCollection.mapOr(adapter => adapter.numOwners > 1, false); }\n get canMirror() { return true; }\n toString() { return `{NoteClipBoxAdapter ${UUID.toString(this.#box.address.uuid)} d: ${PPQN.toString(this.duration)}}`; }\n #dispatchChange() {\n this.#changeNotifier.notify();\n this.trackBoxAdapter.unwrapOrNull()?.clips?.dispatchChange();\n }\n}\n", "import { asDefined } from \"@opendaw/lib-std\";\nimport { ValueClipBoxAdapter } from \"./clip/ValueClipBoxAdapter\";\nimport { AudioClipBoxAdapter } from \"./clip/AudioClipBoxAdapter\";\nimport { NoteClipBoxAdapter } from \"./clip/NoteClipBoxAdapter\";\nexport const ClipAdapters = {\n for: (boxAdapters, box) => asDefined(box.accept({\n visitNoteClipBox: (box) => boxAdapters.adapterFor(box, NoteClipBoxAdapter),\n visitValueClipBox: (box) => boxAdapters.adapterFor(box, ValueClipBoxAdapter),\n visitAudioClipBox: (box) => boxAdapters.adapterFor(box, AudioClipBoxAdapter)\n }), \"\")\n};\n", "import { Pointers } from \"@opendaw/studio-enums\";\nimport { Notifier, Terminator } from \"@opendaw/lib-std\";\nimport { SortedBoxAdapterCollection } from \"../SortedBoxAdapterCollection\";\nimport { ClipAdapters } from \"./ClipBoxAdapter\";\nexport class TrackClips {\n #trackBoxAdapter;\n #terminator;\n #changeNotifier;\n #collection;\n constructor(adapter, boxAdapters) {\n this.#trackBoxAdapter = adapter;\n this.#terminator = new Terminator();\n this.#changeNotifier = this.#terminator.own(new Notifier());\n this.#collection = this.#terminator.own(SortedBoxAdapterCollection.create(adapter.box.clips, box => ClipAdapters.for(boxAdapters, box), Pointers.ClipCollection));\n this.#collection.subscribe({\n onAdd: () => this.dispatchChange(),\n onRemove: () => this.dispatchChange(),\n onReorder: () => this.dispatchChange()\n });\n }\n get trackBoxAdapter() { return this.#trackBoxAdapter; }\n get collection() { return this.#collection; }\n dispatchChange() { this.#changeNotifier.notify(); }\n subscribeChanges(observer) { return this.#changeNotifier.subscribe(observer); }\n terminate() { this.#terminator.terminate(); }\n}\n", "import { AudioRegionBox } from \"@opendaw/studio-boxes\";\nimport { Notifier, Option, safeExecute, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { Propagation } from \"@opendaw/lib-box\";\nimport { PPQN } from \"@opendaw/lib-dsp\";\nimport { TrackBoxAdapter } from \"../TrackBoxAdapter\";\nimport { AudioFileBoxAdapter } from \"../../audio/AudioFileBoxAdapter\";\nexport class AudioRegionBoxAdapter {\n type = \"audio-region\";\n #terminator;\n #context;\n #box;\n #changeNotifier;\n #fileAdapter = Option.None;\n #fileSubscription = Option.None;\n #isSelected;\n #constructing;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#terminator = new Terminator();\n this.#changeNotifier = new Notifier();\n this.#isSelected = false;\n this.#constructing = true;\n // TODO For unsyned audio samples\n // this.#terminator.own(this.#project.timelineBox.bpm.subscribe(() => this.trackAdapter.unwrapOrNull()?.dispatchChange()))\n this.#terminator.ownAll(this.#box.pointerHub.subscribeImmediate({\n onAdd: () => this.#dispatchChange(),\n onRemove: () => this.#dispatchChange()\n }), this.#box.file.catchupAndSubscribe((pointerField) => {\n this.#fileAdapter = pointerField.targetVertex.map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, AudioFileBoxAdapter));\n this.#fileSubscription.ifSome(subscription => subscription.terminate());\n this.#fileSubscription = this.#fileAdapter.map(adapter => adapter.getOrCreateLoader().subscribe(() => this.#dispatchChange()));\n }), this.#box.subscribe(Propagation.Children, (update) => {\n if (this.trackBoxAdapter.isEmpty()) {\n return;\n }\n if (update.type === \"primitive\" || update.type === \"pointer\") {\n const track = this.trackBoxAdapter.unwrap();\n if (this.#box.position.address.equals(update.address)) {\n track.regions.onIndexingChanged();\n this.#dispatchChange();\n }\n else {\n this.#dispatchChange();\n }\n }\n }), {\n terminate: () => {\n this.#fileSubscription.ifSome(subscription => subscription.terminate());\n this.#fileSubscription = Option.None;\n }\n });\n this.#constructing = false;\n }\n subscribeChange(observer) { return this.#changeNotifier.subscribe(observer); }\n accept(visitor) {\n return safeExecute(visitor.visitAudioRegionBoxAdapter, this);\n }\n onSelected() {\n this.#isSelected = true;\n this.#dispatchChange();\n }\n onDeselected() {\n this.#isSelected = false;\n this.#dispatchChange();\n }\n get isSelected() { return this.#isSelected; }\n terminate() { this.#terminator.terminate(); }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get position() { return this.#box.position.getValue(); }\n get duration() {\n const duration = this.#box.duration.getValue();\n if (duration === 0) { // signals no synchronization with track bpm\n const fileBoxAdapter = this.#fileAdapter.unwrap(\"Cannot compute duration without file\");\n const startInSeconds = fileBoxAdapter.startInSeconds;\n const endInSeconds = fileBoxAdapter.endInSeconds;\n const totalInSeconds = endInSeconds - startInSeconds;\n return PPQN.secondsToPulses(totalInSeconds, this.#context.bpm);\n }\n return duration;\n }\n get complete() { return this.position + this.duration; }\n get loopOffset() { return this.#box.loopOffset.getValue(); }\n get loopDuration() { return this.#box.loopDuration.getValue(); }\n get offset() { return this.position - this.loopOffset; }\n get mute() { return this.#box.mute.getValue(); }\n get hue() { return this.#box.hue.getValue(); }\n get gain() { return this.#box.gain.getValue(); }\n get file() { return this.#fileAdapter.unwrap(\"Cannot access file.\"); }\n get hasCollection() { return this.#fileAdapter.nonEmpty(); }\n get optCollection() { return Option.None; }\n get label() {\n if (this.#fileAdapter.isEmpty()) {\n return \"No Audio File\";\n }\n const state = this.#fileAdapter.unwrap().getOrCreateLoader().state;\n if (state.type === \"progress\") {\n return `${Math.round(state.progress * 100)}%`;\n }\n if (state.type === \"error\") {\n return String(state.reason);\n }\n return this.#box.label.getValue();\n }\n get isMirrowed() { return false; }\n get canMirror() { return false; }\n get trackBoxAdapter() {\n return this.#box.regions.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));\n }\n copyTo(params) {\n return this.#context.boxAdapters.adapterFor(AudioRegionBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.position.setValue(params?.position ?? this.position);\n box.duration.setValue(params?.duration ?? this.duration);\n box.loopOffset.setValue(params?.loopOffset ?? this.loopOffset);\n box.loopDuration.setValue(params?.loopDuration ?? this.loopDuration);\n box.regions.refer(params?.track ?? this.#box.regions.targetVertex.unwrap());\n box.file.refer(this.#box.file.targetVertex.unwrap());\n box.mute.setValue(this.mute);\n box.hue.setValue(this.hue);\n box.label.setValue(this.label);\n box.gain.setValue(this.gain);\n }), AudioRegionBoxAdapter);\n }\n consolidate() {\n // TODO This needs to done by creating a new audio file\n }\n canFlatten(_regions) { return false; }\n flatten(_regions) {\n // TODO This needs to done by creating a new audio file\n return Option.None;\n }\n toString() { return `{AudioRegionBoxAdapter ${UUID.toString(this.#box.address.uuid)}}`; }\n #dispatchChange() {\n if (this.#constructing) {\n return;\n }\n this.#changeNotifier.notify();\n this.trackBoxAdapter.unwrapOrNull()?.regions?.dispatchChange();\n }\n}\n", "import { LoopableRegion, PPQN, RegionCollection } from \"@opendaw/lib-dsp\";\nimport { Arrays, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { Propagation } from \"@opendaw/lib-box\";\nimport { NoteEventCollectionBox, NoteRegionBox } from \"@opendaw/studio-boxes\";\nimport { TrackBoxAdapter } from \"../TrackBoxAdapter\";\nimport { NoteEventCollectionBoxAdapter } from \"../collection/NoteEventCollectionBoxAdapter\";\nexport class NoteRegionBoxAdapter {\n type = \"note-region\";\n #terminator = new Terminator();\n #context;\n #box;\n #changeNotifier;\n #isConstructing; // Prevents stack overflow due to infinite adapter queries\n #isSelected;\n #eventCollectionSubscription = Terminable.Empty;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#changeNotifier = new Notifier();\n this.#isSelected = false;\n this.#isConstructing = true;\n this.#terminator.ownAll(this.#box.pointerHub.subscribeImmediate({\n onAdd: () => this.#dispatchChange(),\n onRemove: () => this.#dispatchChange()\n }), this.#box.subscribe(Propagation.Children, (update) => {\n if (this.trackBoxAdapter.isEmpty()) {\n return;\n }\n if (update.type === \"primitive\" || update.type === \"pointer\") {\n const track = this.trackBoxAdapter.unwrap();\n if (this.#box.position.address.equals(update.address)) {\n track.regions.onIndexingChanged();\n this.#dispatchChange();\n }\n else {\n this.#dispatchChange();\n }\n }\n }), this.#box.events.catchupAndSubscribe(({ targetVertex }) => {\n this.#eventCollectionSubscription.terminate();\n this.#eventCollectionSubscription = targetVertex.match({\n none: () => Terminable.Empty,\n some: ({ box }) => this.#context.boxAdapters\n .adapterFor(box, NoteEventCollectionBoxAdapter)\n .subscribeChange(() => this.#dispatchChange())\n });\n this.#dispatchChange();\n }));\n this.#isConstructing = false;\n }\n subscribeChange(observer) { return this.#changeNotifier.subscribe(observer); }\n accept(visitor) { return safeExecute(visitor.visitNoteRegionBoxAdapter, this); }\n onSelected() {\n this.#isSelected = true;\n this.#dispatchChange();\n }\n onDeselected() {\n this.#isSelected = false;\n this.#dispatchChange();\n }\n get isSelected() { return this.#isSelected; }\n *iterateActiveNotesAt(position) {\n const optContent = this.optCollection;\n if (optContent.isEmpty()) {\n return;\n }\n const content = optContent.unwrap();\n const local = LoopableRegion.globalToLocal(this, position);\n for (const event of content.events.iterateFrom(local - content.maxDuration)) {\n if (local < event.position) {\n return;\n }\n if (local < event.complete) {\n yield event.copyAsNoteEvent();\n }\n }\n }\n terminate() {\n this.#eventCollectionSubscription.terminate();\n this.#terminator.terminate();\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get position() { return this.#box.position.getValue(); }\n get duration() { return this.#box.duration.getValue(); }\n get loopOffset() { return this.#box.loopOffset.getValue(); }\n get loopDuration() { return this.#box.loopDuration.getValue(); }\n get offset() { return this.position - this.loopOffset; }\n get complete() { return this.position + this.duration; }\n get mute() { return this.#box.mute.getValue(); }\n get hue() { return this.#box.hue.getValue(); }\n get hasCollection() { return this.optCollection.nonEmpty(); }\n get optCollection() {\n return this.#box.events.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, NoteEventCollectionBoxAdapter));\n }\n get label() { return this.#box.label.getValue(); }\n get trackBoxAdapter() {\n if (this.#isConstructing) {\n return Option.None;\n }\n return this.#box.regions.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));\n }\n get isMirrowed() { return this.optCollection.mapOr(adapter => adapter.numOwners > 1, false); }\n get canMirror() { return true; }\n copyTo(params) {\n const eventCollection = this.optCollection.unwrap(\"Cannot make copy without event-collection\");\n const eventTarget = params?.consolidate === true\n ? eventCollection.copy().box.owners\n : eventCollection.box.owners;\n return this.#context.boxAdapters.adapterFor(NoteRegionBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.position.setValue(params?.position ?? this.position);\n box.duration.setValue(params?.duration ?? this.duration);\n box.loopOffset.setValue(params?.loopOffset ?? this.loopOffset);\n box.loopDuration.setValue(params?.loopDuration ?? this.loopDuration);\n box.hue.setValue(this.hue);\n box.label.setValue(this.label);\n box.mute.setValue(this.mute);\n box.events.refer(eventTarget);\n box.regions.refer(params?.track ?? this.#box.regions.targetVertex.unwrap());\n }), NoteRegionBoxAdapter);\n }\n consolidate() {\n if (!this.isMirrowed) {\n return;\n }\n this.optCollection.ifSome(source => {\n const graph = this.#context.boxGraph;\n const target = NoteEventCollectionBox.create(graph, UUID.generate());\n source.events.asArray().forEach(adapter => adapter.copyTo({ events: target.events }));\n this.#box.events.refer(target.owners);\n });\n }\n canFlatten(regions) {\n return regions.length > 0 && Arrays.satisfy(regions, (a, b) => a.trackBoxAdapter.contains(b.trackBoxAdapter.unwrap()))\n && regions.every(region => region.isSelected && region instanceof NoteRegionBoxAdapter);\n }\n flatten(regions) {\n if (!this.canFlatten(regions)) {\n return Option.None;\n }\n const graph = this.#context.boxGraph;\n const sorted = regions.toSorted(RegionCollection.Comparator);\n const first = Arrays.getFirst(sorted, \"Internal error (no first)\");\n const last = Arrays.getLast(sorted, \"Internal error (no last)\");\n const rangeMin = first.position;\n const rangeMax = last.position + last.duration;\n const trackBoxAdapter = first.trackBoxAdapter.unwrap();\n const collectionBox = NoteEventCollectionBox.create(graph, UUID.generate());\n const overlapping = Array.from(trackBoxAdapter.regions.collection.iterateRange(rangeMin, rangeMax));\n overlapping\n .filter(region => region.isSelected)\n .forEach(anyRegion => {\n const region = anyRegion; // we made that sure in canFlatten\n for (const { resultStart, resultEnd, rawStart } of LoopableRegion.locateLoops(region, region.position, region.complete)) {\n const searchStart = Math.floor(resultStart - rawStart);\n const searchEnd = Math.floor(resultEnd - rawStart);\n for (const event of region.optCollection.unwrap().events.iterateRange(searchStart, searchEnd)) {\n event.copyTo({\n position: event.position + rawStart - first.position,\n events: collectionBox.events\n });\n }\n }\n });\n overlapping.forEach(({ box }) => box.delete());\n return Option.wrap(NoteRegionBox.create(graph, UUID.generate(), box => {\n box.position.setValue(rangeMin);\n box.duration.setValue(rangeMax - rangeMin);\n box.loopDuration.setValue(rangeMax - rangeMin);\n box.loopOffset.setValue(0);\n box.hue.setValue(this.hue);\n box.mute.setValue(this.mute);\n box.label.setValue(this.label);\n box.events.refer(collectionBox.owners);\n box.regions.refer(trackBoxAdapter.box.regions);\n }));\n }\n toString() { return `{NoteRegionBoxAdapter ${UUID.toString(this.#box.address.uuid)} p: ${PPQN.toString(this.position)}, c: ${PPQN.toString(this.complete)}}`; }\n #dispatchChange() {\n this.#changeNotifier.notify();\n this.trackBoxAdapter.unwrapOrNull()?.regions?.dispatchChange();\n }\n}\n", "import { LoopableRegion, PPQN, RegionCollection } from \"@opendaw/lib-dsp\";\nimport { Arrays, Notifier, Option, safeExecute, Terminable, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { Propagation } from \"@opendaw/lib-box\";\nimport { TrackBoxAdapter } from \"../TrackBoxAdapter\";\nimport { ValueEventCollectionBoxAdapter } from \"../collection/ValueEventCollectionBoxAdapter\";\nimport { ValueEventCollectionBox, ValueRegionBox } from \"@opendaw/studio-boxes\";\nexport class ValueRegionBoxAdapter {\n type = \"value-region\";\n #terminator = new Terminator();\n #context;\n #box;\n #changeNotifier;\n #isSelected;\n #isConstructing; // Prevents stack overflow due to infinite adapter queries\n #eventCollectionSubscription = Terminable.Empty;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#isConstructing = true;\n this.#changeNotifier = new Notifier();\n this.#isSelected = false;\n this.#terminator.own(this.#box.pointerHub.subscribeImmediate({\n onAdd: () => this.#dispatchChange(),\n onRemove: () => this.#dispatchChange()\n }));\n this.#terminator.own(this.#box.subscribe(Propagation.Children, (update) => {\n if (this.trackBoxAdapter.isEmpty()) {\n return;\n }\n if (update.type === \"primitive\" || update.type === \"pointer\") {\n const track = this.trackBoxAdapter.unwrap();\n if (this.#box.position.address.equals(update.address)) {\n track.regions.onIndexingChanged();\n this.#dispatchChange();\n }\n else {\n this.#dispatchChange();\n }\n }\n }));\n this.#terminator.own(this.#box.events.catchupAndSubscribe(({ targetVertex }) => {\n this.#eventCollectionSubscription.terminate();\n this.#eventCollectionSubscription = targetVertex.match({\n none: () => Terminable.Empty,\n some: ({ box }) => this.#context.boxAdapters\n .adapterFor(box, ValueEventCollectionBoxAdapter)\n .subscribeChange(() => this.#dispatchChange())\n });\n this.#dispatchChange();\n }));\n this.#isConstructing = false;\n }\n valueAt(position, fallback) {\n const content = this.optCollection;\n return content.isEmpty() ? fallback : content.unwrap().valueAt(LoopableRegion.globalToLocal(this, position), fallback);\n }\n incomingValue(fallback) { return this.valueAt(this.position, fallback); }\n outgoingValue(fallback) {\n const optContent = this.optCollection;\n if (optContent.isEmpty()) {\n return fallback;\n }\n const content = optContent.unwrap();\n const endsOnLoopPass = (this.complete - this.offset) % this.loopDuration === 0;\n return endsOnLoopPass\n ? content.valueAt(this.loopDuration, fallback)\n : content.valueAt(LoopableRegion.globalToLocal(this, this.complete), fallback);\n }\n subscribeChange(observer) { return this.#changeNotifier.subscribe(observer); }\n accept(visitor) {\n return safeExecute(visitor.visitValueRegionBoxAdapter, this);\n }\n onSelected() {\n this.#isSelected = true;\n this.#dispatchChange();\n }\n onDeselected() {\n this.#isSelected = false;\n this.#dispatchChange();\n }\n get isSelected() { return this.#isSelected; }\n onValuesPropertyChanged() { this.#dispatchChange(); }\n onValuesSortingChanged() { this.onValuesPropertyChanged(); }\n terminate() {\n this.#eventCollectionSubscription.terminate();\n this.#terminator.terminate();\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get position() { return this.#box.position.getValue(); }\n get duration() { return this.#box.duration.getValue(); }\n get loopOffset() { return this.#box.loopOffset.getValue(); }\n get loopDuration() { return this.#box.loopDuration.getValue(); }\n get offset() { return this.position - this.loopOffset; }\n get complete() { return this.position + this.duration; }\n get mute() { return this.#box.mute.getValue(); }\n get hue() { return this.#box.hue.getValue(); }\n get hasCollection() { return !this.optCollection.isEmpty(); }\n get events() {\n return this.optCollection.map(collection => collection.events);\n }\n get optCollection() {\n return this.#box.events.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, ValueEventCollectionBoxAdapter));\n }\n get label() { return this.#box.label.getValue(); }\n get trackBoxAdapter() {\n if (this.#isConstructing) {\n return Option.None;\n }\n return this.#box.regions.targetVertex\n .map(vertex => this.#context.boxAdapters.adapterFor(vertex.box, TrackBoxAdapter));\n }\n get isMirrowed() { return this.optCollection.mapOr(adapter => adapter.numOwners > 1, false); }\n get canMirror() { return true; }\n copyTo(params) {\n const eventCollection = this.optCollection.unwrap(\"Cannot make copy without event-collection\");\n const eventTarget = params?.consolidate === true\n ? eventCollection.copy().box.owners\n : eventCollection.box.owners;\n return this.#context.boxAdapters.adapterFor(ValueRegionBox.create(this.#context.boxGraph, UUID.generate(), box => {\n box.position.setValue(params?.position ?? this.position);\n box.duration.setValue(params?.duration ?? this.duration);\n box.loopOffset.setValue(params?.loopOffset ?? this.loopOffset);\n box.loopDuration.setValue(params?.loopDuration ?? this.loopDuration);\n box.hue.setValue(this.hue);\n box.label.setValue(this.label);\n box.mute.setValue(this.mute);\n box.events.refer(eventTarget);\n box.regions.refer(params?.track ?? this.#box.regions.targetVertex.unwrap());\n }), ValueRegionBoxAdapter);\n }\n consolidate() {\n if (!this.isMirrowed) {\n return;\n }\n this.events.ifSome(events => {\n const graph = this.#context.boxGraph;\n const collectionBox = ValueEventCollectionBox.create(graph, UUID.generate());\n events.asArray().forEach(adapter => adapter.copyTo({ events: collectionBox.events }));\n this.#box.events.refer(collectionBox.owners);\n });\n }\n canFlatten(_regions) {\n return false;\n /*return regions.length > 0 && Arrays.satisfy(regions, (a, b) => a.trackAdapter.contains(b.trackAdapter.unwrap()))\n && regions.every(region => region.isSelected && region instanceof ValueRegionBoxAdapter)*/\n }\n flatten(regions) {\n if (!this.canFlatten(regions)) {\n return Option.None;\n }\n const graph = this.#context.boxGraph;\n const sorted = regions.toSorted(RegionCollection.Comparator);\n const first = Arrays.getFirst(sorted, \"Internal error (no first)\");\n const last = Arrays.getLast(sorted, \"Internal error (no last)\");\n const rangeMin = first.position;\n const rangeMax = last.position + last.duration;\n const trackBoxAdapter = first.trackBoxAdapter.unwrap();\n const collectionBox = ValueEventCollectionBox.create(graph, UUID.generate());\n const overlapping = Array.from(trackBoxAdapter.regions.collection.iterateRange(rangeMin, rangeMax));\n overlapping\n .filter(region => region.isSelected)\n .forEach(anyRegion => {\n const region = anyRegion; // we made that sure in canFlatten\n for (const { resultStart, resultEnd, rawStart } of LoopableRegion.locateLoops(region, region.position, region.complete)) {\n const searchStart = Math.floor(resultStart - rawStart);\n const searchEnd = Math.floor(resultEnd - rawStart);\n for (const _event of region.events.unwrap().iterateRange(searchStart, searchEnd)) {\n // TODO Flatten\n }\n }\n });\n overlapping.forEach(({ box }) => box.delete());\n return Option.wrap(ValueRegionBox.create(graph, UUID.generate(), box => {\n box.position.setValue(rangeMin);\n box.duration.setValue(rangeMax - rangeMin);\n box.loopDuration.setValue(rangeMax - rangeMin);\n box.loopOffset.setValue(0);\n box.hue.setValue(this.hue);\n box.mute.setValue(this.mute);\n box.label.setValue(this.label);\n box.events.refer(collectionBox.owners);\n box.regions.refer(trackBoxAdapter.box.regions);\n }));\n }\n toString() { return `{ValueRegionBoxAdapter ${UUID.toString(this.#box.address.uuid)} p: ${PPQN.toString(this.position)}, c: ${PPQN.toString(this.complete)}}`; }\n #dispatchChange() {\n this.#changeNotifier.notify();\n this.trackBoxAdapter.unwrapOrNull()?.regions?.dispatchChange();\n }\n}\n", "import { asDefined } from \"@opendaw/lib-std\";\nimport { AudioRegionBoxAdapter } from \"./region/AudioRegionBoxAdapter\";\nimport { NoteRegionBoxAdapter } from \"./region/NoteRegionBoxAdapter\";\nimport { ValueRegionBoxAdapter } from \"./region/ValueRegionBoxAdapter\";\nexport const RegionComparator = (a, b) => a.position - b.position;\nexport const RegionAdapters = {\n for: (boxAdapters, box) => asDefined(box.accept({\n visitNoteRegionBox: (box) => boxAdapters.adapterFor(box, NoteRegionBoxAdapter),\n visitAudioRegionBox: (box) => boxAdapters.adapterFor(box, AudioRegionBoxAdapter),\n visitValueRegionBox: (box) => boxAdapters.adapterFor(box, ValueRegionBoxAdapter)\n }), \"\")\n};\n", "import { RegionCollection } from \"@opendaw/lib-dsp\";\nimport { assert, Notifier, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { RegionAdapters, RegionComparator } from \"./RegionBoxAdapter\";\nexport class TrackRegions {\n #trackBoxAdapter;\n #terminator;\n #changeNotifier;\n #collection;\n #adapters;\n constructor(adapter, boxAdapters) {\n this.#trackBoxAdapter = adapter;\n this.#terminator = new Terminator();\n this.#changeNotifier = this.#terminator.own(new Notifier());\n this.#collection = RegionCollection.create(RegionComparator);\n this.#adapters = UUID.newSet(adapter => adapter.uuid);\n this.#terminator.ownAll(this.#trackBoxAdapter.box.regions.pointerHub.catchupAndSubscribeTransactual({\n onAdd: ({ box }) => {\n const adapter = RegionAdapters.for(boxAdapters, box);\n const added = this.#adapters.add(adapter);\n assert(added, `Cannot add ${box}`);\n this.#collection.add(adapter);\n this.dispatchChange();\n },\n onRemove: ({ box: { address: { uuid } } }) => {\n this.#collection.remove(this.#adapters.removeByKey(uuid));\n this.dispatchChange();\n }\n }, Pointers.RegionCollection));\n }\n get trackBoxAdapter() { return this.#trackBoxAdapter; }\n get collection() { return this.#collection; }\n get adapters() { return this.#adapters; }\n onIndexingChanged() {\n this.#collection.onIndexingChanged();\n this.dispatchChange();\n }\n subscribeChanges(observer) { return this.#changeNotifier.subscribe(observer); }\n dispatchChange() { this.#changeNotifier.notify(); }\n terminate() { this.#terminator.terminate(); }\n}\n", "export var IconSymbol;\n(function (IconSymbol) {\n IconSymbol[IconSymbol[\"Rectangle\"] = 0] = \"Rectangle\";\n IconSymbol[IconSymbol[\"Checkbox\"] = 1] = \"Checkbox\";\n IconSymbol[IconSymbol[\"Panel\"] = 2] = \"Panel\";\n IconSymbol[IconSymbol[\"MainMenu\"] = 3] = \"MainMenu\";\n IconSymbol[IconSymbol[\"Dropdown\"] = 4] = \"Dropdown\";\n IconSymbol[IconSymbol[\"AudioDevice\"] = 5] = \"AudioDevice\";\n IconSymbol[IconSymbol[\"GuitarTab\"] = 6] = \"GuitarTab\";\n IconSymbol[IconSymbol[\"Effects\"] = 7] = \"Effects\";\n IconSymbol[IconSymbol[\"Flask\"] = 8] = \"Flask\";\n IconSymbol[IconSymbol[\"Robot\"] = 9] = \"Robot\";\n IconSymbol[IconSymbol[\"NotePad\"] = 10] = \"NotePad\";\n IconSymbol[IconSymbol[\"Pencil\"] = 11] = \"Pencil\";\n IconSymbol[IconSymbol[\"Waveform\"] = 12] = \"Waveform\";\n IconSymbol[IconSymbol[\"Mix\"] = 13] = \"Mix\";\n IconSymbol[IconSymbol[\"Adsr\"] = 14] = \"Adsr\";\n IconSymbol[IconSymbol[\"Dial\"] = 15] = \"Dial\";\n IconSymbol[IconSymbol[\"Record\"] = 16] = \"Record\";\n IconSymbol[IconSymbol[\"Play\"] = 17] = \"Play\";\n IconSymbol[IconSymbol[\"Stop\"] = 18] = \"Stop\";\n IconSymbol[IconSymbol[\"Loop\"] = 19] = \"Loop\";\n IconSymbol[IconSymbol[\"Timeline\"] = 20] = \"Timeline\";\n IconSymbol[IconSymbol[\"Region\"] = 21] = \"Region\";\n IconSymbol[IconSymbol[\"Box\"] = 22] = \"Box\";\n IconSymbol[IconSymbol[\"Mixing\"] = 23] = \"Mixing\";\n IconSymbol[IconSymbol[\"Vinyl\"] = 24] = \"Vinyl\";\n IconSymbol[IconSymbol[\"Help\"] = 25] = \"Help\";\n IconSymbol[IconSymbol[\"Metronome\"] = 26] = \"Metronome\";\n IconSymbol[IconSymbol[\"System\"] = 27] = \"System\";\n IconSymbol[IconSymbol[\"Add\"] = 28] = \"Add\";\n IconSymbol[IconSymbol[\"Subtract\"] = 29] = \"Subtract\";\n IconSymbol[IconSymbol[\"Peak\"] = 30] = \"Peak\";\n IconSymbol[IconSymbol[\"LowPass\"] = 31] = \"LowPass\";\n IconSymbol[IconSymbol[\"HighPass\"] = 32] = \"HighPass\";\n IconSymbol[IconSymbol[\"LowShelf\"] = 33] = \"LowShelf\";\n IconSymbol[IconSymbol[\"HighShelf\"] = 34] = \"HighShelf\";\n IconSymbol[IconSymbol[\"RoundUp\"] = 35] = \"RoundUp\";\n IconSymbol[IconSymbol[\"RoundDown\"] = 36] = \"RoundDown\";\n IconSymbol[IconSymbol[\"Mute\"] = 37] = \"Mute\";\n IconSymbol[IconSymbol[\"Solo\"] = 38] = \"Solo\";\n IconSymbol[IconSymbol[\"Exclude\"] = 39] = \"Exclude\";\n IconSymbol[IconSymbol[\"Menu\"] = 40] = \"Menu\";\n IconSymbol[IconSymbol[\"Pointer\"] = 41] = \"Pointer\";\n IconSymbol[IconSymbol[\"Eraser\"] = 42] = \"Eraser\";\n IconSymbol[IconSymbol[\"Scissors\"] = 43] = \"Scissors\";\n IconSymbol[IconSymbol[\"Tape\"] = 44] = \"Tape\";\n IconSymbol[IconSymbol[\"CollapseDown\"] = 45] = \"CollapseDown\";\n IconSymbol[IconSymbol[\"FileList\"] = 46] = \"FileList\";\n IconSymbol[IconSymbol[\"Close\"] = 47] = \"Close\";\n IconSymbol[IconSymbol[\"DragConnections\"] = 48] = \"DragConnections\";\n IconSymbol[IconSymbol[\"Heart\"] = 49] = \"Heart\";\n IconSymbol[IconSymbol[\"Merge\"] = 50] = \"Merge\";\n IconSymbol[IconSymbol[\"SpeakerHeadphone\"] = 51] = \"SpeakerHeadphone\";\n IconSymbol[IconSymbol[\"AudioBus\"] = 52] = \"AudioBus\";\n IconSymbol[IconSymbol[\"DrumSet\"] = 53] = \"DrumSet\";\n IconSymbol[IconSymbol[\"BassGuitar\"] = 54] = \"BassGuitar\";\n IconSymbol[IconSymbol[\"Guitar\"] = 55] = \"Guitar\";\n IconSymbol[IconSymbol[\"Saxophone\"] = 56] = \"Saxophone\";\n IconSymbol[IconSymbol[\"Microphone\"] = 57] = \"Microphone\";\n IconSymbol[IconSymbol[\"New\"] = 58] = \"New\";\n IconSymbol[IconSymbol[\"Piano\"] = 59] = \"Piano\";\n IconSymbol[IconSymbol[\"ExpandWidth\"] = 60] = \"ExpandWidth\";\n IconSymbol[IconSymbol[\"OpenDAW\"] = 61] = \"OpenDAW\";\n IconSymbol[IconSymbol[\"Automation\"] = 62] = \"Automation\";\n IconSymbol[IconSymbol[\"Embed\"] = 63] = \"Embed\";\n IconSymbol[IconSymbol[\"Popout\"] = 64] = \"Popout\";\n IconSymbol[IconSymbol[\"Minimized\"] = 65] = \"Minimized\";\n IconSymbol[IconSymbol[\"Maximized\"] = 66] = \"Maximized\";\n IconSymbol[IconSymbol[\"Search\"] = 67] = \"Search\";\n IconSymbol[IconSymbol[\"Generator\"] = 68] = \"Generator\";\n IconSymbol[IconSymbol[\"Groove\"] = 69] = \"Groove\";\n IconSymbol[IconSymbol[\"Table\"] = 70] = \"Table\";\n IconSymbol[IconSymbol[\"Note\"] = 71] = \"Note\";\n IconSymbol[IconSymbol[\"Exit\"] = 72] = \"Exit\";\n IconSymbol[IconSymbol[\"Start\"] = 73] = \"Start\";\n IconSymbol[IconSymbol[\"Duration\"] = 74] = \"Duration\";\n IconSymbol[IconSymbol[\"Velocity\"] = 75] = \"Velocity\";\n IconSymbol[IconSymbol[\"Random\"] = 76] = \"Random\";\n IconSymbol[IconSymbol[\"Divide\"] = 77] = \"Divide\";\n IconSymbol[IconSymbol[\"Curve\"] = 78] = \"Curve\";\n IconSymbol[IconSymbol[\"Primary\"] = 79] = \"Primary\";\n IconSymbol[IconSymbol[\"Clips\"] = 80] = \"Clips\";\n IconSymbol[IconSymbol[\"NoAudio\"] = 81] = \"NoAudio\";\n IconSymbol[IconSymbol[\"Unknown\"] = 82] = \"Unknown\";\n IconSymbol[IconSymbol[\"UserFolder\"] = 83] = \"UserFolder\";\n IconSymbol[IconSymbol[\"CloudFolder\"] = 84] = \"CloudFolder\";\n IconSymbol[IconSymbol[\"Run\"] = 85] = \"Run\";\n IconSymbol[IconSymbol[\"Insert\"] = 86] = \"Insert\";\n IconSymbol[IconSymbol[\"ArrayDown\"] = 87] = \"ArrayDown\";\n IconSymbol[IconSymbol[\"Sun\"] = 88] = \"Sun\";\n IconSymbol[IconSymbol[\"Book\"] = 89] = \"Book\";\n IconSymbol[IconSymbol[\"Stack\"] = 90] = \"Stack\";\n IconSymbol[IconSymbol[\"EditBox\"] = 91] = \"EditBox\";\n IconSymbol[IconSymbol[\"Delete\"] = 92] = \"Delete\";\n IconSymbol[IconSymbol[\"Time\"] = 93] = \"Time\";\n IconSymbol[IconSymbol[\"EQ\"] = 94] = \"EQ\";\n IconSymbol[IconSymbol[\"Cube\"] = 95] = \"Cube\";\n IconSymbol[IconSymbol[\"NanoWave\"] = 96] = \"NanoWave\";\n IconSymbol[IconSymbol[\"Midi\"] = 97] = \"Midi\";\n IconSymbol[IconSymbol[\"DinSlot\"] = 98] = \"DinSlot\";\n IconSymbol[IconSymbol[\"VUMeter\"] = 99] = \"VUMeter\";\n IconSymbol[IconSymbol[\"Playfield\"] = 100] = \"Playfield\";\n IconSymbol[IconSymbol[\"Invert\"] = 101] = \"Invert\";\n IconSymbol[IconSymbol[\"Headphone\"] = 102] = \"Headphone\";\n IconSymbol[IconSymbol[\"Stereo\"] = 103] = \"Stereo\";\n IconSymbol[IconSymbol[\"AutoGain\"] = 104] = \"AutoGain\";\n IconSymbol[IconSymbol[\"AudioFile\"] = 105] = \"AudioFile\";\n IconSymbol[IconSymbol[\"Tool\"] = 106] = \"Tool\";\n IconSymbol[IconSymbol[\"Focus\"] = 107] = \"Focus\";\n IconSymbol[IconSymbol[\"Swap\"] = 108] = \"Swap\";\n IconSymbol[IconSymbol[\"Connected\"] = 109] = \"Connected\";\n IconSymbol[IconSymbol[\"Disconnected\"] = 110] = \"Disconnected\";\n IconSymbol[IconSymbol[\"Zeitgeist\"] = 111] = \"Zeitgeist\";\n})(IconSymbol || (IconSymbol = {}));\n(function (IconSymbol) {\n IconSymbol.toName = (symbol) => IconSymbol[symbol];\n IconSymbol.fromName = (name) => IconSymbol[name] ?? IconSymbol.Rectangle;\n})(IconSymbol || (IconSymbol = {}));\n", "import { IconSymbol } from \"../IconSymbol\";\nexport var TrackType;\n(function (TrackType) {\n TrackType[TrackType[\"Undefined\"] = 0] = \"Undefined\";\n TrackType[TrackType[\"Notes\"] = 1] = \"Notes\";\n TrackType[TrackType[\"Audio\"] = 2] = \"Audio\";\n TrackType[TrackType[\"Value\"] = 3] = \"Value\";\n})(TrackType || (TrackType = {}));\n(function (TrackType) {\n TrackType.toLabelString = (type) => {\n switch (type) {\n case TrackType.Audio:\n return \"Audio\";\n case TrackType.Notes:\n return \"Notes\";\n case TrackType.Value:\n return \"Automation\";\n case TrackType.Undefined:\n default:\n return \"N/A\";\n }\n };\n TrackType.toIconSymbol = (type) => {\n switch (type) {\n case TrackType.Audio:\n return IconSymbol.Waveform;\n case TrackType.Notes:\n return IconSymbol.Piano;\n case TrackType.Value:\n return IconSymbol.Automation;\n case TrackType.Undefined:\n return IconSymbol.AudioBus;\n default:\n return IconSymbol.Unknown;\n }\n };\n})(TrackType || (TrackType = {}));\n", "import { Arrays, asDefined, assert, panic, UUID } from \"@opendaw/lib-std\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { TrackType } from \"./timeline/TrackType\";\nexport var DeviceAccepts;\n(function (DeviceAccepts) {\n DeviceAccepts.toTrackType = (type) => {\n switch (type) {\n case \"midi\":\n return TrackType.Notes;\n case \"audio\":\n return TrackType.Audio;\n default:\n return panic();\n }\n };\n})(DeviceAccepts || (DeviceAccepts = {}));\nexport var Devices;\n(function (Devices) {\n Devices.isAny = (adapter) => adapter !== null && typeof adapter === \"object\" && \"type\" in adapter\n && (adapter.type === \"midi-effect\" || adapter.type === \"bus\"\n || adapter.type === \"instrument\" || adapter.type === \"audio-effect\");\n Devices.isEffect = (adapter) => adapter !== null && typeof adapter === \"object\" && \"type\" in adapter\n && (adapter.type === \"midi-effect\" || adapter.type === \"audio-effect\");\n Devices.isInstrument = (adapter) => adapter !== null && typeof adapter === \"object\" && \"type\" in adapter && adapter.type === \"instrument\";\n Devices.isMidiEffect = (adapter) => adapter !== null && typeof adapter === \"object\" && \"type\" in adapter && adapter.type === \"midi-effect\";\n Devices.isAudioEffect = (adapter) => adapter !== null && typeof adapter === \"object\" && \"type\" in adapter && adapter.type === \"audio-effect\";\n Devices.isHost = (value) => value !== null && typeof value === \"object\" && \"class\" in value && value.class === \"device-host\";\n Devices.fetchEffectIndex = (box) => asDefined(box.accept({\n visitArpeggioDeviceBox: (box) => box.index,\n visitPitchDeviceBox: (box) => box.index,\n visitStereoToolDeviceBox: (box) => box.index,\n visitDelayDeviceBox: (box) => box.index,\n visitModularDeviceBox: (box) => box.index,\n visitRevampDeviceBox: (box) => box.index,\n visitReverbDeviceBox: (box) => box.index,\n visitZeitgeistDeviceBox: (box) => box.index\n }), `No index-field found for ${box}`);\n Devices.deleteEffectDevices = (devices) => {\n if (devices.length === 0) {\n return;\n }\n assert(Arrays.satisfy(devices, (a, b) => a.deviceHost().address.equals(b.deviceHost().address)), \"Devices are not connected to the same host\");\n const device = devices[0];\n const targets = device.accepts === \"audio\"\n ? device.deviceHost().audioEffects.field().pointerHub.filter(Pointers.AudioEffectHost)\n : device.accepts === \"midi\"\n ? device.deviceHost().midiEffects.field().pointerHub.filter(Pointers.MidiEffectHost)\n : panic(\"unknown type\");\n targets.map(({ box }) => Devices.fetchEffectIndex(box))\n .filter(index => devices.some(device => UUID.Comparator(device.uuid, index.address.uuid) !== 0))\n .sort((a, b) => a.getValue() - b.getValue())\n .forEach((indexField, index) => indexField.setValue(index));\n devices.forEach(device => device.box.delete());\n };\n})(Devices || (Devices = {}));\n", "import { Notifier, Option, panic, UUID } from \"@opendaw/lib-std\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { TrackBox } from \"@opendaw/studio-boxes\";\nimport { SortedBoxAdapterCollection } from \"../SortedBoxAdapterCollection\";\nimport { TrackBoxAdapter } from \"../timeline/TrackBoxAdapter\";\nexport class AudioUnitTracks {\n #adapter;\n #regionNotifier = new Notifier();\n #collection;\n #subscriptions;\n #subscription;\n constructor(adapter, boxAdapters) {\n this.#adapter = adapter;\n this.#collection = SortedBoxAdapterCollection.create(adapter.box.tracks, box => boxAdapters.adapterFor(box, TrackBoxAdapter), Pointers.TrackCollection);\n this.#subscriptions = UUID.newSet(({ uuid }) => uuid);\n this.#subscription = this.#collection.catchupAndSubscribe({\n onAdd: (adapter) => this.#subscriptions.add({\n uuid: adapter.uuid,\n subscription: adapter.regions.subscribeChanges(() => this.#regionNotifier.notify())\n }),\n onRemove: ({ uuid }) => this.#subscriptions.removeByKey(uuid).subscription.terminate(),\n onReorder: (_adapter) => { }\n });\n }\n create(type, target, index) {\n const graph = this.#adapter.box.graph;\n const tracks = this.#adapter.box.tracks;\n TrackBox.create(graph, UUID.generate(), box => {\n box.index.setValue(index ?? this.#collection.getMinFreeIndex());\n box.type.setValue(type);\n box.tracks.refer(tracks);\n box.target.refer(target);\n });\n }\n controls(target) {\n return Option.wrap(this.#collection.adapters()\n .find(adapter => adapter.target.targetVertex.contains(target), false));\n }\n delete(adapter) {\n const adapters = this.#collection.adapters();\n const deleteIndex = adapters.indexOf(adapter);\n if (deleteIndex === -1) {\n return panic(`Cannot delete ${adapter}. Does not exist.`);\n }\n for (let index = deleteIndex + 1; index < adapters.length; index++) {\n adapters[index].indexField.setValue(index - 1);\n }\n adapter.box.delete();\n }\n get collection() { return this.#collection; }\n values() { return this.#collection.adapters(); }\n catchupAndSubscribe(listener) {\n return this.#collection.catchupAndSubscribe(listener);\n }\n subscribeAnyChange(observer) { return this.#regionNotifier.subscribe(observer); }\n terminate() {\n this.#collection.terminate();\n this.#subscription.terminate();\n this.#subscriptions.forEach(({ subscription }) => subscription.terminate());\n this.#subscriptions.clear();\n }\n}\n", "import { Propagation } from \"@opendaw/lib-box\";\nimport { Devices } from \"../devices\";\nimport { IconSymbol } from \"../IconSymbol\";\nexport class AudioBusBoxAdapter {\n type = \"bus\";\n accepts = \"audio\";\n #context;\n #box;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n }\n catchupAndSubscribe(observer) {\n observer(this);\n return this.#box.subscribe(Propagation.Children, () => observer(this));\n }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get box() { return this.#box; }\n get enabledField() { return this.#box.enabled; }\n get minimizedField() { return this.#box.minimized; }\n get iconField() { return this.#box.icon; }\n get labelField() { return this.#box.label; }\n get colorField() { return this.#box.color; }\n get iconSymbol() { return IconSymbol.fromName(this.iconField.getValue() ?? \"audio-bus\"); }\n deviceHost() {\n return this.#context.boxAdapters\n .adapterFor(this.#box.output.targetVertex.unwrap(\"No AudioUnitBox found\").box, Devices.isHost);\n }\n audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }\n terminate() { }\n toString() { return `{${this.constructor.name}}`; }\n}\n", "import { assert, DefaultObservableValue, Notifier, Option, Terminable, Terminator } from \"@opendaw/lib-std\";\nimport { AudioBusBox } from \"@opendaw/studio-boxes\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { IconSymbol } from \"../IconSymbol\";\nimport { AudioBusBoxAdapter } from \"./AudioBusBoxAdapter\";\nimport { Devices } from \"../devices\";\nexport class AudioUnitInput {\n #terminator;\n #labelNotifier;\n #iconValue;\n #observable;\n #subscription = Terminable.Empty;\n constructor(pointerHub, boxAdapters) {\n this.#terminator = new Terminator();\n this.#labelNotifier = this.#terminator.own(new Notifier());\n this.#iconValue = this.#terminator.own(new DefaultObservableValue(IconSymbol.Unknown));\n this.#observable = this.#terminator.own(new DefaultObservableValue(Option.None));\n this.#terminator.own(this.#observable.subscribe(owner => {\n this.#subscription.terminate();\n this.#subscription = owner.getValue().match({\n none: () => {\n this.#labelNotifier.notify(Option.None);\n return Terminable.Empty;\n },\n some: ({ labelField, iconField }) => Terminable.many(iconField.catchupAndSubscribe(field => this.#iconValue.setValue(IconSymbol.fromName(field.getValue()))), labelField.catchupAndSubscribe(field => this.#labelNotifier.notify(Option.wrap(field.getValue()))))\n });\n }));\n this.#terminator.own(pointerHub.catchupAndSubscribeTransactual({\n onAdd: ({ box }) => {\n assert(this.#observable.getValue().isEmpty(), \"Already set\");\n const input = box instanceof AudioBusBox\n ? boxAdapters.adapterFor(box, AudioBusBoxAdapter)\n : boxAdapters.adapterFor(box, Devices.isInstrument);\n if (this.#observable.getValue().unwrapOrNull() !== input) {\n this.#observable.setValue(Option.wrap(input));\n }\n },\n onRemove: ({ box }) => {\n assert(this.#observable.getValue().unwrap(\"Cannot remove\").box.address\n .equals(box.address), \"Unexpected value to remove\");\n this.#observable.setValue(Option.None);\n }\n }, Pointers.InstrumentHost, Pointers.AudioOutput));\n }\n getValue() { return this.#observable.getValue(); }\n subscribe(observer) {\n return this.#observable.subscribe(observer);\n }\n catchupAndSubscribe(observer) {\n observer(this.#observable);\n return this.subscribe(observer);\n }\n catchupAndSubscribeLabelChange(observer) {\n observer(this.label);\n return this.#labelNotifier.subscribe(observer);\n }\n catchupAndSubscribeIconChange(observer) {\n return this.#iconValue.catchupAndSubscribe(observer);\n }\n set label(value) { this.getValue().ifSome(input => input.labelField.setValue(value)); }\n get label() { return this.getValue().map(input => input.labelField.getValue()); }\n set icon(value) { this.getValue().ifSome(input => input.iconField.setValue(IconSymbol.toName(value))); }\n get icon() {\n return this.getValue().match({\n none: () => IconSymbol.Unknown,\n some: input => IconSymbol.fromName(input.iconField.getValue())\n });\n }\n get iconValue() { return this.#iconValue; }\n terminate() {\n this.#terminator.terminate();\n this.#subscription.terminate();\n }\n}\n", "import { assert, NumberArrayComparator, SortedSet } from \"@opendaw/lib-std\";\nimport { AutomatableParameterFieldAdapter } from \"./AutomatableParameterFieldAdapter\";\nexport class ParameterAdapterSet {\n #context;\n #parameters;\n constructor(context) {\n this.#context = context;\n this.#parameters = new SortedSet(adapter => adapter.address.fieldKeys, NumberArrayComparator);\n }\n terminate() {\n this.#parameters.forEach(parameter => parameter.terminate());\n this.#parameters.clear();\n }\n parameters() { return this.#parameters.values(); }\n parameterAt(fieldIndices) {\n return this.#parameters.getOrThrow(fieldIndices, () => new Error(`No ParameterAdapter found at [${fieldIndices}]`));\n }\n createParameter(field, valueMapping, stringMapping, name, anchor) {\n const adapter = new AutomatableParameterFieldAdapter(this.#context, field, valueMapping, stringMapping, name, anchor);\n const added = this.#parameters.add(adapter);\n assert(added, `Could not add adapter for ${field}`);\n return adapter;\n }\n removeParameter(parameter) {\n this.#parameters.removeByValue(parameter);\n }\n}\n", "import { Notifier, Option, StringMapping, Terminable, Terminator, ValueMapping } from \"@opendaw/lib-std\";\nimport { AudioBusBoxAdapter } from \"./AudioBusBoxAdapter\";\nimport { AutomatableParameterFieldAdapter } from \"../AutomatableParameterFieldAdapter\";\nexport class AuxSendBoxAdapter {\n #context;\n #box;\n #terminator;\n #busChangeNotifier;\n #sendPan;\n #sendGain;\n #subscription = Terminable.Empty;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#terminator = new Terminator();\n this.#busChangeNotifier = this.#terminator.own(new Notifier());\n this.#terminator.own(box.targetBus.catchupAndSubscribe(() => {\n this.#subscription.terminate();\n this.#subscription = this.optTargetBus.match({\n none: () => {\n this.#busChangeNotifier.notify(Option.None);\n return Terminable.Empty;\n },\n some: adapter => adapter.catchupAndSubscribe(adapter => this.#busChangeNotifier.notify(Option.wrap(adapter)))\n });\n }));\n this.#sendPan = this.#terminator.own(new AutomatableParameterFieldAdapter(this.#context, this.#box.sendPan, ValueMapping.bipolar(), StringMapping.percent({ unit: \"%\", fractionDigits: 0 }), \"panning\"));\n this.#sendGain = this.#terminator.own(new AutomatableParameterFieldAdapter(this.#context, this.#box.sendGain, ValueMapping.DefaultDecibel, StringMapping.numeric({\n unit: \"dB\",\n fractionDigits: 1\n }), \"gain\"));\n }\n catchupAndSubscribeBusChanges(observer) {\n observer(this.optTargetBus);\n return this.#busChangeNotifier.subscribe(observer);\n }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get box() { return this.#box; }\n get indexField() { return this.#box.index; }\n get sendPan() { return this.#sendPan; }\n get sendGain() { return this.#sendGain; }\n get targetBus() {\n return this.#context.boxAdapters\n .adapterFor(this.#box.targetBus.targetVertex.unwrap(\"no audioUnit\").box, AudioBusBoxAdapter);\n }\n get optTargetBus() {\n return this.#box.targetBus.targetVertex\n .flatMap(target => Option.wrap(target.box.accept({\n visitAudioBusBox: (box) => this.#context.boxAdapters.adapterFor(box, AudioBusBoxAdapter)\n })));\n }\n delete() { this.#box.delete(); }\n terminate() {\n this.#terminator.terminate();\n this.#subscription.terminate();\n }\n}\n", "import { Notifier, Option, Terminable, Terminator } from \"@opendaw/lib-std\";\nimport { AudioBusBoxAdapter } from \"./AudioBusBoxAdapter\";\nexport class AudioUnitOutput {\n #pointerField;\n #boxAdapters;\n #terminator;\n #busChangeNotifier;\n #subscription = Terminable.Empty;\n constructor(pointerField, boxAdapters) {\n this.#pointerField = pointerField;\n this.#boxAdapters = boxAdapters;\n this.#terminator = new Terminator();\n this.#busChangeNotifier = this.#terminator.own(new Notifier());\n this.#terminator.own(pointerField.catchupAndSubscribe(() => {\n this.#subscription.terminate();\n this.#subscription = this.adapter.match({\n none: () => {\n this.#busChangeNotifier.notify(Option.None);\n return Terminable.Empty;\n },\n some: adapter => adapter.catchupAndSubscribe(adapter => this.#busChangeNotifier.notify(Option.wrap(adapter)))\n });\n }));\n }\n subscribe(observer) {\n return this.#busChangeNotifier.subscribe(observer);\n }\n catchupAndSubscribe(observer) {\n observer(this.adapter);\n return this.subscribe(observer);\n }\n get adapter() {\n return this.#pointerField.targetVertex\n .flatMap(target => Option.wrap(target.box.accept({\n visitAudioBusBox: (box) => this.#boxAdapters.adapterFor(box, AudioBusBoxAdapter)\n })));\n }\n terminate() {\n this.#terminator.terminate();\n this.#subscription.terminate();\n }\n}\n", "import { StringMapping, Terminator, ValueMapping } from \"@opendaw/lib-std\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { Devices } from \"../devices\";\nimport { AudioUnitTracks } from \"./AudioUnitTracks\";\nimport { AudioUnitInput } from \"./AudioUnitInput\";\nimport { SortedBoxAdapterCollection } from \"../SortedBoxAdapterCollection\";\nimport { ParameterAdapterSet } from \"../ParameterAdapterSet\";\nimport { AuxSendBoxAdapter } from \"./AuxSendBoxAdapter\";\nimport { AudioUnitOutput } from \"./AudioUnitOutput\";\nexport class AudioUnitBoxAdapter {\n \"class\" = \"device-host\";\n #terminator = new Terminator();\n #context;\n #box;\n #parametric;\n #tracks;\n #input;\n #midiEffects;\n #audioEffects;\n #auxSends;\n #output;\n namedParameter; // let typescript infer the type\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#parametric = this.#terminator.own(new ParameterAdapterSet(this.#context));\n this.#tracks = this.#terminator.own(new AudioUnitTracks(this, this.#context.boxAdapters));\n this.#input = this.#terminator.own(new AudioUnitInput(this.#box.input.pointerHub, this.#context.boxAdapters));\n this.#midiEffects = this.#terminator.own(SortedBoxAdapterCollection.create(this.#box.midiEffects, box => this.#context.boxAdapters.adapterFor(box, Devices.isMidiEffect), Pointers.MidiEffectHost));\n this.#audioEffects = this.#terminator.own(SortedBoxAdapterCollection.create(this.#box.audioEffects, box => this.#context.boxAdapters.adapterFor(box, Devices.isAudioEffect), Pointers.AudioEffectHost));\n this.#auxSends = this.#terminator.own(SortedBoxAdapterCollection.create(this.#box.auxSends, box => this.#context.boxAdapters.adapterFor(box, AuxSendBoxAdapter), Pointers.AuxSend));\n this.#output = this.#terminator.own(new AudioUnitOutput(this.#box.output, this.#context.boxAdapters));\n this.namedParameter = this.#wrapParameters(box);\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get indexField() { return this.#box.index; }\n get type() { return this.#box.type.getValue(); }\n get tracks() { return this.#tracks; }\n get input() { return this.#input; }\n get midiEffects() { return this.#midiEffects; }\n get audioEffects() { return this.#audioEffects; }\n get inputAdapter() { return this.#input.getValue(); }\n get auxSends() { return this.#auxSends; }\n get output() { return this.#output; }\n get isBus() { return this.input.getValue().mapOr(adapter => adapter.type === \"bus\", false); }\n get isInstrument() { return this.input.getValue().mapOr(adapter => adapter.type === \"instrument\", false); }\n get isOutput() {\n return this.#box.output.targetVertex.mapOr(output => output.box.address.equals(this.#context.rootBoxAdapter.address), false);\n }\n get midiEffectsField() { return this.#box.midiEffects; }\n get inputField() { return this.#box.input; }\n get audioEffectsField() { return this.#box.audioEffects; }\n get tracksField() { return this.#box.tracks; }\n get minimizedField() { return this.#input.getValue().unwrap().minimizedField; }\n get isAudioUnit() { return true; }\n get label() { return this.#input.getValue().mapOr(input => input.labelField.getValue(), \"\"); }\n audioUnitBoxAdapter() { return this; }\n indicesLimit() {\n const adapters = this.#context.rootBoxAdapter.audioUnits.adapters();\n const startIndex = this.indexField.getValue();\n const unitType = this.type;\n let min = startIndex;\n let max = startIndex;\n while (min > 0) {\n if (adapters[min - 1].type === unitType) {\n min--;\n }\n else {\n break;\n }\n }\n while (max < adapters.length - 1) {\n if (adapters[max + 1].type === unitType) {\n max++;\n }\n else {\n break;\n }\n }\n return [min, max + 1];\n }\n move(delta) { this.#context.rootBoxAdapter.audioUnits.move(this, delta); }\n moveTrack(adapter, delta) { this.#tracks.collection.move(adapter, delta); }\n deleteTrack(adapter) { this.#tracks.delete(adapter); }\n toString() { return `{${this.constructor.name}}`; }\n terminate() { this.#terminator.terminate(); }\n #wrapParameters(box) {\n return {\n volume: this.#parametric.createParameter(box.volume, ValueMapping.decibel(-96.0, -9.0, +6.0), StringMapping.decible, \"volume\"),\n panning: this.#parametric.createParameter(box.panning, ValueMapping.bipolar(), StringMapping.panning, \"panning\", 0.5),\n mute: this.#parametric.createParameter(box.mute, ValueMapping.bool, StringMapping.bool, \"mute\"),\n solo: this.#parametric.createParameter(box.solo, ValueMapping.bool, StringMapping.bool, \"solo\")\n };\n }\n}\n", "import { PPQN } from \"@opendaw/lib-dsp\";\nexport const UpdateClockRate = PPQN.fromSignature(1, 384);\n", "import { asInstanceOf, DefaultObservableValue, isInstanceOf, Option, panic, Terminable, Terminator } from \"@opendaw/lib-std\";\nimport { StringField } from \"@opendaw/lib-box\";\nimport { TrackClips } from \"./TrackClips\";\nimport { TrackRegions } from \"./TrackRegions\";\nimport { AudioUnitBoxAdapter } from \"../audio-unit/AudioUnitBoxAdapter\";\nimport { TrackType } from \"./TrackType\";\nimport { UpdateClockRate } from \"../UpdateClockRate\";\nimport { ValueClipBoxAdapter } from \"./clip/ValueClipBoxAdapter\";\nimport { ValueRegionBoxAdapter } from \"./region/ValueRegionBoxAdapter\";\nimport { AudioUnitBox } from \"@opendaw/studio-boxes\";\nexport class TrackBoxAdapter {\n #context;\n #box;\n #terminator;\n #clips;\n #regions;\n #listIndex;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#terminator = new Terminator();\n this.#clips = this.#terminator.own(new TrackClips(this, context.boxAdapters));\n this.#regions = this.#terminator.own(new TrackRegions(this, context.boxAdapters));\n this.#listIndex = this.#terminator.own(new DefaultObservableValue(-1));\n }\n catchupAndSubscribePath(observer) {\n const path = [Option.None, Option.None];\n const updater = () => {\n if (path.every(option => option.nonEmpty())) {\n observer(Option.wrap(path.map(option => option.unwrap())));\n }\n else {\n observer(Option.None);\n }\n };\n return Terminable.many(this.#catchupAndSubscribeTargetDeviceName(option => {\n if (path[0].equals(option)) {\n return;\n }\n path[0] = option;\n updater();\n }), this.#catchupAndSubscribeTargetControlName(option => {\n if (path[1].equals(option)) {\n return;\n }\n path[1] = option;\n updater();\n }));\n }\n #catchupAndSubscribeTargetDeviceName(observer) {\n const targetVertex = this.#box.target.targetVertex;\n if (targetVertex.nonEmpty()) {\n const vertex = targetVertex.unwrap().box;\n if (vertex instanceof AudioUnitBox) {\n const adapter = this.#context.boxAdapters.adapterFor(vertex, AudioUnitBoxAdapter);\n return adapter.input.catchupAndSubscribeLabelChange(option => observer(option));\n }\n else if (\"label\" in vertex && vertex.label instanceof StringField) {\n return vertex.label.catchupAndSubscribe(owner => observer(Option.wrap(owner.getValue())));\n }\n else {\n // TODO This is a workaround. We need to find a way to dig into the box for a name\n observer(Option.wrap(vertex.name));\n return Terminable.Empty;\n }\n }\n observer(Option.None);\n return Terminable.Empty;\n }\n #catchupAndSubscribeTargetControlName(observer) {\n const type = this.type;\n switch (type) {\n case TrackType.Audio:\n case TrackType.Notes: {\n observer(Option.wrap(TrackType[type]));\n return Terminable.Empty;\n }\n case TrackType.Value: {\n const target = this.#box.target.targetVertex.unwrap();\n if (target.isField()) {\n observer(this.#context.parameterFieldAdapters.opt(target.address).map(vertex => vertex.name));\n }\n else if (target.isBox()) {\n // I cannot think of a scenario where target is a box, but at least the UI shows the box's name\n observer(Option.wrap(target.name));\n }\n else {\n return panic(\"Illegal State. Vertex is not a field nor box.\");\n }\n return Terminable.Empty;\n }\n case TrackType.Undefined: {\n observer(Option.wrap(\"\"));\n return Terminable.Empty;\n }\n default: {\n observer(Option.None);\n return Terminable.Empty;\n }\n }\n }\n terminate() { this.#terminator.terminate(); }\n get audioUnit() { return asInstanceOf(this.#box.tracks.targetVertex.unwrap().box, AudioUnitBox); }\n get target() { return this.#box.target; }\n get clips() { return this.#clips; }\n get regions() { return this.#regions; }\n get enabled() { return this.#box.enabled; }\n get indexField() { return this.#box.index; }\n get type() { return this.#box.type.getValue(); }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get listIndex() { return this.#listIndex.getValue(); }\n set listIndex(value) { this.#listIndex.setValue(value); }\n accepts(subject) {\n switch (subject.type) {\n case \"audio-clip\":\n return this.type === TrackType.Audio;\n case \"note-clip\":\n return this.type === TrackType.Notes;\n case \"value-clip\":\n return this.type === TrackType.Value;\n case \"audio-region\":\n return this.type === TrackType.Audio;\n case \"note-region\":\n return this.type === TrackType.Notes;\n case \"value-region\":\n return this.type === TrackType.Value;\n }\n }\n valueAt(position, fallback) {\n if (!this.enabled.getValue()) {\n return fallback;\n }\n let value = fallback;\n const intervals = this.#context.clipSequencing.iterate(this.uuid, position, position + UpdateClockRate);\n for (const { optClip, sectionFrom } of intervals) {\n value = optClip.match({\n none: () => {\n const region = this.regions.collection.lowerEqual(position, region => !region.mute);\n if (region === null) {\n const firstRegion = this.regions.collection.optAt(0);\n return isInstanceOf(firstRegion, ValueRegionBoxAdapter) ? firstRegion.incomingValue(fallback) : fallback;\n }\n else if (isInstanceOf(region, ValueRegionBoxAdapter)) {\n if (position < region.complete) {\n return region.valueAt(position, fallback);\n }\n else {\n return region.outgoingValue(fallback);\n }\n }\n return fallback;\n },\n some: clip => {\n if (sectionFrom === position) {\n if (isInstanceOf(clip, ValueClipBoxAdapter)) {\n return clip.valueAt(position, fallback);\n }\n }\n return fallback;\n }\n });\n }\n return value;\n }\n}\n", "import { assert, clamp, Listeners, Notifier, Option, panic, Terminator } from \"@opendaw/lib-std\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { TrackBoxAdapter } from \"./timeline/TrackBoxAdapter\";\nconst ExternalControlTypes = [\n Pointers.Automation,\n Pointers.Modulation,\n Pointers.MidiControl,\n Pointers.ParameterController\n];\nexport class AutomatableParameterFieldAdapter {\n #context;\n #field;\n #valueMapping;\n #stringMapping;\n #name;\n #anchor;\n #terminator = new Terminator();\n #valueChangeNotifier;\n #controlSource;\n #trackBoxAdapter = Option.None;\n #automationHandle = Option.None;\n #controlledValue = null;\n #midiControlled = false;\n constructor(context, field, valueMapping, stringMapping, name, anchor) {\n this.#context = context;\n this.#field = field;\n this.#valueMapping = valueMapping;\n this.#stringMapping = stringMapping;\n this.#name = name;\n this.#anchor = anchor ?? 0.0;\n this.#terminator.own(this.#context.parameterFieldAdapters.register(this));\n this.#valueChangeNotifier = this.#terminator.own(new Notifier());\n this.#controlSource = new Listeners();\n this.#terminator.own(this.#field.subscribe(() => this.#valueChangeNotifier.notify(this)));\n this.#terminator.own(this.#field.pointerHub.catchupAndSubscribeTransactual({\n onAdd: (pointer) => {\n this.#controlSource.proxy.onControlSourceAdd(mapPointerToControlSource(pointer.pointerType));\n pointer.box.accept({\n visitTrackBox: (box) => {\n assert(this.#trackBoxAdapter.isEmpty(), \"Already assigned\");\n const adapter = this.#context.boxAdapters.adapterFor(box, TrackBoxAdapter);\n this.#trackBoxAdapter = Option.wrap(adapter);\n if (this.#context.isMainThread) {\n this.#automationHandle = Option.wrap(this.#context.liveStreamReceiver\n .subscribeFloat(this.#field.address, value => {\n if (this.#controlledValue === value) {\n return;\n }\n this.#controlledValue = value;\n this.#valueChangeNotifier.notify(this);\n }));\n }\n }\n });\n },\n onRemove: (pointer) => {\n this.#controlSource.proxy.onControlSourceRemove(mapPointerToControlSource(pointer.pointerType));\n pointer.box.accept({\n visitTrackBox: (box) => {\n assert(this.#trackBoxAdapter.unwrapOrNull()?.address?.equals(box.address) === true, `Unknown ${box}`);\n this.#trackBoxAdapter = Option.None;\n if (this.#context.isMainThread) {\n this.#automationHandle.ifSome(handle => handle.terminate());\n this.#automationHandle = Option.None;\n this.#controlledValue = null;\n this.#valueChangeNotifier.notify(this);\n }\n }\n });\n }\n }, ...ExternalControlTypes));\n /*\n For debugging: It's not live because floating errors expose false positives,\n and I am too lazy to implement this in the mappings itself.\n */\n if (field.getValue() !== valueMapping.clamp(field.getValue())) {\n console.warn(`${name} (${field.getValue()}) is out of bounds`, valueMapping);\n }\n }\n registerMidiControl() {\n this.#controlSource.proxy.onControlSourceAdd(\"midi\");\n this.#midiControlled = true;\n return {\n terminate: () => {\n this.#midiControlled = false;\n this.#controlSource.proxy.onControlSourceRemove(\"midi\");\n }\n };\n }\n get field() { return this.#field; }\n get valueMapping() { return this.#valueMapping; }\n get stringMapping() { return this.#stringMapping; }\n get name() { return this.#name; }\n get anchor() { return this.#anchor; }\n get type() { return this.#field.type; }\n get address() { return this.#field.address; }\n get track() { return this.#trackBoxAdapter; }\n valueAt(position) {\n const optTrack = this.#trackBoxAdapter;\n if (optTrack.nonEmpty()) {\n const track = optTrack.unwrap();\n if (track.enabled) {\n return this.valueMapping.y(track.valueAt(position, this.getUnitValue()));\n }\n }\n return this.getValue();\n }\n subscribe(observer) { return this.#valueChangeNotifier.subscribe(observer); }\n catchupAndSubscribe(observer) {\n observer(this);\n return this.subscribe(observer);\n }\n catchupAndSubscribeControlSources(observer) {\n if (this.#midiControlled) {\n observer.onControlSourceAdd(\"midi\");\n }\n this.#field.pointerHub.filter(...ExternalControlTypes)\n .forEach(pointer => observer.onControlSourceAdd(mapPointerToControlSource(pointer.pointerType)));\n return this.#controlSource.subscribe(observer);\n }\n getValue() { return this.#field.getValue(); }\n setValue(value) { this.#field.setValue(value); }\n setUnitValue(value) { this.setValue(this.#valueMapping.y(value)); }\n getUnitValue() { return this.#valueMapping.x(this.getValue()); }\n getControlledValue() { return this.#valueMapping.y(this.getControlledUnitValue()); }\n getControlledUnitValue() { return this.#controlledValue ?? this.getUnitValue(); }\n getControlledPrintValue() { return this.#stringMapping.x(this.getControlledValue()); }\n getPrintValue() { return this.#stringMapping.x(this.getValue()); }\n setPrintValue(text) {\n const result = this.#stringMapping.y(text);\n if (result.type === \"unitValue\") {\n this.setUnitValue(clamp(result.value, 0.0, 1.0));\n }\n else if (result.type === \"explicit\") {\n this.setValue(this.valueMapping.clamp(result.value));\n }\n else {\n console.debug(`Unknown text input: '${result.value}'`);\n }\n }\n reset() { this.setValue(this.#valueMapping.clamp(this.#field.initValue)); }\n terminate() {\n this.#automationHandle.ifSome(handle => handle.terminate());\n this.#automationHandle = Option.None;\n this.#terminator.terminate();\n }\n}\nconst mapPointerToControlSource = (pointer) => {\n switch (pointer) {\n case Pointers.Automation:\n return \"automated\";\n case Pointers.Modulation:\n return \"modulated\";\n case Pointers.MidiControl:\n return \"midi\";\n case Pointers.ParameterController:\n return \"external\";\n default:\n return panic(`${pointer.toString()} is an unknown pointer type`);\n }\n};\n", "import { StringMapping, ValueMapping } from \"@opendaw/lib-std\";\nimport { Fraction } from \"@opendaw/lib-dsp\";\nimport { Devices } from \"../../devices\";\nimport { ParameterAdapterSet } from \"../../ParameterAdapterSet\";\nexport class DelayDeviceBoxAdapter {\n static OffsetFractions = Fraction.builder()\n .add([1, 1]).add([1, 2]).add([1, 3]).add([1, 4])\n .add([3, 16]).add([1, 6]).add([1, 8]).add([3, 32])\n .add([1, 12]).add([1, 16]).add([3, 64]).add([1, 24])\n .add([1, 32]).add([1, 48]).add([1, 64])\n .add([1, 96]).add([1, 128])\n .asDescendingArray();\n static OffsetStringMapping = StringMapping.indices(\"\", this.OffsetFractions.map(([n, d]) => `${n}/${d}`));\n type = \"audio-effect\";\n accepts = \"audio\";\n #context;\n #box;\n #parametric;\n namedParameter; // let typescript infer the type\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#parametric = new ParameterAdapterSet(this.#context);\n this.namedParameter = this.#wrapParameters(box);\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get indexField() { return this.#box.index; }\n get labelField() { return this.#box.label; }\n get enabledField() { return this.#box.enabled; }\n get minimizedField() { return this.#box.minimized; }\n get host() { return this.#box.host; }\n deviceHost() {\n return this.#context.boxAdapters\n .adapterFor(this.#box.host.targetVertex.unwrap(\"no device-host\").box, Devices.isHost);\n }\n audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }\n terminate() { this.#parametric.terminate(); }\n #wrapParameters(box) {\n return {\n delay: this.#parametric.createParameter(box.delay, ValueMapping.linearInteger(0, DelayDeviceBoxAdapter.OffsetFractions.length - 1), DelayDeviceBoxAdapter.OffsetStringMapping, \"delay\"),\n feedback: this.#parametric.createParameter(box.feedback, ValueMapping.unipolar(), StringMapping.numeric({ unit: \"%\", fractionDigits: 0 }), \"feedback\"),\n cross: this.#parametric.createParameter(box.cross, ValueMapping.unipolar(), StringMapping.numeric({ unit: \"%\", fractionDigits: 0 }), \"cross\"),\n filter: this.#parametric.createParameter(box.filter, ValueMapping.bipolar(), StringMapping.numeric({ unit: \"%\", fractionDigits: 0 }), \"filter\", 0.5),\n dry: this.#parametric.createParameter(box.dry, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: \"db\", fractionDigits: 1 }), \"dry\"),\n wet: this.#parametric.createParameter(box.wet, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: \"db\", fractionDigits: 1 }), \"wet\")\n };\n }\n}\n", "import { StringMapping, ValueMapping } from \"@opendaw/lib-std\";\nimport { Devices } from \"../../devices\";\nimport { ParameterAdapterSet } from \"../../ParameterAdapterSet\";\nexport class RevampDeviceBoxAdapter {\n type = \"audio-effect\";\n accepts = \"audio\";\n #context;\n #box;\n #parametric;\n namedParameter; // let typescript infer the type\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#parametric = new ParameterAdapterSet(this.#context);\n this.namedParameter = this.#wrapParameters(box);\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get indexField() { return this.#box.index; }\n get labelField() { return this.#box.label; }\n get enabledField() { return this.#box.enabled; }\n get minimizedField() { return this.#box.minimized; }\n get host() { return this.#box.host; }\n get spectrum() { return this.#box.address.append(0xFFF); }\n deviceHost() {\n return this.#context.boxAdapters\n .adapterFor(this.#box.host.targetVertex.unwrap(\"no device-host\").box, Devices.isHost);\n }\n audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }\n parameterAt(fieldIndices) { return this.#parametric.parameterAt(fieldIndices); }\n terminate() { this.#parametric.terminate(); }\n #wrapParameters(box) {\n return {\n highPass: createPass(this.#parametric, box.highPass, \"High-Pass\"),\n lowShelf: createShelf(this.#parametric, box.lowShelf, \"Low-Shelf\"),\n lowBell: createBell(this.#parametric, box.lowBell, \"Low-Bell\"),\n midBell: createBell(this.#parametric, box.midBell, \"Mid-Bell\"),\n highBell: createBell(this.#parametric, box.highBell, \"High-Bell\"),\n highShelf: createShelf(this.#parametric, box.highShelf, \"High-Shelf\"),\n lowPass: createPass(this.#parametric, box.lowPass, \"Low-Pass\")\n };\n }\n}\nconst FrequencyMapping = ValueMapping.exponential(20.0, 20_000.0);\nconst GainMapping = ValueMapping.linear(-24.0, 24.0);\nconst QMapping = ValueMapping.exponential(0.01, 10.0);\nconst createPass = (parametric, pass, name) => {\n return ({\n enabled: parametric.createParameter(pass.enabled, ValueMapping.bool, StringMapping.bool, \"enabled\"),\n frequency: parametric.createParameter(pass.frequency, FrequencyMapping, StringMapping.numeric({ unit: \"Hz\", fractionDigits: 0 }), `${name} Freq`),\n order: parametric.createParameter(pass.order, ValueMapping.linearInteger(1, 4), StringMapping.indices(\"db\", [\"12\", \"24\", \"36\", \"48\"]), `${name} Order`),\n q: parametric.createParameter(pass.q, QMapping, StringMapping.numeric({ unit: \"\", fractionDigits: 3 }), `${name} Q`)\n });\n};\nconst createShelf = (parametric, shelf, name) => ({\n enabled: parametric.createParameter(shelf.enabled, ValueMapping.bool, StringMapping.bool, \"enabled\"),\n frequency: parametric.createParameter(shelf.frequency, FrequencyMapping, StringMapping.numeric({ unit: \"Hz\", fractionDigits: 0 }), `${name} Freq`),\n gain: parametric.createParameter(shelf.gain, GainMapping, StringMapping.numeric({ unit: \"db\", fractionDigits: 1, bipolar: true }), `${name} Gain`, 0.5)\n});\nconst createBell = (parametric, bell, name) => ({\n enabled: parametric.createParameter(bell.enabled, ValueMapping.bool, StringMapping.bool, \"enabled\"),\n frequency: parametric.createParameter(bell.frequency, FrequencyMapping, StringMapping.numeric({ unit: \"Hz\", fractionDigits: 0 }), `${name} Freq`),\n gain: parametric.createParameter(bell.gain, GainMapping, StringMapping.numeric({ unit: \"db\", fractionDigits: 1, bipolar: true }), `${name} Gain`, 0.5),\n q: parametric.createParameter(bell.q, QMapping, StringMapping.numeric({ unit: \"\", fractionDigits: 3 }), `${name} Q`)\n});\n", "export class ModuleConnectionAdapter {\n #box;\n constructor(_context, box) {\n this.#box = box;\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get source() { return this.#box.source.targetVertex.unwrap(\"Insufficient Vertex\"); }\n get target() { return this.#box.target.targetVertex.unwrap(\"Insufficient Vertex\"); }\n terminate() { }\n}\n", "import { Terminator } from \"@opendaw/lib-std\";\nimport { ParameterAdapterSet } from \"../ParameterAdapterSet\";\nimport { ModularAdapter } from \"./modular\";\nexport class AbstractModuleAdapter {\n #context;\n #box;\n #terminator;\n #attributes;\n #parameters;\n #selected = false;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#terminator = new Terminator();\n this.#attributes = box.attributes;\n this.#parameters = this.#terminator.own(new ParameterAdapterSet(context));\n }\n get inputs() {\n throw new Error(\"Method not implemented.\");\n }\n get outputs() {\n throw new Error(\"Method not implemented.\");\n }\n own(terminable) { return this.#terminator.own(terminable); }\n ownAll(...terminables) { this.#terminator.ownAll(...terminables); }\n onSelected() { this.#selected = true; }\n onDeselected() { this.#selected = false; }\n isSelected() { return this.#selected; }\n get box() { return this.#box; }\n get attributes() { return this.#attributes; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get parameters() { return this.#parameters; }\n get modular() {\n return this.#context.boxAdapters\n .adapterFor(this.#box.attributes.collection.targetVertex.unwrap().box, ModularAdapter);\n }\n terminate() { this.#terminator.terminate(); }\n}\n", "import { Pointers } from \"@opendaw/studio-enums\";\nimport { Arrays } from \"@opendaw/lib-std\";\nimport { ModuleConnectionAdapter } from \"./connection\";\nexport var Direction;\n(function (Direction) {\n Direction[\"Input\"] = \"input\";\n Direction[\"Output\"] = \"output\";\n})(Direction || (Direction = {}));\nexport class ModuleConnectorAdapter {\n static create(boxAdapters, field, direction, name) {\n return new ModuleConnectorAdapter(boxAdapters, field, direction, name ?? field.fieldName);\n }\n #boxAdapters;\n #field;\n #direction;\n #name;\n constructor(boxAdapters, field, direction, name) {\n this.#boxAdapters = boxAdapters;\n this.#field = field;\n this.#direction = direction;\n this.#name = name;\n }\n matches(other) {\n return this.direction !== other.direction && this.field.pointerRules.accepts\n .some(accepts => other.field.pointerRules.accepts\n .some(type => type === accepts));\n }\n get connections() {\n if (this.#field.pointerHub.isEmpty()) {\n return Arrays.empty();\n }\n return this.#field.pointerHub.filter(Pointers.VoltageConnection)\n .map(({ box }) => this.#boxAdapters.adapterFor(box, ModuleConnectionAdapter));\n }\n get field() { return this.#field; }\n get address() { return this.#field.address; }\n get direction() { return this.#direction; }\n get name() { return this.#name; }\n toString() {\n return `{ModuleConnectorAdapter address: ${this.#field.address.toString()}, direction: ${this.#direction}}`;\n }\n}\n", "import { StringMapping, ValueMapping } from \"@opendaw/lib-std\";\nimport { AbstractModuleAdapter } from \"../abstract\";\nimport { Direction, ModuleConnectorAdapter } from \"../connector\";\nexport class ModuleDelayAdapter extends AbstractModuleAdapter {\n #parameterTime;\n #voltageInput;\n #voltageOutput;\n constructor(context, box) {\n super(context, box);\n this.#parameterTime = this.parameters.createParameter(box.time, ValueMapping.exponential(1.0, 10000.0), StringMapping.numeric({ unit: \"ms\" }), \"Time\");\n this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInput, Direction.Input, \"Input\");\n this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, \"Output\");\n }\n get parameterTime() { return this.#parameterTime; }\n get voltageInput() { return this.#voltageInput; }\n get voltageOutput() { return this.#voltageOutput; }\n get inputs() {\n return [this.#voltageInput];\n }\n get outputs() {\n return [this.#voltageOutput];\n }\n}\n", "import { Arrays } from \"@opendaw/lib-std\";\nimport { AbstractModuleAdapter } from \"../abstract\";\nimport { Direction, ModuleConnectorAdapter } from \"../connector\";\nexport class ModularAudioOutputAdapter extends AbstractModuleAdapter {\n #voltageInput;\n constructor(context, box) {\n super(context, box);\n this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.input, Direction.Input, \"Input\");\n }\n get voltageInput() { return this.#voltageInput; }\n get inputs() {\n return [this.#voltageInput];\n }\n get outputs() {\n return Arrays.empty();\n }\n}\n", "import { StringMapping, ValueMapping } from \"@opendaw/lib-std\";\nimport { AbstractModuleAdapter } from \"../abstract\";\nimport { Direction, ModuleConnectorAdapter } from \"../connector\";\nexport class ModuleGainAdapter extends AbstractModuleAdapter {\n #parameterGain;\n #voltageInput;\n #voltageOutput;\n constructor(context, box) {\n super(context, box);\n this.#parameterGain = this.parameters.createParameter(box.gain, ValueMapping.DefaultDecibel, StringMapping.numeric({ unit: \"db\" }), \"Gain\");\n this.#voltageInput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInput, Direction.Input, \"Input\");\n this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, \"Output\");\n }\n get parameterGain() { return this.#parameterGain; }\n get voltageInput() { return this.#voltageInput; }\n get voltageOutput() { return this.#voltageOutput; }\n get inputs() {\n return [this.#voltageInput];\n }\n get outputs() {\n return [this.#voltageOutput];\n }\n}\n", "import { AbstractModuleAdapter } from \"../abstract\";\nimport { Direction, ModuleConnectorAdapter } from \"../connector\";\nexport class ModuleMultiplierAdapter extends AbstractModuleAdapter {\n #voltageInputX;\n #voltageInputY;\n #voltageOutput;\n constructor(context, box) {\n super(context, box);\n this.#voltageInputX = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInputX, Direction.Input, \"X\");\n this.#voltageInputY = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageInputY, Direction.Input, \"Y\");\n this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.voltageOutput, Direction.Output, \"Result\");\n }\n get inputs() {\n return [this.#voltageInputX, this.#voltageInputY];\n }\n get outputs() {\n return [this.#voltageOutput];\n }\n}\n", "import { Arrays } from \"@opendaw/lib-std\";\nimport { AbstractModuleAdapter } from \"../abstract\";\nimport { Direction, ModuleConnectorAdapter } from \"../connector\";\nexport class ModularAudioInputAdapter extends AbstractModuleAdapter {\n #voltageOutput;\n constructor(context, box) {\n super(context, box);\n this.#voltageOutput = ModuleConnectorAdapter.create(context.boxAdapters, box.output, Direction.Output, \"Output\");\n }\n get voltageOutput() { return this.#voltageOutput; }\n get inputs() {\n return Arrays.empty();\n }\n get outputs() {\n return [this.#voltageOutput];\n }\n}\n", "import { asDefined } from \"@opendaw/lib-std\";\nimport { ModuleDelayAdapter } from \"./modules/delay\";\nimport { ModularAudioOutputAdapter } from \"./modules/audio-output\";\nimport { ModuleGainAdapter } from \"./modules/gain\";\nimport { ModuleMultiplierAdapter } from \"./modules/multiplier\";\nimport { ModularAudioInputAdapter } from \"./modules/audio-input\";\nexport var Modules;\n(function (Modules) {\n Modules.isVertexOfModule = (vertex) => vertex.box.accept({\n visitModuleGainBox: () => true,\n visitModuleDelayBox: () => true,\n visitModuleMultiplierBox: () => true,\n visitModularAudioInputBox: () => true,\n visitModularAudioOutputBox: () => true\n }) ?? false;\n Modules.adapterFor = (adapters, box) => asDefined(box.accept({\n visitModuleGainBox: (box) => adapters.adapterFor(box, ModuleGainAdapter),\n visitModuleDelayBox: (box) => adapters.adapterFor(box, ModuleDelayAdapter),\n visitModuleMultiplierBox: (box) => adapters.adapterFor(box, ModuleMultiplierAdapter),\n visitModularAudioInputBox: (box) => adapters.adapterFor(box, ModularAudioInputAdapter),\n visitModularAudioOutputBox: (box) => adapters.adapterFor(box, ModularAudioOutputAdapter)\n }), `Could not find ModuleAdapter for ${box.name}`);\n})(Modules || (Modules = {}));\n", "import { Modules } from \"./module\";\nexport class DeviceInterfaceKnobAdapter {\n #context;\n #box;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get moduleAdapter() {\n return Modules.adapterFor(this.#context.boxAdapters, this.#parameterTarget.box);\n }\n get parameterAdapter() {\n return this.moduleAdapter.parameters.parameterAt(this.#parameterTarget.address.fieldKeys);\n }\n get #parameterTarget() {\n return this.#box.parameter.targetVertex.unwrap(\"Parameter not assigned\");\n }\n terminate() {\n }\n}\n", "import { panic } from \"@opendaw/lib-std\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { Devices } from \"../../devices\";\nimport { ModularAdapter } from \"../../modular/modular\";\nimport { DeviceInterfaceKnobAdapter } from \"../../modular/user-interface\";\nexport class ModularDeviceBoxAdapter {\n type = \"audio-effect\";\n accepts = \"audio\";\n #context;\n #box;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get indexField() { return this.#box.index; }\n get labelField() { return this.#box.label; }\n get enabledField() { return this.#box.enabled; }\n get minimizedField() { return this.#box.minimized; }\n get host() { return this.#box.host; }\n parameterAt(_fieldIndices) { return panic(\"Not yet implemented\"); }\n deviceHost() {\n return this.#context.boxAdapters\n .adapterFor(this.#box.host.targetVertex.unwrap(\"no device-host\").box, Devices.isHost);\n }\n audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }\n modular() {\n return this.#context.boxAdapters\n .adapterFor(this.#box.modularSetup.targetVertex.unwrap(\"No Modular found\").box, ModularAdapter);\n }\n elements() {\n return this.#box.userInterface.elements.pointerHub.filter(Pointers.DeviceUserInterface)\n .map(pointer => this.#context.boxAdapters.adapterFor(pointer.box, DeviceInterfaceKnobAdapter));\n }\n terminate() { }\n}\n", "import { asDefined, ifDefined, Listeners, Terminator, UUID } from \"@opendaw/lib-std\";\nimport { ModuleConnectionAdapter } from \"./connection\";\nimport { Pointers } from \"@opendaw/studio-enums\";\nimport { Modules } from \"./module\";\nimport { ModularDeviceBoxAdapter } from \"../devices/audio-effects/ModularDeviceBoxAdapter\";\nexport class ModularAdapter {\n #terminator = new Terminator();\n #listeners;\n #context;\n #box;\n #modules;\n #connections;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#listeners = this.#terminator.own(new Listeners());\n this.#modules = UUID.newSet(adapter => adapter.uuid);\n this.#connections = UUID.newSet(adapter => adapter.uuid);\n const addModule = (pointer) => {\n const adapter = Modules.adapterFor(this.#context.boxAdapters, pointer.box);\n const added = this.#modules.add(adapter);\n // assert(added, `Could not add ${pointer}`)\n // TODO Implement catchupAndSubscribeTransactual that deals with that situation\n if (!added) {\n return;\n }\n this.#listeners.proxy.onModuleAdded(adapter);\n };\n const removeModule = (pointer) => this.#listeners.proxy.onModuleRemoved(this.#modules.removeByKey(pointer.address.uuid));\n const addConnection = (pointer) => {\n const adapter = this.#context.boxAdapters.adapterFor(pointer.box, ModuleConnectionAdapter);\n const added = this.#connections.add(adapter);\n // assert(added, `Could not add ${pointer}`)\n // TODO Implement catchupAndSubscribeTransactual that deals with that situation\n if (!added) {\n return;\n }\n this.#listeners.proxy.onConnectionAdded(adapter);\n };\n const removeConnection = (pointer) => this.#listeners.proxy.onConnectionRemoved(this.#connections.removeByKey(pointer.address.uuid));\n this.#box.modules.pointerHub.filter(Pointers.ModuleCollection).forEach(addModule);\n this.#box.connections.pointerHub.filter(Pointers.ConnectionCollection).forEach(addConnection);\n this.#terminator.own(this.#box.modules.pointerHub\n .subscribeTransactual({ onAdd: addModule, onRemove: removeModule }, Pointers.ModuleCollection));\n this.#terminator.own(this.#box.connections.pointerHub\n .subscribeTransactual({ onAdd: addConnection, onRemove: removeConnection }, Pointers.ConnectionCollection));\n }\n catchupAndSubscribe(listener) {\n ifDefined(listener.onModuleAdded, fn => this.#modules.forEach(adapter => fn(adapter)));\n ifDefined(listener.onConnectionAdded, fn => this.#connections.forEach(adapter => fn(adapter)));\n return this.#listeners.subscribe(listener);\n }\n get box() { return this.#box; }\n get address() { return this.#box.address; }\n get uuid() { return this.#box.address.uuid; }\n get editingField() { return this.#box.editing; }\n get labelField() { return this.#box.label; }\n get modules() { return this.#modules.values(); }\n get connections() { return this.#connections.values(); }\n get device() {\n return this.#context.boxAdapters\n .adapterFor(asDefined(this.#box.device.pointerHub.incoming().at(0), \"No device found\").box, ModularDeviceBoxAdapter);\n }\n terminate() {\n console.debug(`terminate ${this}`);\n this.#terminator.terminate();\n }\n}\n", "import { moebiusEase, squashUnit, StringMapping, Terminator, ValueMapping } from \"@opendaw/lib-std\";\nimport { GroovePattern, PPQN } from \"@opendaw/lib-dsp\";\nimport { ParameterAdapterSet } from \"../ParameterAdapterSet\";\nexport class GrooveShuffleBoxAdapter {\n static Durations = [\n [1, 8], [1, 4], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1], [16, 1]\n ];\n static DurationPPQNs = GrooveShuffleBoxAdapter.Durations.map(([n, d]) => PPQN.fromSignature(n, d));\n static DurationStrings = GrooveShuffleBoxAdapter.Durations.map(([n, d]) => (`${n}/${d}`));\n type = \"groove-adapter\";\n #terminator = new Terminator();\n #context;\n #box;\n #parametric;\n namedParameter; // let typescript infer the type\n #groove = new GroovePattern({\n duration: () => this.#duration,\n fx: x => moebiusEase(x, this.#amount),\n fy: y => moebiusEase(y, 1.0 - this.#amount)\n });\n #amount = 0.0;\n #duration = PPQN.SemiQuaver * 2;\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#parametric = this.#terminator.own(new ParameterAdapterSet(this.#context));\n this.namedParameter = this.#wrapParameters(box);\n this.#terminator.ownAll(this.namedParameter.duration.catchupAndSubscribe(owner => this.#duration = owner.getValue()), this.namedParameter.amount.catchupAndSubscribe(owner => this.#amount = squashUnit(owner.getValue(), 0.01)));\n }\n unwarp(position) { return this.#groove.unwarp(position); }\n warp(position) { return this.#groove.warp(position); }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n parameterAt(fieldIndices) { return this.#parametric.parameterAt(fieldIndices); }\n terminate() { this.#terminator.terminate(); }\n #wrapParameters(box) {\n return {\n duration: this.#parametric.createParameter(box.duration, ValueMapping.values(GrooveShuffleBoxAdapter.DurationPPQNs), StringMapping.values(\"\", GrooveShuffleBoxAdapter.DurationPPQNs, GrooveShuffleBoxAdapter.DurationStrings), \"duration\"),\n amount: this.#parametric.createParameter(box.amount, ValueMapping.unipolar(), StringMapping.percent({ fractionDigits: 0 }), \"amount\")\n };\n }\n}\n", "import { Fraction } from \"@opendaw/lib-dsp\";\nimport { StringMapping, ValueMapping } from \"@opendaw/lib-std\";\nimport { Devices } from \"../../devices\";\nimport { ParameterAdapterSet } from \"../../ParameterAdapterSet\";\nexport class ArpeggioDeviceBoxAdapter {\n static RateFractions = Fraction.builder()\n .add([1, 1]).add([1, 2]).add([1, 3]).add([1, 4])\n .add([3, 16]).add([1, 6]).add([1, 8]).add([3, 32])\n .add([1, 12]).add([1, 16]).add([3, 64]).add([1, 24])\n .add([1, 32]).add([1, 48]).add([1, 64])\n .add([1, 96]).add([1, 128])\n .asDescendingArray();\n static RateStringMapping = StringMapping.indices(\"\", this.RateFractions.map(([n, d]) => `${n}/${d}`));\n type = \"midi-effect\";\n accepts = \"midi\";\n #context;\n #box;\n #parametric;\n namedParameter; // let typescript infer the type\n constructor(context, box) {\n this.#context = context;\n this.#box = box;\n this.#parametric = new ParameterAdapterSet(this.#context);\n this.namedParameter = this.#wrapParameters(box);\n }\n get box() { return this.#box; }\n get uuid() { return this.#box.address.uuid; }\n get address() { return this.#box.address; }\n get indexField() { return this.#box.index; }\n get labelField() { return this.#box.label; }\n get enabledField() { return this.#box.enabled; }\n get minimizedField() { return this.#box.minimized; }\n get host() { return this.#box.host; }\n parameterAt(fieldIndices) { return this.#parametric.parameterAt(fieldIndices); }\n deviceHost() {\n return this.#context.boxAdapters\n .adapterFor(this.#box.host.targetVertex.unwrap(\"no device-host\").box, Devices.isHost);\n }\n audioUnitBoxAdapter() { return this.deviceHost().audioUnitBoxAdapter(); }\n terminate() { this.#parametric.terminate(); }\n #wrapParameters(box) {\n return {\n modeIndex: this.#parametric.createParameter(box.modeIndex, ValueMapping.linearInteger(0, 2), StringMapping.indices(\"\", [\"Up\", \"Down\", \"UpDown\"]), \"mode\"),\n numOctaves: this.#parametric.createParameter(box.numOctaves, ValueMapping.linearInteger(1, 5), StringMapping.numeric({ unit: \"\", fractionDigits: 0 }), \"Octaves\"),\n rate: this.#parametric.createParameter(box.rateIndex, ValueMapping.linearInteger(0, ArpeggioDeviceBoxAdapter.RateFractions.length - 1), ArpeggioDeviceBoxAdapter.RateStringMapping, \"Rate\"),\n gate: this.#parametric.createParameter(box.gate, ValueMapping.linear(0.0, 2.0), StringMapping.percent({ fractionDigits: 0 }), \"Gate\"),\n repeat: this.#parametric.createParameter(box.repeat, ValueMapping.linearInteger(1, 16), StringMapping.numeric({ fractionDigits: 0 }), \"Repeat\"),\n velocity: this.#parametric.createParameter(box.velocity, ValueMapping.bipolar(), StringMapping.percent({ fractionDigits: 0, bipolar: false }), \"Velocity\")\n };\n }\n}\n", "export var GrooveAdapter;\n(function (GrooveAdapter) {\n GrooveAdapter.checkType = (adapter) => adapter !== null && typeof adapter === \"object\" && \"type\" in adapter && adapter.type === \"groove-adapter\";\n})(GrooveAdapter || (GrooveAdapter = {}));\n", "export var ExportStemsConfiguration;\n(function (ExportStemsConfiguration) {\n ExportStemsConfiguration.countStems = (config) => config.match({\n none: () => 1,\n some: (configuration) => Object.keys(configuration).length\n });\n ExportStemsConfiguration.sanitizeFileName = (name) => name.replace(/[<>:\"/\\\\|?*\\x00-\\x1F]/g, \"_\").trim();\n ExportStemsConfiguration.sanitizeExportNamesInPlace = (configuration) => {\n const sanitizedNames = new Map();\n const getUniqueName = (baseName) => {\n let count = sanitizedNames.get(baseName) ?? 0;\n let newName = baseName;\n while (sanitizedNames.has(newName)) {\n count++;\n newName = `${baseName} ${count}`;\n }\n sanitizedNames.set(baseName, count);\n sanitizedNames.set(newName, 1);\n return newName;\n };\n Object.keys(configuration).forEach((key) => {\n const entry = configuration[key];\n entry.fileName = getUniqueName(ExportStemsConfiguration.sanitizeFileName(entry.fileName));\n });\n };\n})(ExportStemsConfiguration || (ExportStemsConfiguration = {}));\n", "import { Schema } from \"@opendaw/lib-std\";\nexport const EngineStateSchema = Schema.createBuilder({\n position: Schema.float,\n clipIndex: Schema.int16\n});\n", "export var NoteSustainer;\n(function (NoteSustainer) {\n NoteSustainer.start = (sender, note, velocity = 1.0) => {\n let playing = true;\n sender.noteOn(note, velocity);\n return {\n terminate: () => {\n if (playing) {\n sender.noteOff(note);\n playing = false;\n }\n }\n };\n };\n})(NoteSustainer || (NoteSustainer = {}));\n", "import { BoxIO } from \"@opendaw/studio-boxes\";\nimport { BoxGraph } from \"@opendaw/lib-box\";\nimport { assert, ByteArrayInput, Option, UUID } from \"@opendaw/lib-std\";\nexport var ProjectDecoder;\n(function (ProjectDecoder) {\n ProjectDecoder.MAGIC_HEADER_OPEN = 0x4F50454E;\n ProjectDecoder.FORMAT_VERSION = 2;\n ProjectDecoder.decode = (arrayBuffer) => {\n const input = new ByteArrayInput(arrayBuffer);\n assert(input.readInt() === ProjectDecoder.MAGIC_HEADER_OPEN, \"Corrupt header. Probably not an openDAW project file.\");\n assert(input.readInt() === ProjectDecoder.FORMAT_VERSION, \"Deprecated Format\");\n const boxGraphChunkLength = input.readInt();\n const boxGraphChunk = new Int8Array(boxGraphChunkLength);\n input.readBytes(boxGraphChunk);\n const boxGraph = new BoxGraph(Option.wrap(BoxIO.create));\n boxGraph.fromArrayBuffer(boxGraphChunk.buffer);\n return { boxGraph, mandatoryBoxes: readMandatoryBoxes(boxGraph, input) };\n };\n const readMandatoryBoxes = (boxGraph, input) => {\n const rootBox = boxGraph.findBox(UUID.fromDataInput(input)).unwrap(\"RootBox not found\");\n const userInterfaceBox = boxGraph.findBox(UUID.fromDataInput(input)).unwrap(\"UserInterfaceBox not found\");\n const masterBusBox = boxGraph.findBox(UUID.fromDataInput(input)).unwrap(\"AudioBusBox not found\");\n const masterAudioUnit = boxGraph.findBox(UUID.fromDataInput(input)).unwrap(\"AudioUnitBox not found\");\n const timelineBox = boxGraph.findBox(UUID.fromDataInput(input)).unwrap(\"TimelineBox not found\");\n return { rootBox, userInterfaceBox, masterBusBox, masterAudioUnit, timelineBox };\n };\n})(ProjectDecoder || (ProjectDecoder = {}));\n", "import { Arrays, assert, panic } from \"@opendaw/lib-std\";\nexport var RingBuffer;\n(function (RingBuffer) {\n RingBuffer.reader = ({ sab, numChunks, numChannels, bufferSize }, append) => {\n let running = true;\n const pointers = new Int32Array(sab, 0, 2);\n const audio = new Float32Array(sab, 8);\n const planarChunk = new Float32Array(numChannels * bufferSize);\n const canBlock = typeof document === \"undefined\"; // for usage in workers\n const step = () => {\n if (!running) {\n return;\n }\n let readPtr = Atomics.load(pointers, 1);\n let writePtr = Atomics.load(pointers, 0);\n if (readPtr === writePtr) {\n if (canBlock) {\n Atomics.wait(pointers, 0, writePtr);\n }\n else {\n setTimeout(step, 1); // non\u2011blocking poll fallback\n return;\n }\n writePtr = Atomics.load(pointers, 0);\n }\n while (readPtr !== writePtr) {\n const offset = readPtr * numChannels * bufferSize;\n planarChunk.set(audio.subarray(offset, offset + numChannels * bufferSize));\n const channels = [];\n for (let channel = 0; channel < numChannels; channel++) {\n const start = channel * bufferSize;\n const end = start + bufferSize;\n channels.push(planarChunk.slice(start, end));\n }\n readPtr = (readPtr + 1) % numChunks;\n Atomics.store(pointers, 1, readPtr);\n if (!running) {\n return;\n }\n append(channels);\n }\n step();\n };\n step();\n return { stop: () => running = false };\n };\n RingBuffer.writer = ({ sab, numChunks, numChannels, bufferSize }) => {\n const pointers = new Int32Array(sab, 0, 2);\n const audio = new Float32Array(sab, 8);\n return Object.freeze({\n write: (channels) => {\n if (channels.length !== numChannels) {\n // We ignore this. This can happen in the worklet setup phase.\n return;\n }\n for (const channel of channels) {\n if (channel.length !== bufferSize) {\n return panic(\"Each channel buffer must contain 'bufferSize' samples\");\n }\n }\n const writePtr = Atomics.load(pointers, 0);\n const offset = writePtr * numChannels * bufferSize;\n channels.forEach((channel, index) => audio.set(channel, offset + index * bufferSize));\n Atomics.store(pointers, 0, (writePtr + 1) % numChunks);\n Atomics.notify(pointers, 0);\n }\n });\n };\n})(RingBuffer || (RingBuffer = {}));\nexport const mergeChunkPlanes = (chunks, bufferSize, maxFrames = Number.MAX_SAFE_INTEGER) => {\n if (chunks.length === 0) {\n return Arrays.empty();\n }\n const numChannels = chunks[0].length;\n const numFrames = Math.min(bufferSize * chunks.length, maxFrames);\n return Arrays.create(channelIndex => {\n const outChannel = new Float32Array(numFrames);\n chunks.forEach((recordedChannels, chunkIndex) => {\n if (recordedChannels.length !== numChannels) {\n return panic();\n }\n const recordedChannel = recordedChannels[channelIndex];\n assert(recordedChannel.length === bufferSize, \"Invalid length\");\n const remaining = numFrames - chunkIndex * bufferSize;\n assert(remaining > 0, \"Invalid remaining\");\n outChannel.set(remaining < bufferSize\n ? recordedChannel.slice(0, remaining)\n : recordedChannel, chunkIndex * bufferSize);\n });\n return outChannel;\n }, numChannels);\n};\n", "export const UnionBoxTypes = {\n isClipBox: (box) => box.accept({\n visitNoteClipBox: (_box) => true,\n visitAudioClipBox: (_box) => true,\n visitValueClipBox: (_box) => true\n }) ?? false,\n isRegionBox: (box) => box.accept({\n visitNoteRegionBox: (_box) => true,\n visitAudioRegionBox: (_box) => true,\n visitValueRegionBox: (_box) => true\n }) ?? false,\n isLoopableRegionBox: (box) => box.accept({\n visitNoteRegionBox: (_box) => true,\n visitAudioRegionBox: (_box) => true,\n visitValueRegionBox: (_box) => true\n }) ?? false\n};\n", "import { UnionBoxTypes } from \"./unions\";\nexport const UnionAdapterTypes = {\n isRegion: (adapter) => UnionBoxTypes.isRegionBox(adapter.box),\n isLoopableRegion: (adapter) => UnionBoxTypes.isLoopableRegionBox(adapter.box)\n};\n", "export var Gate;\n(function (Gate) {\n Gate[Gate[\"Off\"] = 0] = \"Off\";\n Gate[Gate[\"On\"] = 1] = \"On\";\n Gate[Gate[\"Loop\"] = 2] = \"Loop\";\n})(Gate || (Gate = {}));\n", "import { mod, panic } from \"@opendaw/lib-std\";\nimport { UnionAdapterTypes } from \"../UnionAdapterTypes\";\nexport var RegionEditing;\n(function (RegionEditing) {\n RegionEditing.cut = (region, cut, consolidate) => {\n if (region.position >= cut || cut >= region.complete) {\n return;\n }\n if (UnionAdapterTypes.isLoopableRegion(region)) {\n const { position, complete, loopOffset, loopDuration } = region;\n region.box.duration.setValue(cut - position);\n region.copyTo({\n position: cut,\n duration: complete - cut,\n loopOffset: mod(loopOffset + (cut - position), loopDuration),\n consolidate\n });\n }\n else {\n return panic(\"Not yet implemented\");\n }\n };\n RegionEditing.clip = (region, begin, end) => {\n if (UnionAdapterTypes.isLoopableRegion(region)) {\n const { position, complete, loopOffset, loopDuration } = region;\n if (complete - end <= 0) {\n return panic(`duration will zero or negative(${complete - end})`);\n }\n region.box.duration.setValue(begin - position);\n region.copyTo({\n position: end,\n duration: complete - end,\n loopOffset: mod(loopOffset + (end - position), loopDuration)\n });\n }\n else {\n return panic(\"Not yet implemented\");\n }\n };\n})(RegionEditing || (RegionEditing = {}));\n", "import {RingBuffer} from \"@opendaw/studio-adapters\"\nimport {RecordingProcessorOptions} from \"@opendaw/studio-adapters\"\n\nregisterProcessor(\"recording-processor\", class extends AudioWorkletProcessor {\n readonly #writer: RingBuffer.Writer\n\n constructor({processorOptions: config}: { processorOptions: RecordingProcessorOptions } & AudioNodeOptions) {\n super()\n\n this.#writer = RingBuffer.writer(config)\n }\n\n process(inputs: ReadonlyArray<ReadonlyArray<Float32Array>>): boolean {\n this.#writer.write(inputs[0])\n return true\n }\n})"],
|
5
|
-
"mappings": "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",
|
6
|
-
"names": ["isDefined", "value", "ifDefined", "procedure", "asDefined", "fail", "panic", "isInstanceOf", "obj", "clazz", "asInstanceOf", "assertInstanceOf", "getOrProvide", "value", "safeExecute", "func", "args", "Unhandled", "empty", "panic", "issue", "assert", "condition", "fail", "getOrProvide", "InaccessibleProperty", "failMessage", "panic", "tryCatch", "statement", "error", "EmptyExec", "Sorting", "Arrays", "#empty", "array", "newValues", "procedure", "index", "fail", "asDefined", "factory", "n", "i", "a", "b", "predicate", "first", "element", "panic", "result", "key", "seen", "value", "maxIndex", "sorting", "prev", "next", "Option", "value", "isDefined", "Some", "provider", "func", "args", "promise", "#value", "asDefined", "_", "matchable", "run", "callback", "_or", "other", "_fail", "fail", "panic", "getOrProvide", "or", "Attempts", "promise", "value", "reason", "provider", "result", "Option", "map", "matchable", "BinarySearch", "sorted", "key", "comparator", "l", "r", "m", "cmp", "map", "Cache", "#provider", "#value", "provider", "Color", "color", "colorValues", "isDefined", "value", "NumberComparator", "a", "b", "NumberArrayComparator", "n", "comparison", "TAU", "PI_HALF", "PI_QUART", "INVERSE_SQRT_2", "clamp", "value", "min", "max", "squashUnit", "value", "margin", "quantizeFloor", "interval", "linear", "y1", "y2", "mu", "mod", "value", "range", "fract", "nextPowOf2", "n", "moebiusEase", "x", "h", "Curve", "slope", "steps", "y0", "y1", "x", "p", "clamp", "y", "definition", "f1", "m", "q", "walk", "i", "v", "walkNormalized", "d", "ym", "dataView", "Integer", "value", "Float", "ARRAY_BUFFER", "FLOAT_VIEW", "INT_VIEW", "result", "Float16", "bits", "sign", "val", "mantissa", "exp", "Float64", "EXP_BIT_MASK", "SIGNIFICANT_BIT_MASK", "FLOAT64_VIEW", "LONG_VIEW", "Iterables", "value", "iterable", "count", "_", "predicate", "callback", "initialValue", "accumulator", "index", "include", "procedure", "map", "iterator", "fn", "result", "mapped", "isDefined", "done", "prev", "ByteArrayOutput", "_ByteArrayOutput", "initialCapacity", "buffer", "byteOffset", "#view", "#position", "view", "value", "panic", "#ensureSpace", "bytes", "i", "length", "count", "capacity", "o", "nextPowOf2", "ByteCounter", "#count", "_", "Checksum", "#result", "#cursor", "other", "index", "Float", "Float64", "Iterables", "ByteArrayInput", "read", "array", "result", "findMethodType", "descriptor", "isDefined", "panic", "Lazy", "_", "property", "context", "originalDescriptor", "value", "methodType", "element", "asDefined", "args", "Generators", "empty", "generator", "value", "done", "flatten", "generators", "Axis", "Corner", "Geom", "a", "b", "dx", "dy", "angle", "cs", "sn", "Point", "x", "y", "point", "scale", "multiplier", "object", "Rect", "rectangle", "x0", "y0", "x1", "y1", "rect", "amount", "outer", "inner", "topLeftInside", "bottomRightInside", "xMin", "xMax", "yMax", "yMin", "axis", "Unhandled", "corner", "bx", "by", "ux", "uy", "AABB", "aabb", "that", "offset", "top", "right", "bottom", "left", "Padding", "CohenSutherland", "c0", "code", "c1", "s", "sign", "x2", "y2", "ValueAxis", "value", "valueAxis", "min", "max", "clamp", "Hash", "buffers", "totalLength", "sum", "buf", "mergedArray", "offset", "buffer", "a", "b", "assert", "viewA", "viewB", "i", "Intervals", "min0", "max0", "min1", "max1", "Listeners", "#set", "#proxy", "_", "func", "args", "listener", "safeExecute", "procedure", "Sets", "_Sets", "#EMPTY", "Objects", "u", "v", "keys", "key", "panic", "obj", "result", "exclude", "value", "target", "patch", "Terminable", "EmptyExec", "exec", "terminables", "Terminator", "_Terminator", "#terminables", "terminable", "terminator", "Arrays", "Notifier", "observer", "observables", "Terminable", "observable", "#observers", "value", "ObservableValue", "_observer", "MutableObservableValue", "_", "observableValue", "DefaultObservableValue", "#notifier", "#guard", "Option", "#value", "guard", "Linear", "#min", "#max", "#range", "min", "max", "y", "x", "clamp", "LinearInteger", "Integer", "Exponential", "Values", "#values", "values", "index", "value", "panic", "asDefined", "Decibel", "#a", "#b", "#c", "mid", "min2", "max2", "mid2", "tmp0", "tmp1", "ValueMapping", "Bool", "Unipolar", "Bipolar", "DefaultDecibelInstance", "StringMapping", "bipolar", "fractionDigits", "Numeric", "unit", "unitPrefix", "values", "y", "x", "index", "strings", "#unit", "#fractionDigits", "#unitPrefix", "#bipolar", "value", "float", "clamp", "last", "isDefined", "prefixes", "prefix", "computePrefix", "computeBase10", "location", "Predicates", "value", "Progress", "progress", "count", "collect", "Arrays", "index", "value", "total", "Random", "seed", "Mulberry32", "target", "noise", "random", "length", "panic", "sum", "i", "value", "acc", "#seed", "min", "max", "array", "t", "Schema", "Serializer", "schema", "replace", "clone", "key", "value", "IOImpl", "input", "output", "length", "values", "i", "#schema", "#object", "#bytesTotal", "object", "#count", "collector", "data", "counter", "ByteCounter", "SortedSet", "#extractor", "#comparator", "#array", "extractor", "comparator", "value", "replace", "key", "insertIndex", "BinarySearch", "current", "isDefined", "factory", "values", "a", "b", "delta", "reason", "uniqueKeys", "panic", "deleteIndex", "candidate", "startIndex", "endIndex", "predicate", "count", "index", "#lookup", "provider", "Option", "procedure", "entry", "Arrays", "Strings", "value", "g", "fallback", "isDefined", "str", "buffer", "view", "i", "TimeSpan", "_TimeSpan", "value", "#MILLI_SECONDS_PER_SECOND", "#MILLI_SECONDS_PER_MINUTE", "#MILLI_SECONDS_PER_HOUR", "#MILLI_SECONDS_PER_DAY", "#ms", "ms", "unit", "seconds", "minutes", "hours", "days", "d", "h", "m", "#quantity", "name", "count", "Unhandled", "SyncStream", "State", "io", "buffer", "populate", "panic", "array", "output", "ByteArrayOutput", "procedure", "input", "ByteArrayInput", "UUID", "fromUint8Array", "buffer", "uuid", "input", "arr", "output", "format", "hex", "Arrays", "index", "string", "cleanUuid", "panic", "bytes", "i", "j", "a", "b", "delta", "key", "SortedSet", "value", "result", "array", "assert", "ValueGuide", "option", "isDefined", "trackLength", "DEFAULT_TRACK_LENGTH", "snapLength", "DEFAULT_SNAP_LENGTH", "thresholds", "Snap", "Identity", "#x", "#value", "#ratio", "length", "value", "delta", "assert", "clamp", "#length", "#margin", "#thresholds", "#ranges", "#enabled", "margin", "Arrays", "x", "index", "BinarySearch", "NumberComparator", "range", "threshold", "clamped", "key", "Pointers", "AudioUnitType", "Address", "_Address", "keyExtractor", "SortedSet", "uuid", "fieldKeys", "keys", "#EMPTY_FIELD_KEYS", "assert", "value", "index", "str", "parts", "UUID", "x", "layout", "set", "id", "map", "sorted", "startIndex", "BinarySearch", "length", "endIndex", "a", "b", "compareId", "#uuid", "n", "#fieldKeys", "i", "comparison", "other", "key", "output", "array", "input", "uuidBytes", "numFields", "Arrays", "Addressable", "addressable", "address", "l", "r", "PointerHub", "_PointerHub", "pointer", "target", "Option", "type", "#vertex", "#immediateListeners", "#transactualListeners", "#inTransaction", "vertex", "Listeners", "listener", "filter", "#addFilteredListener", "added", "Address", "types", "Iterables", "pointerField", "incoming", "issue", "panic", "#onEndTransaction", "listeners", "beforeState", "afterState", "__decorate", "decorators", "target", "key", "desc", "c", "r", "d", "i", "__metadata", "k", "v", "Field", "_Field", "construct", "#parent", "#fieldKey", "#fieldName", "#pointerRules", "parent", "fieldKey", "fieldName", "pointerRules", "visitor", "safeExecute", "PointerHub", "field", "Iterables", "_key", "panic", "Option", "_input", "_output", "incoming", "pointer", "Lazy", "Address", "NoPointers", "ArrayField", "_ArrayField", "Field", "construct", "factory", "length", "#fields", "Arrays", "index", "NoPointers", "visitor", "safeExecute", "key", "asDefined", "Option", "input", "field", "output", "Serializer", "output", "fields", "entries", "key", "field", "bytes", "ByteArrayOutput", "buffer", "input", "assert", "numFields", "fieldIndex", "byteLength", "ByteArrayInput", "__decorate", "decorators", "target", "key", "desc", "c", "r", "d", "i", "__metadata", "k", "v", "Box", "_Box", "#address", "#graph", "#name", "#pointerRules", "#fields", "#creationIndex", "uuid", "graph", "name", "pointerRules", "Address", "asDefined", "Option", "propagation", "procedure", "PointerHub", "byteCounter", "ByteCounter", "input", "Serializer", "output", "ByteArrayOutput", "map", "keys", "Arrays", "parent", "result", "index", "boxes", "pointers", "x", "pointer", "box", "Lazy", "Propagation", "Dispatchers", "DispatchersImpl", "#thisDispatcher", "Dispatcher", "Addressable", "#parentDispatcher", "#childrenDispatcher", "#deferredStations", "#order", "#dispatching", "propagation", "address", "procedure", "monitor", "Monitor", "deferred", "DeferredMonitor", "target", "a", "b", "station", "Unhandled", "order", "#monitors", "#sorted", "filterStrategy", "index", "#terminator", "Terminator", "#terminated", "dispatchers", "PrimitiveType", "ValueSerialization", "output", "value", "input", "array", "PrimitiveField", "Field", "#type", "#initValue", "#value", "field", "type", "visitor", "safeExecute", "observer", "Propagation", "assert", "oldValue", "newValue", "BooleanField", "_BooleanField", "construct", "Float32Field", "_Float32Field", "Float", "Int32Field", "_Int32Field", "Integer", "StringField", "_StringField", "ByteArrayField", "_ByteArrayField", "#empty", "x", "index", "bytes", "Updates", "input", "numBlocks", "Arrays", "uuid", "UUID", "name", "settings", "NewUpdate", "address", "Address", "oldAddress", "Option", "newAddress", "PointerUpdate", "type", "serializer", "ValueSerialization", "oldValue", "newValue", "PrimitiveUpdate", "DeleteUpdate", "#uuid", "#name", "#settings", "graph", "box", "ByteArrayInput", "output", "_graph", "#address", "#serialization", "#oldValue", "#newValue", "serialization", "field", "_Unreferenceable", "PointerField", "_PointerField", "Field", "construct", "pointerType", "mandatory", "#pointerType", "#mandatory", "#targetVertex", "Option", "#targetAddress", "field", "panic", "visitor", "safeExecute", "observer", "Propagation", "vertex", "option", "issue", "PointerHub", "newValue", "oldValue", "targetAddress", "target", "address", "input", "Address", "output", "GraphEdges", "#requiresTarget", "#requiresPointer", "#incoming", "#outgoing", "Address", "source", "vertex", "isInstanceOf", "PointerField", "panic", "boxes", "map", "uuid", "#removeSameBox", "box", "outgoingLinks", "target", "incomingPointers", "sources", "Arrays", "#collectSameBox", "_", "pointers", "pointer", "assert", "set", "id", "range", "isDefined", "BoxGraph", "#boxFactory", "#boxes", "#deferredPointerUpdates", "#updateListeners", "#immediateUpdateListeners", "#transactionListeners", "#dispatchers", "#edges", "#finalizeTransactionObservers", "#inTransaction", "#constructingBox", "boxFactory", "Option", "UUID", "box", "Dispatchers", "Listeners", "GraphEdges", "assert", "observer", "pointerField", "update", "#processPointerValueUpdate", "name", "uuid", "constructor", "#assertTransaction", "isDefined", "added", "NewUpdate", "listener", "propagation", "address", "procedure", "deleted", "DeleteUpdate", "checksum", "Checksum", "field", "oldValue", "newValue", "PrimitiveUpdate", "PointerUpdate", "oldVertex", "newVertex", "boxes", "pointers", "trace", "pointer", "source", "target", "count", "verify", "vertex", "isResolved", "inGraph", "object", "dict", "dependency", "panic", "output", "ByteArrayOutput", "buffer", "arrayBuffer", "input", "ByteArrayInput", "numBoxes", "i", "length", "int8Array", "boxStream", "creationIndex", "a", "b", "ObjectField", "Field", "#fields", "construct", "visitor", "safeExecute", "key", "asDefined", "Option", "input", "Serializer", "output", "Communicator", "messenger", "bind", "Sender", "protocol", "Executor", "#messenger", "#expected", "#subscription", "#returnId", "#messageHandler", "func", "args", "Iterables", "arg", "resolve", "reject", "entries", "callbacks", "index", "message", "returns", "isDefined", "panic", "#protocol", "assert", "object", "asDefined", "returnId", "#sendCallback", "value", "#sendResolve", "reason", "#sendReject", "Fetch", "progress", "response", "length", "output", "ByteArrayOutput", "reader", "asDefined", "done", "value", "Runtime", "id", "exec", "timeout", "time", "args", "IntervalRetryOption", "#count", "maxRetry", "timeSpan", "reason", "exec", "Promises", "ResolveResult", "value", "InaccessibleProperty", "RejectedResult", "error", "owner", "promise", "running", "Terminable", "resolve", "reject", "call", "retryOption", "TimeSpan", "onFailure", "after", "thenUse", "use", "_", "fail", "timeout", "fn", "lastPromise", "arg", "Limit", "#waiting", "#running", "max", "provider", "#continue", "resolvers", "assert", "Latest", "#onResolve", "#onReject", "#onFinally", "#latest", "Option", "onResolve", "onReject", "onFinally", "safeExecute", "network", "limit", "Promises", "input", "init", "TimeSpanUtils", "startTime", "progress", "TimeSpan", "runtime", "Wait", "resolve", "numFrames", "count", "callback", "time", "args", "target", "type", "observable", "terminable", "generator", "reject", "interval", "status", "next", "error", "tryCatch", "done", "value", "key", "key", "IndexComparator", "a", "b", "difference", "panic", "SortedBoxAdapterCollection", "_SortedBoxAdapterCollection", "field", "provider", "pointers", "#field", "#entries", "#listeners", "#subscription", "#sorted", "UUID", "entry", "Listeners", "pointer", "adapter", "subscription", "added", "assert", "uuid", "listener", "index", "idx", "BinarySearch", "IndexComparator", "Option", "adapters", "a", "b", "delta", "startIndex", "newIndex", "clamp", "BPMTools", "detect", "buf", "sampleRate", "options", "interval", "scanSteps", "scanSamples", "minBPM", "maxBPM", "env", "v", "k", "i", "x", "z", "sample", "frames", "index", "bpmToIv", "b", "ivToBpm", "iv", "BEATS", "NO_BEATS", "autodiff", "mid", "v0", "d", "t", "w", "nb", "avgDiff", "s", "slow", "fast", "step", "bestBpm", "bestScore", "bpm", "cost", "Chord", "scale", "root", "variation", "n", "Arrays", "index", "step", "interval", "midiNote", "Event", "a", "b", "event", "EventSpan", "LoopableRegion", "region", "ppqn", "mod", "position", "complete", "loopOffset", "loopDuration", "from", "to", "rawStart", "rawEnd", "Option", "resultStart", "resultEnd", "locateLoops", "offset", "seekMin", "seekMax", "passIndex", "regionStart", "regionEnd", "resultStartValue", "resultEndValue", "EventCollection", "_EventCollection", "comparator", "#array", "EventArrayImpl", "index", "predicate", "fromPosition", "Generators", "toPosition", "RegionCollection", "_RegionCollection", "period", "EventArrayImpl", "#array", "#unsorted", "comparator", "event", "index", "#sort", "key", "startIndex", "BinarySearch", "NumberComparator", "Event", "i", "other", "Arrays", "position", "predicate", "fromPosition", "floorLastIndex", "Integer", "fromIndex", "toPosition", "Predicates", "element", "fromSignature", "nominator", "denominator", "toParts", "ppqn", "lowerPulses", "beats", "bars", "ticks", "semiquavers", "remainingTicks", "secondsToPulses", "seconds", "bpm", "pulsesToSeconds", "pulses", "samplesToPulses", "samples", "sampleRate", "pulsesToSamples", "PPQN", "Fraction", "Builder", "n", "d", "PPQN", "#list", "fraction", "a", "b", "Groove", "position", "GroovePattern", "#func", "func", "#transform", "forward", "duration", "start", "quantizeFloor", "normalized", "transformed", "MidiKeys", "bits", "keyIndex", "note", "PredefinedScaleImpl", "#name", "#bits", "name", "keys", "other", "NoteEvent", "event", "a", "b", "positionDiff", "pitchDiff", "ratio", "curve", "diffComplete", "EventSpan", "Waveform", "StereoMatrix", "Mixing", "m", "gain", "panning", "invertL", "invertR", "stereo", "swap", "mixing", "panL", "panR", "lGain", "rGain", "mono", "expand", "midGain", "sideGain", "monoAmount", "stereoWidth", "m00", "m01", "m10", "m11", "ll", "rl", "lr", "rr", "x", "clamp", "PI_QUART", "l", "r", "source", "target", "fromIndex", "toIndex", "src0", "src1", "trg0", "trg1", "i", "ch0", "ch1", "Ramp", "sampleRate", "durationInSeconds", "LinearRamp", "StereoMatrixRamp", "#length", "#value", "#target", "#delta", "#remaining", "length", "target", "smooth", "value", "StereoMatrix", "params", "mixing", "source", "fromIndex", "toIndex", "src0", "src1", "trg0", "trg1", "i", "l", "r", "m", "#equals", "LogDb", "Interpolation", "slope", "ValueEvent", "a", "b", "positionDiff", "indexDiff", "panic", "iterateWindow", "events", "fromPosition", "toPosition", "Iterables", "event", "precursor", "sorted", "index", "BinarySearch", "position", "fallback", "iterator", "done", "prevEvent", "nextEvent", "interpolate", "quantise", "duration", "numSteps", "value", "step", "interpolation", "x", "Curve", "Window", "Type", "type", "n", "values", "a", "n2", "i", "c", "d", "e", "key", "BoxIO", "name", "graph", "uuid", "constructor", "RootBox", "SelectionBox", "UserInterfaceBox", "TimelineBox", "TrackBox", "NoteEventBox", "NoteEventRepeatBox", "NoteEventCollectionBox", "NoteRegionBox", "NoteClipBox", "ValueEventBox", "ValueEventCollectionBox", "ValueEventCurveBox", "ValueRegionBox", "ValueClipBox", "AudioRegionBox", "AudioClipBox", "MarkerBox", "AudioFileBox", "AudioUnitBox", "AudioBusBox", "AuxSendBox", "StepAutomationBox", "GrooveShuffleBox", "DeviceInterfaceKnobBox", "ModularDeviceBox", "DeviceClashBox", "StereoToolDeviceBox", "DelayDeviceBox", "RevampDeviceBox", "ReverbDeviceBox", "VaporisateurDeviceBox", "NanoDeviceBox", "PlayfieldDeviceBox", "PlayfieldSampleBox", "TapeDeviceBox", "ArpeggioDeviceBox", "PitchDeviceBox", "ZeitgeistDeviceBox", "ModularBox", "ModuleConnectionBox", "ModularAudioInputBox", "ModularAudioOutputBox", "ModuleDelayBox", "ModuleMultiplierBox", "ModuleGainBox", "panic", "buffer", "stream", "ByteArrayInput", "className", "uuidBytes", "UUID", "box", "PianoMode", "_PianoMode", "ObjectField", "construct", "Int32Field", "NoPointers", "Float32Field", "BooleanField", "RootBox", "_RootBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Field", "StringField", "PianoMode", "SelectionBox", "_SelectionBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "UserInterfaceBox", "_UserInterfaceBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Field", "Signature", "_Signature", "ObjectField", "construct", "Int32Field", "NoPointers", "LoopArea", "_LoopArea", "ObjectField", "construct", "BooleanField", "NoPointers", "Int32Field", "MarkerTrack", "_MarkerTrack", "ObjectField", "construct", "Field", "Pointers", "Int32Field", "NoPointers", "BooleanField", "TimelineBox", "_TimelineBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "Field", "Pointers", "Signature", "LoopArea", "MarkerTrack", "Int32Field", "Float32Field", "TrackBox", "_TrackBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Field", "Int32Field", "BooleanField", "NoteEventBox", "_NoteEventBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "Float32Field", "NoteEventRepeatBox", "_NoteEventRepeatBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Int32Field", "Float32Field", "NoteEventCollectionBox", "_NoteEventCollectionBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "Field", "NoteRegionBox", "_NoteRegionBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "BooleanField", "StringField", "ClipPlaybackFields", "_ClipPlaybackFields", "ObjectField", "construct", "BooleanField", "NoPointers", "Int32Field", "NoteClipBox", "_NoteClipBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "ClipPlaybackFields", "BooleanField", "StringField", "ValueEventBox", "_ValueEventBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "Float32Field", "ValueEventCollectionBox", "_ValueEventCollectionBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "Field", "ValueEventCurveBox", "_ValueEventCurveBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Float32Field", "ValueRegionBox", "_ValueRegionBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "BooleanField", "StringField", "ValueClipBox", "_ValueClipBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "ClipPlaybackFields", "BooleanField", "StringField", "AudioRegionBox", "_AudioRegionBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "BooleanField", "StringField", "Float32Field", "AudioClipBox", "_AudioClipBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "ClipPlaybackFields", "BooleanField", "StringField", "Float32Field", "MarkerBox", "_MarkerBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "AudioFileBox", "_AudioFileBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "Int32Field", "NoPointers", "StringField", "AudioUnitBox", "_AudioUnitBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "StringField", "NoPointers", "PointerField", "Field", "Int32Field", "Float32Field", "BooleanField", "AudioBusBox", "_AudioBusBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Field", "BooleanField", "StringField", "AuxSendBox", "_AuxSendBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Int32Field", "Float32Field", "StepAutomationBox", "_StepAutomationBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Float32Field", "GrooveShuffleBox", "_GrooveShuffleBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "StringField", "NoPointers", "Float32Field", "Int32Field", "DeviceInterfaceKnobBox", "_DeviceInterfaceKnobBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Int32Field", "Float32Field", "StringField", "DeviceUserInterface", "_DeviceUserInterface", "ObjectField", "construct", "Field", "Pointers", "ModularDeviceBox", "_ModularDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "BooleanField", "DeviceUserInterface", "ClashStep", "_ClashStep", "ObjectField", "construct", "BooleanField", "Pointers", "ClashPattern", "_ClashPattern", "ObjectField", "construct", "ArrayField", "NoPointers", "ClashStep", "Int32Field", "DeviceClashBox", "_DeviceClashBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "StringField", "BooleanField", "Float32Field", "ArrayField", "ClashPattern", "StereoToolDeviceBox", "_StereoToolDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "BooleanField", "Float32Field", "DelayDeviceBox", "_DelayDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "BooleanField", "Float32Field", "RevampPass", "_RevampPass", "ObjectField", "construct", "BooleanField", "Pointers", "Float32Field", "Int32Field", "RevampShelf", "_RevampShelf", "ObjectField", "construct", "BooleanField", "Pointers", "Float32Field", "RevampBell", "_RevampBell", "ObjectField", "construct", "BooleanField", "Pointers", "Float32Field", "RevampDeviceBox", "_RevampDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "BooleanField", "RevampPass", "RevampShelf", "RevampBell", "Float32Field", "ReverbDeviceBox", "_ReverbDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "BooleanField", "Float32Field", "VaporisateurDeviceBox", "_VaporisateurDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "StringField", "BooleanField", "Float32Field", "Int32Field", "NanoDeviceBox", "_NanoDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "StringField", "BooleanField", "Float32Field", "PlayfieldDeviceBox", "_PlayfieldDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "StringField", "BooleanField", "Field", "PlayfieldSampleBox", "_PlayfieldSampleBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Field", "Int32Field", "StringField", "BooleanField", "Float32Field", "TapeDeviceBox", "_TapeDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "StringField", "BooleanField", "Float32Field", "ArpeggioDeviceBox", "_ArpeggioDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "BooleanField", "Float32Field", "PitchDeviceBox", "_PitchDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "BooleanField", "Float32Field", "ZeitgeistDeviceBox", "_ZeitgeistDeviceBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "PointerField", "NoPointers", "Int32Field", "StringField", "BooleanField", "ModularBox", "_ModularBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "Field", "StringField", "ModuleConnectionBox", "_ModuleConnectionBox", "Box", "graph", "uuid", "constructor", "NoPointers", "construct", "visitor", "safeExecute", "PointerField", "Pointers", "ModuleAttributes", "_ModuleAttributes", "ObjectField", "construct", "PointerField", "NoPointers", "Pointers", "StringField", "Int32Field", "BooleanField", "ModularAudioInputBox", "_ModularAudioInputBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "ModuleAttributes", "NoPointers", "Field", "ModularAudioOutputBox", "_ModularAudioOutputBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "ModuleAttributes", "NoPointers", "Field", "ModuleDelayBox", "_ModuleDelayBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "ModuleAttributes", "NoPointers", "Field", "Float32Field", "ModuleMultiplierBox", "_ModuleMultiplierBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "ModuleAttributes", "NoPointers", "Field", "Float32Field", "ModuleGainBox", "_ModuleGainBox", "Box", "graph", "uuid", "constructor", "Pointers", "construct", "visitor", "safeExecute", "ModuleAttributes", "NoPointers", "Field", "Float32Field", "InterpolationFieldAdapter", "field", "value", "curveBox", "Pointers", "isDefined", "assertInstanceOf", "ValueEventCurveBox", "UUID", "box", "Interpolation", "panic", "ValueEventBoxAdapter", "_ValueEventBoxAdapter", "a", "b", "positionDiff", "indexDiff", "#terminator", "Terminator", "#context", "#box", "#interpolation", "#interpolationSubscription", "#isSelected", "context", "box", "Cache", "InterpolationFieldAdapter", "invalidateInterpolation", "collection", "Propagation", "update", "updatedFieldKeys", "indexChanged", "Arrays", "positionChanged", "targetVertex", "Terminable", "Pointers", "region", "value", "vertex", "ValueEventCollectionBoxAdapter", "options", "eventBox", "ValueEventBox", "UUID", "ValueEventCollectionBoxAdapter", "_ValueEventCollectionBoxAdapter", "#terminator", "Terminator", "#context", "#box", "#changeNotifier", "#adapters", "#events", "context", "box", "Notifier", "UUID", "adapter", "EventCollection", "ValueEventBoxAdapter", "addValueProcedure", "asDefined", "#onEventsChanged", "uuid", "position", "fallback", "ValueEvent", "graph", "boxCopy", "ValueEventCollectionBox", "source", "low", "high", "Option", "p0", "v0", "p1", "v1", "linear", "y0", "y1", "steps", "cutOffset", "curve", "Curve", "cutValue", "lowSlope", "InterpolationFieldAdapter", "Interpolation", "panic", "observer", "index", "value", "interpolation", "eventBox", "ValueEventBox", "Pointers", "ValueClipBoxAdapter", "#terminator", "Terminator", "#context", "#box", "#selectedValue", "#changeNotifier", "#isConstructing", "#eventCollectionSubscription", "Terminable", "context", "box", "DefaultObservableValue", "Notifier", "#dispatchChange", "Propagation", "_update", "targetVertex", "ValueEventCollectionBoxAdapter", "position", "fallback", "content", "observer", "visitor", "safeExecute", "consolidate", "events", "ValueClipBox", "UUID", "collection", "vertex", "Option", "TrackBoxAdapter", "adapter", "PPQN", "AudioFileBoxAdapter", "#context", "#box", "context", "box", "AudioClipBoxAdapter", "#terminator", "Terminator", "#context", "#box", "#selectedValue", "#changeNotifier", "#isConstructing", "#fileAdapter", "Option", "#fileSubscription", "context", "box", "DefaultObservableValue", "Notifier", "#dispatchChange", "pointerField", "vertex", "AudioFileBoxAdapter", "subscription", "adapter", "Propagation", "_update", "observer", "visitor", "safeExecute", "_mirrored", "AudioClipBox", "UUID", "TrackBoxAdapter", "PPQN", "NoteEventBoxAdapter", "_NoteEventBoxAdapter", "#context", "#box", "#subscription", "#isSelected", "context", "box", "Propagation", "update", "collection", "updatedFieldKeys", "pitchChanged", "Arrays", "positionChanged", "region", "vertex", "NoteEventCollectionBoxAdapter", "minPitch", "maxPitch", "options", "NoteEventBox", "UUID", "ratio", "NoteEvent", "playCount", "events", "adapters", "index", "a", "b", "NoteEventCollectionBoxAdapter", "_NoteEventCollectionBoxAdapter", "#terminator", "Terminator", "#context", "#box", "#changeNotifier", "#adapters", "#events", "#minPitch", "#maxPitch", "#maxDuration", "#computedExtremas", "context", "box", "Notifier", "UUID", "adapter", "EventCollection", "NoteEvent", "addNoteProcedure", "asDefined", "NoteEventBoxAdapter", "#onEventsChanged", "uuid", "graph", "boxCopy", "NoteEventCollectionBox", "source", "position", "duration", "velocity", "pitch", "chance", "playCount", "cent", "NoteEventBox", "observer", "coordinates", "element", "Iterables", "begin", "end", "events", "Intervals", "Pointers", "#computeExtremas", "min", "max", "maxDuration", "NoteClipBoxAdapter", "#terminator", "Terminator", "#context", "#box", "#selectedValue", "#changeNotifier", "#isConstructing", "#eventCollectionSubscription", "Terminable", "context", "box", "DefaultObservableValue", "Notifier", "#dispatchChange", "Propagation", "_update", "targetVertex", "NoteEventCollectionBoxAdapter", "observer", "visitor", "safeExecute", "consolidate", "events", "NoteClipBox", "UUID", "collection", "vertex", "Option", "TrackBoxAdapter", "adapter", "PPQN", "ClipAdapters", "boxAdapters", "box", "asDefined", "NoteClipBoxAdapter", "ValueClipBoxAdapter", "AudioClipBoxAdapter", "TrackClips", "#trackBoxAdapter", "#terminator", "#changeNotifier", "#collection", "adapter", "boxAdapters", "Terminator", "Notifier", "SortedBoxAdapterCollection", "box", "ClipAdapters", "Pointers", "observer", "AudioRegionBoxAdapter", "_AudioRegionBoxAdapter", "#terminator", "#context", "#box", "#changeNotifier", "#fileAdapter", "Option", "#fileSubscription", "#isSelected", "#constructing", "context", "box", "Terminator", "Notifier", "#dispatchChange", "pointerField", "vertex", "AudioFileBoxAdapter", "subscription", "adapter", "Propagation", "update", "track", "observer", "visitor", "safeExecute", "duration", "fileBoxAdapter", "startInSeconds", "totalInSeconds", "PPQN", "state", "TrackBoxAdapter", "params", "AudioRegionBox", "UUID", "_regions", "NoteRegionBoxAdapter", "_NoteRegionBoxAdapter", "#terminator", "Terminator", "#context", "#box", "#changeNotifier", "#isConstructing", "#isSelected", "#eventCollectionSubscription", "Terminable", "context", "box", "Notifier", "#dispatchChange", "Propagation", "update", "track", "targetVertex", "NoteEventCollectionBoxAdapter", "observer", "visitor", "safeExecute", "position", "optContent", "content", "local", "LoopableRegion", "event", "vertex", "Option", "TrackBoxAdapter", "adapter", "params", "eventCollection", "eventTarget", "NoteRegionBox", "UUID", "source", "graph", "target", "NoteEventCollectionBox", "regions", "Arrays", "a", "b", "region", "sorted", "RegionCollection", "first", "last", "rangeMin", "rangeMax", "trackBoxAdapter", "collectionBox", "overlapping", "anyRegion", "resultStart", "resultEnd", "rawStart", "searchStart", "searchEnd", "PPQN", "ValueRegionBoxAdapter", "_ValueRegionBoxAdapter", "#terminator", "Terminator", "#context", "#box", "#changeNotifier", "#isSelected", "#isConstructing", "#eventCollectionSubscription", "Terminable", "context", "box", "Notifier", "#dispatchChange", "Propagation", "update", "track", "targetVertex", "ValueEventCollectionBoxAdapter", "position", "fallback", "content", "LoopableRegion", "optContent", "observer", "visitor", "safeExecute", "collection", "vertex", "Option", "TrackBoxAdapter", "adapter", "params", "eventCollection", "eventTarget", "ValueRegionBox", "UUID", "events", "graph", "collectionBox", "ValueEventCollectionBox", "_regions", "regions", "sorted", "RegionCollection", "first", "Arrays", "last", "rangeMin", "rangeMax", "trackBoxAdapter", "overlapping", "region", "anyRegion", "resultStart", "resultEnd", "rawStart", "searchStart", "searchEnd", "_event", "PPQN", "RegionComparator", "a", "b", "RegionAdapters", "boxAdapters", "box", "asDefined", "NoteRegionBoxAdapter", "AudioRegionBoxAdapter", "ValueRegionBoxAdapter", "TrackRegions", "#trackBoxAdapter", "#terminator", "#changeNotifier", "#collection", "#adapters", "adapter", "boxAdapters", "Terminator", "Notifier", "RegionCollection", "RegionComparator", "UUID", "box", "RegionAdapters", "added", "assert", "uuid", "Pointers", "observer", "IconSymbol", "symbol", "name", "TrackType", "type", "IconSymbol", "DeviceAccepts", "type", "TrackType", "panic", "Devices", "adapter", "value", "box", "asDefined", "devices", "assert", "Arrays", "a", "b", "device", "Pointers", "index", "UUID", "indexField", "AudioUnitTracks", "#adapter", "#regionNotifier", "Notifier", "#collection", "#subscriptions", "#subscription", "adapter", "boxAdapters", "SortedBoxAdapterCollection", "box", "TrackBoxAdapter", "Pointers", "UUID", "uuid", "_adapter", "type", "target", "index", "graph", "tracks", "TrackBox", "Option", "adapters", "deleteIndex", "panic", "listener", "observer", "subscription", "AudioBusBoxAdapter", "#context", "#box", "context", "box", "observer", "Propagation", "IconSymbol", "Devices", "AudioUnitInput", "#terminator", "#labelNotifier", "#iconValue", "#observable", "#subscription", "Terminable", "pointerHub", "boxAdapters", "Terminator", "Notifier", "DefaultObservableValue", "IconSymbol", "Option", "owner", "labelField", "iconField", "field", "box", "assert", "input", "AudioBusBox", "AudioBusBoxAdapter", "Devices", "Pointers", "observer", "value", "ParameterAdapterSet", "#context", "#parameters", "context", "SortedSet", "adapter", "NumberArrayComparator", "parameter", "fieldIndices", "field", "valueMapping", "stringMapping", "name", "anchor", "AutomatableParameterFieldAdapter", "added", "assert", "AuxSendBoxAdapter", "#context", "#box", "#terminator", "#busChangeNotifier", "#sendPan", "#sendGain", "#subscription", "Terminable", "context", "box", "Terminator", "Notifier", "Option", "adapter", "AutomatableParameterFieldAdapter", "ValueMapping", "StringMapping", "observer", "AudioBusBoxAdapter", "target", "AudioUnitOutput", "#pointerField", "#boxAdapters", "#terminator", "#busChangeNotifier", "#subscription", "Terminable", "pointerField", "boxAdapters", "Terminator", "Notifier", "Option", "adapter", "observer", "target", "box", "AudioBusBoxAdapter", "AudioUnitBoxAdapter", "#terminator", "Terminator", "#context", "#box", "#parametric", "#tracks", "#input", "#midiEffects", "#audioEffects", "#auxSends", "#output", "context", "box", "ParameterAdapterSet", "AudioUnitTracks", "AudioUnitInput", "SortedBoxAdapterCollection", "Devices", "Pointers", "AuxSendBoxAdapter", "AudioUnitOutput", "#wrapParameters", "adapter", "output", "input", "adapters", "startIndex", "unitType", "min", "max", "delta", "ValueMapping", "StringMapping", "UpdateClockRate", "PPQN", "TrackBoxAdapter", "#context", "#box", "#terminator", "#clips", "#regions", "#listIndex", "context", "box", "Terminator", "TrackClips", "TrackRegions", "DefaultObservableValue", "observer", "path", "Option", "updater", "option", "Terminable", "#catchupAndSubscribeTargetDeviceName", "#catchupAndSubscribeTargetControlName", "targetVertex", "vertex", "AudioUnitBox", "AudioUnitBoxAdapter", "StringField", "owner", "type", "TrackType", "target", "panic", "asInstanceOf", "value", "subject", "position", "fallback", "intervals", "UpdateClockRate", "optClip", "sectionFrom", "region", "firstRegion", "isInstanceOf", "ValueRegionBoxAdapter", "clip", "ValueClipBoxAdapter", "ExternalControlTypes", "Pointers", "AutomatableParameterFieldAdapter", "#context", "#field", "#valueMapping", "#stringMapping", "#name", "#anchor", "#terminator", "Terminator", "#valueChangeNotifier", "#controlSource", "#trackBoxAdapter", "Option", "#automationHandle", "#controlledValue", "#midiControlled", "context", "field", "valueMapping", "stringMapping", "name", "anchor", "Notifier", "Listeners", "pointer", "mapPointerToControlSource", "box", "assert", "adapter", "TrackBoxAdapter", "value", "handle", "position", "optTrack", "track", "observer", "text", "result", "clamp", "panic", "DelayDeviceBoxAdapter", "_DelayDeviceBoxAdapter", "Fraction", "StringMapping", "n", "d", "#context", "#box", "#parametric", "context", "box", "ParameterAdapterSet", "#wrapParameters", "Devices", "ValueMapping", "FrequencyMapping", "ValueMapping", "GainMapping", "QMapping", "ModuleConnectionAdapter", "#box", "_context", "box", "AbstractModuleAdapter", "#context", "#box", "#terminator", "#attributes", "#parameters", "#selected", "context", "box", "Terminator", "ParameterAdapterSet", "terminable", "terminables", "ModularAdapter", "Direction", "ModuleConnectorAdapter", "_ModuleConnectorAdapter", "boxAdapters", "field", "direction", "name", "#boxAdapters", "#field", "#direction", "#name", "other", "accepts", "type", "Arrays", "Pointers", "box", "ModuleConnectionAdapter", "ModuleDelayAdapter", "AbstractModuleAdapter", "#parameterTime", "#voltageInput", "#voltageOutput", "context", "box", "ValueMapping", "StringMapping", "ModuleConnectorAdapter", "Direction", "ModularAudioOutputAdapter", "AbstractModuleAdapter", "#voltageInput", "context", "box", "ModuleConnectorAdapter", "Direction", "Arrays", "ModuleGainAdapter", "AbstractModuleAdapter", "#parameterGain", "#voltageInput", "#voltageOutput", "context", "box", "ValueMapping", "StringMapping", "ModuleConnectorAdapter", "Direction", "ModuleMultiplierAdapter", "AbstractModuleAdapter", "#voltageInputX", "#voltageInputY", "#voltageOutput", "context", "box", "ModuleConnectorAdapter", "Direction", "ModularAudioInputAdapter", "AbstractModuleAdapter", "#voltageOutput", "context", "box", "ModuleConnectorAdapter", "Direction", "Arrays", "Modules", "vertex", "adapters", "box", "asDefined", "ModuleGainAdapter", "ModuleDelayAdapter", "ModuleMultiplierAdapter", "ModularAudioInputAdapter", "ModularAudioOutputAdapter", "DeviceInterfaceKnobAdapter", "#context", "#box", "context", "box", "Modules", "#parameterTarget", "ModularDeviceBoxAdapter", "#context", "#box", "context", "box", "_fieldIndices", "panic", "Devices", "ModularAdapter", "Pointers", "pointer", "DeviceInterfaceKnobAdapter", "ModularAdapter", "#terminator", "Terminator", "#listeners", "#context", "#box", "#modules", "#connections", "context", "box", "Listeners", "UUID", "adapter", "addModule", "pointer", "Modules", "removeModule", "addConnection", "ModuleConnectionAdapter", "removeConnection", "Pointers", "listener", "ifDefined", "fn", "asDefined", "ModularDeviceBoxAdapter", "GrooveShuffleBoxAdapter", "_GrooveShuffleBoxAdapter", "n", "d", "PPQN", "#terminator", "Terminator", "#context", "#box", "#parametric", "#groove", "GroovePattern", "#duration", "x", "moebiusEase", "#amount", "y", "context", "box", "ParameterAdapterSet", "#wrapParameters", "owner", "squashUnit", "position", "fieldIndices", "ValueMapping", "StringMapping", "ArpeggioDeviceBoxAdapter", "_ArpeggioDeviceBoxAdapter", "Fraction", "StringMapping", "n", "d", "#context", "#box", "#parametric", "context", "box", "ParameterAdapterSet", "#wrapParameters", "fieldIndices", "Devices", "ValueMapping", "GrooveAdapter", "adapter", "ExportStemsConfiguration", "config", "configuration", "name", "sanitizedNames", "getUniqueName", "baseName", "count", "newName", "key", "entry", "EngineStateSchema", "Schema", "NoteSustainer", "sender", "note", "velocity", "playing", "ProjectDecoder", "arrayBuffer", "input", "ByteArrayInput", "assert", "boxGraphChunkLength", "boxGraphChunk", "boxGraph", "BoxGraph", "Option", "BoxIO", "readMandatoryBoxes", "rootBox", "UUID", "userInterfaceBox", "masterBusBox", "masterAudioUnit", "timelineBox", "RingBuffer", "sab", "numChunks", "numChannels", "bufferSize", "append", "running", "pointers", "audio", "planarChunk", "canBlock", "step", "readPtr", "writePtr", "offset", "channels", "channel", "start", "end", "panic", "index", "UnionBoxTypes", "box", "_box", "UnionAdapterTypes", "adapter", "UnionBoxTypes", "Gate", "RegionEditing", "region", "cut", "consolidate", "UnionAdapterTypes", "position", "complete", "loopOffset", "loopDuration", "mod", "panic", "begin", "end", "#writer", "config", "RingBuffer", "inputs"]
|
7
|
-
}
|