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++; }
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(); }
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); }); }
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++; }