[VCO/Blit/Sawtooth]
- added slight random frequency deviation for more vivid sound
This commit is contained in:
+10
-2
@@ -6,9 +6,11 @@
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "noise.h"
|
||||
#include "synth_defs.h"
|
||||
#include "blit.h"
|
||||
#include <fir/fir2.h>
|
||||
#include "fir/fir2.h"
|
||||
#include "synth_types.h"
|
||||
#include "vector_utils.h"
|
||||
|
||||
// --------------------------------------------------------------
|
||||
@@ -197,6 +199,7 @@ void BLIT_ModFree(blit_common_t *pCom)
|
||||
void BLIT_Init(blit_t *pObj, blit_common_t *pCom, synth_float_t fs)
|
||||
{
|
||||
pObj->pCom = pCom;
|
||||
Noise_Init(&pCom->noise, 0x31101970);
|
||||
|
||||
pObj->fs = fs;
|
||||
pObj->dutycycle = 0.5;
|
||||
@@ -256,6 +259,7 @@ void BLIT_Reset(blit_t *pObj, synth_float_t phase)
|
||||
pObj->fm = 1;
|
||||
pObj->pwm = 0;
|
||||
pObj->pulse_offset = 0; // ToDo: Adjust according to phase
|
||||
pObj->pm_filtered = 0;
|
||||
}
|
||||
|
||||
void BLIT_Start(blit_t *pObj)
|
||||
@@ -280,6 +284,10 @@ void BLIT_Process_SAW_Vector(blit_t *pObj, synth_float_t *pPitch, synth_float_t
|
||||
if (pSyncOut)
|
||||
memset(pSyncOut, 0, len*sizeof(synth_float_t));
|
||||
|
||||
synth_float_t alpha = 0.001;
|
||||
synth_float_t pm = Noise_Gaussian(&pObj->pCom->noise, 0.01, 0);
|
||||
pObj->pm_filtered = pObj->pm_filtered*(1.0 - alpha) + pm*alpha;
|
||||
|
||||
// Create output
|
||||
for (i=0; i< len; i++)
|
||||
{
|
||||
@@ -295,7 +303,7 @@ void BLIT_Process_SAW_Vector(blit_t *pObj, synth_float_t *pPitch, synth_float_t
|
||||
{
|
||||
pObj->fm = (synth_float_t)pow((synth_float_t)2, pCV_fm[i]);
|
||||
}
|
||||
BLIT_freq_update(pObj, pPitch[i]);
|
||||
BLIT_freq_update(pObj, pPitch[i] * (1+pObj->pm_filtered));
|
||||
}
|
||||
|
||||
m = pObj->m;
|
||||
|
||||
Reference in New Issue
Block a user