gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

dspSingleSnow.cpp (2062B)


      1 #include "dspSingleSnow.h"
      2 
      3 namespace virusLib
      4 {
      5 	DspSingleSnow::DspSingleSnow() : DspSingle(0x100000, true)
      6 	{
      7 	}
      8 
      9 	template<typename T> void
     10 	processAudioSnow(DspSingleSnow& _dsp, const synthLib::TAudioInputsT<T>& _inputs, const synthLib::TAudioOutputsT<T>& _outputs, const size_t _samples, const uint32_t _latency, std::vector<T>& _dummyIn, std::vector<T>& _dummyOut)
     11 	{
     12 		DspSingle::ensureSize(_dummyIn, _samples<<1);
     13 		DspSingle::ensureSize(_dummyOut, _samples<<1);
     14 
     15 		const auto* dIn = _dummyIn.data();
     16 		auto* dOut = _dummyOut.data();
     17 
     18 		const auto s = static_cast<uint32_t>(_samples);
     19 
     20 		const T* inputs0[] = {_inputs[0], _inputs[1], dIn, dIn, dIn, dIn, dIn, dIn};
     21 		const T* inputs1[] = {_inputs[0], _inputs[1], dIn, dIn, dIn, dIn, dIn, dIn};
     22 
     23 		_dsp.getPeriphX().getEsai().processAudioInputInterleaved(inputs0, s, _latency);
     24 		_dsp.getPeriphY().getEsai().processAudioInputInterleaved(inputs1, s, _latency);
     25 
     26 		T* outputs0[] = {
     27 			_outputs[0] ? _outputs[0] : dOut,
     28 			_outputs[1] ? _outputs[1] : dOut,
     29 			dOut, dOut, dOut, dOut, dOut, dOut, dOut, dOut, dOut, dOut};
     30 
     31 		T* outputs1[] = {dOut, dOut, dOut, dOut,
     32 			_outputs[2] ? _outputs[2] : dOut,
     33 			_outputs[3] ? _outputs[3] : dOut,
     34 			_outputs[4] ? _outputs[4] : dOut,
     35 			_outputs[5] ? _outputs[5] : dOut,
     36 			_outputs[6] ? _outputs[6] : dOut,
     37 			_outputs[7] ? _outputs[7] : dOut,
     38 			dOut, dOut};
     39 
     40 		_dsp.getPeriphX().getEsai().processAudioOutputInterleaved(outputs0, s);
     41 		_dsp.getPeriphY().getEsai().processAudioOutputInterleaved(outputs1, s);
     42 	}
     43 
     44 	void DspSingleSnow::processAudio(const synthLib::TAudioInputs& _inputs, const synthLib::TAudioOutputs& _outputs, const size_t _samples, const uint32_t _latency)
     45 	{
     46 		processAudioSnow(*this, _inputs, _outputs, _samples, _latency, m_dummyBufferInF, m_dummyBufferOutF);
     47 	}
     48 
     49 	void DspSingleSnow::processAudio(const synthLib::TAudioInputsInt& _inputs, const synthLib::TAudioOutputsInt& _outputs, const size_t _samples, const uint32_t _latency)
     50 	{
     51 		processAudioSnow(*this, _inputs, _outputs, _samples, _latency, m_dummyBufferInI, m_dummyBufferOutI);
     52 	}
     53 }