package com.kevingoldsmith.effects { public class WaveShaper { import flash.utils.ByteArray; import flash.display.Shader; import flash.display.ShaderJob; [Embed(source="../pbj/waveshaper.pbj", mimeType="application/octet-stream")] private var WaveShaperPBJ:Class; private var effectShader:Shader = new Shader( new WaveShaperPBJ() as ByteArray ); private var m_mix:Number = 0.5; private var m_amount:Number = 1.0; public function WaveShaper() { } public function get effectMix():Number { return m_mix; } public function set effectMix( mix:Number ):void { m_mix = mix; } public function get effectAmount():Number { return m_amount; } public function set effectAmount( amount:Number ):void { m_amount = amount; } public function GenerateBytes( sourceBuffer:ByteArray, bufferSize:uint ):ByteArray { var returnBuffer:ByteArray = new ByteArray(); effectShader.data["src"].width = bufferSize / 1024; effectShader.data["src"].height = 512; effectShader.data["src"].input = sourceBuffer; effectShader.data["amount"].value = [ m_amount ]; effectShader.data["mixAmount"].value = [ m_mix ]; var effectJob:ShaderJob = new ShaderJob( effectShader, returnBuffer, bufferSize / 1024, 512 ); effectJob.start(true); return returnBuffer; } } }