Пример #1
0
        private void updateList(Chart.ChartSlice slice)
        {
            Panel subPanel = new Panel();

            subPanel.Location  = new Point(12, 12 + (countOfPanels) * (40 + 12));
            subPanel.Size      = new Size(panel.Width - 44, 40);
            subPanel.BackColor = Color.LightGray;

            WaveViewer waveViewer = new WaveViewer();

            waveViewer.Width           = subPanel.Width / 2;
            waveViewer.Height          = subPanel.Height - 4;
            waveViewer.Location        = new Point(2, 2);
            waveViewer.SamplesPerPixel = slice.rawData.Length / waveViewer.Width / slice.wf.BlockAlign;
            waveViewer.WaveStream      = new NAudio.Wave.WaveFileReader(new MemoryStream(slice.rawData));
            waveViewer.BackColor       = Color.White;

            NumericUpDown numUpDown = new NumericUpDown();

            numUpDown.DecimalPlaces = 2;
            numUpDown.Increment     = 0.01M;
            numUpDown.Minimum       = 0.70M;
            numUpDown.Maximum       = 3.00M;
            numUpDown.Width         = subPanel.Width / 4;
            numUpDown.Height        = subPanel.Height / 2 - 4;
            numUpDown.Location      = new Point(waveViewer.Width + 8, (subPanel.Height - numUpDown.Height) / 2);
            numUpDown.Text          = String.Format("{0:0.00}", slice.rate);
            numUpDown.TextAlign     = HorizontalAlignment.Right;
            numUpDown.ValueChanged += new EventHandler(UpdateRate);

            Label label = new Label();

            label.Width     = 12;
            label.Height    = 12;
            label.Text      = "X";
            label.BackColor = Color.White;
            label.Location  = new Point(subPanel.Width - 14, 2);
            label.Click    += new EventHandler(LB_Click);

            Label label1 = new Label();

            label1.Width    = 12;
            label1.Height   = 12;
            label1.Text     = "X";
            label1.Location = new Point(waveViewer.Width + numUpDown.Width + 8, (subPanel.Height - numUpDown.Height) / 2 + 4);

            subPanel.Controls.Add(waveViewer);
            subPanel.Controls.Add(numUpDown);
            subPanel.Controls.Add(label);
            subPanel.Controls.Add(label1);
            subPanel.Name = "subPanel" + slice.GetHashCode();

            panel.Controls.Add(subPanel);

            UpdateMainWaveform();

            countOfPanels++;
        }
Пример #2
0
        private void StartRecordingButton_Click(object sender, RoutedEventArgs e)
        {
            var config = new Core.RecorderConfig()
            {
                DeviceNumber  = 0,
                RecordSeconds = 100,
            };

            Recorder = new Core.Recorder(config);
            WaveViewer.SetDataRange(Core.FrequencyData.BlockSize, 0, Core.FrequencyData.BlockSize, short.MinValue, short.MaxValue);
            FrequencyViewer.SetDataRange(Core.FrequencyData.BlockSize, i => Math.Log2(i + 1), (min: -10, max: 10));
            Recorder.OnRecorededOneBlock += OnRecordedOneBlock;
            Recorder.Start();
        }
Пример #3
0
        public RootControl()
        {
            TimelineLayout = new TimelineLayout();
            Playback       = new TimelinePlayback(TimeSpan.FromMinutes(3));
            Timeline       = TimelineData.FakeData(TimelineLayout, Playback);

            InitializeComponent();

            this.video.Position = TimeSpan.Zero;


            Playback.WhenTimeChanged.Subscribe(time =>
            {
                var scrollPosition = TimelineLayout.GetScrollPosition(time);

                //var playerHeadPosition = TimelineLayout.GetPlayerHeadPosition(time);

                //overlay.Set(playerHeadPosition);

                ScrollTo(scrollPosition);

                whenTimeChanged.OnNext(time);

                var caption = Timeline.PlaybackCaption;

                whenPlaybackCaptionChanged.OnNext(caption);

                Thread.Sleep(100);
            });

            var viewer = new WaveViewer();

            viewer.BackColor  = System.Drawing.Color.LightGray;
            viewer.WaveStream = new WaveFileReader(@"C:\Users\Amichai\Desktop\The Zahir.wav");

            this.Host.Child = viewer;

            TimelineLayout.WhenZoomChanged.Subscribe(zoom =>
            {
                var scale = TimelineLayout.Zoom / 100f;
                viewer.SamplesPerPixel = (int)Math.Round(128 / scale);
            });
        }
Пример #4
0
        private void DrawWave()
        {
            Graphics gr = Graphics.FromImage(WaveViewer.Image);

            if (step > WaveViewer.Image.Width)
            {
                gr.Clear(Color.White);
                step = 0;
            }
            lastPeak = (lastPeak / 100) * WaveViewer.Height;
            if (lastPeak == 0)
            {
                lastPeak = 1;
            }
            float      fark = ((WaveViewer.Height - lastPeak) / 2);
            RectangleF wave = new RectangleF(new PointF(step, fark), new SizeF(1, lastPeak));

            gr.FillRectangle(Brushes.Red, wave);
            gr.Dispose();
            WaveViewer.Refresh();
            step++;
        }