Show a Gain node as an orange device with one knob (#384)
A Gain node now draws a small device in the graph, as the Compressor does since #380: the brushed plate in orange, 160x220 graph units, with one chrome knob between its inputs and its output. - GainPanel and GainFace join the node faces. The knob drags, resets on a double-click and keeps the wheel for the graph (#383). Each turn is one undo step, a linked Gain (dB) greys it. - The knob turns with a taper of 0.26, so 0 dB stands straight up and the range below -24 dB takes a fifth of the turn. - drawPlate, engrave and the brushed look move out of CompressorPanel so both devices share them. The Knob takes an arc colour, because the orange arc vanished on the orange plate. - No meter and no tap. Gain sits in every voice of an instrument, and a tap would add two audio nodes to each note for a display nobody asked for. Found on the way: - Knob.dialGlobal added half the dial unscaled. In a zoomed graph it pointed beside the dial. The Compressor's e2e only hit by luck. Tests: - Unit: 2 new for the Gain plate and its taper. - e2e 34 on atx: ALL PASSED, 126 checks (1 new). - Gate on atx: CHECK EXIT 0, 283 files, 4359 tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
79a04e6764
commit
01ee61868b
12 files changed
+348
-48
No files matched your search
@@ -535,7 +535,7 @@ export const SoundFxOutput: SoundFxNodeDef = {
|
||||
emit: arriving,
|
||||
};
|
||||
|
||||
const GAIN = numberRow('gain', 'Gain (dB)', -120, 24, 0.5);
|
||||
export const GAIN_ROW = numberRow('gain', 'Gain (dB)', -120, 24, 0.5);
|
||||
|
||||
/** How an effect with a Bypass and a Wet says so, at the end of its description (#354). */
|
||||
const BLENDS =
|
||||
@@ -549,11 +549,11 @@ export const SoundFxGain: SoundFxNodeDef = effect(
|
||||
description:
|
||||
'Makes the sound louder or quieter, in decibels: 0 leaves it as it is, -6 is about half as loud, +6 twice. Above 0 it can clip.' +
|
||||
BLENDS,
|
||||
inputs: [audioIn, followingIn(GAIN)],
|
||||
inputs: [audioIn, followingIn(GAIN_ROW)],
|
||||
outputs: [audioOut],
|
||||
params: [],
|
||||
emit: (sounds, amounts) => {
|
||||
const db = held(amounts.gain, GAIN);
|
||||
const db = held(amounts.gain, GAIN_ROW);
|
||||
return withStages(arriving(sounds), isNone(db) ? [] : [{ kind: 'gain', db }]);
|
||||
},
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user