Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #region usings
- using System;
- using System.ComponentModel.Composition;
- using VVVV.PluginInterfaces.V1;
- using VVVV.PluginInterfaces.V2;
- using VVVV.Utils.VColor;
- using VVVV.Utils.VMath;
- using VVVV.Core.Logging;
- #endregion usings
- namespace VVVV.Nodes
- {
- public abstract class ValueFilterNode : IPluginEvaluate
- {
- [Input("Input")]
- public ISpread<double> FInput;
- [Input("Period")]
- public ISpread<double> FPeriodIn;
- [Output("Output")]
- public ISpread<double> FOutput;
- [Import]
- protected IHDEHost FHost;
- private Spread<double> FPreviousInput = new Spread<double>(1);
- private Spread<double> FPreviousOutput = new Spread<double>(1);
- private double FTime;
- public void Evaluate(int spreadMax)
- {
- var time = FHost.FrameTime;
- var deltaTime = (time - FTime) * 2 * Math.PI;
- FTime = time;
- FOutput.SliceCount = spreadMax;
- for (int i = 0; i < spreadMax; i++)
- {
- FOutput[i] = Filter(
- deltaTime,
- FPeriodIn[i],
- FInput[i],
- FPreviousInput[i],
- FPreviousOutput[i]
- );
- }
- FPreviousInput.AssignFrom(FInput);
- FPreviousOutput.AssignFrom(FOutput);
- }
- protected abstract double Filter(double deltaTime, double rc, double x, double oldX, double y);
- }
- [PluginInfo(Name = "HighPassFilter", Category = "Value", Credits = "http://en.wikipedia.org/wiki/High-pass_filter")]
- public class ValueHighPassFilterNode : ValueFilterNode
- {
- protected override double Filter(double deltaTime, double rc, double x, double oldX, double y)
- {
- var alpha = rc / (rc + deltaTime);
- return alpha * (y + x - oldX);
- }
- }
- [PluginInfo(Name = "LowPassFilter", Category = "Value", Credits = "http://en.wikipedia.org/wiki/Low-pass_filter")]
- public class ValueLowPassFilterNode : ValueFilterNode
- {
- protected override double Filter(double deltaTime, double rc, double x, double oldX, double y)
- {
- var alpha = deltaTime / (rc + deltaTime);
- return y + alpha * (x - y);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement