Show a Pan node as a one-knob device in cyan (#392)
After the Gain, the Pitch and the Mix, the Pan is the next node that is just one number. It now gets the same device in the graph instead of a row for its pan. - PAN_DEVICE: the Gain's 160x160 plate in cyan with one bipolar knob for Pan. The middle stands straight up, and the turn goes evenly to L and R, which are engraved at its ends like A and B on the Mix. - PAN_TAPER in hardwareView is 1, so left and right are heard alike. Device and unit test read the same constant. - PAN_ROW is exported from the core, so the knob has the node's range. - A linked Pan greys the knob, as for the Gain. - The test hook __gm.pan.panel returns the same shape as the Gain's. - No instrument preset uses a Pan, so no preset columns change. Tests: - Unit hardware-view: 17 tests, 2 new (the turn, and L and R inside the plate and clear of the screws). Counter-check: PAN_TAPER 2 turns the turn test red. - e2e 34 (melektaus-atx): 135 checks, 1 new. - Gate (melektaus-atx): 287 files, 4399 tests. - Pictures looked at: Gain, Pitch, Mix and Pan in a row, Pan at -0.35. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
fe4e0d9f1a
commit
389d9555fa
8 files changed
+102
-12
No files matched your search
@@ -999,7 +999,7 @@ export const SoundFxFlanger: SoundFxNodeDef = effect(
|
||||
'own',
|
||||
);
|
||||
|
||||
const PAN = numberRow('pan', 'Pan', -1, 1, 0.01);
|
||||
export const PAN_ROW = numberRow('pan', 'Pan', -1, 1, 0.01);
|
||||
|
||||
export const SoundFxPan: SoundFxNodeDef = effect(
|
||||
{
|
||||
@@ -1009,11 +1009,11 @@ export const SoundFxPan: SoundFxNodeDef = effect(
|
||||
description:
|
||||
'Moves the sound left or right: -1 is all left, 1 all right, 0 leaves it in the middle. A mono sound is spread on both sides and then moved. A stereo sound keeps the side it goes to, and the other side moves over into it: at 1 both sides are heard on the right. It can change while the sound plays, and in an instrument an Envelope can move it.' +
|
||||
BLENDS,
|
||||
inputs: [audioIn, followingIn(PAN)],
|
||||
inputs: [audioIn, followingIn(PAN_ROW)],
|
||||
outputs: [audioOut],
|
||||
params: [],
|
||||
emit: (sounds, amounts) => {
|
||||
const pan = held(amounts.pan, PAN);
|
||||
const pan = held(amounts.pan, PAN_ROW);
|
||||
return withStages(arriving(sounds), isNone(pan) ? [] : [{ kind: 'pan', pan }]);
|
||||
},
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user