- call funcSyncOnFreqUpdate if omega has changed
git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@720 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+7
-3
@@ -130,13 +130,16 @@ int Sync_process(sync_t *pObj)
|
|||||||
perr = phase_det(phase, pObj->phase_ref);
|
perr = phase_det(phase, pObj->phase_ref);
|
||||||
SynthDebug("phase_ref=%f, phase_lo=%f, perr=%f\n", pObj->phase_ref, pObj->phase, perr);
|
SynthDebug("phase_ref=%f, phase_lo=%f, perr=%f\n", pObj->phase_ref, pObj->phase, perr);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
synth_float_t omega = -(pObj->klag*pObj->accu + pObj->klead*perr);
|
||||||
|
if (omega != pObj->omega)
|
||||||
|
{
|
||||||
if (pObj->funcSyncOnFreqUpdate)
|
if (pObj->funcSyncOnFreqUpdate)
|
||||||
{
|
{
|
||||||
(*pObj->funcSyncOnFreqUpdate)(pObj->pFuncObj, pObj->omega);
|
(*pObj->funcSyncOnFreqUpdate)(pObj->pFuncObj, omega);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pObj->accu += perr;
|
pObj->accu += perr;
|
||||||
pObj->omega = -(pObj->klag*pObj->accu + pObj->klead*perr);
|
|
||||||
|
|
||||||
return do_lfo_update;
|
return do_lfo_update;
|
||||||
}
|
}
|
||||||
@@ -158,6 +161,7 @@ synth_float_t syncOnGetPhase(void *pFuncObj)
|
|||||||
void syncOnFreqUpdate(void *pFuncObj, synth_float_t omega)
|
void syncOnFreqUpdate(void *pFuncObj, synth_float_t omega)
|
||||||
{
|
{
|
||||||
lfo_t *pObj = (lfo_t*)pFuncObj;
|
lfo_t *pObj = (lfo_t*)pFuncObj;
|
||||||
|
pObj->sync.omega = omega;
|
||||||
SynthDebug("syncOnFreqUpdate(): BPM=%f\n", omega*pObj->fs*60);
|
SynthDebug("syncOnFreqUpdate(): BPM=%f\n", omega*pObj->fs*60);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -325,7 +329,7 @@ synth_float_t* LFO_ProcessDataV(lfo_t *pObj, UINT32 len)
|
|||||||
{
|
{
|
||||||
if (Sync_process(&pObj->sync))
|
if (Sync_process(&pObj->sync))
|
||||||
{
|
{
|
||||||
LFO_set_omega(pObj, pObj->sync.omega);
|
// LFO_set_omega(pObj, pObj->sync.omega);
|
||||||
}
|
}
|
||||||
pObj->x = pObj->sync.phase;
|
pObj->x = pObj->sync.phase;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user