refactored wavetable constants
This commit is contained in:
+10
-9
@@ -73,9 +73,10 @@ void WT_ModInit(wt_common_t *pCom)
|
||||
pFileAll = fopen("build/wave_sweep.bin", "wb");
|
||||
#endif
|
||||
|
||||
// Create waves from 16-bit raw data
|
||||
// Create waves from rom waves
|
||||
memset(pCom->waves, 0, sizeof(pCom->waves));
|
||||
offset = 0;
|
||||
for (i=0; i < 300; i++)
|
||||
for (i=0; i < WT_ROM_NUM_WAVES; i++)
|
||||
{
|
||||
if (i > 245)
|
||||
offset = 122;
|
||||
@@ -172,8 +173,8 @@ void WT_ModInit(wt_common_t *pCom)
|
||||
// Allocate memory
|
||||
for (i=0; i < WT_NUM_WAVETABLES; i++)
|
||||
{
|
||||
pCom->ppWavetables[i] = (synth_float_t**)malloc(WT_WAVETABLE_SIZE*sizeof(synth_float_t*));
|
||||
for (j=0; j < WT_WAVETABLE_SIZE; j++)
|
||||
pCom->ppWavetables[i] = (synth_float_t**)malloc(WT_WAVETABLE_NUM_ENTRIES*sizeof(synth_float_t*));
|
||||
for (j=0; j < WT_WAVETABLE_NUM_ENTRIES; j++)
|
||||
{
|
||||
pCom->ppWavetables[i][j] = (synth_float_t*)malloc(WT_WAVE_SIZE*sizeof(synth_float_t));
|
||||
}
|
||||
@@ -214,7 +215,7 @@ void WT_ModFree(wt_common_t *pCom)
|
||||
|
||||
for (i=0; i < WT_NUM_WAVETABLES; i++)
|
||||
{
|
||||
for (j=0; j < WT_WAVETABLE_SIZE; j++)
|
||||
for (j=0; j < WT_WAVETABLE_NUM_ENTRIES; j++)
|
||||
{
|
||||
free(pCom->ppWavetables[i][j]);
|
||||
}
|
||||
@@ -309,7 +310,7 @@ void WT_ProcessDataV(wt_t *pObj, synth_float_t *pPitch, synth_float_t *pCV_fm, s
|
||||
if (pObj->startup)
|
||||
pObj->x = 0;
|
||||
|
||||
pObj->wt_index = (WT_WAVETABLE_SIZE-1)*jsy_max(0, jsy_min(1, pObj->param[WT_PARAM2_WAVETABLE_ENTRY] + pCV_pwm[i]));
|
||||
pObj->wt_index = (WT_WAVETABLE_NUM_ENTRIES-1)*jsy_max(0, jsy_min(1, pObj->param[WT_PARAM2_WAVETABLE_ENTRY] + pCV_pwm[i]));
|
||||
pObj->wt_start = (UINT32)pObj->wt_index;
|
||||
|
||||
if (pCV_fm)
|
||||
@@ -321,7 +322,7 @@ void WT_ProcessDataV(wt_t *pObj, synth_float_t *pPitch, synth_float_t *pCV_fm, s
|
||||
ni = (UINT32)(pObj->x*(WT_WAVE_SIZE));
|
||||
|
||||
w1 = pObj->pCom->ppWavetables[wt_table][pObj->wt_start][ni];
|
||||
w2 = pObj->pCom->ppWavetables[wt_table][jsy_min((WT_WAVETABLE_SIZE-1), pObj->wt_start+1)][ni];
|
||||
w2 = pObj->pCom->ppWavetables[wt_table][jsy_min((WT_WAVETABLE_NUM_ENTRIES-1), pObj->wt_start+1)][ni];
|
||||
kmix = pObj->wt_index - (UINT32)pObj->wt_index;
|
||||
out = w1*(1-kmix) + w2*kmix;
|
||||
|
||||
@@ -343,7 +344,7 @@ void WT_ProcessDataV(wt_t *pObj, synth_float_t *pPitch, synth_float_t *pCV_fm, s
|
||||
if (pObj->startup)
|
||||
pObj->x = 0;
|
||||
|
||||
pObj->wt_index = (WT_WAVETABLE_SIZE-1)*jsy_max(0, jsy_min(1, pObj->param[WT_PARAM2_WAVETABLE_ENTRY] + pCV_pwm[i]));
|
||||
pObj->wt_index = (WT_WAVETABLE_NUM_ENTRIES-1)*jsy_max(0, jsy_min(1, pObj->param[WT_PARAM2_WAVETABLE_ENTRY] + pCV_pwm[i]));
|
||||
pObj->wt_start = (UINT32)pObj->wt_index;
|
||||
|
||||
if (pCV_fm)
|
||||
@@ -358,7 +359,7 @@ void WT_ProcessDataV(wt_t *pObj, synth_float_t *pPitch, synth_float_t *pCV_fm, s
|
||||
ni_next = (ni + 1)&(WT_WAVE_SIZE-1);
|
||||
|
||||
w1 = (pObj->pCom->ppWavetables[wt_table][pObj->wt_start][ni_next] - pObj->pCom->ppWavetables[wt_table][pObj->wt_start][ni])*nf + pObj->pCom->ppWavetables[wt_table][pObj->wt_start][ni];
|
||||
w2 = (pObj->pCom->ppWavetables[wt_table][jsy_min((WT_WAVETABLE_SIZE-1), pObj->wt_start+1)][ni_next] - pObj->pCom->ppWavetables[wt_table][jsy_min((WT_WAVETABLE_SIZE-1), pObj->wt_start+1)][ni])*nf + pObj->pCom->ppWavetables[wt_table][jsy_min((WT_WAVETABLE_SIZE-1), pObj->wt_start+1)][ni];
|
||||
w2 = (pObj->pCom->ppWavetables[wt_table][jsy_min((WT_WAVETABLE_NUM_ENTRIES-1), pObj->wt_start+1)][ni_next] - pObj->pCom->ppWavetables[wt_table][jsy_min((WT_WAVETABLE_NUM_ENTRIES-1), pObj->wt_start+1)][ni])*nf + pObj->pCom->ppWavetables[wt_table][jsy_min((WT_WAVETABLE_NUM_ENTRIES-1), pObj->wt_start+1)][ni];
|
||||
kmix = pObj->wt_index - (UINT32)pObj->wt_index;
|
||||
out = w1*(1-kmix) + w2*kmix;
|
||||
|
||||
|
||||
+10
-7
@@ -5,10 +5,13 @@
|
||||
|
||||
#include "synth_types.h"
|
||||
|
||||
#define WT_NUM_WAVES 422
|
||||
#define WT_WAVE_SIZE 128
|
||||
#define WT_NUM_WAVETABLES 40
|
||||
#define WT_WAVETABLE_SIZE 64
|
||||
#define WT_ROM_NUM_WAVES 300
|
||||
#define WT_ROM_WAVE_SIZE 64
|
||||
#define WT_ROM_WAVES_SIZE (300*64)
|
||||
#define WT_WAVE_SIZE (2*WT_ROM_WAVE_SIZE)
|
||||
#define WT_TOTAL_NUM_WAVES 422
|
||||
#define WT_NUM_WAVETABLES 40
|
||||
#define WT_WAVETABLE_NUM_ENTRIES 64
|
||||
|
||||
// see
|
||||
// https://jacajack.github.io/music/2019/12/10/PPG-EPROM.html
|
||||
@@ -40,14 +43,14 @@ typedef struct _swt_descr_entry_t
|
||||
typedef struct _swt_descr_t
|
||||
{
|
||||
UINT32 num_entries;
|
||||
wt_descr_entry_t pEntry[WT_WAVETABLE_SIZE];
|
||||
wt_descr_entry_t pEntry[WT_WAVETABLE_NUM_ENTRIES];
|
||||
|
||||
} wt_descr_t;
|
||||
|
||||
typedef struct _swt_common_t
|
||||
{
|
||||
unsigned char wave_rawdata[38400];
|
||||
synth_float_t waves[WT_NUM_WAVES][WT_WAVE_SIZE];
|
||||
unsigned char wave_rawdata[WT_ROM_WAVES_SIZE];
|
||||
synth_float_t waves[WT_TOTAL_NUM_WAVES][WT_WAVE_SIZE];
|
||||
synth_float_t **ppWavetables[WT_NUM_WAVETABLES]; //[WT_WAVETABLE_SIZE][WT_WAVE_SIZE];
|
||||
|
||||
} wt_common_t;
|
||||
|
||||
Reference in New Issue
Block a user