Ejemplo n.º 1
0
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
            dlg.DefaultExt  = ".wav";
            dlg.Multiselect = true;
            dlg.Filter      = "Wave files|*.wav";

            if (dlg.ShowDialog() == true)
            {
                var profile = FingerprintGenerator.GetProfiles()[0];

                spectrogram1.SpectrogramSize = profile.WindowSize / 2;
                spectrogram2.SpectrogramSize = profile.WindowSize / 2;

                ColorGradient gradient = new ColorGradient(0, 1);
                gradient.AddStop(Colors.Black, 0);
                gradient.AddStop(Colors.White, 1);
                var palette = gradient.GetGradientArgbArray(1024);
                // Set zero dB to red, and then set all found peaks to zero dB to make them visible in the spectrogram
                palette[palette.Length - 1] = ColorGradient.ColorToArgb(Colors.Red);

                spectrogram1.ColorPalette = palette;
                spectrogram2.ColorPalette = palette;

                var store = new FingerprintStore(profile);

                Task.Factory.StartNew(() => {
                    foreach (string file in dlg.FileNames)
                    {
                        AudioTrack audioTrack              = new AudioTrack(new FileInfo(file));
                        IAudioStream audioStream           = audioTrack.CreateAudioStream();
                        IProgressReporter progressReporter = ProgressMonitor.GlobalInstance.BeginTask("Generating fingerprints for " + audioTrack.FileInfo.Name, true);
                        int hashCount = 0;

                        FingerprintGenerator fpg = new FingerprintGenerator(profile);
                        fpg.FrameProcessed      += delegate(object sender2, FrameProcessedEventArgs e2) {
                            var spectrum         = (float[])e2.Spectrum.Clone();
                            var spectrumResidual = (float[])e2.SpectrumResidual.Clone();
                            Dispatcher.BeginInvoke((Action) delegate {
                                spectrogram1.AddSpectrogramColumn(spectrum);
                                spectrogram2.AddSpectrogramColumn(spectrumResidual);
                                progressReporter.ReportProgress((double)e2.Index / e2.Indices * 100);
                            });
                        };
                        fpg.SubFingerprintsGenerated += delegate(object sender2, SubFingerprintsGeneratedEventArgs e2) {
                            hashCount += e2.SubFingerprints.Count;
                            store.Add(e2);
                        };

                        fpg.Generate(audioTrack);
                        Debug.WriteLine("{0} hashes (mem {1:0.00} mb)", hashCount, (hashCount * Marshal.SizeOf(typeof(SubFingerprintHash))) / 1024f / 1024f);

                        progressReporter.Finish();
                    }
                    store.FindAllMatches();
                });
            }
        }
Ejemplo n.º 2
0
        public DtwPath()
        {
            ColorGradient gradient = new ColorGradient(0, 1);

            gradient.AddStop(Colors.Black, 0);
            gradient.AddStop(Colors.White, 1);
            colorPalette = gradient.GetGradient(256).Select(c => GetColorValue(c)).ToArray();

            pathColor  = GetColorValue(Colors.LimeGreen);
            minColor   = GetColorValue(Colors.Magenta);
            maxColor   = GetColorValue(Colors.Red);
            undefColor = GetColorValue(Colors.White);

            ClipToBounds = true;
        }
Ejemplo n.º 3
0
        public MultiTrackConnectionAdorner(UIElement adornedElement, MultiTrackListBox multiTrackListBox)
            : base(adornedElement)
        {
            this.multiTrackListBox = multiTrackListBox;
            matches = new ObservableCollection <Match>();
            matches.CollectionChanged         += Matches_CollectionChanged;
            selectedMatches                    = new ObservableCollection <Match>();
            selectedMatches.CollectionChanged += Matches_CollectionChanged;

            ColorGradient gradient = new ColorGradient(0, 1);

            gradient.AddStop(Colors.DarkRed, 0);
            gradient.AddStop(Colors.Red, 0.5f);
            gradient.AddStop(Colors.Yellow, 0.65f);
            gradient.AddStop(Colors.Green, 0.8f);
            gradient.AddStop(Colors.DarkGreen, 1);
            colors = gradient.GetGradient(1024).ToArray();
        }