private void SetupSampleSource(ISampleSource aSampleSource) { const FftSize fftSize = FftSize.Fft64; //create a spectrum provider which provides fft data based on some input var spectrumProvider = new BasicSpectrumProvider(aSampleSource.WaveFormat.Channels, aSampleSource.WaveFormat.SampleRate, fftSize); // ////linespectrum and voiceprint3dspectrum used for rendering some fft data ////in oder to get some fft data, set the previously created spectrumprovider _MusicSpectrum = new MusicSpectrum(fftSize) { SpectrumProvider = spectrumProvider, UseAverage = true, Count = 30, IsXLogScale = true, ScalingStrategy = ScalingStrategy.Sqrt }; //_voicePrint3DSpectrum = new VoicePrint3DSpectrum(fftSize) //{ // SpectrumProvider = spectrumProvider, // UseAverage = true, // PointCount = 200, // IsXLogScale = true, // ScalingStrategy = ScalingStrategy.Sqrt //}; // //the SingleBlockNotificationStream is used to intercept the played samples var notificationSource = new SingleBlockNotificationStream(aSampleSource); //pass the intercepted samples as input data to the spectrumprovider (which will calculate a fft based on them) notificationSource.SingleBlockRead += (s, a) => spectrumProvider.Add(a.Left, a.Right); _source = notificationSource.ToWaveSource(16); }
private async Task <double> QueryAndHash(CancellationToken cancellationToken) { double queryLength = 0d; Dictionary <int, Dictionary <int, int> > tmpMap = new Dictionary <int, Dictionary <int, int> >(); while (!realtimeCollection.IsAddingCompleted && !cancellationToken.IsCancellationRequested) { float[] audioSamples; try { if (!realtimeCollection.TryTake(out audioSamples, MillisecondsDelay, cancellationToken)) { continue; } } catch (OperationCanceledException) { return(queryLength); } MusicSpectrum musicSpectrum = new MusicSpectrum(dataStorage); int totalSize = audioSamples.Length; int amountPossible = totalSize / 4096; tmpMap = musicSpectrum.FFTAnalys(tmpMap, audioSamples, amountPossible); var q = musicSpectrum.Matching(tmpMap); Console.WriteLine(q.BestMath); } return(queryLength); }
public IUsingFingerprintServices From(float[] audioSamples, Song song) { createFingerprintsMethod = () => { MusicSpectrum music = new MusicSpectrum(dataStorageToUse); music.InsertSongToDB(audioSamples, song); }; return(this); }
public IUsingFingerprintServices From(string pathToAudioFile) { createFingerprintsMethod = () => { MusicSpectrum music = new MusicSpectrum(dataStorageToUse); music.InsertSongToDB(audioServiceToUse, pathToAudioFile); }; return(this); }
public IUsingQueryModelService From(float[] audioSamples) { createQueryMethod = () => { MusicSpectrum music = new MusicSpectrum(dataStorageToUse); return(music.SeekSong(audioSamples)); }; return(this); }
public IUsingQueryServices From(string pathToAudioFile) { createQueryMethod = () => { MusicSpectrum music = new MusicSpectrum(dataStorageToUse); return(music.SeekSong(audioServiceToUse, pathToAudioFile)); }; return(this); }