From 6a749f93396681b1e5ba311d795d0633269f4822 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 17 Apr 2026 02:55:54 +0000 Subject: [PATCH] feat: implement advanced procedural drum synthesis based on DSP research - Update TR-808 and TR-909 drum models with velocity scaling and research-aligned micro-randomization. - Add 1000Hz smoothing Low-Pass Filter to TR-909 Kick body. - Implement master saturation (Drive) in DrumMachine using a soft-clipping WaveShaper. - Fix hi-hat volume routing and add global saturation control to audio store. - Implement 0.7-1.0 velocity randomization in the sequencer for analog feel. - Add 'DRIVE' control to the Drums UI. Co-authored-by: Pitrat-wav <255843145+Pitrat-wav@users.noreply.github.com> --- src/components/DrumsView.tsx | 13 +++++++++++-- src/components/SequencerLoop.tsx | 11 ++++++----- src/logic/DrumMachine.ts | 24 ++++++++++++++---------- src/logic/drums/TR808Clap.ts | 8 ++++---- src/logic/drums/TR808HiHat.ts | 4 ++-- src/logic/drums/TR808Kick.ts | 4 ++-- src/logic/drums/TR808Snare.ts | 6 +++--- src/logic/drums/TR909Kick.ts | 11 +++++++---- src/logic/drums/TR909Snare.ts | 6 +++--- src/store/audioStore.ts | 16 +++++++++++----- 10 files changed, 63 insertions(+), 40 deletions(-) diff --git a/src/components/DrumsView.tsx b/src/components/DrumsView.tsx index 2f322b33..fe5a6d9f 100644 --- a/src/components/DrumsView.tsx +++ b/src/components/DrumsView.tsx @@ -9,7 +9,7 @@ import { TransportControls } from './TransportControls' export function DrumsView() { const { kick, snare, hihat, hihatOpen, clap, kit, setParams, setKit } = useDrumStore() - const { drumMachine, volumes, setVolume } = useAudioStore() + const { drumMachine, volumes, setVolume, saturation, setSaturation } = useAudioStore() const updateDrum = (drum: 'kick' | 'snare' | 'hihat' | 'hihatOpen' | 'clap', params: any) => { setParams(drum, params) @@ -31,7 +31,16 @@ export function DrumsView() {
-

Настройки

+
+

Настройки

+ setSaturation(v)} + size={40} + /> +
{(['808', '909'] as const).map(k => (