kernel Leslie < namespace : "com.kevingoldsmith"; vendor : "Kevin Goldsmith"; version : 1; description : "A leslie effect that is a simple modulation of the audio signal via a sine wave"; > { input image4 src; output pixel4 dst; parameter float bufferwidth < minValue: 0.0; maxValue: 8192.0; defaultValue: 2048.0; >; parameter float baseFreq < minValue: 0.0; maxValue: 1760.0; defaultValue: 440.0; >; parameter float2 freqOffset < minValue: float2(-20.0, -20.0); maxValue: float2(20.0, 20.0); defaultValue: float2(0.0, 0.0); >; parameter float mixAmount < minValue: 0.0; maxValue: 1.0; defaultValue: 0.7; >; parameter float bufferoffset; const float twoPIoverSR = .0001424758573057; void evaluatePixel() { float4 temp = sampleLinear(src, outCoord()); float linearPos = bufferoffset+(2.0*bufferwidth*(outCoord().y-0.5))+outCoord().x-0.5; float2 sample1 = float2( sin(linearPos*twoPIoverSR*(baseFreq-freqOffset.x)), sin(linearPos*twoPIoverSR*(baseFreq-freqOffset.y)) ); float2 sample2 = float2( sin((linearPos+1.0)*twoPIoverSR*(baseFreq-freqOffset.x)), sin((linearPos+1.0)*twoPIoverSR*(baseFreq-freqOffset.y)) ); dst = mix((float4(sample1.x, sample1.y, sample2.x, sample2.y)*0.5+float4(0.5))*temp, temp, mixAmount); } }