Mixer Web UI

mixer_web is a Phoenix LiveView application served on port 8889. It polls the mixer’s
JSON sidecar files for meter and session data, and sends UDP control commands to the
mixer’s control plane on :19997 for any state-changing operation.


Fader Strips

Each configured channel appears as a vertical fader strip. From top to bottom:

  • Channel label — human-readable name from the label field in config (e.g. “Studio”).
  • Stereo VU meters — L/R peak levels, updated at ~10 Hz from meters.json.
    Mono channels show equal L/R peaks. The scale is linear 0–1 (full scale).
  • Gain fader — linear gain in the range [0, 2], displayed as dB. Unity = 0 dB.
    Drag up/down to adjust. The fader sends a set_gain command to the mixer, which
    ramps to the new value over ramp_ms (default 150 ms) for click-free transitions.
  • Mute button — mutes the channel on the main bus only. The monitor and cue
    buses are mute-exempt; they always pass signal regardless of mute state.

NOTE: Mute does not affect relay fan-out for the monitor or cue feeds. A channel muted
on main still appears in monitor and cue relay outputs. This is intentional for
headphone cue and monitor mixes.


Output Bus Controls

Below the channel strips, three output bus sections correspond to the main, monitor, and
cue buses:

Section Relay feed Default JACK ports
Main main_relay out_1, out_2
Monitor monitor_relay monitor_out_1, monitor_out_2
Cue cue_relay cue_out_1, cue_out_2

Each bus section has:

  • Bus gain fader — scales the relay send level for that feed (does not affect the
    JACK hardware output ports).
  • Relay on/off toggle — enables or disables UDP fan-out for this feed. Turning off
    a relay bus silences all clients subscribed to it without disconnecting them.

Session Panel

The sessions panel lists all active connections to the mixer. Entries are grouped by type:

Relay clients

Each shiloh-relay or shiloh-web-relay session shows:

  • Name — the --name the client registered with.
  • Feed — which bus feed the client is subscribed to (main / monitor / cue).
    Click the feed selector to reassign the client to a different feed. The change takes
    effect immediately without disconnecting the client, and is persisted to
    relay-assignments.json by client name.
  • Address — source IP:port of the UDP connection.

Broadcaster senders

Each active shiloh-broadcaster ingest session shows:

  • Name — the --name the broadcaster registered with.
  • Slot range — which ingest slots this sender occupies (e.g. slots 0–1 for stereo).
  • Packet rate — approximate incoming packets per second (should be ~375 for stereo
    at 48 kHz / 128 frames).
  • Connected at — time since the session was established.

Scene Management

A scene is a named snapshot of all channel fader positions and mute states. Scenes do
not include bus gain or relay assignment state.

Saving a scene

  1. Set all faders and mutes to the desired positions.
  2. In the scene panel, type a name in the text field.
  3. Click Save.

The scene is written to ~/mixer-state/scenes.json immediately.

Recalling a scene

Click a scene name in the saved scene list. The mixer ramps all faders from their current
positions to the stored positions over ramp_ms milliseconds (default 150 ms). During
the ramp, faders move smoothly with no audible click.

Deleting a scene

Click the delete icon next to the scene name. This removes it from scenes.json.

NOTE: Recalling a scene does not change mute states that differ from the scene
snapshot — check the MIDI panel or individual strips if mutes aren’t behaving as
expected.


MIDI Panel

The MIDI panel at the bottom of the page shows the live state of the MIDI modal
controller:

  • MODE — current modal state: IDLE, CHANNEL_SELECT, CHANNEL_CONTROL,
    TRANSPORT, or NAVIGATION.
  • CH — visible only in CHANNEL_CONTROL; shows which channel is being edited.
  • Recent keys — the last ~8 note-ons received, with the action each triggered in the
    current mode. A (em-dash) means the key arrived but wasn’t mapped in that mode.
  • Key reference — active bindings for the current mode.

If the panel shows “offline” or no key activity, check that shiloh-midi-sender is
running on the keyboard machine and that UDP is reaching :19999 on the server.


Ardour Transport Card

If shiloh-mixer is configured with an ardour_osc target and the WebSocket feedback
connection is active, a transport card appears showing:

  • Play / Stop / Record buttons (send OSC to Ardour :3819)
  • Marker navigation (Goto Start, Prev Marker, Next Marker, Goto End, Add Marker)

These send the same OSC commands as the physical MIDI keyboard Transport mode. Moving a
fader in Ardour updates the corresponding DAW-bus strip in mixer_web via the WebSocket
surface feedback connection.


Diagnostics Page

http://stg-srv001:8889/diag exposes a diagnostics view with:

  • Ardour Web Surface card — WebSocket connection state, strip count, channel→strip
    mapping, live event feed.
  • Ingest drops — per-slot counters for ring-full events (indicates the RT thread
    isn’t draining fast enough).
  • MIDI state — same as the main page MIDI panel, with additional detail.