kernel simpleSine2 < namespace : "com.kevingoldsmith"; vendor : "Kevin Goldsmith"; version : 1; description : "2 voice Sine Wave Generator"; > { 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 bufferoffset; const float twoPIoverSR = .0001424758573057; void evaluatePixel() { 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 = float4(sample1.x, sample1.y, sample2.x, sample2.y)*0.5; } }