Skip to content

Commit c753ea0

Browse files
bwhitmanclaude
andcommitted
Buses UI review feedback: bus level in FX header, drop value boxes
Per dpwe's review on #1132: - The bus master Level slider moves into the Effects column header, now titled "FX" (mobile keeps the "FX" panel label; the bus level is a desktop control there since the header bar is hidden). - Remove the numeric value boxes from both Level sliders (channel strip and FX header). - Remove the "Bus N" indicator text — redundant with the Bus pull-down in the channel strip. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent cbc7599 commit c753ea0

1 file changed

Lines changed: 10 additions & 28 deletions

File tree

tulip/amyboardweb/static/editor/index.html

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@
523523

524524
@media (max-width: 799px) {
525525
.patch-global-panel::before {
526-
content: "Effects";
526+
content: "FX";
527527
display: block;
528528
background: #1f2937;
529529
border-radius: 12px;
@@ -576,6 +576,8 @@
576576
font-weight: 700;
577577
align-items: center;
578578
justify-content: center;
579+
gap: 10px;
580+
padding: 0 12px;
579581
}
580582

581583
.patch-layout-body {
@@ -1457,7 +1459,6 @@ <h4 class="modal-title w-100 text-center" id="simulateWelcomeModalLabel">Welcome
14571459
<div class="col-12 col-md-auto mt-2 mt-md-0 d-flex align-items-center gap-2 ms-md-2">
14581460
<label class="text-nowrap mb-0 text-white" id="synth-level-label" for="synth-level-slider" style="font-size:0.875rem; cursor:pointer;" title="Click to set a MIDI CC for this channel's level">Level</label>
14591461
<input type="range" class="form-range" id="synth-level-slider" min="0.001" max="7" step="0.001" value="1" style="width:100px;">
1460-
<input type="number" class="form-control text-center knob-value" id="synth-level-number" min="0.001" max="7" step="0.001" value="1" style="width:60px; font-size:0.7rem; padding:2px 4px;">
14611462
</div>
14621463
<div class="col-12 col-md-auto mt-2 mt-md-0 d-flex align-items-center gap-2 ms-md-2">
14631464
<label class="text-nowrap mb-0 text-white" for="bus-select" style="font-size:0.875rem;" title="Which mix bus this channel's synth is routed to. Each bus has its own Effects.">Bus</label>
@@ -1469,19 +1470,17 @@ <h4 class="modal-title w-100 text-center" id="simulateWelcomeModalLabel">Welcome
14691470
</select>
14701471
</div>
14711472
</div>
1472-
<div class="patch-global-title">Effects</div>
1473+
<div class="patch-global-title">
1474+
<span>FX</span>
1475+
<label class="text-nowrap mb-0" id="fx-level-label" for="fx-level-slider" style="font-size:0.75rem; font-weight:400; letter-spacing:normal; text-transform:none; cursor:pointer;" title="Master level of this channel's mix bus. Click to set a MIDI CC.">Level</label>
1476+
<input type="range" class="form-range" id="fx-level-slider" min="0.001" max="7" step="0.001" value="1" style="width:100px;">
1477+
</div>
14731478
</div>
14741479
<div class="patch-layout-body">
14751480
<div class="patch-channel-panel">
14761481
<div class="row g-4 knob-grid" id="knob-grid-channel"></div>
14771482
</div>
14781483
<div class="patch-global-panel">
1479-
<div class="d-flex align-items-center gap-2 mb-2" id="fx-level-row">
1480-
<label class="text-nowrap mb-0" id="fx-level-label" for="fx-level-slider" style="font-size:0.875rem; cursor:pointer;" title="Master level of this channel's mix bus. Click to set a MIDI CC.">Level</label>
1481-
<input type="range" class="form-range" id="fx-level-slider" min="0.001" max="7" step="0.001" value="1" style="width:100px;">
1482-
<input type="number" class="form-control text-center knob-value" id="fx-level-number" min="0.001" max="7" step="0.001" value="1" style="width:60px; font-size:0.7rem; padding:2px 4px;">
1483-
<span class="small text-muted text-nowrap" id="fx-bus-indicator" title="The Effects column shows the effects of the bus the selected channel is on.">Bus 0</span>
1484-
</div>
14851484
<div class="row g-4 knob-grid" id="knob-grid-global"></div>
14861485
</div>
14871486
</div>
@@ -1990,15 +1989,13 @@ <h5 class="modal-title" id="adminTokenModalLabel">Admin Token Required</h5>
19901989
const loadPatchModalEl = document.getElementById("loadPatchModal");
19911990
const patchClearChannelButton = document.getElementById("patch-clear-channel-btn");
19921991
const synthLevelSlider = document.getElementById("synth-level-slider");
1993-
const synthLevelNumber = document.getElementById("synth-level-number");
19941992
const _synthLevels = {}; // per-channel level storage
19951993
function getSynthLevel(ch) { return _synthLevels[ch] != null ? _synthLevels[ch] : 1; }
19961994
function setSynthLevel(val, send) {
19971995
const ch = Number(window.current_synth || 1);
19981996
val = Math.min(7, Math.max(0.001, Number(val) || 1));
19991997
_synthLevels[ch] = val;
20001998
if (synthLevelSlider) synthLevelSlider.value = val;
2001-
if (synthLevelNumber) synthLevelNumber.value = val.toFixed(3);
20021999
if (send && typeof window.amy_add_log_message === "function") {
20032000
var code = "i" + ch + "v0a" + val.toFixed(3);
20042001
window.amy_add_log_message(code);
@@ -2015,22 +2012,16 @@ <h5 class="modal-title" id="adminTokenModalLabel">Admin Token Required</h5>
20152012
var ch = Number(window.current_synth || 1);
20162013
var val = getSynthLevel(ch);
20172014
if (synthLevelSlider) synthLevelSlider.value = val;
2018-
if (synthLevelNumber) synthLevelNumber.value = val.toFixed(3);
20192015
}
20202016
if (synthLevelSlider) {
20212017
synthLevelSlider.addEventListener("input", function() { setSynthLevel(synthLevelSlider.value, true); });
20222018
}
2023-
if (synthLevelNumber) {
2024-
synthLevelNumber.addEventListener("change", function() { setSynthLevel(synthLevelNumber.value, true); });
2025-
synthLevelNumber.addEventListener("keydown", function(e) { if (e.key === "Enter") setSynthLevel(synthLevelNumber.value, true); });
2026-
}
20272019
window.syncSynthLevelForChannel = syncSynthLevelForChannel;
20282020
window.setSynthLevelFromAmy = function(ch, val) {
20292021
val = Math.min(7, Math.max(0.001, Number(val) || 1));
20302022
_synthLevels[ch] = val;
20312023
if (Number(window.current_synth || 1) === ch) {
20322024
if (synthLevelSlider) synthLevelSlider.value = val;
2033-
if (synthLevelNumber) synthLevelNumber.value = val.toFixed(3);
20342025
}
20352026
};
20362027
// Clicking the "Level" label opens the same MIDI-CC popup the knobs use,
@@ -2074,11 +2065,9 @@ <h5 class="modal-title" id="adminTokenModalLabel">Admin Token Required</h5>
20742065
});
20752066
}
20762067

