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:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -277,6 +277,7 @@ public partial class MainViewModel : ViewModelBase
|
||||
MicSourceName = _layoutStore.LoadMicSourceName();
|
||||
AudioSyncOffsetMs = _layoutStore.LoadAudioSyncOffsetMs();
|
||||
MonoOutput = _layoutStore.LoadMonoOutput(); // applied to the mixer by the setter
|
||||
_musicPlayer.UserGain = (float)Helpers.GainDb.FromDb(TraxDefaultDb); // background by default
|
||||
try
|
||||
{
|
||||
var s = _layoutStore.GetSetting("ZoomShape");
|
||||
|
||||
Reference in New Issue
Block a user