| @@ -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 | |
| | 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 | |