feat(dock): TRAX becomes a background level, not a channel strip

Creator ruling (2026-10-30): TRAX is background music and is controlled separately from desktop and
mic — so KISS it:

- TRAX loses its own ladder and slider. It is one number plus ±5 dB buttons, disabled at the ends
  (−60 dB floor, +6 dB ceiling).
- It STARTS at −50 dB, taken from the creator's own meter readings, and moves in 5 dB clicks. If that
  proves inaudible on their setup, six clicks lands at −20 — the buttons exist for exactly that, and
  `TraxDefaultDb` is one constant.
- Layout follows: Desktop's volume now sits directly beneath its ladder, and the TRAX row (name,
  play/pause, level) sits beneath that, inside the GAME bay. The bays are MIC | GAME+TRAX | LIP-SYNC.
- The metering tap on the player stays (it is how "is the music producing sound" is answered) but has
  no ladder of its own; the desktop bed already shows the music.

Guards updated: TraxBayTests now asserts the stepper wiring and that the row has NO SegmentMeter;
GameBayTests asserts the desktop fader sits below the desktop ladder.
This commit is contained in:
2026-10-30 13:46:05 -07:00
parent 93dc6592ac
commit ec293e54b0
6 changed files with 112 additions and 97 deletions
+17 -1
View File
@@ -63,7 +63,21 @@ public partial class MainViewModel
? BarOnBrush
: TraxError != null ? BarOffBrush : TraxIdleBrush;
/// <summary>The dock's TRAX fader, in dB. Unity means the bed's design level, not the raw file.</summary>
/// <summary>Where TRAX starts: quiet background under the desktop bed. The ±5 dB buttons are the
/// control surface — a creator who wants it louder clicks up three times rather than hunting a
/// 6px thumb on a 148px dock. (Creator ruling 2026-10-30, from their own meter readings.)</summary>
public const double TraxDefaultDb = -50;
public const double TraxStepDb = 5;
/// <summary>+6 dB is the ceiling; −60 dB is silence. The buttons disable at both ends.</summary>
public bool CanRaiseTrax => TraxVolumeDb < Helpers.GainDb.MaxDb;
public bool CanLowerTrax => TraxVolumeDb > Helpers.GainDb.FloorDb;
public void StepTrax(int steps) => TraxVolumeDb += steps * TraxStepDb;
/// <summary>The dock's TRAX level, in dB. Unity means the bed's design level, not the raw file.</summary>
public double TraxVolumeDb
{
get => Helpers.GainDb.ToDb(_musicPlayer.UserGain);
@@ -74,6 +88,8 @@ public partial class MainViewModel
_musicPlayer.UserGain = (float)gain;
OnPropertyChanged(nameof(TraxVolumeDb));
OnPropertyChanged(nameof(TraxVolumeDbLabel));
OnPropertyChanged(nameof(CanRaiseTrax));
OnPropertyChanged(nameof(CanLowerTrax));
}
}