Exemple #1
0
        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);
            }
        }
Exemple #3
0
        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();
            }
        }