Пример #1
0
 private void SendAudioData(List <byte> data)
 {
     if (!_enabled)
     {
         return;
     }
     if (RackItemOutputs.Count > 0)
     {
         RackContainer?.OutputPipe(RackItemOutputs.First(), data);
     }
 }
        private void SpectrumIn1(List <byte> data)
        {
            if (data.Count >= 64 * 3)
            {
                _graphicsIns[0] = data.ToArray();
            }

            var compositeGraphic = new byte[64 * 3];

            var i = 0;

            foreach (var t in _graphicsIns)
            {
                i++;
                if ((i == 1) && !Input1CheckBox.IsChecked.Value)
                {
                    continue;
                }
                if ((i == 2) && !Input2CheckBox.IsChecked.Value)
                {
                    continue;
                }
                for (var p = 0; p < 64; p++)
                {
                    var r = t[p];
                    var g = t[p + 64];
                    var b = t[p + 128];
                    if ((compositeGraphic[p] == 0) && (compositeGraphic[p + 64] == 0) && (compositeGraphic[p + 128] == 0))
                    {
                        compositeGraphic[p]       = r;
                        compositeGraphic[p + 64]  = g;
                        compositeGraphic[p + 128] = g;
                    }
                    else
                    {
                        compositeGraphic[p]       = (byte)((r + compositeGraphic[p]) / 2);
                        compositeGraphic[p + 64]  = (byte)((g + compositeGraphic[p + 64]) / 2);
                        compositeGraphic[p + 128] = (byte)((b + compositeGraphic[p + 128]) / 2);
                    }
                }
            }

            LedSimulator.Set(compositeGraphic);

            if (RackItemOutputs.Count > 0)
            {
                RackContainer.OutputPipe(RackItemOutputs.First(), compositeGraphic.ToList());
            }
        }
Пример #3
0
        private void SpectrumIn(List <byte> data)
        {
            data = new List <byte>(data);

            if (data.Count == 0)
            {
                return;
            }

            while (data.Count < 8)
            {
                for (var i = 0; i < data.Count; i += 2)
                {
                    data.Insert(i + 1, data[i]);
                }
            }

            while (data.Count >= 16)
            {
                for (var i = 0; i < data.Count; i += 1)
                {
                    data.RemoveAt(i);
                }
            }

            var graphicsData = new byte[64 * 3];

            var colStart = 0;

            for (var i = 0; i < 8; i += 1)
            {
                var barValue = (data[i] + 1) / 32;
                for (var j = 0; j < barValue; j++)
                {
                    graphicsData[colStart + j]       = (byte)(10 + 5 * j);
                    graphicsData[64 + colStart + j]  = (byte)(50 - 5 * j);
                    graphicsData[128 + colStart + j] = 10;
                }
                colStart += 8;
            }

            if (RackItemOutputs.Count > 0)
            {
                RackContainer.OutputPipe(RackItemOutputs.First(), graphicsData.ToList());
            }
        }
Пример #4
0
        private void SpectrumInput(List <byte> data)
        {
            if (_numberOfSamplesUpDown.Value == null)
            {
                return;
            }
            var samples = _numberOfSamplesUpDown.Value.Value;

            while (_history.Count < samples)
            {
                _history.Add(new List <byte>());
            }
            while (_history.Count > samples)
            {
                _history.RemoveAt(_history.Count - 1);
            }

            _history[++_current % _history.Count] = data;

            var processedDataInt = new List <int>();

            for (var i = 0; i < data.Count; i++)
            {
                processedDataInt.Add(0);
            }
            foreach (var t in _history)
            {
                for (var j = 0; j < t.Count; j++)
                {
                    processedDataInt[j] += t[j];
                }
            }

            var processedData = processedDataInt.Select(t => (byte)(t / samples)).ToList();

            if (RackItemOutputs.Count > 0)
            {
                RackContainer.OutputPipe(RackItemOutputs.First(), processedData);
            }
        }
        private void SpectrumIn(List <byte> data)
        {
            var newData = new List <byte>();

            if (SpectrumStackPanel.Children.Count != data.Count)
            {
                SpectrumStackPanel.Children.Clear();

                for (var i = 0; i < data.Count; i++)
                {
                    var bar = new ProgressBar
                    {
                        Style = _barStyle
                    };
                    SpectrumStackPanel.Children.Add(bar);
                }

                var barWidth = (SpectrumStackPanelGrid.ActualWidth - data.Count * 4) / data.Count;
                foreach (var progressBar in Bars)
                {
                    progressBar.Width = barWidth;
                }
            }

            var bars = Bars.ToList();

            for (var i = 0; i < data.Count; i++)
            {
                bars[i].Value = data[i];
                newData.Add(data[i]);
            }

            if (RackItemOutputs.Count > 0)
            {
                RackContainer.OutputPipe(RackItemOutputs.First(), newData);
            }
        }
        private void SwitchInput(List <byte> binaryData)
        {
            var compositeGraphic = new byte[192];

            for (var i = 0; i < Math.Min(_graphics.Count, binaryData.Count); i++)
            {
                if (binaryData[i] != 1)
                {
                    continue;
                }

                for (var p = 0; p < 64; p++)
                {
                    var r = _graphics[i].Graphic[p];
                    var g = _graphics[i].Graphic[p + 64];
                    var b = _graphics[i].Graphic[p + 128];
                    if ((compositeGraphic[p] == 0) && (compositeGraphic[p + 64] == 0) && (compositeGraphic[p + 128] == 0))
                    {
                        compositeGraphic[p]       = r;
                        compositeGraphic[p + 64]  = g;
                        compositeGraphic[p + 128] = g;
                    }
                    else
                    {
                        compositeGraphic[p]       = (byte)((r + compositeGraphic[p]) / 2);
                        compositeGraphic[p + 64]  = (byte)((g + compositeGraphic[p + 64]) / 2);
                        compositeGraphic[p + 128] = (byte)((b + compositeGraphic[p + 128]) / 2);
                    }
                }
            }

            if (RackItemOutputs.Count > 0)
            {
                RackContainer.OutputPipe(RackItemOutputs.First(), compositeGraphic.ToList());
            }
        }
