MCPcopy Create free account
hub / github.com/VASTDynamics/Vaporizer2 / processBuffer

Method processBuffer

VASTvaporizer/Source/Engine/VASTSingleNote.cpp:1821–2422  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1819//=============================================================================================================
1820
1821void CVASTSingleNote::processBuffer(sRoutingBuffers& routingBuffers, int startSample, int numSamples) {
1822 modMatrixInputState l_inputState{ mVoiceNo, startSample };
1823 if (!isPlayingInRange(startSample, numSamples) || (m_iNumParallelOsc == 0)) {
1824 clearCurrentNote();
1825
1826 resetSoftFadeState();
1827
1828 if (m_bLastFilterOutputZero[0] && m_bLastFilterOutputZero[1] && m_bLastFilterOutputZero[2]) { //check
1829 if (m_VCA.isActive())
1830 m_VCA.init(); //to reset envelopes
1831 return;
1832 }
1833 }
1834 else {
1835#ifdef _DEBUG
1836 if (startSample > 0)
1837 VDBG("StartSample > 0: " << startSample << " numSamples: " << numSamples << " bufferSamples: " << routingBuffers.getNumSamples());
1838#endif
1839 m_Set->bufferInputState.store(l_inputState);
1840
1841 //Mod matrix pitch
1842 float lSamplerPitch = m_Set->getParameterValueWithMatrixModulation(m_Set->m_State->m_fPitchMod, MODMATDEST::SamplerPitch, &l_inputState) * 0.01f;
1843 m_bSmoothersTakeNextValue ? m_fPitchModSampler_smoothed.setCurrentAndTargetValue(lSamplerPitch) :
1844 m_fPitchModSampler_smoothed.setTargetValue(lSamplerPitch);
1845
1846 //who is really playing
1847 MYUINT uNumOscAOscsPlaying = 0;
1848 if (*m_Set->m_State->m_bOscOnOff_OscA == static_cast<int>(SWITCH::SWITCH_ON)) {
1849 //for (int i = 0; i < *m_Set->m_State->m_iNumOscs_OscA; i++) if (m_Oscillator[0][i].isPlaying() == true) uNumOscAOscsPlaying++;
1850 uNumOscAOscsPlaying = m_Oscillator[0].m_unisonOscis;
1851 if (*m_Set->m_State->m_bOscRetrigOnOff_OscA == static_cast<int>(SWITCH::SWITCH_ON))
1852 if (m_uLastuNumOscAOscsPlaying < uNumOscAOscsPlaying) { //added oscis generating
1853 for (int i = m_uLastuNumOscAOscsPlaying - 1; i < uNumOscAOscsPlaying; i++) { //sync new oscis to master
1854 if (i > 0)
1855 syncOscToMaster(0, i);
1856 }
1857 }
1858 }
1859 m_uLastuNumOscAOscsPlaying = uNumOscAOscsPlaying;
1860
1861 MYUINT uNumOscBOscsPlaying = 0;
1862 if (*m_Set->m_State->m_bOscOnOff_OscB == static_cast<int>(SWITCH::SWITCH_ON)) {
1863 //for (int i = 0; i < *m_Set->m_State->m_iNumOscs_OscB; i++) if (m_Oscillator[1][i].isPlaying() == true) uNumOscBOscsPlaying++;
1864 uNumOscBOscsPlaying = m_Oscillator[1].m_unisonOscis;
1865 if (*m_Set->m_State->m_bOscRetrigOnOff_OscB == static_cast<int>(SWITCH::SWITCH_ON))
1866 if (m_uLastuNumOscBOscsPlaying < uNumOscBOscsPlaying) { //added oscis generating
1867 for (int i = m_uLastuNumOscBOscsPlaying - 1; i < uNumOscBOscsPlaying; i++) { //sync new oscis to master
1868 if (i > 0)
1869 syncOscToMaster(1, i);
1870 }
1871 }
1872 }
1873 m_uLastuNumOscBOscsPlaying = uNumOscBOscsPlaying;
1874
1875 MYUINT uNumOscCOscsPlaying = 0;
1876 if (*m_Set->m_State->m_bOscOnOff_OscC == static_cast<int>(SWITCH::SWITCH_ON)) {
1877 //for (int i = 0; i < *m_Set->m_State->m_iNumOscs_OscC; i++) if (m_Oscillator[2][i].isPlaying() == true) uNumOscCOscsPlaying++;
1878 uNumOscCOscsPlaying = m_Oscillator[2].m_unisonOscis;

Callers

nothing calls this directly

Calls 12

getNumSamplesMethod · 0.80
isPlayingMethod · 0.80
doWavetableBufferInitMethod · 0.80
setFrequencyMethod · 0.80
getOscillationMethod · 0.80
setSizeMethod · 0.80
copyFromMethod · 0.80
isActiveMethod · 0.45
initMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected