From 1f2356b0bc552b5225d2124c1432b65fdd8cfdb3 Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Sat, 19 Sep 2026 20:45:23 -0700 Subject: [PATCH] Bound stronger signal shaker to available output headroom --- roadscore/prototype/signal_shaker.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/roadscore/prototype/signal_shaker.py b/roadscore/prototype/signal_shaker.py index 4b9fc56a7c..1b2329e9bf 100644 --- a/roadscore/prototype/signal_shaker.py +++ b/roadscore/prototype/signal_shaker.py @@ -85,6 +85,8 @@ class SignalShaker: if self.stop_frame is not None: envelope=np.clip(1-(np.arange(start_frame,end)-self.stop_frame)/self.release,0,1).astype(np.float32) overlay*=envelope[:,None] + # Add percussion only within available sample headroom; preserve the source. + np.clip(overlay,-np.maximum(0.,1.+pcm),np.maximum(0.,1.-pcm),out=overlay) self.rendered_peak=float(np.max(np.abs(overlay),initial=0));self.rendered_active=self.rendered_peak>0 if not self.rendered_active:return pcm return pcm+overlay