static void Process(Files.File file) { var audio = new Files.AudioFile { ID = file.ID, ContentType = file.ContentType, Name = file.Name, Size = file.Size, Url = file.Url, FullPath = file.FullPath }; audio.AlterPath = file.FullPath.ToLower().Replace("mp3", "wav"); var proxy = new BassProxy(); if (!File.Exists(audio.AlterPath)) proxy.RecodeTheFile(file.FullPath, audio.AlterPath, 5512); FingerprintManager manager = new FingerprintManager(); manager.FingerprintLength = Length; manager.TopWavelets = 150; manager.MaxFrequency = 2048; manager.MinFrequency = 512; //float[][] spec = manager.CreateSpectrogram(proxy, audio.AlterPath, 0, 0); var StaticStride = new StaticStride(0); audio.Finger = manager.CreateFingerprints(proxy, audio.AlterPath, StaticStride).ToArray(); FileProvider.Save(audio); }
/// <summary> /// Resample the song /// </summary> private void BtnResampleClick(object sender, EventArgs e) { if (String.IsNullOrEmpty(_tbPathToFile.Text)) { MessageBox.Show(Resources.SelectAPathToBeDrawn, Resources.SelectFile, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (!File.Exists(Path.GetFullPath(_tbPathToFile.Text))) { MessageBox.Show(Resources.NoSuchFile, Resources.NoSuchFile, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } SaveFileDialog sfd = new SaveFileDialog { Filter = Resources.FileFilterWav, FileName = Path.GetFileNameWithoutExtension(_tbPathToFile.Text) + ".wav" }; if (sfd.ShowDialog() == DialogResult.OK) { Action action = () => { using (BassProxy bass = new BassProxy()) { string pathToRecoded = Path.GetFullPath(sfd.FileName); bass.RecodeTheFile(_tbPathToFile.Text, pathToRecoded, (int) _nudSampleRate.Value); } }; FadeControls(false); action.BeginInvoke( (result) => { action.EndInvoke(result); FadeControls(true); MessageBox.Show(Resources.FileConverted, Resources.FileConverted, MessageBoxButtons.OK, MessageBoxIcon.Information); return; }, null); } }
static void Process(string path) { Console.WriteLine(path); var proxy = new BassProxy(); proxy.RecodeTheFile(path + ".mp3", path + ".wav", 5512); var data = File.CreateText(path + ".txt"); FingerprintManager manager = new FingerprintManager(); manager.FingerprintLength = Length; manager.TopWavelets = 150; manager.MaxFrequency = 2048; manager.MinFrequency = 512; float[][] spec = manager.CreateSpectrogram(proxy, path + ".wav", 0, 0); var StaticStride = ( path == "7" ) ? new StaticStride(Milliseconds) : new StaticStride(0); var fingerprint = manager.CreateFingerprints(proxy, path + ".wav", StaticStride); if (path == "4") { sfinger = fingerprint; } foreach (var finger in fingerprint) { int[] bits = finger.Select(f => f ? 1 : 0).ToArray(); data.WriteLine(string.Join(";", bits)); } data.Close(); if(File.Exists( path + ".jpg") ) File.Delete(path + ".jpg"); if (spec.Length > 0) { Bitmap image = Imaging.GetSpectrogramImage(spec, 800, 600); image.Save(path + ".jpg", ImageFormat.Jpeg); } if (path == "7") { var hasMin = new MinHash(new LocalPermutations("2.txt", ";")); var result = File.CreateText("r.txt"); Dictionary<int, int> count = new Dictionary<int, int>(); foreach (var finger in sfinger) { //var t = fingerprint.Select(p => MinHash.CalculateSimilarity(finger, p)).OrderByDescending(p => p).ToArray(); //var t = fingerprint.Select(p => MinHash.CalculateHammingDistance (finger, p)).OrderByDescending(p => p).ToArray(); //var t = sfinger.Select(p => MinHash.CalculateSimilarity(finger, p)).OrderByDescending(p => p).ToArray(); for (int i = 0; i < fingerprint.Count; i++) { var similarity = MinHash.CalculateSimilarity(finger, fingerprint[i]); if (similarity > 0.5f) { if (!count.ContainsKey(i)) count.Add(i, 0); count[i]++; result.Write("{1}:{0};", similarity.ToString("#.000"), i, i * 11.6f * Block, (i + 1) * 11.6f * Block); } } result.WriteLine(); } foreach (var c in count.OrderByDescending(p => p.Value)) result.Write("{0}:{1};", c.Key, c.Value); result.WriteLine("-------------------"); foreach (var c in count.OrderBy(p => p.Key)) result.WriteLine("{0}:{1} Time: {2} ms;", c.Key, c.Value, c.Key * 11.6f * Block); result.Close(); } }