コード例 #1
0
CWTOscillator::CWTOscillator(void)
{
	// --- clear out arrays
	memset(m_pSawTables, 0, NUM_TABLES*sizeof(double*));
	memset(m_pTriangleTables, 0, NUM_TABLES*sizeof(double*));

	// --- init variables
	m_dReadIndex = 0.0;
	m_dWT_inc = 0.0;
	m_nCurrentTableIndex = 0;

	// --- setup correction factors (empirical)
	m_dSquareCorrFactor[0] = 0.5;
	m_dSquareCorrFactor[1] = 0.5;
	m_dSquareCorrFactor[2] = 0.5;
	m_dSquareCorrFactor[3] = 0.49;
	m_dSquareCorrFactor[4] = 0.48;
	m_dSquareCorrFactor[5] = 0.468;
	m_dSquareCorrFactor[6] = 0.43;
	m_dSquareCorrFactor[7] = 0.34;
	m_dSquareCorrFactor[8] = 0.25;

	// --- default to SINE
	m_pCurrentTable = &m_dSineTable[0];

	createWaveTables();
}
コード例 #2
0
HowieError onDeviceChanged(
    const HowieDeviceCharacteristics * pHDC,
    const HowieBuffer *state,
    const HowieBuffer *params) {
  __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, __func__);

  struct PlayerState* playerState = (struct PlayerState*)state->data;
  struct PlayerParams* playerParams = (struct PlayerParams*)params->data;

  createWaveTables(pHDC->framesPerPeriod, pHDC->channelCount, playerState);
  playerParams->playing = 1;
  return HOWIE_SUCCESS;
}
コード例 #3
0
void CWTOscillator::setSampleRate(double dFs)
{
	bool bNewSR = m_dSampleRate != dFs;
	
	// --- base class first
	COscillator::setSampleRate(dFs);

	// --- recrate the tables only if sample rate has changed
	if(bNewSR)
	{
		// --- then recrate
		destroyWaveTables();
		createWaveTables();
	}
}