Пример #7
0
        private void SpectrumPipeIn(List <byte> spectrum)
        {
            var spectrumCopy = spectrum.ToList();

            _maxBars = spectrumCopy.Count;
            _channelCountSlider.Maximum = _maxBars;

            while (_spectrumMax.Count < spectrumCopy.Count)
            {
                _spectrumMax.Add(0);
            }

            while (_spectrumMin.Count < spectrumCopy.Count)
            {
                _spectrumMin.Add(0);
            }

            for (var i = 0; i < spectrumCopy.Count; i++)
            {
                if (_decayUpDown.Value != null)
                {
                    _spectrumMax[i] -= _decayUpDown.Value.Value;
                    _spectrumMin[i] += _decayUpDown.Value.Value;
                }
                _spectrumMax[i] = Math.Max(_spectrumMax[i], spectrumCopy[i]);
                _spectrumMin[i] = Math.Min(_spectrumMin[i], spectrumCopy[i]);
                if (_spectrumMax[i] < _spectrumMin[i])
                {
                    _spectrumMax[i] = _spectrumMin[i];
                }
            }

            if (_numBars <= 1)
            {
                return;
            }

            var increment       = spectrum.Count / (_numBars - 1.0);
            var mostActiveBands = new List <int>();

            for (var d = 0.0; d < spectrumCopy.Count - increment / 2; d += increment)
            {
                var lowerBound = (int)Math.Max(0, Math.Ceiling(d - increment / 2));
                var upperBound = (int)Math.Min(spectrumCopy.Count - 1, Math.Floor(d + increment / 2));

                var bandRanges = new List <int>();
                for (var i = lowerBound; i <= upperBound; i++)
                {
                    bandRanges.Add((int)(_spectrumMax[i] - _spectrumMin[i]));
                }
                if (bandRanges.Count > 0)
                {
                    mostActiveBands.Add(lowerBound + bandRanges.IndexOf(bandRanges.Max()));
                }
            }

            var filteredSpectrum = mostActiveBands.Select(t => spectrumCopy[t]).ToList();

            if (RackItemOutputs.Count > 0)
            {
                RackContainer.OutputPipe(RackItemOutputs.First(), filteredSpectrum);
            }
        }
Пример #8
0
        private void SpectrumInput(List <byte> data)
        {
            while (_binaryData.Count < data.Count)
            {
                _binaryData.Add(0);
            }
            while (_binaryData.Count > data.Count)
            {
                _binaryData.RemoveAt(_binaryData.Count - 1);
            }

            if (_normalize)
            {
                while (_maxs.Count < data.Count)
                {
                    _maxs.Add(0);
                }
                while (_mins.Count < data.Count)
                {
                    _mins.Add(255);
                }

                for (var i = 0; i < data.Count; i++)
                {
                    _maxs[i] = Math.Max(data[i], _maxs[i]);
                    _mins[i] = Math.Min(data[i], _mins[i]);
                    if (NormalizationDecayDoubleUpDown.Value == null)
                    {
                        continue;
                    }
                    _maxs[i] -= (double)NormalizationDecayDoubleUpDown.Value.Value;
                    _mins[i] += (double)NormalizationDecayDoubleUpDown.Value.Value;

                    if (Math.Abs(_maxs[i] - _mins[i]) * ActivationPrecentDoubleUpDown.Value + _mins[i] < data[i])
                    {
                        _binaryData[i] = 1;
                    }
                    else if (Math.Abs(_maxs[i] - _mins[i]) * DeactivationPrecentDoubleUpDown.Value + _mins[i] > data[i])
                    {
                        _binaryData[i] = 0;
                    }
                }
            }
            else
            {
                for (var i = 0; i < data.Count; i++)
                {
                    if (255 * ActivationPrecentDoubleUpDown.Value < data[i])
                    {
                        _binaryData[i] = 1;
                    }
                    else if (255 * DeactivationPrecentDoubleUpDown.Value > data[i])
                    {
                        _binaryData[i] = 0;
                    }
                }
            }

            if (RackItemOutputs.Count > 0)
            {
                RackContainer.OutputPipe(RackItemOutputs.First(), _binaryData);
            }
        }