summaryrefslogtreecommitdiffstats
path: root/res/controllers/engine-api.d.ts
diff options
context:
space:
mode:
Diffstat (limited to 'res/controllers/engine-api.d.ts')
-rw-r--r--res/controllers/engine-api.d.ts283
1 files changed, 283 insertions, 0 deletions
diff --git a/res/controllers/engine-api.d.ts b/res/controllers/engine-api.d.ts
new file mode 100644
index 0000000000..f74096e480
--- /dev/null
+++ b/res/controllers/engine-api.d.ts
@@ -0,0 +1,283 @@
+
+/** ScriptConnectionJSProxy */
+
+declare interface ScriptConnection {
+ /**
+ * Disconnect the script connection,
+ * established by {@link engine.makeConnection} or {@link engine.makeUnbufferedConnection}
+ *
+ * @returns Returns true if the connection has been disconnected successfully
+ */
+ disconnect(): boolean;
+
+ /**
+ * Triggers the execution of the callback function of the script connection,
+ * established by {@link engine.makeConnection} or {@link engine.makeUnbufferedConnection}
+ * with the actual value of a control.
+ *
+ * Note: To execute all callback functions connected to a ControlObject at once, use {@link engine.trigger} instead
+ */
+ trigger(): void;
+}
+
+
+/** ControllerScriptInterfaceLegacy */
+
+declare namespace engine {
+ /**
+ * Gets the control value
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ * @returns Value of the control (within it's range according Mixxx Controls manual page:
+ * https://manual.mixxx.org/latest/chapters/appendix/mixxx_controls.html)
+ */
+ function getValue(group: string, name: string): number;
+
+ /**
+ * Sets a control value
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ * @param newValue Value to be set (within it's range according Mixxx Controls manual page:
+ * https://manual.mixxx.org/latest/chapters/appendix/mixxx_controls.html)
+ */
+ function setValue(group: string, name: string, newValue: number): void;
+
+ /**
+ * Gets the control value normalized to a range of 0..1
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ * @returns Value of the control normalized to range of 0..1
+ */
+ function getParameter(group: string, name: string): number;
+
+ /**
+ * Sets the control value specified with normalized range of 0..1
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ * @param newValue Value to be set, normalized to a range of 0..1
+ */
+ function setParameter(group: string, name: string, newValue: number): void;
+
+ /**
+ * Normalizes a specified value using the range of the given control,
+ * to the range of 0..1
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ * @param value Value with the controls range according Mixxx Controls manual page:
+ * https://manual.mixxx.org/latest/chapters/appendix/mixxx_controls.html
+ * @returns Value normalized to range of 0..1
+ */
+ function getParameterForValue(group: string, name: string, value: number): number;
+
+ /**
+ * Resets the control to its default value
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ */
+ function reset(group: string, name: string): void;
+
+ /**
+ * Returns the default value of a control
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ * @returns Default value with the controls range according Mixxx Controls manual page:
+ * https://manual.mixxx.org/latest/chapters/appendix/mixxx_controls.html
+ */
+ function getDefaultValue(group: string, name: string): number;
+
+ /**
+ * Returns the default value of a control, normalized to a range of 0..1
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ * @returns Default value of the specified control normalized to range of 0..1
+ */
+ function getDefaultParameter(group: string, name: string): number;
+
+ type CoCallback = (value: number, group: string, name: string) => void
+
+ /**
+ * Connects a specified Mixxx Control with a callback function, which is executed if the value of the control changes
+ *
+ * This connection has a FIFO buffer - all value change events are processed in serial order.
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ * @param callback JS function, which will be called every time, the value of the connected control changes.
+ * @returns Returns script connection object on success, otherwise 'undefined''
+ */
+ function makeConnection(group: string, name: string, callback: CoCallback): ScriptConnection |undefined;
+
+ /**
+ * Connects a specified Mixxx Control with a callback function, which is executed if the value of the control changes
+ *
+ * This connection is unbuffered - when value change events occur faster, than the mapping can process them,
+ * only the last value set for the control is processed.
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "VuMeter"
+ * @param callback JS function, which will be called every time, the value of the connected control changes.
+ * @returns Returns script connection object on success, otherwise 'undefined''
+ */
+ function makeUnbufferedConnection(group: string, name: string, callback: CoCallback): ScriptConnection | undefined;
+
+ /**
+ * This function is a legacy version of makeConnection with several alternate
+ * ways of invoking it. The callback function can be passed either as a string of
+ * JavaScript code that evaluates to a function or an actual JavaScript function.
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "VuMeter"
+ * @param callback JS function, which will be called every time, the value of the connected control changes.
+ * @param disconnect If "true", all connections to the ControlObject are removed. [default = false]
+ * @returns Returns script connection object on success, otherwise 'undefined' or 'false' depending on the error cause.
+ * @deprecated Use {@link makeConnection} instead
+ */
+ function connectControl(group: string, name: string, callback: CoCallback, disconnect?: boolean): ScriptConnection | boolean | undefined;
+
+
+ /**
+ * Triggers the execution of all connected callback functions, with the actual value of a control.
+ * Note: To trigger a single connection, use {@link ScriptConnection.trigger} instead
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "play_indicator"
+ */
+ function trigger(group: string, name: string): void;
+
+ /** @deprecated Use {@link console.log} instead */
+ function log(message: string): void;
+
+ type TimerID = number;
+
+ /**
+ * Starts a timer that will call the specified script function
+ *
+ * @param interval Time in milliseconds until the function is executed.
+ * Intervals below 20ms are not allowed.
+ * @param scriptCode Function to be executed,
+ * you can also use closures as:
+ * function() { print("Executed Timer") }
+ * @param oneShot If true the function is only once,
+ * if false the function is executed repeatedly [default = false]
+ * @returns timerId which is needed to stop a timer.
+ * In case of an error, 0 is returned.
+ */
+ function beginTimer(interval: number, scriptCode: () => any, oneShot?: boolean): TimerID;
+
+ /**
+ * Stops the specified timer
+ *
+ * @param timerId ID of the timer
+ */
+ function stopTimer(timerId: TimerID): void;
+
+ /**
+ * Jogwheel function to be called when scratching starts (usually when the wheel is touched)
+ * This function contains an parametrizeable alpha-beta filter, which influences the
+ * responsiveness and looseness of the imaginary slip mat
+ *
+ * @param deck The deck number to use, e.g: 1
+ * @param intervalsPerRev The resolution of the MIDI control (in intervals per revolution)
+ * @param rpm The speed of the imaginary record at 0% pitch (in revolutions per minute (RPM) typically 33+1/3, adjust for comfort)
+ * @param alpha The alpha coefficient of the filter (start with 1/8 (0.125) and tune from there)
+ * @param beta The beta coefficient of the filter (start with alpha/32 and tune from there)
+ * @param ramp Set true to ramp the deck speed down. Set false to stop instantly [default = true]
+ */
+ function scratchEnable(deck: number, intervalsPerRev: number, rpm: number, alpha: number, beta: number, ramp?: boolean): void;
+
+ /**
+ * Function to be called each time the jogwheel is moved during scratching
+ *
+ * @param deck The deck number to use, e.g: 1
+ * @param interval The movement value (typically 1 for one "tick" forwards, -1 for one "tick" backwards)
+ */
+ function scratchTick(deck: number, interval: number): void;
+
+ /**
+ * Jogwheel function to be called when scratching ends (usually when the wheel is released)
+ *
+ * @param deck The deck number to use, e.g: 1
+ * @param ramp Set true to ramp the deck speed up. Set false to jump to normal play speed instantly [default = true]
+ */
+ function scratchDisable(deck: number, ramp?: boolean): void;
+
+ /**
+ * Returns true if scratching is enabled
+ *
+ * @param deck The deck number to use, e.g: 1
+ * @returns True if scratching is enabled
+ */
+ function isScratching(deck: number): boolean;
+
+ /**
+ * If enabled, soft-takeover prevents sudden wide parameter changes,
+ * when on-screen control and hardware control divert.
+ * With soft-takeover you need to turn a hardware knob, until it reaches
+ * the position of the on-screen knob - than it takes over control.
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "pregain"
+ * @param enable Set true to enable soft-takeover for the specified control
+ */
+ function softTakeover(group: string, name: string, enable: boolean): void;
+
+ /**
+ * Inhibits a sudden value change from the hardware control.
+ * Should be called when receiving input for the knob/fader,
+ * that switches its behavior (e.g. Shift-Button pressed)
+ *
+ * @param group Group of the control e.g. "[Channel1]"
+ * @param name Name of the control e.g. "pregain"
+ */
+ function softTakeoverIgnoreNextValue(group: string, name: string): void;
+
+ /**
+ * To achieve a brake effect of the playback speed
+ * Both engine.softStart() and engine.brake()/engine.spinback() can interrupt each other.
+ *
+ * @param deck The deck number to use, e.g: 1
+ * @param activate Set true to activate, or false to disable
+ * @param factor Defines how quickly the deck should come to a stop.
+ * Start with a value of 1 and increase to increase the acceleration.
+ * Be aware that brake called with low factors (about 0.5 and lower),
+ * would keep the deck running although the resulting very low sounds are not audible anymore. [default = 1.0]
+ * @param rate The initial speed of the deck when enabled. "1" (default) means 10x speed in forward.
+ * Negative values like "-1" also work, though then it's spinning reverse obviously. [default = 1.0]
+ */
+ function brake(deck: number, activate: boolean, factor?: number, rate?: number): void;
+
+ /**
+ * To achieve a spinback effect of the playback speed
+ * Both engine.softStart() and engine.brake()/engine.spinback() can interrupt each other.
+ *
+ * @param deck The deck number to use, e.g: 1
+ * @param activate Set true to activate, or false to disable
+ * @param factor Defines how quickly the deck should come to normal playback rate.
+ * Start with a value of 1 and increase to increase the acceleration.
+ * Be aware that spinback called with low factors (about 0.5 and lower),
+ * would keep the deck running although the resulting very low sounds are not audible anymore. [default = 1.8]
+ * @param rate The initial speed of the deck when enabled. "-10" (default) means 10x speed in reverse.
+ * Positive values like "10" also work, though then it's spinning forward obviously. [default = -10.0]
+ */
+ function spinback(deck: number, activate: boolean, factor?: number, rate?: number): void;
+
+ /**
+ * To achieve a forward acceleration effect from standstill to normal speed.
+ * Both engine.softStart() and engine.brake()/engine.spinback() can interrupt each other.
+ *
+ * @param deck The deck number to use, e.g: 1
+ * @param activate Set true to activate, or false to disable
+ * @param factor Defines how quickly the deck should come to normal playback rate.
+ * Start with a value of 1 and increase to increase the acceleration.
+ * SoftStart with low factors would take a while until sound is audible. [default = 1.0]
+ */
+ function softStart(deck: number, activate: boolean, factor?: number): void;
+}