| @@ -292,20 +292,22 @@ void t808Snare_init(t808Snare* const snare) · 291 unmodified lines |
| 292 | 292 | for (int i = 0; i < 2; i++) |
| 293 | 293 | { |
| 294 | 294 | tTriangle_init(&snare->tone[i]); |
| 295 | + |
| 295 | 296 | tTriangle_setFreq(&snare->tone[i], ratio[i] * 400.0f); |
| 296 | 297 | tSVF_init(&snare->toneLowpass[i], SVFTypeLowpass, 2000, 1.0f); |
| 297 | 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->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); |
| 300 | 301 | |
| 301 | 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 | 307 | 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); |
| 309 | 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 | |
| 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 | + |