From 7e0eea9cafbf5b0009822a8314fd59a31f8f342f Mon Sep 17 00:00:00 2001 From: Cam Gorrie Date: Sat, 29 Aug 2026 15:22:49 -0400 Subject: [PATCH 1/2] Iniital metronome --- common/token.py | 1 + modalapi/modhandler.py | 38 +++ modalapistomp.py | 1 + pistomp/config/schema_v1.py | 1 + pistomp/lcd320x240.py | 2 + pistomp/metronome/__init__.py | 16 + pistomp/metronome/__main__.py | 212 ++++++++++++ pistomp/metronome/client.py | 104 ++++++ pistomp/metronome/render.py | 318 ++++++++++++++++++ plugins/audio_midi/panel.py | 47 +-- tests/integration/conftest.py | 1 + .../clock_source_selected.png | Bin 17009 -> 17279 bytes .../test_eq_switched_off/eq_off.png | Bin 16858 -> 17132 bytes .../test_initial_render/initial.png | Bin 16991 -> 17261 bytes .../gain_set.png | Bin 17058 -> 17330 bytes .../opened.png | Bin 16991 -> 17261 bytes .../output_set.png | Bin 17171 -> 17331 bytes .../v_eq_shape.png | Bin 17952 -> 18108 bytes .../metronome_rolling.png | Bin 0 -> 7956 bytes tests/test_handler_cleanup.py | 1 + tests/v3/test_audio_midi_panel.py | 57 +++- uilib/glyphs/audio_midi_tile.py | 82 ++++- 22 files changed, 845 insertions(+), 36 deletions(-) create mode 100644 pistomp/metronome/__init__.py create mode 100644 pistomp/metronome/__main__.py create mode 100644 pistomp/metronome/client.py create mode 100644 pistomp/metronome/render.py create mode 100644 tests/snapshots/v3/test_audio_midi_panel/test_metronome_tile_snapshot_when_enabled_and_rolling/metronome_rolling.png diff --git a/common/token.py b/common/token.py index e665c6eaf..f5f8f8058 100755 --- a/common/token.py +++ b/common/token.py @@ -24,6 +24,7 @@ ID = 'id' LEFT = 'LEFT' LEFT_RIGHT = 'LEFT_RIGHT' +METRONOME_ENABLED = 'metronome.enabled' NAM_CAPTURE_GAIN = 'nam.capture_gain' NAM_OUTPUT_VOL = 'nam.output_vol' RIGHT = 'RIGHT' diff --git a/modalapi/modhandler.py b/modalapi/modhandler.py index 36722ee91..2d0647199 100644 --- a/modalapi/modhandler.py +++ b/modalapi/modhandler.py @@ -124,6 +124,7 @@ from pistomp.tuner import TunerPanel, TunerSourceFactory from pistomp.tuner.client import TunerClient from pistomp.tuner.engine import TunerBackend, TunerEngine +from pistomp.metronome.client import MetronomeClient from rtmidi.midiconstants import CONTROL_CHANGE from pathlib import Path @@ -230,6 +231,10 @@ def __init__(self, audiocard: Audiocard, homedir, data_dir="/home/pistomp/data") self._tuner_source_spec: str = "jack" self._tuner_muted: bool = False + # Metronome + self._metronome_enabled: bool = bool(self.settings.get_setting(Token.METRONOME_ENABLED)) + self._metronome_client: MetronomeClient | None = None + # Callback function map. Key is the user specified name, value is function from this handler # Used for calling handler callbacks pointed to by names which may be user set in the config file self.callbacks = { @@ -239,6 +244,7 @@ def __init__(self, audiocard: Audiocard, homedir, data_dir="/home/pistomp/data") "toggle_bypass": self.system_toggle_bypass, "toggle_tap_tempo_enable": self.toggle_tap_tempo_enable, "toggle_tuner_enable": self.toggle_tuner_enable, + "toggle_metronome_enable": self.toggle_metronome_enable, "next_pedalboard": self.next_pedalboard, "previous_pedalboard": self.previous_pedalboard, } @@ -266,6 +272,9 @@ def cleanup(self): if self._hardware is not None: self._hardware.cleanup() self.external_midi.close() + if self._metronome_client is not None: + self._metronome_client.stop() + self._metronome_client = None self.ws_bridge.stop() logging.info("WebSocket bridge stopped") self.ethernet_manager.shutdown() @@ -1829,6 +1838,35 @@ def system_menu_vu_calibration(self, arg): value = self.settings.get_setting("analogVU.adc_baseline") self.lcd.draw_vu_calibration_dialog("analogVU.adc_baseline", value, commit_callback=self.settings_file_commit) + # ── metronome ───────────────────────────────────────────────────────────── + + @property + def metronome_enabled(self) -> bool: + return self._metronome_enabled + + def start_audio_services(self) -> None: + """Start background audio subprocesses. Call once after full handler init.""" + self._start_metronome() + + def _start_metronome(self) -> None: + if self._metronome_client is not None: + return + try: + client = MetronomeClient() + client.start(enabled=self._metronome_enabled) + self._metronome_client = client + logging.info("Metronome subprocess started (enabled=%s)", self._metronome_enabled) + except Exception as e: + logging.warning("metronome: failed to start: %s", e) + + def toggle_metronome_enable(self) -> None: + self._metronome_enabled = not self._metronome_enabled + if self._metronome_client is not None: + self._metronome_client.set_enabled(self._metronome_enabled) + self.settings.set_setting(Token.METRONOME_ENABLED, self._metronome_enabled) + if self._lcd is not None: + self._lcd.update_audio_midi_tile() + def settings_file_commit(self, symbol, value): self.settings.set_setting(symbol, value) self.hardware.recalibrateVU_baseline(value) diff --git a/modalapistomp.py b/modalapistomp.py index 3ac03ac97..cfc07df72 100755 --- a/modalapistomp.py +++ b/modalapistomp.py @@ -172,6 +172,7 @@ def main(): # Load system info. This can take a few seconds handler.system_info_load() + handler.start_audio_services() elif is_emulator: from emulator.bootstrap import bootstrap_emulator diff --git a/pistomp/config/schema_v1.py b/pistomp/config/schema_v1.py index 763355f04..d311a8f96 100644 --- a/pistomp/config/schema_v1.py +++ b/pistomp/config/schema_v1.py @@ -125,6 +125,7 @@ "toggle_bypass", "toggle_tap_tempo_enable", "toggle_tuner_enable", + "toggle_metronome_enable", "next_pedalboard", "previous_pedalboard", ] diff --git a/pistomp/lcd320x240.py b/pistomp/lcd320x240.py index 569bbc393..7d031f3e0 100644 --- a/pistomp/lcd320x240.py +++ b/pistomp/lcd320x240.py @@ -1155,6 +1155,8 @@ def update_audio_midi_tile(self) -> None: muted = jm is not None and jm.is_muted() if muted: state = "muted" + elif self.handler.metronome_enabled and self.handler.transport_rolling: + state = "metronome" elif self.handler.transport_rolling: state = "rolling" else: diff --git a/pistomp/metronome/__init__.py b/pistomp/metronome/__init__.py new file mode 100644 index 000000000..c9f1cbd27 --- /dev/null +++ b/pistomp/metronome/__init__.py @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# This file is part of pi-stomp. +# +# pi-stomp is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# pi-stomp is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with pi-stomp. If not, see . diff --git a/pistomp/metronome/__main__.py b/pistomp/metronome/__main__.py new file mode 100644 index 000000000..86df179f4 --- /dev/null +++ b/pistomp/metronome/__main__.py @@ -0,0 +1,212 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# This file is part of pi-stomp. +# +# pi-stomp is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# pi-stomp is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with pi-stomp. If not, see . + +"""Metronome subprocess entry point. + +Spawned by MetronomeClient as ``python -m pistomp.metronome [enabled]``. + +Connects to JACK as ``pistomp-metronome``, registers stereo output ports, +and adds click audio directly to ``system:playback_1/2`` (JACK summing +means the existing mod-monitor→playback link is untouched). + +Transport sync: reads BBT from ``jack_transport_query`` in the process +callback. + +stdin control (one command per line): + enable — start clicking + disable — silence output (stay connected, write zeros) + stop — deactivate and exit +""" + +from __future__ import annotations + +import math +import select +import signal +import sys + +import numpy as np + +# ── click parameters ───────────────────────────────────────────────────────── + +_CLICK_DECAY_S = 0.060 # envelope length; 5τ ≈ e^-5 → effectively silent +_CLICK_VOL_ACCENT = 0.80 # downbeat (beat 1 of bar) +_CLICK_VOL_NORMAL = 0.55 # all other beats +_CLICK_HZ_ACCENT = 1000.0 +_CLICK_HZ_NORMAL = 700.0 + +# ── mutable state — written by main thread, read by RT callback ─────────────── +# CPython bool assignment is atomic under the GIL; no lock needed here. + +_running = True +_enabled = False + + +def _sigterm(_sig, _frame) -> None: + global _running + _running = False + + +def _precompute_click(sample_rate: int, hz: float, volume: float, decay_s: float) -> np.ndarray: + """Decaying sine burst as float32: vol·sin(2π·hz·t)·exp(-t/τ), τ = decay_s/5.""" + n = int(decay_s * sample_rate) + t = np.arange(n, dtype=np.float64) / sample_rate + wave = volume * np.sin(2.0 * np.pi * hz * t) * np.exp(-t / (decay_s / 5.0)) + return wave.astype(np.float32) + + +def main() -> None: + global _running, _enabled + + import jack # type: ignore[import-untyped] + + if len(sys.argv) >= 2 and sys.argv[1] == "enabled": + _enabled = True + + signal.signal(signal.SIGTERM, _sigterm) + + try: + client = jack.Client("pistomp-metronome", no_start_server=True) + except Exception as e: + print(f"metronome: JACK open failed: {e}", file=sys.stderr) + sys.exit(1) + + sr: int = client.samplerate + accent = _precompute_click(sr, _CLICK_HZ_ACCENT, _CLICK_VOL_ACCENT, _CLICK_DECAY_S) + normal = _precompute_click(sr, _CLICK_HZ_NORMAL, _CLICK_VOL_NORMAL, _CLICK_DECAY_S) + + # Capture constants into the closure — avoids repeated attribute lookups in the RT path. + ROLLING = jack.ROLLING + POSITION_BBT = jack.POSITION_BBT + + out_L = client.outports.register("out_L") + out_R = client.outports.register("out_R") + + # The click state. The callback keeps this state between calls. + # A dict lets the closure change the values without `nonlocal` or `global`. + # wave: the array that plays now, or None. + # pos: the count of samples that went to the output. + # beat: the index of the last beat that made a click. + # origin: the frame of beat 0 of this tempo segment. None means no lock. + cs: dict = {"wave": None, "pos": 0, "beat": -1, "origin": None, "bpm": 0.0, "bpb": 0} + + @client.set_process_callback + def process(frames: int) -> None: + buf_L = out_L.get_array() # pyright: ignore[reportAttributeAccessIssue] + buf_R = out_R.get_array() # pyright: ignore[reportAttributeAccessIssue] + buf_L[:] = 0.0 + buf_R[:] = 0.0 + + if not _enabled: + cs["wave"] = None + cs["origin"] = None + return + + state, pos = client.transport_query_struct() + if state != ROLLING: + cs["wave"] = None + cs["origin"] = None + return + if not (pos.valid & POSITION_BBT): + cs["wave"] = None + cs["origin"] = None + return + + bpm: float = pos.beats_per_minute + if bpm <= 0.0: + return + + bpb: int = max(1, int(pos.beats_per_bar)) + tpb: float = float(pos.ticks_per_beat) or 1920.0 + spb: float = sr * 60.0 / bpm # samples per beat + frame: int = int(pos.frame) + + # Step 1. Continue the click that started in an earlier buffer. + c_wave = cs["wave"] + c_pos: int = cs["pos"] + if c_wave is not None and c_pos < len(c_wave): + n = min(len(c_wave) - c_pos, frames) + buf_L[:n] += c_wave[c_pos : c_pos + n] + buf_R[:n] += c_wave[c_pos : c_pos + n] + cs["pos"] = c_pos + n + + # Step 2. Find the beat grid. + # JACK gives the tick as an integer. One tick is 12.5 samples at + # 120 bpm with 1920 ticks in a beat. Thus one read of the BBT data + # gives the position of the grid to 12.5 samples only. + # The integer tick makes an estimate late. It never makes an estimate + # early. Keep the smallest estimate. The smallest estimate moves to the + # correct origin, with an error of less than one sample. + elapsed: float = (int(pos.bar) - 1) * bpb + (int(pos.beat) - 1) + float(pos.tick) / tpb + estimate: float = frame - elapsed * spb + + origin = cs["origin"] + # An estimate more than one tick after the origin means the transport + # master moved the grid. A tap tempo that starts the beat again does + # this, as well as seeking. A new tempo or a new meter also ends the segment. + if origin is None or bpm != cs["bpm"] or bpb != cs["bpb"] or estimate > origin + spb / tpb + 1.0: + origin = estimate + cs["bpm"] = bpm + cs["bpb"] = bpb + cs["beat"] = math.ceil((frame - origin) / spb) - 1 + elif estimate < origin: + origin = estimate + cs["origin"] = origin + + # Step 3. Play each beat that starts in this buffer. + index: int = cs["beat"] + 1 + while True: + onset = round(origin + index * spb) - frame + if onset >= frames: + break + if onset < 0: + onset = 0 # The origin moved back. Play the click now. + new_wave = accent if index % bpb == 0 else normal + n = min(len(new_wave), frames - onset) + buf_L[onset : onset + n] += new_wave[:n] + buf_R[onset : onset + n] += new_wave[:n] + cs["wave"] = new_wave + cs["pos"] = n + cs["beat"] = index + index += 1 + + client.activate() + try: + client.connect("pistomp-metronome:out_L", "system:playback_1") + client.connect("pistomp-metronome:out_R", "system:playback_2") + except Exception as e: + print(f"metronome: JACK connect failed: {e}", file=sys.stderr) + + try: + while _running: + rlist, _, _ = select.select([sys.stdin], [], [], 0.05) + if rlist: + line = sys.stdin.readline() + if not line or line.strip() == "stop": + break + cmd = line.strip() + if cmd == "enable": + _enabled = True + elif cmd == "disable": + _enabled = False + finally: + client.deactivate() + client.close() + + +if __name__ == "__main__": + main() diff --git a/pistomp/metronome/client.py b/pistomp/metronome/client.py new file mode 100644 index 000000000..ac330c101 --- /dev/null +++ b/pistomp/metronome/client.py @@ -0,0 +1,104 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# This file is part of pi-stomp. +# +# pi-stomp is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# pi-stomp is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with pi-stomp. If not, see . + +"""MetronomeClient: spawns and controls the pistomp.metronome subprocess.""" + +from __future__ import annotations + +import os +import signal +import subprocess +import sys +from pathlib import Path + +# Absolute path of the repository root, injected as PYTHONPATH so the +# subprocess imports from the same source tree as the parent process. +_SRC_ROOT = str(Path(__file__).resolve().parents[2]) + + +class MetronomeClient: + """Manages the metronome JACK subprocess lifecycle. + + The subprocess (``pistomp.metronome.__main__``) connects to JACK as + ``pistomp-metronome``, registers two output ports, and writes click + audio directly to ``system:playback_1/2``. JACK sums multiple sources + connected to the same playback port, so the existing + mod-monitor→playback links are untouched. + + Control is via stdin, one ASCII command per line:: + + enable — start clicking + disable — silence (stay connected, write zeros) + stop — deactivate and exit + """ + + def __init__(self) -> None: + self._proc: subprocess.Popen[bytes] | None = None + + # ── lifecycle ──────────────────────────────────────────────────────────── + + def start(self, *, enabled: bool = False) -> None: + """Spawn the subprocess with the given initial click state.""" + env = os.environ.copy() + existing = env.get("PYTHONPATH", "") + env["PYTHONPATH"] = (_SRC_ROOT + ":" + existing) if existing else _SRC_ROOT + args = [sys.executable, "-m", "pistomp.metronome"] + if enabled: + args.append("enabled") + self._proc = subprocess.Popen(args, stdin=subprocess.PIPE, env=env) + + def stop(self) -> None: + """Send stop, wait, escalate to SIGTERM then SIGKILL.""" + proc = self._proc + if proc is None: + return + try: + if proc.stdin: + proc.stdin.write(b"stop\n") + proc.stdin.flush() + proc.stdin.close() + except OSError: + pass + try: + proc.wait(timeout=3.0) + except subprocess.TimeoutExpired: + proc.send_signal(signal.SIGTERM) + try: + proc.wait(timeout=2.0) + except subprocess.TimeoutExpired: + proc.kill() + proc.wait() + self._proc = None + + # ── control ────────────────────────────────────────────────────────────── + + def set_enabled(self, enabled: bool) -> None: + """Send ``enable`` or ``disable`` to the subprocess stdin.""" + proc = self._proc + if proc is None or proc.stdin is None: + return + try: + proc.stdin.write(b"enable\n" if enabled else b"disable\n") + proc.stdin.flush() + except OSError: + pass + + def poll(self) -> int | None: + """Return the subprocess exit code if it has exited, else None.""" + if self._proc is None: + return None + return self._proc.poll() diff --git a/pistomp/metronome/render.py b/pistomp/metronome/render.py new file mode 100644 index 000000000..f10aff699 --- /dev/null +++ b/pistomp/metronome/render.py @@ -0,0 +1,318 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# This file is part of pi-stomp. +# +# pi-stomp is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# pi-stomp is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with pi-stomp. If not, see . + +from __future__ import annotations + +import argparse +import importlib.util +import os +import sys +import types +import wave +from pathlib import Path + +import numpy as np + +_ROLLING = 1 +_POSITION_BBT = 0x10 + + +class _Position: + """The part of ``jack_position_t`` that the process callback reads.""" + + valid: int + frame: int + bar: int + beat: int + tick: float + ticks_per_beat: float + beats_per_bar: float + beats_per_minute: float + + +class _Port: + def __init__(self, frames: int) -> None: + self.buf = np.zeros(frames, dtype=np.float32) + + def get_array(self) -> np.ndarray: + return self.buf + + +class _Ports(list): + def __init__(self, frames: int) -> None: + super().__init__() + self._frames = frames + + def register(self, name: str) -> _Port: + port = _Port(self._frames) + self.append(port) + return port + + +class _FakeClient: + """Runs the callback from ``activate()``, after the callback is registered.""" + + def __init__(self, spec: RenderSpec) -> None: + self.samplerate = spec.samplerate + self.blocksize = spec.frames + self.outports = _Ports(spec.frames) + self._spec = spec + self._callback = None + self._frame = 0 + self.audio = np.zeros(0, dtype=np.float32) + + def set_process_callback(self, fn): + self._callback = fn + return fn + + def transport_query_struct(self) -> tuple[int, _Position]: + spec = self._spec + pos = _Position() + pos.valid = _POSITION_BBT + pos.frame = self._frame + beats, bpm = spec.beats_at(self._frame) + whole = int(beats) + frac = beats - whole + pos.bar = whole // spec.beats_per_bar + 1 + pos.beat = whole % spec.beats_per_bar + 1 + # A jack_position_t holds the tick as an int32. The value "float" for + # --tick-mode models a master that does not round the tick. This hides + # the error that the integer tick causes. + pos.tick = frac * spec.ticks_per_beat + if spec.tick_mode == "int": + pos.tick = float(int(pos.tick)) + pos.ticks_per_beat = spec.ticks_per_beat + pos.beats_per_bar = float(spec.beats_per_bar) + pos.beats_per_minute = bpm + return _ROLLING, pos + + def activate(self) -> None: + callback = self._callback + if callback is None: + raise RuntimeError("process callback was never registered") + spec = self._spec + total = int(spec.duration_s * spec.samplerate) + out = np.zeros(total, dtype=np.float32) + frame = 0 + while frame + spec.frames <= total: + self._frame = frame + for port in self.outports: + port.buf[:] = 0.0 + callback(spec.frames) + out[frame : frame + spec.frames] = self.outports[0].buf + frame += spec.frames + self.audio = out + + def connect(self, source: str, dest: str) -> None: + pass + + def deactivate(self) -> None: + pass + + def close(self) -> None: + pass + + +class RenderSpec: + def __init__( + self, + bpm: float, + frames: int, + beats_per_bar: int, + duration_s: float, + samplerate: int, + ticks_per_beat: float, + tick_mode: str, + tempo_changes: list[tuple[float, float]] | None = None, + grid_restarts: list[float] | None = None, + ) -> None: + self.bpm = bpm + self.frames = frames + self.beats_per_bar = beats_per_bar + self.duration_s = duration_s + self.samplerate = samplerate + self.ticks_per_beat = ticks_per_beat + self.tick_mode = tick_mode + self._segments = self._build_segments(tempo_changes or [], grid_restarts or []) + + @property + def samples_per_beat(self) -> float: + return self.samplerate * 60.0 / self.bpm + + def _build_segments( + self, tempo_changes: list[tuple[float, float]], grid_restarts: list[float] + ) -> list[tuple[int, float, float]]: + """Make the list of (start frame, beats at that frame, bpm). + + A tempo change keeps the beat phase. A grid restart sets the beat + position back to zero. A real timebase master does the same. + """ + events: list[tuple[int, str, float]] = [] + for at_s, new_bpm in tempo_changes: + events.append((int(at_s * self.samplerate), "tempo", new_bpm)) + for at_s in grid_restarts: + events.append((int(at_s * self.samplerate), "restart", 0.0)) + events.sort(key=lambda event: event[0]) + + segments = [(0, 0.0, self.bpm)] + for frame, kind, value in events: + start, beats_at_start, bpm = segments[-1] + beats = beats_at_start + (frame - start) * bpm / (self.samplerate * 60.0) + if kind == "tempo": + segments.append((frame, beats, value)) + else: + segments.append((frame, 0.0, bpm)) + return segments + + def beats_at(self, frame: int) -> tuple[float, float]: + """Give the beat position and the tempo at this frame.""" + start, beats_at_start, bpm = self._segments[0] + for segment in self._segments: + if segment[0] <= frame: + start, beats_at_start, bpm = segment + else: + break + return beats_at_start + (frame - start) * bpm / (self.samplerate * 60.0), bpm + + +def _fake_jack_module(spec: RenderSpec) -> tuple[types.ModuleType, list[_FakeClient]]: + module = types.ModuleType("jack") + made: list[_FakeClient] = [] + + def client_factory(name: str, no_start_server: bool = False) -> _FakeClient: + client = _FakeClient(spec) + made.append(client) + return client + + module.Client = client_factory # pyright: ignore[reportAttributeAccessIssue] + module.ROLLING = _ROLLING # pyright: ignore[reportAttributeAccessIssue] + module.POSITION_BBT = _POSITION_BBT # pyright: ignore[reportAttributeAccessIssue] + return module, made + + +def _load_entry_point(source: Path | None) -> types.ModuleType: + if source is None: + import pistomp.metronome.__main__ as entry + + return entry + spec = importlib.util.spec_from_file_location("metronome_under_test", source) + if spec is None or spec.loader is None: + raise RuntimeError(f"cannot load {source}") + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def render(spec: RenderSpec, source: Path | None = None) -> np.ndarray: + entry = _load_entry_point(source) + + fake, made = _fake_jack_module(spec) + saved_modules = sys.modules.get("jack") + saved_argv, saved_stdin = sys.argv, sys.stdin + + # main() waits in select() on stdin for a command. Send "stop" first. Then + # main() exits through its own deactivate and close path. + read_fd, write_fd = os.pipe() + os.write(write_fd, b"stop\n") + os.close(write_fd) + + sys.modules["jack"] = fake + sys.argv = ["metronome", "enabled"] + sys.stdin = os.fdopen(read_fd) + try: + entry.main() # pyright: ignore[reportAttributeAccessIssue] + finally: + sys.stdin.close() + sys.argv, sys.stdin = saved_argv, saved_stdin + if saved_modules is None: + del sys.modules["jack"] + else: + sys.modules["jack"] = saved_modules + + if not made: + raise RuntimeError("no JACK client was opened") + return made[0].audio + + +def write_wav(path: Path, audio: np.ndarray, samplerate: int) -> None: + pcm = (np.clip(audio, -1.0, 1.0) * 32767.0).astype(" None: + """Render a metronome WAV file for testing.""" + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("-o", "--out", type=Path, default=Path("metronome.wav")) + parser.add_argument("--bpm", type=float, default=120.0) + parser.add_argument("--frames", type=int, default=256, help="JACK buffer size") + parser.add_argument("--beats-per-bar", type=int, default=4) + parser.add_argument("--duration", type=float, default=8.5, help="seconds") + parser.add_argument("--samplerate", type=int, default=48000) + parser.add_argument("--ticks-per-beat", type=float, default=1920.0) + parser.add_argument("--tick-mode", choices=("int", "float"), default="int") + parser.add_argument( + "--source", type=Path, default=None, help="render this copy of __main__.py in place of the installed one" + ) + parser.add_argument( + "--tempo-change", + action="append", + default=[], + metavar="SEC:BPM", + help="change the tempo at this time. The beat phase stays continuous", + ) + parser.add_argument( + "--restart-grid", + action="append", + default=[], + type=float, + metavar="SEC", + help="set the beat position back to bar 1 beat 1 at this time", + ) + args = parser.parse_args() + + tempo_changes = [] + for item in args.tempo_change: + at_s, _, new_bpm = item.partition(":") + tempo_changes.append((float(at_s), float(new_bpm))) + + spec = RenderSpec( + args.bpm, + args.frames, + args.beats_per_bar, + args.duration, + args.samplerate, + args.ticks_per_beat, + args.tick_mode, + tempo_changes, + args.restart_grid, + ) + audio = render(spec, args.source) + write_wav(args.out, audio, args.samplerate) + + peak = float(np.abs(audio).max()) + clipped = int(np.count_nonzero(np.abs(audio) >= 1.0)) + print( + f"{args.out}: {args.bpm} bpm, {args.frames} frames, tick={args.tick_mode} → peak={peak:.4f} clipped={clipped}" + ) + + +if __name__ == "__main__": + main() diff --git a/plugins/audio_midi/panel.py b/plugins/audio_midi/panel.py index d768a38d1..63ea3e989 100644 --- a/plugins/audio_midi/panel.py +++ b/plugins/audio_midi/panel.py @@ -16,7 +16,7 @@ # along with pi-stomp. If not, see . """Audio & MIDI menu — the menu-idiom surface for the global EQ, input/output -levels, clock source, and VU calibration. +levels, clock source, and metronome. Composes the reactive ``PluginPanel`` core (via ``ModalDialog``) with a synthetic ``AudioMidiParamSource`` (no backing ``Plugin``) so the EQ bands @@ -26,7 +26,7 @@ Layout (``DIMMED_WINDOW`` 304×208 body + title strip + Back footer): - Left column: the Equalizer on/off row, the 5-band EQ bar curve (compact, - sized to its box), then Clock Source and VU Calibration drill-in rows. + sized to its box), then Clock Source and Metronome drill-in rows. The rows follow the menu system's padding (line-height spacing, h_margin=5, v_margin=1) so they read as-of-a-piece with the other menus. - Right column: Input Gain + Output Volume arc dials (stacked). @@ -35,10 +35,10 @@ the arcs and the EQ bars carry their own value readouts inline. NAV reticule scans: Equalizer → Low → L-Mid → Mid → H-Mid → High → Clock -Source → VU Cal → Input → Output → Back. Tweak1 edits the selection; +Source → Metronome → Input → Output → Back. Tweak1 edits the selection; Tweak2 = Input Gain; Tweak3/Vol = Output Volume (per §6). Clock Source -opens a radio submenu (Internal / Ableton Link / MIDI Clock Slave); VU Cal -opens the existing VU calibration dialog. Switching the Equalizer off drops +opens a radio submenu (Internal / Ableton Link / MIDI Clock Slave); +Metronome toggles the click on/off. Switching the Equalizer off drops the bands out of the NAV cycle and dims them. """ @@ -274,9 +274,9 @@ def _draw(self, ctx) -> None: class _DiscreteRow(RichTextWidget): - """A drill-in row (Clock Source / VU Calibration). ``symbol_for`` returns + """A drill-in row (Clock Source / Metronome). ``symbol_for`` returns None so ``SelectionEditEffect`` no-ops on it — the row is NAV-click-only, - opening a submenu/dialog rather than editing a continuous value.""" + opening a submenu or toggling a state rather than editing a continuous value.""" def __init__( self, *, box: Box, segments: list[Segment], action: Callable[[InputEvent], bool], font, parent: Widget @@ -332,7 +332,7 @@ def _btn(text: str, x: int, action: Callable[..., None]) -> Button: return ( _btn("Back", BTN_GAP, lambda *_: self._on_dismiss()), mute_btn, - _btn("Restart", BTN_GAP * 3 + btn_w * 2, lambda *_: self._on_restart()), + _btn("Adjust VU", BTN_GAP * 3 + btn_w * 2, lambda *_: self._on_vu_cal()), ) def title_text(self) -> str: @@ -344,7 +344,7 @@ def scheme(self): def __init__(self, *, handler: "Modhandler", on_dismiss: Callable[[], None]) -> None: self._handler: Modhandler = handler self._sync_row: Optional[_DiscreteRow] = None - self._vu_row: Optional[_DiscreteRow] = None + self._metronome_row: Optional[_DiscreteRow] = None self._eq_row: Optional[_DiscreteRow] = None self._bar_widget: Optional[_CompactEqWidget] = None self._in_arc: Optional[ArcKnobWidget] = None @@ -482,11 +482,10 @@ def _build_rows(self) -> None: parent=self, ) y += _ROW_H - vu_segs: list[Segment] = [TextSeg("VU Calibration"), Spacer()] - self._vu_row = _DiscreteRow( + self._metronome_row = _DiscreteRow( box=Box.xywh(cb.x0 + _ROWS_X, y, _ROWS_W, _ROW_H), - segments=vu_segs, - action=self._on_vu_row, + segments=self._metronome_row_segments(), + action=self._on_metronome_row, font=self._row_font, parent=self, ) @@ -506,8 +505,11 @@ def _sync_row_segments(self) -> list[Segment]: IconSeg(PillGlyph(label, height=glyph_h, color=DEFAULT_COLOR)), ] + def _metronome_row_segments(self) -> list[Segment]: + return [TextSeg("Metronome"), Spacer(), IconSeg(_eq_badge(self._handler.metronome_enabled))] + def _select_initial(self) -> None: - # NAV order: Equalizer → EQ bands (Low..High) → Clock Source → VU Cal + # NAV order: Equalizer → EQ bands (Low..High) → Clock Source → Metronome # → Input arc → Output arc → Back. if self._eq_row is not None and self._eq_supported: self.add_sel_widget(self._eq_row) @@ -518,8 +520,8 @@ def _select_initial(self) -> None: self.add_sel_widget(sel) if self._sync_row is not None: self.add_sel_widget(self._sync_row) - if self._vu_row is not None: - self.add_sel_widget(self._vu_row) + if self._metronome_row is not None: + self.add_sel_widget(self._metronome_row) if self._in_arc is not None: self.add_sel_widget(self._in_arc) if self._out_arc is not None: @@ -603,10 +605,13 @@ def _on_sync_row(self, event: InputEvent) -> bool: self._open_clock_source_submenu() return True - def _on_vu_row(self, event: InputEvent) -> bool: + def _on_metronome_row(self, event: InputEvent) -> bool: if event != InputEvent.CLICK: return False - self._handler.system_menu_vu_calibration(None) + self._handler.toggle_metronome_enable() + if self._metronome_row is not None: + self._metronome_row.segments = self._metronome_row_segments() + self._metronome_row.refresh() return True def _open_clock_source_submenu(self) -> None: @@ -679,10 +684,8 @@ def _on_toggle_mute(self) -> None: # open, but the next dismiss must show the post-toggle state. self._handler.lcd.update_audio_midi_tile() - def _on_restart(self) -> None: - # Mirrors handler.system_menu_restart_sound — restarts jack (which - # cascades to mod-host/mod-ui). The splash covers the teardown. - self._handler.system_menu_restart_sound(None) + def _on_vu_cal(self) -> None: + self._handler.system_menu_vu_calibration(None) def wants_fast_tick(self) -> bool: return True diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 3d2cb5444..71bd695fb 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -60,6 +60,7 @@ def _build_stack( patch("subprocess.check_output", return_value=b"SystemState=running"), patch("pistomp.lcd320x240.LcdIli9341", return_value=fake_lcd), patch("modalapi.modhandler.AsyncWebSocketBridge", return_value=fake_bridge), + patch("modalapi.modhandler.MetronomeClient"), ): # Tests don't drive a poll loop, so stub pending_op_count to always return 0 (no pending ops). mock_wm_cls.return_value.queue.pending_op_count.return_value = 0 diff --git a/tests/snapshots/v3/test_audio_midi_panel/test_clock_source_selected/clock_source_selected.png b/tests/snapshots/v3/test_audio_midi_panel/test_clock_source_selected/clock_source_selected.png index edf0797962bab1311fa117df6e283c2cfb8dbd09..6ad75f20935d41d5a648d46eb1870f50c88d3978 100644 GIT binary patch literal 17279 zcmbWfWl)vv8wYr3q(zaE?gr@)kPekDkx)RoB$O7AZV+h+K|(^1kdQ6~q`Q%p?q)CE z|L)Gt?1!CMKQKp5JcK$3*VJDAAu^GbzP41u6V zD9Sw2e4DzNhM^nRLDj)^>&12w;?Yqw%iXpGgdpd7L9MfDe}Todm9_p?3u}F%$pwqy zf(koFKOutnOdO26nv$x41V=b@;n8*1OmzqRuj)`SX?)Mc#KnL8Jf87zb8Fb1zTDb6 zrbA$&(z?7f@$e}w*`Dl`2^m61_Qk=(LUGc=G<}!&S)S+UgWd%va&K_ zE<+hv+0Dr+m5cAMx)XWa_Dm6oboYP(E`!y%xw(OXfp6cw{fcAK$k)s>?Cg85l=JkH zm@qqgVR<>9kdSVw#(fG3wL@ft-AvuMt@o{}#=jj=_;`4qMBi{CsCjvLMMOk6IEo4j z!+TySA4w4ehfCAOFMe2OmqvIL}R<8 z;fjoulx4h`hCtY_=hdKSNO*YaLyx2Dt78dGvJ+$hetsgC&IHkyk((Wyd|zgsqzF7Z zl%ghyiHS)Outi36r->3ba79ozW30q6seBS~DKHj6QivQFP-l%7ah{lwKyKQ(HcUXm zXi6y%k3ZTc+_Fk0&K3|9oWni0z<2>+8nG#`{lK>%(79_wkQL#T*hVhG8IitO<%oYj8`HW#;pDELswrvOyr^V*aCh?gs=IZ)LV$) z$VhZ)l=_voS-e8-RKcrP2Z0m`Kd#S$`2*O<5sfVg)CVGcs^}&Zl1}=)SUf|>bVZL| za~|)bGTAB5&_zyTLZsC zr`2yp_{YZfl?rWRv2}ANCnv`@liv6qxtKdz`xr{7fCCQ-seMi4)fJBe?}~TgDYk`` z7gO6dlbsKt?f5+pr^)sKk>bX?vzHo}u9=(R)lv1|N&D2%a5?7OZVT-r7C$U##U7?_ zrpurn_DuPhQyp!Xj|ezc2zGr|Zu~yuk-{vFiEKsIRKYZ5Wxx4c@;3LU$ppFWmT1}{ z4eF;)p9%|aXGf9nyc{nxOLQN%aeeg2H$R^xMuDA`H8d>DV|O8-51E0{SXz4PYkgrM z4h~Xa%In&`sRnuRA8CJxxT}aa&$Js!vL+UjD2@LX7Wdu@G}xra`)u2Uk6rDhc9(*m z`wvo`J$8LV9|K3`q87p(mwWi{CvkK7A7>;7A12qPs@j>!x5DIw{_+^ZseBY+ZR(5e^u>MtRp3m9ywP)v9T~6(&XnGFmmT@favGk%wA8~MO>T$Hk z$%G+Zkki%0X|9TgL)g4sHYM*s@?;X~J5j76`(^L9J7xa}A_MOIyF~7D5kX|c?h2F^ zJX);In>gJwUU?~hDmgj1L0DXE(W1D;ju(PipVCDUP{86?i@qymLo4;;IQ2XfE^Z>- zD&@y^p`kQ2V#4R4Us=se0U@5 z$*j*ca8m~3vmP%CB+}DzFR$@DNHn0rshD9Tvk0xDJxiYJ@=w!0o>empM&0VhMHu`% z8xZ-nc6T)TOU`fGkJbNd26rYr4WCUkO|KYSuIOLCW^(c9pDxZtpwZU8sb#-?&WE)=( z^jG;c*9&QG&s5m9Vs8!Iqd2|WT0h5`j(ErRDc-!-QUuw+$71>WbLM)p803h z-nyN(zZ%jz(jzO5Jn#R&m6BL+MY`wabiG?@E3SJ=Y}k;NFuK&ZGF=~d;wg~X^)kru zXr3Sq_1GuU%$(9exsiqiqfoq^-+ffjiAaC8J59vUDLjQUl(@}!>Gl?8 zWo5|Zc9GTGh*bx})|ouw-6!-nyI-)X&PTSt31^fBcu?78JI<2HZz=uFl12>~N9~s# zdpM1Q=8MC>u&^K!L=+oCY2yn`4jqdGImRU89Xyn4HZg|wkLQ4c<10!35T8B&7z_1* z?j!mMod9^o^jmo&^tfbkFOj3ee^#)BdT@g5E7?lN$oQqSl!uP)Z+8-JiBZExSM0}( zaSfM8lhd_tqDXn=1l%rWLH<$c0cOS-ei7j0wj2oq{Mf#u6rA-b?G$GmV;kNNnOrP z$f@rV5jC8xv(d&dZ}K=uOSg;^>E}L4xko~xtEx(U6@rI{he|m#?6E+1|3M#hETR+L zMj)l_C5O?>nzC%oj#7JPCuT$#wHDI$Y{PYvKZdQXt(%)$5FQ2c>*gqlD@-HOpK|IG zakp`ugi?cpgLnUS=5sU|fy2KMh zLz>^ret4Y=B=?Mu3)9kO6&Dxh!o4Hp-e%IhHJLrE7? zlA$2$&$|wmmMlU0BT3Kn_3=?&-7>j2*`1%CPvA7j>bFSuIvU59xX8$9`|C=S@L4`8 zi{do{L(a`U%pc0jWA+>*JBxmCgOVOaZ*15U@5}3qE-o%EFTcXa$G>wYZnDb0qqX(z z+qcFmgqZIy&yRxw1J~Eri}k*vQS|-Isjs!9_)zFj!{U zIc>hbObzSa_74s^jeUC|8M>n=H(_EdE=o|6Sj!+Pno`x@GBF0AlZlDR2X1|McsMC3 z$;kVZq2yI-_UF%Zyu40_>%*L!oOE)*`Sf$>rY&2m9pLr>*Q7 zii&F~_VvHIyKQW2WC-YUd7VE1f)QF-Ut5!vkr^5t?M)M{`uWp9O|5@)RFIXm;PYpc zt~*pz60f=^-x}7XZPMVSJzYt2FD)(299&yn=}8gXo~Xd?6l1^lZ)5zsqMdm-M!0cSf`Mw+8#-v zZ}`V0rug$`X~sA~m*$kXDnVTx9i|wy7V5^Kp%0^Ed+Wn&8iU1+D*(W@wzeJ+?M%rXhr7v_GnkjEq!PRFIO8UcA1jgFS%L@esrSz=>4!VEOEBndHh^iDxYJ#`&EZEi%0#M)fn{=Y8Dn1 zl~O+Nl~mQzTCydC5n%r#3*Vko(3V4Q$j7%v< zz2S5@Wq+l2zh2jp?->^kDZ%L-ZUi+wee2|;$NACb+1VMC6OZF9*_NcwsiJS5K6*62 zlI{Zo0Hx|`DZyx9aL`RY`_ZFEc6N3X6B95}(9m5MBRs^(ey@a4 z{RNjNohbokVlP$%HD*9Ft|K`)d96i%Rsc5fz}f*&6}#E`w5GS@-f>TJxeV*ZdV5Ri z>MrJ*{Aaz6DM}bTmwv|sm4j6TH4aegztNKIN-}M2?a38$eanrj(cTh49ua?b{IpIS2OE?aG)x&Z>~qCC z%K@PSMTwdTW-|?SrE^OL@AqA`q8_uLRW?RHLi3d@qvDyB*r}6I8q5`OKS8hJw(i0* z8)|rPm)ms5*k-=s?exR4tb%MTPqM0OySLmTnVTys@;T~Vzkl0J*JwSzu&X=rMZqF@ zK%z?h^>HHcy7(6Mt&d3wZrEDem9~>oQc`d61Kz*4nXRYjL_o)^mhb2jV18fgC0iy| zcbiu8XWqO1ODE$DUpe+*PZK){OErh^)-Vnh1>p*Fz6d!sR#w9Jj_&S4VlT^IWTmDS zEDWdv8uzD&kAmEh5N7tD5QvM53x~Zqs(8F_*tjt|H&1m=T&%lkj{F^5lFfe-UWTWQ z?dNQp&qNT6WlH42!P?esa?)ug@Mj8ly{MK%~J=rE{VuuxN#j}cz(4E|UUa|(-CbRG zj9S#6b!GyEGcoy`m#3?x)%I_qy}7x$v5}gC19#X}ULGUuX@`&6BWgk!-$L3*cl$KG zUG_DS5tS{9wzf8!G)zjYTeny^Ikk0kM*I34oSZxkR@I^^nKvdXz7`jALa&pM@HyF; z|Ng3HV04s=on6f9jBlG!4A{BXnKNu~G&D4kG)f|(_=JSfpSQbOTU-140eX~v`^L@0 zB;SXWkdtGksQ3#62W4etkQnGG$$xcqh4ngaePGde?c`)_Wp%VM-g11@ER5Qf&~rXW z%-D^+DbQ;q8fZ>`H7tLa1+#Ck%10;?^!^loJzt|MIyxF=4H~+09+1Z{u?|+w-a84)Qe$VjaEB|`Ip7(5? zzQ#;XaEUxz*>ra|I{+$rdU|H&&hBm;t&-~M>dH!iBR31{73O+pDX2Sy_I|N&ME@1_skfyyjL`R*8>aIXgSQcrgz{BZH;;+B3}G6s2IXyi4nqaQV0LtlCwNKx>0$J?_dg@t0CCp)0lwA~CNTrVRk zvgK}#hY%@TapbnMty#U75QD6v<8BO{e5L)Y_hRSm@)a9<`zVpDMi4Sq)slMB?h+G! zAGhJlDJzRrpwHq$BMdP$F^P+hZ=1aC>FW9$HoxPFV`FS=Y+@o!PYBbwzrXLu*}XCl z0kV;5y16r z3c+I|G)&ayZ!cPghKAlpk}A^20u0N0rNX?qxfu}=F{U$Al2TUo03oTR6)!{kWcB^= z-TD~Ugm*A1{WBL(Q`NQ$P|(iKcK7zqPX0!f_C=X=M7D`(f+D4*qhoUV_3Kwz3csbU zxyvsdrj=>g>$-RKSjS z0=}lPF{9`XS;R66PO6f!FQ7(I(b`*g7)i*;(9zI#ujo_Zw%n>E7K~p=+*(;J;$@>3 z-6E2Ot?Ye$mz?N0CNeT|w8ThMSa@FEV4jjL?w8UuO=R4`mH#hObX3&);+{gHqN3vB zl(=JRMn)=`s_!Y`az`)MKJQlNXI|(H@YKs-1vHcEqxj3vZjOJ?Ehs3cu090?N@}y@ z#Eq4WZE|u_R!hz^eQ}zQloT+*51a7^baZqNl58w2guE}_iu2Npu5Pcbjc-y{0`LQk za7=9HZ-@P{;Np0{G*Hv{h*{UiPvr zRPXyMEp2T|QP;<^vTdWIRk>~e)*NZi0F*EMxLPsjECmd<(wlDd)1BxcpUv1eu7-;T z?CdyUlsDG_=mGXBKqjba-QC@wA>*j0&RRy`Znc4W{NmbTwJ62DDmxB{w|dG`?Jon)dn=ws!vmeZW9nt3$2wot^DE8ue7kT%9=0v zh6Bsof;Ldd?c~8uWmZHcQj>@sB|0|7S{jX2gzGn z?DXO&5)g)f{I)k^>fv}VS0YK zz2dc#(8k0>^2y2h{Ji=33~xuNz2ZG)Ml93#`t7*}H{ONTkOl?%*oum2 z!P)nkIy%#}Oe0?uQX{-MIMlIjVsy>#uSRvhPD)SD?DDJx zl{Z>}URjyk+B&87jeUsQzu}=F8H(6v)Tm>~(xz#@2h6kZaH*=x2t`3`dnu!T;`HbRdz$u`sldmrF^TQpi2Y z%##-Q!%NgT&6U(QIB0KcYsS6aU*c&vYc~^qveS};P5j5ORzOun#b>y{Wnm~(k~(v>5z3j1? zx9~E$!NZe?TUYC0upH8TyvY}sMb6OA=5y04kFvxoEA0<^G2(uGm|(>l3kdAQJ?09V zBF`>XbacDs%^z;<>r(|_GNhL3kbQ~7_wv!Azh8nu?PkD2)j=?2j(KK?dk|PHpaMJ% zJUipmuX28OGXj{obPKDrsW|EOJ?h#-!XLou4D`CC%ZF=z`!UwZ z*)2V_#q~UKDSE=Rv^2*D04ykF1>!Joa4XWIv6W`V1=BvBZ)XR!;a3(x(Cos(up^g9 z52W8tG`ajFREUu3& zR9}>9R6_M@sH|j3dTd@wyZ&#I{-&VZid?ZZNWTL~(v>U~FV7*f{1 zt-2iECRNZ6df&ywYMF8#H~d(y=isav^F7^s#SbM^1|M4=jWU)r*{HlI3+e3g5glfc zz{*E7QWtf5j^4A2QnxFu0aXIeBq1Tu)Y4+0rx)|NdTt@W!NGwMv=uSAwzhU+Hx*R# z?&t7OvjyL}&m>ouZlOzCTS(T=y`#H2_7xE?_`IxiPKV73`&`;cLkQW7dL~2fRYpJF zeD<)5)#PqTZC`34Q|Vqro#l2=j8?wE5^q;%+z7u8y;6avJ^wcMGm`izEpO7VHU_&j zt*=7jXR*6CnK-Z_n|k-Vh^0QsL9ql=3l00;4kIWbJm8hB5-M2OOz~clnegoyLd&3dOr;RlkVJR2-@0Zq!ZRq7c%nbJ4)DchH4bl> z_1G9a6H`Z98|*$HrsLnu;}o(}Q}0tzQ9Z(q`(+ApkDAV}o}SJ8CA~7G7!c#*L&h`@AkHPKU4&eYvq-7YrKWRVx?8?$uFfTFR5NS`U^|&iC^Z^y^u*CNI(y z`hK<>O{S~-Ogm0rFX2eq^LXMqfu_dW!f^UaY7nfxjm^z;F}DY<8)JjHDpbO+O+h;H z_4UQ{8yg$j01tBK?!B<#u`yt@Gsj zxxEzkB%s$SV~vp6s7LedY1*0>*X##&c*>xAk4oGV^UQan9Gm0Z3iW&-S8A5Hdt-6& z{ZT4N0#;UFK6>curvPRNxx;j{H4Ru!)aS~Ri76L^hMly;_;`M+p*-=URE*qrZKt&Z zvh29>gZ)8;TrPRp-yH_d4aLI@gW@=S_fpn`;A_+WWc|%P{&^v;ezLbUPatZTGV-&F z{QdHMLA(1Cj{Iw=h`zBgu-!yGPaHs?LVX0l^oQeLRJ3qvg%>Yqwy&Bf^@`4jgjc2H zhei`_S^Ov*yvGr<_m_74Yu8Cv3FqI5ECzLNFB$Z&;n!L{tR_S9rV3v!nlbOiNyrd{ z>1i90(8TP~t<(M1y;w>p{Y|^hpy556|Fs*}AUFBr4#wHxub)P{59czTri6ut*45Po z%Pas^`(^q-gpX*60fU@8At6D+{Xju(h>Z%_PC6QPNgbJ7QD1Db;>!w}%zvS7{Nc|s z8TjMgm%G5WX#DzO2#X^>iT?edc4~Q~PD>uqGj(1?TZPG*1(*Nch+^He@Y#R(^~%M1 zoQE8Cg~6^I%94W+Jt51(htnM$^2*B41xNEDunupB-QhWqWeNxgP~WfQQ7G(VcAz9l zr{Tw+5=~7_eemD`CaRR7;ir@oeJ7{=P$IU+Po7LpObFPFWqkhZPaPZ<7G_NRtgLf2 zmMJ^Vw-^o8uLDFB0#rpMr2!CH2M47S0$7=u7nhc3FkjD09piDDJz;r0h>U^&J91`h zEH5+DaeatI_iCe`vTG*oC@-IfGtK=isZrkUO=mSqFnC zs9jWJOSrC#|5p~^oDS`GR~HCk9_56}?J-P9($rqLpxCtFOE|l_QVQBVud>cGqhdDh zR9$pqlDvxXx18 z6!{1;m(#r^kV64Ed!KJsf!O+Qq^M=QOak@-;$2Ws$I<4b)9cp)HUwMA@?YK=Saedi zf=V`&r{?0~0*1Pcm6ejRa#%=6|IiTl@&Y8!ZzLfaV8VH$Y(tks2x=}ad}XS~H^1e; zjQWe61QPT?w9z%P9@Ico` z4h;Tj96}LnE%^X5ld9l(lV%fyK7uSAoC|&7q|u`C8g0os`)B>~WmaC^TTsAbV+o-;6B837`$mI8o|?*jGB`0g*~XHjK#z5g zVZ8>FoP|+fE*>DHVET!99BqKRQ5PhBec?nzL^Sl^0JP1cU8(3yT4NAW)IQ4v1O*8S z3aTVMFoSnMo3tQtLH7OTdAbKC{Y<Bro zZ_bZaTLSBx+E%W7T67d;1!c(JD?VpM#%pwYejH6bDp=F=c6#AvtxS&5dFuhk9MECV zMhe$J^l8RRN=ebt(t>uUXaIU(L1reXFUUmPe$=3vt}4H8nJ+Id4>tM$?}70i{;DG? zQiB|pR6wAzvQpck)RPT22$#H_%^2C2;O^bl zm!(jk)HO8DU(>Ld6y^&3^ZHrg^yGfe@cUP)TH4<-SanskzC;YQ5b|QD92>Dzf6~-= zMyFk6frzn0`mS3DYs{?c6^i zQGiJ6tX4p~3kDt8pa#+y@ECKG+vMVK)Chri`0yvJacxaa0?hY@MhbxQFyq9^rFHZ| z1~|kcm#u=X%sp0po-^2A@NU~#d12_w(b@lYc9w!dCn3>bJz88*S?TWKQB_&_B|95| zfDyg8ygdKmj=m}N*~FNOs|3`bmqDN-^rlNhd26ewC2_xyQd5gLi4nrV!CCH2_knE! z+!LvsYyvJ zP1rfv*&F}p!51$tKe#yEmy?tG^XHERXhnX0QusBju$@+=!>{rQP-$WmKuv$lcqcA3 zFMWi=Pj>z}@n)*LtZYvrkF<_X)ns#sOcpe*h=?BWInbiO1=4%=47ASUOR3BEqYe>) z?!WFFh8EB0lmHwh{d=PJMZ(ov;p=xLdg5u!NP-9BZYJ2p6>ObKR^I6kJMYW zCb+XMLY)wK%f(>T8i7uBL#WuWy*ysoMk*DHQ)nb5PwHw9&J48AUkLKZ&^rY6X+D(2 z*N-rZ!!?f_A#UiF6)odz4Rv;6xhsSoDEZ^z3d!!oOda9!#HE|#^+;8Dn3LOkWEa9MxxWNN`6Ww3A+YEfS_&68E7Vjo4% zKn$_de{x2{*oZmmxf1fF7L-p4+1i&#z_Ax^mCTcYxVxv6So59mdl-FX7aAhkpp}ES z1hu4_OPrfD+T~dv7H$l=f=r)7i@uiLV%bO?;TLOTD<|s)8+1(###i?b8%u3?^hNp1 z>0N6LpOqP`dQU~r3wIbq(>$t*I=I+H7g|R{ye+<{N(Y#3VYhVi@TjIL52xTa)_w>1 zfwQ)vtG+R_u|n@B*{L8kUm4?RilDd`ZyWFYI!X;#F#eK!7{&AyeJ>mJ;%Ct7SFN-J za}sYcYN}Bd-ZeNo%34I;9SVyK(s{o;XBxdnsBF>d*NKt&wNQovhEc-xdn#9qR3_%M zq#SJwtYQrLLD&%<>sI=auFmW5rv*VR@2BtG20zoE46NiueX4wEo-)6Bn0*YsH5uthu+B3(7TU!%fCwpi%y9j{pqeRfv#T=yty@YGDKgGFj>Sbh(ui_o7*p876zrT8-uC8uowglG) z8=@ne^bRrc8?e|(d0#11Ga}xpNL(HOlmg57aA${GKwzfAdi3n@UzP17<7INEi9>XK z-ymCY8r$owH=Evei*`KVhx774#4_9Zg`BIaK-@297ne;-%8P#sL)!IdV(tg45VlMc zeN${uDjp{weTUzMY*p$!sW9aA! zM|0%^pmjQ)^*UbHe~+1K4Y{)_ngz*A8QK>m;Sj;OjmXH)zlAX7Cegh*J9Fo|EuAXn zH@ei;|NMz;h!7^)#juVMgb*$c230)Qq9`BM_*~Z;Ujat~@DvSvfh4@MQ^CW-W9Bo| zOr7HA`NhR{APYOKL~u3u?$TMQ=3KwG;#MO{tJ5$pg*R)@2LwOp0- zy-(yYgqsumGj?JDQX#>?a}fbS8j!YFfm{YO1Mo^icOZY_e$m_#gbzA$+b=Q4g;ubx zLCOML4bTffQ){aX~eY0&?VHIyoW8`%>Tx!yxUGyxV{@tm9 zqGA%CWh`_4oKA*5(7db5a{xwAUq=h|{Ef^(viN@oEP~w`elY^TfRAiX);2RUD_=_i zVWZ*tDvY`lwC;i0SOa!hfrea@ADm@vxgd*YXSWW1x27F!YI>xl#SgnI*X`TaS$9p* z^|12(uh+OU*CLCpDRY-4@+DVqhKMcEpFK~B6r&NUd=&j=XN?q%v1lz32JfX84FU!fx>l_}Am&%-~bK~XY z#Crn#bQO|FyZbwtCBuiukZxhqE*t|N7f7K6U$T%OL1+GLmOe{QCEgoQSB+gBeVf&9vXQVHLuLPiPHuDJ2|7PB;{M-P|j2 zeV>x@CItXCBHTBy(IZZLL`HJcrHAcgCDg9fo%t3T8k!({Do$3`*e?{C?lGh!IC8K` zswKWo(w>&qPB;w^M9WB31R;Sh~@ZS$ro_!K;#E%9$n;}eW(_AK_#EUss5|)Zu`rIQ7*DCvguxn{UYttxgQ~SN0UoQK_NKN zR*NcTovzH|*bY2Ph=eC|c`bIv++ln?_r%iH*6ZSgXM6D*j8Ik88(4IRjG`hA8k!d% zD+w(;R!{(bks{)<4)f5bMeFxpWeZZZ-^M{lX+TE2^YcT7oy}iSJd;*YQIW$i^U*F< z1ORP&TifaRd7J`0^-7-wU&!Rl&Kv4OWLw*`ogHRe+^eL_PYWw6qyIiX2ul1I0yV#E zd;>gbsEo3*vSblQn^m)w<>j6`O&FeXg}~6?I6Ge)P1*z2g!0zk-w*WwLU__qHMO-j zWxV=z+suq1&_*yBED)Ua@w(d$*WQqV17Z?jmH0IG8n_tmt8P^djlt2;>%};g#K+6f zBwF*|!LIc1IIs6QhX4!+!+`P+4%Rg4E$QpK=7+|Ihbu};cLC)>;Dwcy6?Pr?nzOZU zxJbgk3b|XgTGcOc{0>G#*KC}uv~4-{&5~=5<$tM&vwO{IXlQ7GnFT8t5{j^b7?eL^ z8Yl?^V+KGDHxU>Z2p@${brlK9q0VS$XXn{dNUdycZEUzcgO%f@X#QwPNWI0Pd-J%nd&{XxOLa#eGY`x}xD5cq#;IT)CH ze0Q<0Xss2re@y( zZmIV%GO3kVm-RiDVAi90Dhi6}o|LM~eU%efcfwXf=YFIhqd$E*@^7@7@7XAGzCOgl z9m91Y?O+^?aS|wrKv|xIC2mD)qIXN zLbe-bLnzY3r+v;2ius-JDO(@9(b{FZz)ArS54#ph>=dv=rJRrP@zXUf$|AO0SP(2N zd-|ffQ^0lE!iz}uWfhMGxR=oCNW+USr9F?@QUvLqrk;dJQiHZq{H($oY#t1}iwWBz zphOUFgP=y*Q!Y-<P7J;*rX%hyx-j#+A%E;kaPD<(a`8I_1K$PUk+{=@l|8GFxRW*bT49LCIQ!OU6$>#{K7q z^d6);f^*|Rg^x9PBi#?=MIY0~fEKair3OX?NRg`ZfB*Ver^Z;k;wg5Lq)?SMEbIr(MJ z22`BWdZooIa{Q$?DNO&UdV9@P-K+Ey@nN-GICA}l9^NR)jX=ISp7r_u{d)qto}aft znW>_TjEvL1DE5fs1wFXv-r!zC%kWA_Nlp&kYnduCF$Z`ARr&htUkRW=h!tXEW0OOe z(On_c2|gM!sgFMQQ;K_%+`i2NaH$%iA88`P=^0~`ji(T(Za1f?AB z9nwGjAmy3mL*|^(dR(zxUhcT@QDRGAGA6?H&Xla&8L$O|pYARS3Y{=SXf0oi z;WOqZQ`I1{XyzE@9YtVn<4;x!B6*d~cx*yP+6eRuP#e+#PC~5PEkgIiI~J{@QR%Dl_-59#R;!FsXVo5p8Jc&24!l-@F5=YEKlLV2+e#x-Umusm%PIVJwL<($c| z#(AyO#GaUAbLOY0kkHuB(7}95kS^`4PUg}W20EKi7RE} zHXGI;PRq)oZR^;y{LXMZ?}kj=${~Z5iHZLN9pRljrEl(#ooA&RY7zes_5J?G-m626 zRO$6c2Q?_yy}v_iPv=+rKX*h?2?_{!?=GMvJ+6na3lKN3%22(2fJ)fjE(e}b(*WS| z90_}RHf-TPslwkOIRol=y0DWREzIbD)7c)Qy8VYpYr^>TdG}2&>4yAi<=nniPS@-Aeb6Yfg)U5?I$K5eei<(|A-eF{yb~+MF9c* zKN}Dt51HRlF#Yb{ySMixJ2w~Krq^u_?YWkgEMpvGrUC?>lMC2dJ~@e4K- z02^>=P9nzO%m6?jo{m4TkxWW;fll4ab@vjk%9W7!2H^4w1{%oi)b#WnLc+Hwky$%l zn@q3QI6%!Y-fw9Lbn@8qGd5sFeFPNdlZ21=@zyk8cnHHgpZHT_8dYJVOfKjf8eXmT z)A7*RC?Sz4*I^(P5)!hzzfTTU z=ZhCF+}%Mjtp&1?xbO16ON*2oH9nwFwEfazVfnWZ&*P!HOS0-Dk&>2H!ZABx2#AB< zU`2o#29>Jb^Yk@b7AmrD%e=80s$0L}ix-)7>C0<~m zx@q|{0!;k7SP;@D_tMsX_6*1gApJ9b_&?Lk(wt6cxHdNOnjM2S{PvF$JE;!VK?oXY zsF1L51eL@LgxU%USjEM!VB@IQmYaG3oP@XvwX_)rA1ZRpO<>{waWv)s&qHaoM&PU9 z3X!iqlXSloAoYkq#>j|jriq5txHE$WY$R@O0-P6%ij7tFv+d8B!HHOgdK3L-cGasI zzYf3n`*&VH>gm8L&$EMk)4wSP7uj{vU265K%%oM~~q}dLIyQ8xs|jAppjx7#KcB{fL<;cm(!mcqjGlS^9iUn~p=Y|dn!q49y?k71Vg-Y!0 z+}0Kzf}oCw1ctk~px{}(r|`#{Sl@>acayv%e&@V{V+vq8i#>b@FMju>J5@MNk~;d= zBD6%{;OvHVBu^w<);|FIhNjNW&JKnOkjqjj=DSL87TD5q4Mz1e>rR*WeY_R8xtlmX z!WfK8d`dCESIrV;{aLa=_0v7~Zuv^??Cl{VQpMZ`VA?>@>+arwj4sd&iX9q7Rnzfn$Uq zzuz$X%YwW-63Fd+?+6`eht_i_l<3A zx?h&cMUbH(bbmO!01OLT(OrSoWR7O@4mJe}@LBi-vIy6U6GuKTIFAATD7+Wb4_0%g zuN9QnaT@_L#nh;qOaEmG$36%;IpX8vtL&ylUM~hi)rTdjqEhwk8v+3-!;IcLDLvq8 z%6$HccNfkYkw(Z_+uO?%WY^Td(k8)8F}AXrn3@Wg^&mRKAd-Fbs0ljI@y7T*$OT~A z*4EVcZ839j{Dd+!aaE#Qx&R4duv;F2uhw^r9S8>)@7;BmjE0@zAe0KF7^0FrNxT>c z2rProSPdeBYQ83I%n2OX$l`EJF3?W5xkbdc{JfMjd@j+!t8IuN)lx@L?jpTY~kH2a#L|3ab_ z&Wl^z;-K|Dgv(iqOh z^xJ@l0PPi;$QuWTzJY#@ByIFJGX2@4BmBWNsV zH=0~g(L+ecLaOz}8nj-p^j9Zu1oHX$*gc?fhqzWRS>tpkbc&*bt^%r#g`J%@ zluq8OMoXJN;Wk@KXzR0qiK?HMjmNxT?Dy4 zj|h6+uvACm$7b(}tgHnc&~V{+6k}Y{r%zW+7*rWar*;9ezf zz=r``w0x4RKF;9$JnV;K^-0`|bvYJ){DlH}DK!BOYrK`28UHuwz9tkP-UFua_Y@#( z4pgUVYTA`l>%ZO^!(&WLhU|OLOQO5%$0$Wz_P!O3mIn!zW1u}U1@H=AEL5T}n_DMv zP!EBy`GkuM@u>fP1)1S@)C%hA1Clz>OAX*?!TVzTm|M`CZljXs6^+3kSGaTc?)(2z zMbS_CiL3s*r@K zsDGTu$jGmHk`HG*wv!SQgD2iXVEW|@v|iZjAQT-3In%%=!a-ArbfO|7Nrzse{1UF5 WJb%5<34d4vp(y)QrdZ0@@BaX>bjhUv literal 17009 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 HGz|PNEa8Gq literal 16858 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 diff --git a/tests/snapshots/v3/test_audio_midi_panel/test_initial_render/initial.png b/tests/snapshots/v3/test_audio_midi_panel/test_initial_render/initial.png index f87c41465023c625b2edf158ebff16624f14489e..37a01bc8c53b310c5f66e93e21dfebaffeb26a23 100644 GIT binary patch literal 17261 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 diff --git a/tests/snapshots/v3/test_audio_midi_panel/test_levels_and_v_eq_drives_alsa_writes/gain_set.png b/tests/snapshots/v3/test_audio_midi_panel/test_levels_and_v_eq_drives_alsa_writes/gain_set.png index 4ccc9707d465638105bbe03061255b931e6cdd08..7a16f1d1777d5b211674bf4e2f28faaadfb37344 100644 GIT binary patch literal 17330 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 diff --git a/tests/snapshots/v3/test_audio_midi_panel/test_levels_and_v_eq_drives_alsa_writes/opened.png b/tests/snapshots/v3/test_audio_midi_panel/test_levels_and_v_eq_drives_alsa_writes/opened.png index f87c41465023c625b2edf158ebff16624f14489e..37a01bc8c53b310c5f66e93e21dfebaffeb26a23 100644 GIT binary patch literal 17261 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 diff --git a/tests/snapshots/v3/test_audio_midi_panel/test_levels_and_v_eq_drives_alsa_writes/output_set.png b/tests/snapshots/v3/test_audio_midi_panel/test_levels_and_v_eq_drives_alsa_writes/output_set.png index 36c3e1f460ef792e8b2e91089a035095ae03566f..debc52b469bf6d8e73e0de76b00eb7b279665061 100644 GIT binary patch literal 17331 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 literal 17171 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 diff --git a/tests/snapshots/v3/test_audio_midi_panel/test_levels_and_v_eq_drives_alsa_writes/v_eq_shape.png b/tests/snapshots/v3/test_audio_midi_panel/test_levels_and_v_eq_drives_alsa_writes/v_eq_shape.png index 66c30f58e043478e2d26b91c7fb3b729a10440cd..cda55c72dcaf097f29b525a9d60781ab1cc4f776 100644 GIT binary patch literal 18108 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 literal 17952 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≫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 literal 0 HcmV?d00001 diff --git a/tests/test_handler_cleanup.py b/tests/test_handler_cleanup.py index 1068516c7..ffb9e36e2 100644 --- a/tests/test_handler_cleanup.py +++ b/tests/test_handler_cleanup.py @@ -16,6 +16,7 @@ def test_cleanup_closes_external_midi(self): h._hardware = None h.external_midi = MagicMock() h.ethernet_manager = MagicMock() + h._metronome_client = None h.ws_bridge = MagicMock() h.cleanup() h.external_midi.close.assert_called_once() diff --git a/tests/v3/test_audio_midi_panel.py b/tests/v3/test_audio_midi_panel.py index 32195b0da..a5f538c92 100644 --- a/tests/v3/test_audio_midi_panel.py +++ b/tests/v3/test_audio_midi_panel.py @@ -1,7 +1,7 @@ """Audio & MIDI menu — snapshot and behaviour tests. Covers the new ``AudioMidiPanel`` surface (``docs/audio-midi-menu.md``): -EQ curve + IN/OUT arcs + Clock Source/VU Cal rows, the declared-bindings +EQ curve + IN/OUT arcs + Clock Source/Metronome rows, the declared-bindings tweak model, and the ``syncMode`` echo → Clock Source pill repaint. To regenerate snapshots after intentional UI changes: @@ -378,7 +378,7 @@ class TestAudioMidiTileGlyph: def test_each_state_renders_16x16_srcalpha(self): from uilib.glyphs.audio_midi_tile import audio_midi_tile_glyph - for state in ("nominal", "muted", "rolling"): + for state in ("nominal", "muted", "rolling", "metronome"): g = audio_midi_tile_glyph(state) assert g.get_size() == (16, 16), state assert g.get_flags() & pygame.SRCALPHA, state @@ -403,6 +403,23 @@ def test_rolling_glyph_has_play_triangle_nominal_lacks(self): assert nominal.get_at(apex)[3] == 0 assert rolling.get_at(apex)[3] > 0 + def test_metronome_glyph_has_pendulum_that_rolling_lacks(self): + from uilib.glyphs.audio_midi_tile import audio_midi_tile_glyph + + rolling = audio_midi_tile_glyph("rolling") + metronome = audio_midi_tile_glyph("metronome") + # (12, 0) is in the pendulum arm's outline (tip cap) and is outside the + # play-triangle's 1.5px outline by ~0.6px (triangle edge signed dist ≈ -2.6px + # at this pixel, more negative than the -2.0 threshold for the band). + arm_px = (12, 0) + assert metronome.get_at(arm_px)[3] > 0 + assert rolling.get_at(arm_px)[3] == 0 + # Play-triangle apex at (15, 5) is present on rolling, absent on metronome + # (x=15 is outside the trapezoid body at y=5). + apex = (15, 5) + assert rolling.get_at(apex)[3] > 0 + assert metronome.get_at(apex)[3] == 0 + class TestAudioMidiTileState: """The toolbar tile (w_eq) reflects jack_mute / transport_rolling. @@ -467,3 +484,39 @@ def test_mute_via_panel_swaps_tile_to_muted_glyph(self, audio_midi_system: Syste # Restore to keep the shared fixture tidy. jm.unmute() handler.lcd.update_audio_midi_tile() + + def test_tile_shows_metronome_glyph_when_enabled_and_rolling(self, audio_midi_system: SystemFixture): + handler = audio_midi_system.handler + handler.lcd.draw_main_panel() + handler._metronome_enabled = True # type: ignore[attr-defined] + cast(FakeWebSocketBridge, handler.ws_bridge).inject("transport 1 4.0 120.0 link") + handler.poll_ws_messages() + handler.poll_lcd_updates() + cur = self._w_eq_surface(audio_midi_system) + # Pendulum tip visible; play-triangle apex absent. + # (12, 0) is in the pendulum arm outline; outside play-triangle and all bars. + assert cur.get_at((12, 0))[3] > 0 + assert cur.get_at((15, 5))[3] == 0 + + def test_tile_shows_rolling_not_metronome_when_disabled_and_rolling(self, audio_midi_system: SystemFixture): + handler = audio_midi_system.handler + handler.lcd.draw_main_panel() + handler._metronome_enabled = False # type: ignore[attr-defined] + cast(FakeWebSocketBridge, handler.ws_bridge).inject("transport 1 4.0 120.0 link") + handler.poll_ws_messages() + handler.poll_lcd_updates() + cur = self._w_eq_surface(audio_midi_system) + assert cur.get_at((15, 5))[3] > 0 # play-triangle apex + assert cur.get_at((12, 0))[3] == 0 # no pendulum + + def test_metronome_tile_snapshot_when_enabled_and_rolling( + self, audio_midi_system: SystemFixture, snapshot + ): + """Full-display snapshot: rolling + metronome on → metronome glyph in toolbar.""" + handler = audio_midi_system.handler + handler._metronome_enabled = True # type: ignore[attr-defined] + handler.lcd.draw_main_panel() + cast(FakeWebSocketBridge, handler.ws_bridge).inject("transport 1 4.0 120.0 link") + handler.poll_ws_messages() + handler.poll_lcd_updates() + snapshot("metronome_rolling") diff --git a/uilib/glyphs/audio_midi_tile.py b/uilib/glyphs/audio_midi_tile.py index a1bdd92f0..439aec2ba 100644 --- a/uilib/glyphs/audio_midi_tile.py +++ b/uilib/glyphs/audio_midi_tile.py @@ -22,20 +22,24 @@ 6/14/16/8 px from left so the nominal glyph reads as the familiar EQ icon) and the muted/rolling states are its visible mutations: -- ``nominal`` — blue EQ bars (idle, transport stopped). -- ``muted`` — red bars with a diagonal slash — the universal mute glyph. -- ``rolling`` — blue bars with a play-triangle overlay — transport is rolling. - -The play-triangle is analytically anti-aliased with a 1.5px black outline, -mirroring ``paint_circle_handle``'s eraser/fill construction (dilated black -mask pasted first, coloured mask pasted on top — the exposed rim reads as -the outline). Other primitives use the jaggie pixel look to stay close to -the original ``eq_blue.png`` silhouette. +- ``nominal`` — blue EQ bars (idle, transport stopped). +- ``muted`` — red bars with a diagonal slash — the universal mute glyph. +- ``rolling`` — blue bars with a play-triangle overlay — transport is rolling. +- ``metronome`` — blue trapezoid body with a pendulum arm — metronome is enabled + and transport is rolling (replaces the EQ-bar silhouette entirely + so the icon is instantly recognisable as a click source). + +The play-triangle and metronome body are analytically anti-aliased with a 1.5px +black outline, mirroring ``paint_circle_handle``'s eraser/fill construction +(coloured fill pasted first, black band pasted on top — the exposed rim reads as +the outline). Other primitives use the jaggie pixel look to stay close to the +original ``eq_blue.png`` silhouette. Rendered at 16×16 with ``pygame.SRCALPHA`` and cached per state. The LCD's ``update_audio_midi_tile()`` swaps these into ``w_eq`` based on the handler's -``jack_mute`` / ``transport_rolling`` state. ``draw_tools()`` seeds the tile -with the nominal glyph so the procedural pipeline owns the surface from t=0. +``jack_mute`` / ``transport_rolling`` / ``metronome_enabled`` state. +``draw_tools()`` seeds the tile with the nominal glyph so the procedural +pipeline owns the surface from t=0. """ from __future__ import annotations @@ -48,7 +52,7 @@ import pygame -State = Literal["nominal", "muted", "rolling"] +State = Literal["nominal", "muted", "rolling", "metronome"] _SIZE = 16 # Same blue as the toolbar image; same red as a footswitch-toggled mute. @@ -75,6 +79,30 @@ ) _PLAY_OUTLINE_PX = 1.5 # black eraser dilation, matching circle handle's outline band +# Metronome body — isosceles trapezoid rendered as a plain filled polygon +# (no AA outline; dilated edge-to-edge to compensate). The body occupies +# y=4..15, full-canvas-width at the base tapering to 6px at the top. +_METRONOME_BODY_PTS: tuple[tuple[int, int], ...] = ( + (0, 15), # bottom-left (full canvas width at base) + (15, 15), # bottom-right + (11, 4), # top-right (6px wide at top, centred on x=8) + (5, 4), # top-left +) +# Pendulum arm — represented as a thin 2px-wide rectangle so the same +# _polygon_masks AA+outline construction as the play-triangle applies. +# Fulcrum at (8, 13): x-centre of the tile, ~80% down the body height +# (body spans y=4..15 → 80% = y≈13), 2px above the base. +# Tip at (12, 1): arm swings right at ~18° from vertical. +# +# Perpendicular half-width 1.0px → 2px total arm thickness. +# dx=4, dy=-12, len=√160≈12.649 → perp unit = (12/len, 4/len) +_PENDULUM_VERTICES: tuple[tuple[float, float], ...] = ( + (8.949, 13.316), # fulcrum + perp + (12.949, 1.316), # tip + perp + (11.051, 0.684), # tip - perp + ( 7.051, 12.684), # fulcrum - perp +) + def _bar_x(i: int) -> int: # Centre the 4-bar block (4*2 + 3*2 = 14 px) within the 16-wide glyph. @@ -183,6 +211,34 @@ def _paste(cov: np.ndarray, rgb: tuple[int, int, int]) -> None: _paste(band, _ERASER_COLOR) # 1.5px black rim over fill's edge +def _draw_metronome(surf: pygame.Surface, body_color: tuple[int, int, int]) -> None: + """Plain-fill trapezoid body + AA-outlined pendulum arm. + + Body uses ``pygame.draw.polygon`` (no outline, dilated to compensate). + Arm uses the same ``_polygon_masks`` AA+outline construction as the play- + triangle: white fill pasted first, 1.5px black rim pasted on top. + """ + # Body first so the arm renders on top at the fulcrum overlap + pygame.draw.polygon(surf, body_color, _METRONOME_BODY_PTS) + + cov_inner, band, ox, oy = _polygon_masks(_PENDULUM_VERTICES) + + def _paste(cov: np.ndarray, rgb: tuple[int, int, int]) -> None: + alpha = (cov * 255).astype(np.uint8) + h, w = alpha.shape + tmp = pygame.Surface((w, h), pygame.SRCALPHA) + pixels = pygame.surfarray.pixels3d(tmp) + pixels[:] = rgb + del pixels + pa = pygame.surfarray.pixels_alpha(tmp) + pa[:] = alpha.T + del pa + surf.blit(tmp, (ox, oy)) + + _paste(cov_inner, _TRIANGLE_FILL_WHITE) # white arm fill over body + _paste(band, _ERASER_COLOR) # 1.5px black rim + + @lru_cache(maxsize=4) def _render(state: State) -> pygame.Surface: surf = pygame.Surface((_SIZE, _SIZE), pygame.SRCALPHA) @@ -192,6 +248,8 @@ def _render(state: State) -> pygame.Surface: elif state == "rolling": _draw_bars(surf, _NOMINAL_COLOR) _draw_play_triangle(surf, _TRIANGLE_FILL_WHITE) + elif state == "metronome": + _draw_metronome(surf, _NOMINAL_COLOR) else: _draw_bars(surf, _NOMINAL_COLOR) return surf From a9f496980035b3fcefbdee8b930373f6f26cc0ae Mon Sep 17 00:00:00 2001 From: Cam Gorrie Date: Sat, 29 Aug 2026 15:25:14 -0400 Subject: [PATCH 2/2] metronome: join subprocess teardown to the 0.25s budget (TEARDOWN_JOIN_S) --- common/util.py | 3 +++ pistomp/metronome/client.py | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/common/util.py b/common/util.py index 06a6fb660..2d6d710da 100755 --- a/common/util.py +++ b/common/util.py @@ -18,6 +18,9 @@ import math from typing import Any +# Teardown join budget for subprocesses +TEARDOWN_JOIN_S = 0.25 + def LILV_FOREACH(collection, func): itr = collection.begin() diff --git a/pistomp/metronome/client.py b/pistomp/metronome/client.py index ac330c101..d83c226c4 100644 --- a/pistomp/metronome/client.py +++ b/pistomp/metronome/client.py @@ -25,6 +25,9 @@ import sys from pathlib import Path +from common.util import TEARDOWN_JOIN_S + + # Absolute path of the repository root, injected as PYTHONPATH so the # subprocess imports from the same source tree as the parent process. _SRC_ROOT = str(Path(__file__).resolve().parents[2]) @@ -74,11 +77,11 @@ def stop(self) -> None: except OSError: pass try: - proc.wait(timeout=3.0) + proc.wait(timeout=TEARDOWN_JOIN_S) except subprocess.TimeoutExpired: proc.send_signal(signal.SIGTERM) try: - proc.wait(timeout=2.0) + proc.wait(timeout=TEARDOWN_JOIN_S) except subprocess.TimeoutExpired: proc.kill() proc.wait()