コード例 #1
0
        private BitmapImage RenderWave(string filePath)
        {
            var rnd = new WaveFormRenderer();

            var topSpacerColor = System.Drawing.Color.FromArgb(64, 83, 22, 3);
            var soundCloudOrangeTransparentBlocks = new SoundCloudBlockWaveFormSettings(System.Drawing.Color.FromArgb(196, 197, 53, 0), topSpacerColor, System.Drawing.Color.FromArgb(196, 79, 26, 0),
                                                                                        System.Drawing.Color.FromArgb(64, 79, 79, 79))
            {
                Name          = "SoundCloud Orange Transparent Blocks",
                PixelsPerPeak = 2,
                SpacerPixels  = 1,
                TopSpacerGradientStartColor = topSpacerColor,
                BackgroundColor             = System.Drawing.Color.Transparent
            };

            WaveFormRendererSettings settings = soundCloudOrangeTransparentBlocks;

            settings.TopHeight    = 50;
            settings.BottomHeight = 0;
            settings.Width        = 500;
            settings.DecibelScale = false;

            var img = rnd.Render(filePath, new RmsPeakProvider(200), settings);

            var bmp = (Bitmap)img;

            return(ToBitmapImage(bmp));
        }
コード例 #2
0
        private void RenderThreadFunc(IPeakProvider peakProvider, WaveFormRendererSettings settings)
        {
            try
            {
                System.Drawing.Image image = _waveFormRenderer.Render(SoundItemData.FullPath, peakProvider, settings);

                Dispatcher.Invoke(() =>
                {
                    MemoryStream stream = new MemoryStream();
                    image.Save(stream, ImageFormat.Png);

                    SoundItemData.Image = new BitmapImage();
                    SoundItemData.Image.BeginInit();
                    SoundItemData.Image.StreamSource = stream;
                    SoundItemData.Image.EndInit();
                    SoundWave.Stretch = Stretch.Fill;
                    SoundWave.Source  = SoundItemData.Image;
                });
            }
            catch (Exception e)
            {
                int i = 0;
                i++;
            }
        }
 public Image Render(string selectedFile, IPeakProvider peakProvider, WaveFormRendererSettings settings)
 {
     using (var reader = new AudioFileReader(selectedFile))
     {
         int bytesPerSample  = (reader.WaveFormat.BitsPerSample / 8);
         var samples         = reader.Length / (bytesPerSample);
         var samplesPerPixel = (int)(samples / settings.Width);
         var stepSize        = settings.PixelsPerPeak + settings.SpacerPixels;
         peakProvider.Init(reader, samplesPerPixel * stepSize);
         return(Render(peakProvider, settings));
     }
 }
コード例 #4
0
        private WaveFormRendererSettings GetRendererSettings()
        {
            var settings = new WaveFormRendererSettings()
            {
                TopHeight    = 20,
                BottomHeight = 20,
                Width        = 10,
                DecibelScale = true
            };

            return(settings);
        }
コード例 #5
0
 private void RenderThreadFunc(IPeakProvider peakProvider, WaveFormRendererSettings settings)
 {
     System.Drawing.Image image = null;
     try
     {
         image        = waveFormRenderer.Render(selectedFile, peakProvider, settings);
         hello.Source = helperext.ToWpfImage(image);
     }
     catch (Exception e)
     {
         MessageBox.Show(e.Message);
     }
 }
