Exemplo n.º 1
0
 protected override void InputSamplerateChanged(InputPort e)
 {
     _portOut.Samplerate = _portInp.Samplerate / 2;
     ((DataInputPort)InputPorts[0]).InitBuffer();
     _inputBuffer  = new TimeLocatedBuffer(GlobalSettings.Instance.BufferSize(_portInp.Samplerate), _portInp.Samplerate);
     _outputBuffer = new TimeLocatedBuffer(GlobalSettings.Instance.BufferSize(_portOut.Samplerate), _portOut.Samplerate);
 }
Exemplo n.º 2
0
 private static void CheckBufferSize(ref TimeLocatedBuffer buffer, int size, int rate)
 {
     if (buffer == null || buffer.Length < size)
     {
         buffer = new TimeLocatedBuffer(size, rate);
     }
 }
Exemplo n.º 3
0
 protected override void InputSamplerateChanged(InputPort e)
 {
     _portInp.InitBuffer();
     _bufIn              = new TimeLocatedBuffer(GlobalSettings.Instance.BufferSize(_portInp.Samplerate), _portInp.Samplerate);
     _bufOut             = new TimeLocatedBuffer(GlobalSettings.Instance.BufferSize(_portInp.Samplerate), _portInp.Samplerate);
     _portOut.Samplerate = _portInp.Samplerate;
 }
Exemplo n.º 4
0
        public void enqueue_dequeue()
        {
            var rate = 1000;

            var bufferWrite = new TimeLocatedBuffer(300, rate);
            var bufferRead  = new TimeLocatedBuffer(300, rate);

            var queue = new SignalRingBuffer(1000, rate)
            {
                SizeFixed = false
            };

            var samples = bufferWrite.GetSamples();

            for (int i = 0; i < samples.Length; i++)
            {
                samples[i] = i;
            }
            bufferWrite.SetWritten(samples.Length);
            queue.Enqueue(bufferWrite);
            Assert.AreEqual(bufferWrite.WrittenSamples, bufferWrite.Length);

            Assert.AreEqual(queue.Length, bufferWrite.WrittenSamples);

            queue.Dequeue(bufferRead);
            Assert.AreEqual(bufferRead.WrittenSamples, bufferWrite.WrittenSamples);
        }
Exemplo n.º 5
0
        public void enqueue_overflow_skip_data2()
        {
            var rate = 1000000;

            var bufferWrite = new TimeLocatedBuffer(rate / 10, rate);
            var bufferRead  = new TimeLocatedBuffer(rate / 10, rate);

            var queue = new SignalRingBuffer(rate, rate)
            {
                SizeFixed      = true,
                IgnoreOverflow = true
            };

            var samples = bufferWrite.GetSamples();

            for (int i = 0; i < samples.Length; i++)
            {
                samples[i] = i;
            }

            for (int i = 0; i < 12; i++)
            {
                bufferWrite.SetWritten(samples.Length);
                queue.Enqueue(bufferWrite);
            }

            Assert.AreEqual(queue.Length, queue.Capacity);
        }
Exemplo n.º 6
0
 public void SendData(TimeLocatedBuffer data)
 {
     foreach (var input in Connections)
     {
         ((FFTInputPort)input).RecieveData(data);
     }
 }
Exemplo n.º 7
0
 private void InitBuffers()
 {
     if (_portInp.Samplerate != 0)
     {
         var ffts = (int)((GlobalSettings.Instance.BufferSizeMilliseconds / 1000.0) * (_portInp.Samplerate / _fft.Size));
         _bufIn  = new TimeLocatedBuffer(_fft.Size * ffts, _portInp.Samplerate);
         _bufOut = new TimeLocatedBuffer(_fft.Size / 2 * ffts, _portInp.Samplerate / 2);
         _portInp.InitBuffer();
         _portInp.Queue.SizeFixed = true;
     }
 }
Exemplo n.º 8
0
        public override bool PrepareProcessing()
        {
            _input.InitBuffer();
            _input.Queue.SizeFixed = true;

            if (_buffer == null)
            {
                _buffer = new TimeLocatedBuffer(_input.Samplerate / 10, _input.Samplerate);
            }

            return(true);
        }
Exemplo n.º 9
0
 protected override void InputSamplerateChanged(InputPort e)
 {
     if (_buffer != null)
     {
         _buffer.Samplerate = _portInp.Samplerate;
     }
     else
     {
         if (_portInp.FFTSize > 0)
         {
             _buffer = new TimeLocatedBuffer(_portInp.FFTSize / 2, _portInp.Samplerate);
         }
     }
 }
