History

added kick drum, working. snare is still muffled

Jeff Snyder committed 7 years ago

Commit f4eb2571 parent cd53a582 files · +104 −6Browse files

Unified · Split

2 files
  1. LEAF/Inc/leaf-808.h +40 −0
  2. LEAF/Src/leaf-808.c +64 −6
LEAF/Inc/leaf-808.h+40−0
@@ -123,3 +123,43 @@ void t808Snare_setNoiseFilterQ (t808Snare* const, float noiseFilter · 122 unmodified lines
123123
124124 // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
125125
126+// 808 Kick
127+typedef struct _t808Kick {
128+
129+
130+ tCycle tone; // Tri
131+ tNoise noiseOsc;
132+ tSVF toneLowpass;
133+ tEnvelope toneEnvOscChirp;
134+ tEnvelope toneEnvOscSigh;
135+ tEnvelope toneEnvGain;
136+ tEnvelope noiseEnvGain;
137+ tEnvelope toneEnvFilter;
138+
139+ float toneGain;
140+ float noiseGain;
141+
142+ float toneInitialFreq;
143+ float sighAmountInHz;
144+ float chirpRatioMinusOne;
145+ float noiseFilterFreq;
146+
147+
148+} t808Kick;
149+
150+void t808Kick_init (t808Kick* const);
151+void t808Kick_free (t808Kick* const);
152+
153+float t808Kick_tick (t808Kick* const);
154+void t808Kick_on (t808Kick* const, float vel);
155+void t808Kick_setToneFreq (t808Kick* const, float freq);
156+void t808Kick_setToneDecay (t808Kick* const, float decay);
157+void t808Kick_setNoiseDecay (t808Kick* const, float decay);
158+void t808Kick_setSighAmount (t808Kick* const, float sigh);
159+void t808Kick_setChirpAmount (t808Kick* const, float chirp);
160+void t808Kick_setToneNoiseMix (t808Kick* const, float toneNoiseMix);
161+void t808Kick_setNoiseFilterFreq (t808Kick* const, float noiseFilterFreq);
162+void t808Kick_setNoiseFilterQ (t808Kick* const, float noiseFilterQ);
163+
164+// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
165+
LEAF/Src/leaf-808.c+64−6
@@ -292,20 +292,22 @@ void t808Snare_init(t808Snare* const snare) · 291 unmodified lines
292292 for (int i = 0; i < 2; i++)
293293 {
294294 tTriangle_init(&snare->tone[i]);
295+
295296 tTriangle_setFreq(&snare->tone[i], ratio[i] * 400.0f);
296297 tSVF_init(&snare->toneLowpass[i], SVFTypeLowpass, 2000, 1.0f);
297298 tEnvelope_init(&snare->toneEnvOsc[i], 3.0f, 20.0f, OFALSE);
298− tEnvelope_init(&snare->toneEnvGain[i], 10.0f, 200.0f, OFALSE);
299− tEnvelope_init(&snare->toneEnvFilter[i], 3.0f, 200.0f, OFALSE);
299+ tEnvelope_init(&snare->toneEnvGain[i], 3.0f, 200.0f, OFALSE);
300+ tEnvelope_init(&snare->toneEnvFilter[i], 3.0f, 2000.0f, OFALSE);
300301
301302 snare->toneGain[i] = 0.5f;
302303 }
303304
304−
305+ snare->tone1Freq = ratio[0] * 400.0f;
306+ snare->tone2Freq = ratio[1] * 400.0f;
305307 tNoise_init(&snare->noiseOsc, WhiteNoise);
306− tSVF_init(&snare->noiseLowpass, SVFTypeLowpass, 2000, 3.0f);
307− tEnvelope_init(&snare->noiseEnvGain, 10.0f, 125.0f, OFALSE);
308− tEnvelope_init(&snare->noiseEnvFilter, 3.0f, 100.0f, OFALSE);
308+ tSVF_init(&snare->noiseLowpass, SVFTypeLowpass, 12000.0f, 3.0f);
309+ tEnvelope_init(&snare->noiseEnvGain, 3.0f, 125.0f, OFALSE);
310+ tEnvelope_init(&snare->noiseEnvFilter, 3.0f, 1000.0f, OFALSE);
309311 snare->noiseGain = 0.3f;
310312 }
311313
@@ -328,3 +330,59 @@ void t808Snare_free (t808Snare* const snare) · 16 unmodified lines
328330 }
329331
330332
333+void t808Kick_init (t808Kick* const kick)
334+{
335+ tCycle_init(&kick->tone);
336+ kick->toneInitialFreq = 40.0f;
337+ kick->sighAmountInHz = 7.0f;
338+ kick->chirpRatioMinusOne = 2.2f;
339+ tCycle_setFreq(&kick->tone, 50.0f);
340+ tSVF_init(&kick->toneLowpass, SVFTypeLowpass, 2000.0f, 0.5f);
341+ tEnvelope_init(&kick->toneEnvOscChirp, 0.0f, 20.0f, OFALSE);
342+ tEnvelope_init(&kick->toneEnvOscSigh, 0.0f, 2000.0f, OFALSE);
343+ tEnvelope_init(&kick->toneEnvGain, 0.0f, 800.0f, OFALSE);
344+ tNoise_init(&kick->noiseOsc, PinkNoise);
345+ tEnvelope_init(&kick->noiseEnvGain, 0.0f, 1.0f, OFALSE);
346+ kick->noiseGain = 0.3f;
347+}
348+
349+
350+void t808Kick_free (t808Kick* const kick)
351+{
352+ tCycle_free(&kick->tone);
353+ tSVF_free(&kick->toneLowpass);
354+ tEnvelope_free(&kick->toneEnvOscChirp);
355+ tEnvelope_free(&kick->toneEnvOscSigh);
356+ tEnvelope_free(&kick->toneEnvGain);
357+ tNoise_free(&kick->noiseOsc);
358+ tEnvelope_free(&kick->noiseEnvGain);
359+}
360+
361+float t808Kick_tick (t808Kick* const kick)
362+{
363+ tCycle_setFreq(&kick->tone, (kick->toneInitialFreq * (1.0f + (kick->chirpRatioMinusOne * tEnvelope_tick(&kick->toneEnvOscChirp)))) + (kick->sighAmountInHz * tEnvelope_tick(&kick->toneEnvOscSigh)));
364+ float sample = tCycle_tick(&kick->tone) * tEnvelope_tick(&kick->toneEnvGain);
365+ sample+= tNoise_tick(&kick->noiseOsc) * tEnvelope_tick(&kick->noiseEnvGain);
366+ //add distortion here
367+ sample = tSVF_tick(&kick->toneLowpass, sample);
368+ return sample;
369+}
370+
371+void t808Kick_on (t808Kick* const kick, float vel)
372+{
373+ tEnvelope_on(&kick->toneEnvOscChirp, vel);
374+ tEnvelope_on(&kick->toneEnvOscSigh, vel);
375+ tEnvelope_on(&kick->toneEnvGain, vel);
376+ tEnvelope_on(&kick->noiseEnvGain, vel);
377+
378+}
379+void t808Kick_setToneFreq (t808Kick* const kick, float freq);
380+void t808Kick_setToneDecay (t808Kick* const kick, float decay);
381+void t808Kick_setNoiseDecay (t808Kick* const kick, float decay);
382+void t808Kick_setSighAmount (t808Kick* const kick, float sigh);
383+void t808Kick_setChirpAmount (t808Kick* const kick, float chirp);
384+void t808Kick_setToneNoiseMix (t808Kick* const kick, float toneNoiseMix);
385+void t808Kick_setNoiseFilterFreq (t808Kick* const kick, float noiseFilterFreq);
386+void t808Kick_setNoiseFilterQ (t808Kick* const kick, float noiseFilterQ);
387+
388+

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t