public static void SimpleTest(string indexFile, IHashMaker hashMaker, bool bQuiet) { bool bTextFile = IsTextFile(indexFile); DataBase dataBase = new DataBase(hashMaker); if (bTextFile) dataBase.Load(indexFile); else dataBase.LoadFromBinary(indexFile); dataBase.Quiet = bQuiet; int seconds = 10; while (true) { Console.WriteLine("Press any key to identify a new song, press ESC to exit.\n"); ConsoleKeyInfo keyInfo = Console.ReadKey(); if (keyInfo.Key == ConsoleKey.Escape) break; byte[] audio = null; Console.WriteLine("Start recording audio from mic ...", seconds); MicRecorder recorder = new MicRecorder(); recorder.Seconds = seconds; recorder.RequestStop = false; recorder.RecStart(); audio = recorder.GetAudioData(); dataBase.UseFFTW = false; Indexing(dataBase, audio); dataBase.UseFFTW = true; Indexing(dataBase, audio); dataBase.UseSort = true; Indexing(dataBase, audio); //dataBase.UseFilter = true; //timeInterval.Reset(); //id = dataBase.GetBestHit(audio, 16); //intervalInSecond = timeInterval.GetDurationInSecond(); //Console.WriteLine("--------------------"); //Console.Write("Final Match ({0}s):\t", intervalInSecond); //if (id < 0) // Console.WriteLine("No match!"); //else // Console.WriteLine(dataBase.GetNameByID(id)); //Console.WriteLine("--------------------"); } }
public static void SimpleTest(string dataBaseFile) { DataBase dataBase = new DataBase(new LongHash()); dataBase.Load(dataBaseFile); int seconds = 10; while (true) { Console.WriteLine("Press any key to identify a new song, press ESC to exit.\n"); ConsoleKeyInfo keyInfo = Console.ReadKey(); if (keyInfo.Key == ConsoleKey.Escape) break; byte[] audio = null; Console.WriteLine("Start recording audio from mic ...", seconds); MicRecorder recorder = new MicRecorder(); recorder.Seconds = seconds; recorder.RequestStop = false; recorder.RecStart(); audio = recorder.GetAudioData(); Console.WriteLine("Length of audio data is {0}.", audio.Length); int id = GetBestHit(audio, dataBase, 16); Console.WriteLine("[Normal] The name of this song is : {0}", dataBase.GetNameByID(id)); int peakPercent = 95; double normPercent = 1.0; sbyte minPeak; sbyte maxPeak; sbyte peak; double ratio = 1.0; Normalize.getPeaks8(audio, out minPeak, out maxPeak); Console.WriteLine("Normal Peak : {0} {1}", minPeak, maxPeak); minPeak *= -1; peak = (minPeak > maxPeak) ? minPeak : maxPeak; ratio = 127.0 / peak * normPercent; Console.WriteLine("Ratio : {0}", ratio); byte[] newData = Normalize.Amplify(audio, ratio); id = GetBestHit(newData, dataBase, 16); Console.WriteLine("[Normal Peak] The name of this song is : {0}", dataBase.GetNameByID(id)); if (!Normalize.getSmartPeaks8(audio, peakPercent, out minPeak, out maxPeak)) Console.WriteLine("Error in Normalize.getSmartPeaks8"); else { Console.WriteLine("Smart Peak : {0} {1}", minPeak, maxPeak); minPeak *= -1; peak = (minPeak > maxPeak) ? minPeak : maxPeak; ratio = 127.0 / peak * normPercent; Console.WriteLine("Ratio : {0}", ratio); newData = Normalize.Amplify(audio, ratio); Normalize.getPeaks8(newData, out minPeak, out maxPeak); Console.WriteLine("Normal Peak After Amplify : {0} {1}", minPeak, maxPeak); id = GetBestHit(newData, dataBase, 16); Console.WriteLine("[Smart Peak] The name of this song is : {0}", dataBase.GetNameByID(id)); } } }