コード例 #6
0
ファイル: Form1.cs プロジェクト: tsoudibi/Light_Ball_v1.5
        private void RenderThreadFunc(IPeakProvider peakProvider, WaveFormRendererSettings settings)
        {
            Image image = null;

            try {
                image = waveFormRenderer.Render(fileName, peakProvider, settings);
            }
            catch (Exception e) {
                MessageBox.Show("error");
                MessageBox.Show(e.Message);
            }
            BeginInvoke((Action)(() => FinishedRender(image)));
        }
        private static Image Render(IPeakProvider peakProvider, WaveFormRendererSettings settings)
        {
            if (settings.DecibelScale)
            {
                peakProvider = new DecibelPeakProvider(peakProvider, 48);
            }

            var b = new Bitmap(settings.Width, settings.TopHeight + settings.BottomHeight);

            if (settings.BackgroundColor == Color.Transparent)
            {
                b.MakeTransparent();
            }
            using (var g = Graphics.FromImage(b))
            {
                g.FillRectangle(settings.BackgroundBrush, 0, 0, b.Width, b.Height);
                var midPoint = settings.TopHeight;

                int x           = 0;
                var currentPeak = peakProvider.GetNextPeak();
                while (x < settings.Width)
                {
                    var nextPeak = peakProvider.GetNextPeak();

                    for (int n = 0; n < settings.PixelsPerPeak; n++)
                    {
                        var lineHeight = settings.TopHeight * currentPeak.Max;
                        g.DrawLine(settings.TopPeakPen, x, midPoint, x, midPoint - lineHeight);
                        lineHeight = settings.BottomHeight * currentPeak.Min;
                        g.DrawLine(settings.BottomPeakPen, x, midPoint, x, midPoint - lineHeight);
                        x++;
                    }

                    for (int n = 0; n < settings.SpacerPixels; n++)
                    {
                        // spacer bars are always the lower of the
                        var max = Math.Min(currentPeak.Max, nextPeak.Max);
                        var min = Math.Max(currentPeak.Min, nextPeak.Min);

                        var lineHeight = settings.TopHeight * max;
                        g.DrawLine(settings.TopSpacerPen, x, midPoint, x, midPoint - lineHeight);
                        lineHeight = settings.BottomHeight * min;
                        g.DrawLine(settings.BottomSpacerPen, x, midPoint, x, midPoint - lineHeight);
                        x++;
                    }
                    currentPeak = nextPeak;
                }
            }
            return(b);
        }
