[VCO/Blit/Sawtooth]

- added slight random frequency deviation for more vivid sound
This commit is contained in:
2025-07-31 18:15:08 +02:00
parent bcfe5e4edd
commit 0dd21799f9
2 changed files with 14 additions and 2 deletions
+10 -2
View File
@@ -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;
+4
View File
@@ -4,6 +4,8 @@
#define _BLIT_H_
#include "synth_defs.h"
#include "noise.h"
#include "synth_types.h"
// --------------------------------------------------------------
// Types
@@ -14,6 +16,7 @@ typedef struct _sblit_common_t
synth_float_t **ppBLEP;
synth_float_t N_K[(BLIT_INTEROLATION_ORDER+0)*(BLIT_INTEROLATION_ORDER+1)];
synth_float_t K[(BLIT_INTEROLATION_ORDER+0)*(BLIT_INTEROLATION_ORDER+1)];
noise_gen_t noise;
} blit_common_t;
@@ -27,6 +30,7 @@ typedef struct _sblit_t
synth_float_t tri_x, tri_sum;
UINT32 m, tri_pol, sqr_pol1, sqr_pol2;
UINT32 freq_update_req, bufsize;
synth_float_t pm_filtered;
} blit_t;