-
Notifications
You must be signed in to change notification settings - Fork 0
Authentic TR-808 and TR-909 Drum Synthesis Implementation #120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -44,12 +44,13 @@ interface DrumState { | |
| } | ||
|
|
||
| export const useDrumStore = create<DrumState>((set) => ({ | ||
| kick: { steps: 16, pulses: 4, rotate: 0, decay: 0.5, pitch: 0.5, probability: 1.0 }, | ||
| snare: { steps: 16, pulses: 2, rotate: 4, decay: 0.5, pitch: 0.5, probability: 1.0 }, | ||
| hihat: { steps: 16, pulses: 12, rotate: 0, decay: 0.5, pitch: 0.5, probability: 1.0 }, | ||
| hihatOpen: { steps: 16, pulses: 4, rotate: 2, decay: 0.5, pitch: 0.5, probability: 1.0 }, | ||
| clap: { steps: 16, pulses: 2, rotate: 4, decay: 0.5, pitch: 0.5, probability: 1.0 }, | ||
| cowbell: { steps: 16, pulses: 2, rotate: 2, decay: 0.5, pitch: 0.5, probability: 1.0 }, | ||
| // Optimized Techno Foundation Patterns | ||
| kick: { steps: 16, pulses: 4, rotate: 0, decay: 0.5, pitch: 0.5, probability: 1.0 }, // 4-on-the-floor | ||
| snare: { steps: 16, pulses: 4, rotate: 4, decay: 0.5, pitch: 0.5, probability: 1.0 }, // Standard backbeat | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Because Useful? React with 👍 / 👎. |
||
| hihat: { steps: 16, pulses: 12, rotate: 0, decay: 0.5, pitch: 0.5, probability: 1.0 }, // 16th notes / shuffle | ||
| hihatOpen: { steps: 16, pulses: 4, rotate: 2, decay: 0.5, pitch: 0.5, probability: 1.0 },// Off-beat hats | ||
| clap: { steps: 16, pulses: 2, rotate: 4, decay: 0.5, pitch: 0.5, probability: 1.0 }, // Occasional clap | ||
| cowbell: { steps: 16, pulses: 3, rotate: 2, decay: 0.5, pitch: 0.5, probability: 0.8 }, // Syncopated cowbell | ||
| kit: '909', | ||
| drive: 20, | ||
| setParams: (drum, params) => set((state) => ({ | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This helper still has callers outside this diff that pass a drift range in Hz, for example
TR808HiHatcallsapplyPitchDrift(..., 2.0)with a+/- 2Hzcomment andTR808Cowbellpasses the same value. After changing the second parameter to cents, those unchanged instruments now get only ±2 cents of drift instead of the intended hertz detune, so hats/cowbell lose much of their analog variation whenever they trigger. Please either keep a Hz-based helper for existing call sites or update every caller to the new unit.Useful? React with 👍 / 👎.