Exemplo n.º 10
0
        public override bool PrepareProcessing()
        {
            if (_portInA.Samplerate != _portInB.Samplerate)
            {
                GlobalSettings.Instance.Errors.Add(new Error($"Adder: Input Samplerates not the same"));
                return(false);
            }

            if (!base.PrepareProcessing())
            {
                return(false);
            }
            _outputBuffer = TimeLocatedBuffer.Default(_portInA.Samplerate);
            return(true);
        }
Exemplo n.º 11
0
 public void SendData(TimeLocatedBuffer data)
 {
     foreach (var input in Connections)
     {
         var port = (DataInputPort)input;
         if (port.Queue.Capacity - port.Queue.Length < data.WrittenSamples)
         {
             System.Diagnostics.Debug.WriteLine("Waiting while outstanding jobs: " + CustomPool.Forker.CountRunning());
             while (port.Queue.Capacity - port.Queue.Length < data.WrittenSamples)
             {
                 System.Threading.Thread.Sleep(0);
             }
         }
         port.RecieveData(data);
     }
 }
Exemplo n.º 12
0
        public override bool PrepareProcessing()
        {
            if (_portData.Queue == null || _portData.Queue.Samplerate != _portData.Samplerate || _portData.Queue.Length < _samplesToKeep)
            {
                _portData.InitBuffer(_samplesToKeep * 2);
            }
            else
            {
                _portData.Queue.Clear();
            }

            if (_buffer == null || _buffer.Samplerate != _portData.Samplerate)
            {
                _buffer = new TimeLocatedBuffer(NodeSystemSettings.Instance.SystemHost.GetDefaultBufferSize(_portData.Samplerate), _portData.Samplerate);
            }

            return(true);
        }
Exemplo n.º 13
0
        public void RecieveData(TimeLocatedBuffer buf)
        {
            if (buf.Length % (_fftSize / 2) != 0)
            {
                throw new FFTDataLengthException();
            }

            if (Queue.Length + buf.WrittenSamples >= Queue.Capacity)
            {
                GlobalSettings.Instance.Errors.Add(new Error("Data Input: Buffer full. Data loss. Stopping"));
                GlobalSettings.Instance.StopProcessing(true);
            }
            else
            {
                Queue.Enqueue(buf);
                DataAvailable?.Invoke(this, Queue.Length);
            }
        }
Exemplo n.º 14
0
        public void enqueue_overflow_skip_data()
        {
            var rate = 1000;

            var bufferWrite = new TimeLocatedBuffer(300, rate);
            var bufferRead  = new TimeLocatedBuffer(300, rate);

            var queue = new SignalRingBuffer(1000, rate)
            {
                SizeFixed = true
            };

            var samples = bufferWrite.GetSamples();

            for (int i = 0; i < samples.Length; i++)
            {
                samples[i] = i;
            }
            bufferWrite.SetWritten(samples.Length);

            queue.Enqueue(bufferWrite);
            queue.Enqueue(bufferWrite);
            queue.Enqueue(bufferWrite);
            queue.Enqueue(bufferWrite);

            var queueSizeShouldBe = queue.Capacity;

            Assert.AreEqual(queueSizeShouldBe, queue.Length);

            queue.Dequeue(bufferRead);
            samples = bufferRead.GetSamples();
            for (int i = 0; i < samples.Length; i++)
            {
                Assert.AreEqual(samples[i], (200 + i) % 300);
            }

            queue.Dequeue(bufferRead);
            samples = bufferRead.GetSamples();
            for (int i = 0; i < samples.Length; i++)
            {
                Assert.AreEqual(samples[i], (500 + i) % 300);
            }
        }
Exemplo n.º 15
0
        public bool InitBuffer(int queueSamples = -1, int bufferSamples = -1)
        {
            try {
                if (Queue == null || Queue.Samplerate != Samplerate || (queueSamples >= 0 && Queue.Capacity < queueSamples))
                {
                    Queue = new SignalRingBuffer(queueSamples < 0 ? GlobalSettings.Instance.RingBufferSize(Samplerate) : queueSamples, Samplerate);
                }

                if (Buffer == null || Buffer.Samplerate != Samplerate || (bufferSamples >= 0 && Buffer.Length < bufferSamples))
                {
                    Buffer = TimeLocatedBuffer.Default(Samplerate);
                }

                return(true);
            } catch (Exception e) {
                GlobalSettings.Instance.Errors.Add(new Error($"InitBuffer of {Parent.Name}: {e}"));
                return(false);
            }
        }
