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