コード例 #8
0
        private void RenderThreadFunc(IPeakProvider peakProvider, WaveFormRendererSettings settings)
        {
            Image image = null;

            try
            {
                image = waveFormRenderer.Render(selectedFile, peakProvider, settings);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            FinishedRender(image);
        }
コード例 #9
0
        private void RenderThread(IPeakProvider peak, WaveFormRendererSettings settings)
        {
            Image image = null;

            try
            {
                image = waveFormRenderer.Render(path, peak, settings);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

            BeginInvoke((Action)(() => PctbxWave.Image = image));
        }
コード例 #10
0
        public Form1()
        {
            InitializeComponent();
            outputDevice = new WaveOutEvent();

            standardSettings = new StandardWaveFormRendererSettings
            {
                Name          = "StandardSettings",
                TopPeakPen    = new Pen(Color.DarkRed),
                BottomPeakPen = new Pen(Color.DarkViolet)
            };

            var topSpacerColor = Color.FromArgb(64, 83, 22, 3);

            var waveGraph = new SoundCloudBlockWaveFormSettings(Color.Coral, Color.Aqua, Color.Black, Color.AliceBlue)
            {
                Name          = "Waves",
                PixelsPerPeak = 2,
                SpacerPixels  = 1,
                TopSpacerGradientStartColor = Color.Aqua,
                BackgroundColor             = Color.Transparent
            };
        }
コード例 #11
0
ファイル: MainForm.cs プロジェクト: Sandell390/SongPlayer
        public MainForm()
        {
            InitializeComponent();
            waveFormRenderer = new WaveFormRenderer();

            standardSettings = new StandardWaveFormRendererSettings()
            {
                Name = "Standard"
            };
            var soundcloudOriginalSettings = new SoundCloudOriginalSettings()
            {
                Name = "SoundCloud Original"
            };

            var soundCloudLightBlocks = new SoundCloudBlockWaveFormSettings(Color.FromArgb(102, 102, 102), Color.FromArgb(103, 103, 103), Color.FromArgb(179, 179, 179),
                                                                            Color.FromArgb(218, 218, 218))
            {
                Name = "SoundCloud Light Blocks"
            };

            var soundCloudDarkBlocks = new SoundCloudBlockWaveFormSettings(Color.FromArgb(52, 52, 52), Color.FromArgb(55, 55, 55), Color.FromArgb(154, 154, 154),
                                                                           Color.FromArgb(204, 204, 204))
            {
                Name = "SoundCloud Darker Blocks"
            };

            var soundCloudOrangeBlocks = new SoundCloudBlockWaveFormSettings(Color.FromArgb(255, 76, 0), Color.FromArgb(255, 52, 2), Color.FromArgb(255, 171, 141),
                                                                             Color.FromArgb(255, 213, 199))
            {
                Name = "SoundCloud Orange Blocks"
            };

            var topSpacerColor = Color.FromArgb(64, 83, 22, 3);
            var soundCloudOrangeTransparentBlocks = new SoundCloudBlockWaveFormSettings(Color.FromArgb(196, 197, 53, 0), topSpacerColor, Color.FromArgb(196, 79, 26, 0),
                                                                                        Color.FromArgb(64, 79, 79, 79))
            {
                Name          = "SoundCloud Orange Transparent Blocks",
                PixelsPerPeak = 2,
                SpacerPixels  = 1,
                TopSpacerGradientStartColor = topSpacerColor,
                BackgroundColor             = Color.Transparent
            };

            var topSpacerColor2 = Color.FromArgb(64, 224, 224, 224);
            var soundCloudGrayTransparentBlocks = new SoundCloudBlockWaveFormSettings(Color.FromArgb(196, 224, 225, 224), topSpacerColor2, Color.FromArgb(196, 128, 128, 128),
                                                                                      Color.FromArgb(64, 128, 128, 128))
            {
                Name          = "SoundCloud Gray Transparent Blocks",
                PixelsPerPeak = 2,
                SpacerPixels  = 1,
                TopSpacerGradientStartColor = topSpacerColor2,
                BackgroundColor             = Color.Transparent
            };


            buttonBottomColour.BackColor = standardSettings.BottomPeakPen.Color;
            buttonTopColour.BackColor    = standardSettings.TopPeakPen.Color;
            comboBoxPeakCalculationStrategy.Items.Add("Max Absolute Value");
            comboBoxPeakCalculationStrategy.Items.Add("Max Rms Value");
            comboBoxPeakCalculationStrategy.Items.Add("Sampled Peaks");
            comboBoxPeakCalculationStrategy.Items.Add("Scaled Average");
            comboBoxPeakCalculationStrategy.SelectedIndex         = 0;
            comboBoxPeakCalculationStrategy.SelectedIndexChanged += (sender, args) => RenderWaveform();

            comboBoxRenderSettings.DisplayMember = "Name";

            comboBoxRenderSettings.DataSource = new[]
            {
                standardSettings,
                soundcloudOriginalSettings,
                soundCloudLightBlocks,
                soundCloudDarkBlocks,
                soundCloudOrangeBlocks,
                soundCloudOrangeTransparentBlocks,
                soundCloudGrayTransparentBlocks
            };

            comboBoxRenderSettings.SelectedIndex         = 5;
            comboBoxRenderSettings.SelectedIndexChanged += (sender, args) => RenderWaveform();

            labelRendering.Visible = false;
        }
 public Image Render(string selectedFile, WaveFormRendererSettings settings)
 {
     return(Render(selectedFile, new MaxPeakProvider(), settings));
 }
コード例 #13
0
ファイル: Form1.cs プロジェクト: tsoudibi/Light_Ball_v1.5
        public LightBallHelper()
        {
            InitializeComponent();
            labelNowTime.Text   = prefixNowTime;
            labelTotalTime.Text = prefixTotalTime;
            /* Waveform setup */
            waveFormRenderer = new WaveFormRenderer();
            standardSettings = new StandardWaveFormRendererSettings()
            {
                Name = "Standard"
            };

            BtnTopColour.BackColor    = standardSettings.TopPeakPen.Color;
            BtnBottomColour.BackColor = standardSettings.BottomPeakPen.Color;

            updownTopHeight.Value    = 80;
            updownBottomHeight.Value = 80;
            labelRendering.Visible   = false;
            timer1.Enabled           = false;
            Bitmap bitmap = new Bitmap(Resource1.indicator);

            pictureBoxIndicator.BackColor = Color.Transparent;
            pictureBoxIndicator.Location  = new Point(START_POS - 5, WAVE_LOC_Y - 5);
            pictureBoxIndicator.Image     = bitmap;

            UpdownOffset.Value = 50;

            comboBoxPeakCalculationStrategy.Items.Add("Max Rms Value");
            comboBoxPeakCalculationStrategy.Items.Add("Max Absolute Value");
            comboBoxPeakCalculationStrategy.Items.Add("Sampled Peaks");
            comboBoxPeakCalculationStrategy.Items.Add("Scaled Average");
            comboBoxPeakCalculationStrategy.SelectedIndex         = 0;
            comboBoxPeakCalculationStrategy.SelectedIndexChanged += (sender, args) => {
                if (!String.IsNullOrEmpty(fileName))
                {
                    RenderWaveform();
                }
            };

            /* Effects Setup */
            effectListObj = new List <Effects>();

            effectsOptions.Items.Add(Effects.EffectsNames.EffectHSL.ToString());
            effectsOptions.Items.Add(Effects.EffectsNames.EffectColorTransition.ToString());
            effectsOptions.Items.Add(Effects.EffectsNames.EffectSparkAsync.ToString());
            effectsOptions.Items.Add(Effects.EffectsNames.EffectSparkSync.ToString());
            effectsOptions.Items.Add(Effects.EffectsNames.EffectMeteorAsync.ToString());
            effectsOptions.Items.Add(Effects.EffectsNames.EffectMeteorSync.ToString());
            effectsOptions.Items.Add(Effects.EffectsNames.EffectBounceAsync.ToString());
            effectsOptions.Items.Add(Effects.EffectsNames.EffectBounceSync.ToString());
            keyColor = Color.AliceBlue;
            setColor(keyColor);
            textBoxGlobalStarting.Text = getFormatedTimeString(Effects.globalStartingTime);
            textBoxNumberOfBalls.Text  = Effects.numOfBall.ToString();

            // Setup Effect Attr Objects
            {
                effectAttrLabel[0] = this.labelEffectAttr0;
                effectAttrValue[0] = this.textBoxEffectAttr0;
                effectAttrUnit[0]  = this.unitEffectAttr0;
                effectAttrLabel[1] = this.labelEffectAttr1;
                effectAttrValue[1] = this.textBoxEffectAttr1;
                effectAttrUnit[1]  = this.unitEffectAttr1;
                effectAttrLabel[2] = this.labelEffectAttr2;
                effectAttrValue[2] = this.textBoxEffectAttr2;
                effectAttrUnit[2]  = this.unitEffectAttr2;
                effectAttrLabel[3] = this.labelEffectAttr3;
                effectAttrValue[3] = this.textBoxEffectAttr3;
                effectAttrUnit[3]  = this.unitEffectAttr3;
                effectAttrLabel[4] = this.labelEffectAttr4;
                effectAttrValue[4] = this.textBoxEffectAttr4;
                effectAttrUnit[4]  = this.unitEffectAttr4;
                effectAttrLabel[5] = this.labelEffectAttr5;
                effectAttrValue[5] = this.textBoxEffectAttr5;
                effectAttrUnit[5]  = this.unitEffectAttr5;
            }

            /* Configuration */
            textBoxGlobalStarting.Text = LightBallHelper.getFormatedTimeString(TimeSpan.Zero);
            textBoxEffectAttr5.Text    = "0";
        }