Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 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();
 }
Exemple #6
0
 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);
     }
 }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
                    }
                }
            }
        }
Exemple #9
0
        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);
            }
        }
Exemple #10
0
        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();
 }
 public BassAudioServiceTest()
 {
     bassAudioService = new BassAudioService();
     bassWaveFileUtility = new BassWaveFileUtility();
 }
 public BassAudioServiceTest()
 {
     bassAudioService = new BassAudioService();
 }