diff --git a/pico-cp/__pycache__/code.cpython-312.pyc b/pico-cp/__pycache__/code.cpython-312.pyc index 6a0ab7c..0d95bcd 100644 Binary files a/pico-cp/__pycache__/code.cpython-312.pyc and b/pico-cp/__pycache__/code.cpython-312.pyc differ diff --git a/pico-cp/code.py b/pico-cp/code.py index 29ee85f..04ce3e5 100644 --- a/pico-cp/code.py +++ b/pico-cp/code.py @@ -464,12 +464,14 @@ class App: L = self.lanes[li]; y = top + li * rowh; cy = y + rowh // 2 tg, w, h = make_text((L.get('sound', '') or '?')[:7], FONT_S, C_MUTE, C_BG) tg.x = 8; tg.y = cy - h // 2; self.g_grid.append(tg) - steps = L['steps']; sub = L['sub']; px0 = 60; pw = (WIDTH - 8 - px0) // steps - r_big = max(3, min((rowh - 4) // 2, (pw - 2) // 2)); r_sml = max(2, r_big * 6 // 10) + steps = L['steps']; sub = L['sub']; px0 = 60 + usable = WIDTH - 8 - px0 - 12; stepw = max(1, usable // steps) + r_big = max(2, min(6, stepw // 2, (rowh - 8) // 2)); r_sml = max(2, r_big - 2) pads = [] for s in range(steps): rad = r_big if (s % sub == 0) else r_sml # big = beat (division), small = subdivision - c = vectorio.Circle(pixel_shader=self.pad_pal, radius=rad, x=px0 + s*pw + pw//2, y=cy) + cxp = px0 + 6 + (s * usable) // steps # proportional → beats line up across lanes + c = vectorio.Circle(pixel_shader=self.pad_pal, radius=rad, x=cxp, y=cy) c.color_index = self._padbase(L, s); self.g_grid.append(c); pads.append(c) self.lane_pads.append(pads); self.lane_lit.append(-1) self.dirty = True