public void CreateFingerprintsFromFileAndFromAudioSamplesAndGetTheSameResultTest() { const int SecondsToProcess = 20; const int StartAtSecond = 15; using (var audioService = new BassAudioService()) { float[] samples = audioService.ReadMonoFromFile(PathToMp3, SampleRate, SecondsToProcess, StartAtSecond); var hashDatasFromFile = fingerprintCommandBuilderWithBass .BuildFingerprintCommand() .From(PathToMp3, SecondsToProcess, StartAtSecond) .WithDefaultFingerprintConfig() .Hash() .Result; var hashDatasFromSamples = fingerprintCommandBuilderWithBass .BuildFingerprintCommand() .From(samples) .WithDefaultFingerprintConfig() .Hash() .Result; AssertHashDatasAreTheSame(hashDatasFromFile, hashDatasFromSamples); } }
public void SetUp() { bassServiceProxy = new Mock <IBassServiceProxy>(MockBehavior.Strict); DependencyResolver.Current.Bind <IBassServiceProxy, IBassServiceProxy>(bassServiceProxy.Object); if (!BassAudioService.IsNativeBassLibraryInitialized) { bassServiceProxy.Setup(proxy => proxy.RegisterBass(It.IsAny <string>(), It.IsAny <string>())); bassServiceProxy.Setup(proxy => proxy.BassLoadMe(It.IsAny <string>())).Returns(true); bassServiceProxy.Setup(proxy => proxy.BassMixLoadMe(It.IsAny <string>())).Returns(true); bassServiceProxy.Setup(proxy => proxy.BassFxLoadMe(It.IsAny <string>())).Returns(true); bassServiceProxy.Setup(proxy => proxy.GetVersion()).Returns(1232); bassServiceProxy.Setup(proxy => proxy.GetMixerVersion()).Returns(1233); bassServiceProxy.Setup(proxy => proxy.GetFxVersion()).Returns(1234); bassServiceProxy.Setup(proxy => proxy.PluginLoadDirectory(It.IsAny <string>())).Returns( new Dictionary <int, string> { { 1, "bassflac.dll" } }); bassServiceProxy.Setup( proxy => proxy.Init( -1, BassAudioService.DefaultSampleRate, BASSInit.BASS_DEVICE_DEFAULT | BASSInit.BASS_DEVICE_MONO)) .Returns(true); bassServiceProxy.Setup(proxy => proxy.SetConfig(BASSConfig.BASS_CONFIG_MIXER_FILTER, 50)).Returns(true); bassServiceProxy.Setup(proxy => proxy.SetConfig(BASSConfig.BASS_CONFIG_FLOATDSP, true)).Returns(true); bassServiceProxy.Setup(proxy => proxy.RecordInit(-1)).Returns(true); } bassAudioService = new BassAudioService(); }
public void CreateFingerprintsInsertThenQueryAndGetTheRightResult() { const int SecondsToProcess = 10; const int StartAtSecond = 30; var tagService = new BassAudioService(); TagInfo info = tagService.GetTagInfo(PathToMp3); TrackData track = new TrackData( info.ISRC, info.Artist, info.Title, info.Album, info.Year, (int)info.Duration); var trackReference = modelService.InsertTrack(track); var hashDatas = fingerprintCommandBuilderWithBass .BuildFingerprintCommand() .From(PathToMp3, SecondsToProcess, StartAtSecond) .WithDefaultFingerprintConfig() .Hash() .Result; modelService.InsertHashDataForTrack(hashDatas, trackReference); var queryResult = queryFingerprintService.Query(hashDatas, new DefaultQueryConfiguration()); Assert.IsTrue(queryResult.IsSuccessful); Assert.AreEqual(1, queryResult.ResultEntries.Count); Assert.AreEqual(trackReference.HashCode, queryResult.ResultEntries[0].Track.TrackReference.HashCode); }
public FingerprintCommandBuilderIntTest() { bassAudioService = new BassAudioService(); naudioAudioService = new NAudioService(); modelService = new SqlModelService(); fingerprintCommandBuilder = new FingerprintCommandBuilder(); queryFingerprintService = new QueryFingerprintService(); }
public FingerprintCommandBuilderIntTest() { bassAudioService = new BassAudioService(); audioService = new NAudioService(); modelService = new SqlModelService(); bassWaveFileUtility = new BassWaveFileUtility(); fingerprintCommandBuilder = new FingerprintCommandBuilder(); queryFingerprintService = new QueryFingerprintService(); }
public void ReadMonoFromFileTest() { using (BassAudioService bassAudioService = new BassAudioService()) { string tempFile = string.Format(@"{0}{1}", Path.GetTempPath(), "0.wav"); bassAudioService.RecodeFileToMonoWave(PathToMp3, tempFile, SampleRate); float[] samples = bassAudioService.ReadMonoFromFile(PathToMp3, SampleRate); FileInfo info = new FileInfo(tempFile); long expectedSize = info.Length - WaveHeader; long actualSize = samples.Length * (BitsPerSample / 8); Assert.AreEqual(expectedSize, actualSize); } }
public void CreateFingerprintsFromDefaultFileAndAssertNumberOfFingerprints() { const int StaticStride = 5115; ITagService tagService = new BassAudioService(); var audioFingerprintingUnit = fingerprintCommandBuilderWithBass.BuildFingerprintCommand() .From(PathToMp3) .WithFingerprintConfig(config => { config.Stride = new IncrementalStaticStride(StaticStride, config.SamplesPerFingerprint); }); double seconds = tagService.GetTagInfo(PathToMp3).Duration; int samples = (int)(seconds * audioFingerprintingUnit.FingerprintConfiguration.SampleRate); int expectedFingerprints = (samples / StaticStride) - 1; var fingerprints = audioFingerprintingUnit.Fingerprint().Result; Assert.AreEqual(expectedFingerprints, fingerprints.Count); }
public void ComparePreStoredSameplesWithCurrentlyReadAudioSamples() { BinaryFormatter serializer = new BinaryFormatter(); using (Stream stream = new FileStream(PathToSamples, FileMode.Open, FileAccess.Read)) { float[] samples = (float[])serializer.Deserialize(stream); using (BassAudioService bassAudioService = new BassAudioService()) { float[] readSamples = bassAudioService.ReadMonoFromFile(PathToMp3, SampleRate); Assert.AreEqual(samples.Length, readSamples.Length); for (int i = 0; i < samples.Length; i++) { Assert.IsTrue(Math.Abs(samples[i] - readSamples[i]) < 0.0000001); } } } }
public void CheckFingerprintCreationAlgorithmTest() { using (BassAudioService bassAudioService = new BassAudioService()) { string tempFile = Path.GetTempPath() + DateTime.Now.Ticks + ".wav"; bassAudioService.RecodeFileToMonoWave(PathToMp3, tempFile, 5512); long fileSize = new FileInfo(tempFile).Length; var list = fingerprintCommandBuilderWithBass.BuildFingerprintCommand() .From(PathToMp3) .WithFingerprintConfig(customConfiguration => customConfiguration.Stride = new StaticStride(0, 0)) .Fingerprint() .Result; long expected = fileSize / (8192 * 4); // One fingerprint corresponds to a granularity of 8192 samples which is 16384 bytes Assert.AreEqual(expected, list.Count); File.Delete(tempFile); } }
public void CompareReadingFromASpecificPartOfTheSong() { const int SecondsToRead = 10; const int StartAtSecond = 20; const int AcceptedError = 5; BinaryFormatter serializer = new BinaryFormatter(); using (Stream stream = new FileStream(PathToSamples, FileMode.Open, FileAccess.Read)) { float[] samples = (float[])serializer.Deserialize(stream); float[] subsetOfSamples = GetSubsetOfSamplesFromFullSong(samples, SecondsToRead, StartAtSecond); using (BassAudioService bassAudioService = new BassAudioService()) { float[] readSamples = bassAudioService.ReadMonoFromFile(PathToMp3, SampleRate, SecondsToRead, StartAtSecond); Assert.AreEqual(subsetOfSamples.Length, readSamples.Length); Assert.IsTrue(Math.Abs(subsetOfSamples.Sum(s => Math.Abs(s)) - readSamples.Sum(s => Math.Abs(s))) < AcceptedError, "Seek is working wrong!"); } } }
public void CreateFingerprintsFromFileAndFromAudioSamplesAndGetTheSameResultTest() { const int SecondsToProcess = 20; const int StartAtSecond = 15; var audioService = new BassAudioService(); AudioSamples samples = audioService.ReadMonoSamplesFromFile(PathToMp3, SampleRate, SecondsToProcess, StartAtSecond); var hashDatasFromFile = fingerprintCommandBuilder .BuildFingerprintCommand() .From(PathToMp3, SecondsToProcess, StartAtSecond) .UsingServices(bassAudioService) .Hash() .Result; var hashDatasFromSamples = fingerprintCommandBuilder .BuildFingerprintCommand() .From(samples) .UsingServices(bassAudioService) .Hash() .Result; AssertHashDatasAreTheSame(hashDatasFromFile, hashDatasFromSamples); }
public BassAudioServiceTest() { bassAudioService = new BassAudioService(); bassWaveFileUtility = new BassWaveFileUtility(); }
public BassAudioServiceTest() { bassAudioService = new BassAudioService(); }