From 69156209f575a7a86c162a41cea80c1f8e192b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Szak=C3=A1llas?= Date: Sun, 18 Feb 2024 13:49:07 +0100 Subject: [PATCH] fix fx params --- .lefthook.yml | 2 +- bun.lockb | Bin 269032 -> 269416 bytes package.json | 1 + .../launchcontrol-common/src/page/fxParam.ts | 3 ++- packages/mixxx/src/util.ts | 12 +++--------- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.lefthook.yml b/.lefthook.yml index 963c932..0e8d8df 100644 --- a/.lefthook.yml +++ b/.lefthook.yml @@ -9,4 +9,4 @@ pre-commit: run: bunx prettier --check {staged_files} tsc: glob: '*.{js,ts}' - run: bunx tsc -b + run: bunx tsc-files --noEmit {staged_files} diff --git a/bun.lockb b/bun.lockb index d18886fa6936f59e9ae78e731e57eb7d25900dd6..f3f56dfdac9982a80ee71a6dab3634102bb54f7a 100755 GIT binary patch delta 49630 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 i{C~>hZOoaEV2b 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 Ze;H4W2JP@pUIs-7)#|k-B;(q~{{c5I7f1jA diff --git a/package.json b/package.json index da71917..882f0f0 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "prettier": "^3.1.1", "rollup": "^3.19.1", "semantic-release": "^21.0.1", + "tsc-files": "^1.1.4", "typescript": "^4.9.5" }, "workspaces": [ diff --git a/packages/launchcontrol-common/src/page/fxParam.ts b/packages/launchcontrol-common/src/page/fxParam.ts index 036dbc5..2f0f6b4 100644 --- a/packages/launchcontrol-common/src/page/fxParam.ts +++ b/packages/launchcontrol-common/src/page/fxParam.ts @@ -8,6 +8,7 @@ import { root, setValue, } from '@mixxx-launch/mixxx/src/Control' +import { absoluteLin } from '@mixxx-launch/mixxx/src/util' import { LaunchControlDevice, MidiComponent } from '../device' export const makeFxParamPage = (_conf: FxParamPageConf, template: number, device: LaunchControlDevice) => @@ -122,7 +123,7 @@ export class FxParamPage extends Component { } const toEffectKnobRange = (value: number) => { - return value / 63.5 - 1 + return absoluteLin(value, 0, 1) } class FxComponent extends Component { diff --git a/packages/mixxx/src/util.ts b/packages/mixxx/src/util.ts index 8b04c23..9781d43 100644 --- a/packages/mixxx/src/util.ts +++ b/packages/mixxx/src/util.ts @@ -1,14 +1,5 @@ export type Action = (t: T) => void -/* -------- ------------------------------------------------------ - absoluteNonLin - Purpose: Maps an absolute linear control value to a non-linear Mixxx control - value (like EQs: 0..1..4) - Input: Control value (e.g. a knob,) MixxxControl values for the lowest, - middle, and highest points, lowest knob value, highest knob value - (Default knob values are standard MIDI 0..127) - Output: MixxxControl value corresponding to the knob position - -------- ------------------------------------------------------ */ export const absoluteNonLin = ( value: number, low: number, @@ -26,3 +17,6 @@ export const absoluteNonLin = ( return mid + (value - center) / (center / (high - mid)) } } + +export const absoluteLin = (value: number, low: number, high: number, min: number = 0, max: number = 127) => + ((high - low) / (max - min)) * (value - min) + low