From 6edb89e33c8b7257f0e3a2f7701cb02c68ce03a7 Mon Sep 17 00:00:00 2001 From: Me Here Date: Thu, 28 May 2026 22:16:36 -0500 Subject: [PATCH] PM_K-1 grid: smaller circles + align beats vertically across lanes Place step circles by proportional position in the bar (beat = column start) instead of centring in per-lane slots, so same-meter lanes' beats land at the same x (e.g. the 8-step hat's beats sit directly under the 4-step kick/snare). Cap circle radius at 6 (was up to ~18). Verified by printing per-lane beat x-positions + rendering the grid. Co-Authored-By: Claude Opus 4.7 (1M context) --- pico-cp/__pycache__/code.cpython-312.pyc | Bin 35561 -> 35600 bytes pico-cp/code.py | 8 +++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pico-cp/__pycache__/code.cpython-312.pyc b/pico-cp/__pycache__/code.cpython-312.pyc index 6a0ab7cfd180f47cef3190ce3511f7e9275c1c1d..0d95bcd3f52f48138f374e40d37a3d678ad2ed61 100644 GIT binary patch delta 782 zcmYjMT}V@582-NP9LLd=!u#^Q&-*;j`+h$rRFUT@ zW`$w$0f{e^t^4yFQ`e_cS~bbvuPD6PbUZcMXM^x{N`7<-1_gsi#*)ErRy0Zo6fz*4 zr~)8CQVGeJGo}5yEJ~P0WE5zHiPS>A;*;$X$}$rF^rl=rG7%Qx?oU00CYif{RN!a# zHKZV20%qU!;N}pSvxr4{F^|}rZdU-{Qz6qmh|Cg)7{Mqi3KkheT2U&;D2T-4(16R# zAs%VoniEvkPqN_60UN^}9EL3IR&2^Ui~}NXv>a@O02OqXVRtQS$ic>kDO}oCh=U@h zEBH^v-!58+oGTY{zz7_FLji$BpuI4=8Gr#$$>Cq3TXT|p&UYH%n!yEV#k+%N^?46_ zJ8s?auG77KFLt96{kpod|AEg-q`g+`3*XoQ6muO$;95zkd}c}$cTVf0-lQv{UbEO@?r24q zY?j-m>`6LZ;!0ZxzQH*ro1#rg?!9BqvDmqMX|=WOBXex zTaMIhUD6vpqFopIdO+1=Th(bY6HeJDs!WGQ+PwFiU3N=w|#say+`f;KT6@2+NO zOGvDpN~4H12m~c|nIMB6v_GI^FiQnKY(a1JWM8Qp&$Q+o!ng>zc(K+$NCEa9-E09hhT`h433b9yHB>|c7)u0uIz~r z>IiuZ1_}wbin>|dzRj|Z9a}Zx*})K~C*(B*=9F#cw#IvzMC3jt>tsai9mp#gW()YJ zkLDRU%;4+YM@X2Xo~uB;5e1V2fhvVcZ0@#!2J>z%!myiXaZZ`#v%rW-Nlz8l*C`%> z`nDdWs$PKJoISW=s9vhhLRJif$~_gf*uA4SKEh-989#n96pqR`X9OyCOye;AlqVsL z65XGr5Hdja=OaH@FWbKgAGFh9J0ak)!PlT+4s8MsgS1QxceBBD4Qn(%CTJ;0xIn|; z!rBN{y%&~X(Ye&P=&@Sc({=6hdoyam6g;U-@QG{Fxicpp4JCca3#t71`jm7ps&!iD z^z;e+^U?DQ+Nz?(j%2i=sQ`AY6Nhvb;;>p)o@ksFXKJ41O>`#%aYsfio@}0IPO7hp zQ^gBiOD$GQt9809-O{!kw1OR0r=AY#>EpW9)%``igjb?9qG+Sma`AbzQY>&e8(__E zTG4j^Z}I+cHDt^W!w!yJmPe}LhxvD;f`gy9XLJLW(LXjR$U@P2rTKDf16boltOUN9 iE3vPz`=SF%f0NDJBog3n3Add$oujTlYlHaaPV0YvhQ-zZ 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