Exemplo n.º 16
0
 public void RecieveData(TimeLocatedBuffer buf)
 {
     if (Queue == null)
     {
         GlobalSettings.Instance.Errors.Add(new Error("Data Input: Buffer not initialized"));
         GlobalSettings.Instance.StopProcessing();
         return;
     }
     else if (Queue.Length + buf.WrittenSamples > Queue.Capacity)
     {
         GlobalSettings.Instance.Errors.Add(new Error("Data Input: Buffer full. Data loss. Stopping"));
         GlobalSettings.Instance.StopProcessing();
     }
     else
     {
         Queue.Enqueue(buf);
         DataAvailable?.Invoke(this, Queue.Length);
     }
 }
Exemplo n.º 17
0
        public override bool PrepareProcessing()
        {
            if (!File.Exists(FileName))
            {
                NodeSystemSettings.Instance.SystemHost.ReportError(this, $"File not found: {FileName}");
                return(false);
            }

            try {
                _reader = new Stream1DReader(
                    new BinaryReader(
                        File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.Read)
                        )
                    );
            } catch (Exception e) {
                NodeSystemSettings.Instance.SystemHost.ReportError(this, $"Could not open {FileName}. Unknown exception: {e}");
                return(false);
            }

            if (_buffer == null || _buffer.Samplerate != Samplerate)
            {
                _buffer = new TimeLocatedBuffer(NodeSystemSettings.Instance.SystemHost.GetDefaultBufferSize(Samplerate), Samplerate);
            }

            _stateBag = new List <StateEntry>();

            _buffer.ResetTime();
            _fileTargetPosition = 0;

            if (NodeSystemSettings.Instance.SystemHost.DockPanelInstance != null)
            {
                _seekWindow                 = new FileNodeWindow();
                _seekWindow.Max             = _reader.SampleCount;
                _seekWindow.Min             = 0;
                _seekWindow.Value           = 0;
                _seekWindow.ValueBackground = 0;
            }

            _servedLookup = new List <bool>(Enumerable.Range(0, _portOut.Connections.Count).Select(i => false));

            return(true);
        }
Exemplo n.º 18
0
        public void enqueue_exact()
        {
            var rate = 1000;

            var bufferWrite = new TimeLocatedBuffer(1000, rate);

            var queue = new SignalRingBuffer(1000, rate)
            {
                SizeFixed = true
            };

            var samples = bufferWrite.GetSamples();

            for (int i = 0; i < samples.Length; i++)
            {
                samples[i] = i;
            }
            bufferWrite.SetWritten(samples.Length);

            queue.Enqueue(bufferWrite);

            Assert.AreEqual(bufferWrite.WrittenSamples, queue.Length);
            Assert.AreEqual(queue.Length, queue.Capacity);
        }
Exemplo n.º 19
0
        public override bool PrepareProcessing()
        {
            if (!File.Exists(FileName))
            {
                GlobalSettings.Instance.Errors.Add(new Error($"File not found: {FileName}"));
                return(false);
            }

            try {
                _fileStream = File.OpenRead(FileName);
            } catch (Exception e) {
                GlobalSettings.Instance.Errors.Add(new Error($"Could not open {FileName}. Unknown exception: {e}"));
                return(false);
            }

            _reader = new BinaryReader(_fileStream);

            if (_buffer == null || _buffer.Samplerate != Samplerate)
            {
                _buffer = new TimeLocatedBuffer(GlobalSettings.Instance.BufferSize(Samplerate), Samplerate);
            }

            _stateBag = new List <StateEntry>();

            _buffer.ResetTime();
            _fileTargetPosition = 0;

            if (GlobalSettings.Instance.DockPanelInstance != null)
            {
                _seekWindow = new FileNodeWindow();
            }

            _servedLookup = new List <bool>(Enumerable.Range(0, _portOut.Connections.Count).Select(i => false));

            return(true);
        }
Exemplo n.º 20
0
 // TODO: REIHENFOLGE, IN DER FFTSIZECHANGED UND INPUTSAMPLERATECHANGED AUFGERUFEN WERDEN
 protected override void FFTSizeChanged(InputPort e)
 {
     _buffer = new TimeLocatedBuffer(_portInp.FFTSize / 2, _portInp.Samplerate);
 }
Exemplo n.º 21
0
 public override bool PrepareProcessing()
 {
     _inp.InitBuffer();
     _buffer = new TimeLocatedBuffer(_inp.Samplerate / 10, _inp.Samplerate);
     return(true);
 }