Ejemplo n.º 1
0
 public override Stereo <float> this[float offset] {
     get {
         var ps      = this.MakeInterpolationParameters(offset);
         var former  = ps.Item1;
         var latter  = ps.Item2;
         var offFrac = ps.Item3;
         return(Stereo.Create(this.Interpolate(former.Left, latter.Left, offFrac),
                              this.Interpolate(former.Right, latter.Right, offFrac)));
     }
 }
Ejemplo n.º 2
0
        private static IEnumerable <Stereo <float> > MakeStereo(IEnumerable <float> samples)
        {
            float?left = null;

            foreach (var sample in samples)
            {
                if (left.HasValue)
                {
                    var right = sample;
                    yield return(Stereo.Create(left.Value, right));

                    left = null;
                }
                else
                {
                    left = sample;
                }
            }
        }
Ejemplo n.º 3
0
        public Node <Stereo <float> > AsStereoFloat()
        {
            if (this.ValueType == typeof(Stereo <float>))
            {
                return((Node <Stereo <float> >) this);
            }
            else if (this.ValueType == typeof(Stereo <int>))
            {
                return(Node.Create(((Node <Stereo <int> >) this).UseAsStream().Select(v => Stereo.Create((float)v.Left, (float)v.Right)), false, this));
            }
            else if (this.ValueType == typeof(float))
            {
                return(((Node <float>) this).AsStereo());
            }
            else if (this.ValueType == typeof(int))
            {
                return(((Node <int>) this).AsStereo().AsStereoFloat());
            }

            throw new InvalidCastException($"cannot convert node of type {this.ValueType} into node of float");
        }