Exemple #1
0
void MLProcDelayOutput::process(const int frames)
{
	const MLSignal& delayTime = getInput(1);
	MLSignal& y = getOutput();

	int delayInt;
	const float sr = getContextSampleRate();
	MLSample delay;
	
	int delayedIndex;

	if (mParamsChanged) doParams();
	
	if(mpDelayInputProc)
	{
		MLSignal& buffer = mpDelayInputProc->getBuffer();
		if (delayTime.isConstant())
		{
			delay = delayTime[0] * sr - mVectorDelay;
			if (delay < mVectorDelay) delay = mVectorDelay;
			delayInt = (int)(delay);
			
			for (int n=0; n<frames; ++n)
			{
				delayedIndex = mReadIndex - delayInt;
				delayedIndex &= mLengthMask;
				y[n] = buffer[delayedIndex];
				mReadIndex++;
			}
		}
		else
		{
			for (int n=0; n<frames; ++n)
			{		
				// read
				// zero order (integer delay)
				
				// get delay time.  
				// if no signal is attached, 0. should result 
				// and we get a single-vector delay.
				delay = delayTime[n] * sr - mVectorDelay;
				if (delay < mVectorDelay) delay = mVectorDelay;
				
				delayInt = (int)(delay);
				
				delayedIndex = mReadIndex - delayInt;
				delayedIndex &= mLengthMask;
				y[n] = buffer[delayedIndex];
				mReadIndex++;
			}
		}
	}

	// linear interp:
	//y[n] = frac*x[m+1] + (1-frac)*x[m]
	
	// allpass interp:
	// y[n] = x[m+1] + (1-frac)*x[m] - (1-frac)*y[n-1] 
	
}
void MLProcDebug::process(const int frames)
{
	const int intervalSeconds = 2;
	const int intervalFrames = getContextSampleRate() * intervalSeconds;
	if (mParamsChanged) doParams();
	mTemp += frames;
	if (mTemp > intervalFrames)
	{
		const MLSignal& in = getInput(1);
		debug() << std::setw(6);
		debug() << std::setprecision(2);
		debug() << "sig " << getName() << " (" << static_cast<const void *>(&in) << "), n=" << frames << " = " << std::setprecision(4) << in[0] ;
		if(in.isConstant()) 
		{ 
			debug() << "(const)"; 
		}
		else
		{
			debug() << " min:" << in.getMin() << ", max:" << in.getMax();
		}
		
		debug() << "\n";
		mTemp -= intervalFrames;
		
		if (mVerbose)
		{
			debug() << frames << " frames\n";
			debug() << "[";
			debug() << std::setw(6);
			debug() << std::setprecision(2);
			for(int j=0; j<frames; ++j)
			{
				debug() << in[j] << " " ;		
				if ((j%8 == 7) && (j < frames-1)) debug() << "\n";	
			}
			debug() << "]\n\n";
		}
	}
}
Exemple #3
0
void MLProcRingBuffer::process(const int frames)
{
	int written;
	const MLSignal& x = getInput(1);

	// build if needed
	if (mParamsChanged) doParams();

	if (mRing.getBuffer())
	{	
		if (x.isConstant())
		{
			written = (int)PaUtil_WriteRingBufferConstant( &mBuf, x[0], frames );	
		}
		else
		{
			written = (int)PaUtil_WriteRingBuffer(&mBuf, (void *)x.getConstBuffer(), frames );	
		}
				
//	debug() << "wrote " << written << " from " << (void *)x.getConstBuffer() << "\n"; 
	}
}
Exemple #4
0
static PyObject *
sv_SetParam(PyObject *self, PyObject *args)
{
	return doParams(self, args, svSetParam, 0);
}
Exemple #5
0
static PyObject *
sv_GetParamRange(PyObject *self, PyObject *args)
{
	return doParams(self, args, svGetParamRange, 1);
}
Exemple #6
0
MLProc::err MLProcDelayOutput::resize() 
{
	err e = OK;
	doParams();
	return e;
}