2077-
// The Effects column's master Level slider: the volume of the bus the
2078-
// current channel is on (amy volume vector entry for that bus).
2068+
// The FX column header's master Level slider: the volume of the bus
2069+
// the current channel is on (amy volume vector entry for that bus).
20792070
const fxLevelSlider = document.getElementById("fx-level-slider");
2080-
const fxLevelNumber = document.getElementById("fx-level-number");
2081-
const fxBusIndicator = document.getElementById("fx-bus-indicator");
20822071
function currentBus() {
20832072
return (typeof window.get_channel_bus === "function")
20842073
? window.get_channel_bus(window.current_synth || 1) : 0;
@@ -2088,16 +2077,13 @@ <h5 class="modal-title" id="adminTokenModalLabel">Admin Token Required</h5>
20882077
var vols = Array.isArray(window.amy_bus_volumes) ? window.amy_bus_volumes : [];
20892078
var val = (vols[bus] != null) ? vols[bus] : 1;
20902079
if (fxLevelSlider) fxLevelSlider.value = val;
2091-
if (fxLevelNumber) fxLevelNumber.value = Number(val).toFixed(3);
2092-
if (fxBusIndicator) fxBusIndicator.textContent = "Bus " + String(bus);
20932080
}
20942081
window.syncFxLevelForBus = syncFxLevelForBus;
20952082
function setFxLevel(val, send) {
20962083
var bus = currentBus();
20972084
val = Math.min(7, Math.max(0.001, Number(val) || 1));
20982085
if (Array.isArray(window.amy_bus_volumes)) window.amy_bus_volumes[bus] = val;
20992086
if (fxLevelSlider) fxLevelSlider.value = val;
2100-
if (fxLevelNumber) fxLevelNumber.value = val.toFixed(3);
21012087
if (send && typeof window.amy_add_log_message === "function") {
21022088
// Bus-addressed volume: y<bus>V<val> sets that bus's mixdown gain.
21032089
var code = "y" + bus + "V" + val.toFixed(3);
@@ -2111,10 +2097,6 @@ <h5 class="modal-title" id="adminTokenModalLabel">Admin Token Required</h5>
21112097
if (fxLevelSlider) {
21122098
fxLevelSlider.addEventListener("input", function() { setFxLevel(fxLevelSlider.value, true); });
21132099
}
2114-
if (fxLevelNumber) {
2115-
fxLevelNumber.addEventListener("change", function() { setFxLevel(fxLevelNumber.value, true); });
2116-
fxLevelNumber.addEventListener("keydown", function(e) { if (e.key === "Enter") setFxLevel(fxLevelNumber.value, true); });
2117-
}
21182100
// Clicking the Effects "Level" label opens the MIDI-CC popup for the
21192101
// bus's dedicated level knob (template i%iV%v — resolves the bus from
21202102
// the channel at CC time).

0 commit comments

Comments
 (0)