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
123 123
124// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~124// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
125 125
126// 808 Kick
127typedef 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
150void t808Kick_init (t808Kick* const);
151void t808Kick_free (t808Kick* const);
152
153float t808Kick_tick (t808Kick* const);
154void t808Kick_on (t808Kick* const, float vel);
155void t808Kick_setToneFreq (t808Kick* const, float freq);
156void t808Kick_setToneDecay (t808Kick* const, float decay);
157void t808Kick_setNoiseDecay (t808Kick* const, float decay);
158void t808Kick_setSighAmount (t808Kick* const, float sigh);
159void t808Kick_setChirpAmount (t808Kick* const, float chirp);
160void t808Kick_setToneNoiseMix (t808Kick* const, float toneNoiseMix);
161void t808Kick_setNoiseFilterFreq (t808Kick* const, float noiseFilterFreq);
162void 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
292 for (int i = 0; i < 2; i++)292 for (int i = 0; i < 2; i++)
293 {293 {
294 tTriangle_init(&snare->tone[i]);294 tTriangle_init(&snare->tone[i]);
295
295 tTriangle_setFreq(&snare->tone[i], ratio[i] * 400.0f);296 tTriangle_setFreq(&snare->tone[i], ratio[i] * 400.0f);
296 tSVF_init(&snare->toneLowpass[i], SVFTypeLowpass, 2000, 1.0f);297 tSVF_init(&snare->toneLowpass[i], SVFTypeLowpass, 2000, 1.0f);
297 tEnvelope_init(&snare->toneEnvOsc[i], 3.0f, 20.0f, OFALSE);298 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->toneEnvGain[i], 3.0f, 200.0f, OFALSE);
299 tEnvelope_init(&snare->toneEnvFilter[i], 3.0f, 200.0f, OFALSE);300 tEnvelope_init(&snare->toneEnvFilter[i], 3.0f, 2000.0f, OFALSE);
300 301
301 snare->toneGain[i] = 0.5f;302 snare->toneGain[i] = 0.5f;
302 }303 }
303 304
304 305 snare->tone1Freq = ratio[0] * 400.0f;
306 snare->tone2Freq = ratio[1] * 400.0f;
305 tNoise_init(&snare->noiseOsc, WhiteNoise);307 tNoise_init(&snare->noiseOsc, WhiteNoise);
306 tSVF_init(&snare->noiseLowpass, SVFTypeLowpass, 2000, 3.0f);308 tSVF_init(&snare->noiseLowpass, SVFTypeLowpass, 12000.0f, 3.0f);
307 tEnvelope_init(&snare->noiseEnvGain, 10.0f, 125.0f, OFALSE);309 tEnvelope_init(&snare->noiseEnvGain, 3.0f, 125.0f, OFALSE);
308 tEnvelope_init(&snare->noiseEnvFilter, 3.0f, 100.0f, OFALSE);310 tEnvelope_init(&snare->noiseEnvFilter, 3.0f, 1000.0f, OFALSE);
309 snare->noiseGain = 0.3f;311 snare->noiseGain = 0.3f;
310}312}
311 313
@@ -328,3 +330,59 @@ void t808Snare_free (t808Snare* const snare) · 16 unmodified lines
328}330}
329 331
330 332
333void 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
350void 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
361float 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
371void 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}
379void t808Kick_setToneFreq (t808Kick* const kick, float freq);
380void t808Kick_setToneDecay (t808Kick* const kick, float decay);
381void t808Kick_setNoiseDecay (t808Kick* const kick, float decay);
382void t808Kick_setSighAmount (t808Kick* const kick, float sigh);
383void t808Kick_setChirpAmount (t808Kick* const kick, float chirp);
384void t808Kick_setToneNoiseMix (t808Kick* const kick, float toneNoiseMix);
385void t808Kick_setNoiseFilterFreq (t808Kick* const kick, float noiseFilterFreq);
386void 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