public BassProfile() : base() { Name = "Bass"; // bass range 80 - 350 Hz: http://www.listenhear.co.uk/general_acoustics.htm MinFrequency = 80; MaxFrequency = 350; this.frequencyBands = FFTUtil.CalculateFrequencyBoundariesLog(MinFrequency, MaxFrequency, FrequencyBands); }
public VoiceProfile() : base() { Name = "Voice"; // vocal range 80 - 1100 Hz: http://en.wikipedia.org/wiki/Vocal_range MinFrequency = 80; MaxFrequency = 1100; this.frequencyBands = FFTUtil.CalculateFrequencyBoundariesLog(MinFrequency, MaxFrequency, FrequencyBands); }
public HumanProfile() : base() { Name = "Human (slow!)"; FrameSize = 16384; FrameStep = 512; SampleRate = 44100; MinFrequency = 80; MaxFrequency = 16000; FrequencyBands = 33; HashTimeScale = 1d / SampleRate * FrameStep; this.frequencyBands = FFTUtil.CalculateFrequencyBoundariesLog(MinFrequency, MaxFrequency, FrequencyBands); }
public DefaultProfile() { Name = "Haitsma&Kalker default"; FrameSize = 2048; FrameStep = 64; SampleRate = 5512; MinFrequency = 300; MaxFrequency = 2000; FrequencyBands = 33; FlipWeakestBits = 3; HashTimeScale = 1d / SampleRate * FrameStep; this.frequencyBands = FFTUtil.CalculateFrequencyBoundariesLog(MinFrequency, MaxFrequency, FrequencyBands); }
private int[] MakeFrequencyMap() { int[] map = new int[WINDOW_SIZE / 2]; // convert FFT result to compacted frame representation // linear mapping of first bins up to 370Hz for (int i = 0; i < 17; i++) { map[i] = i; } // logarithmic mapping of 370Hz - 12.5kHz // NOTE same code pattern as in FingerprintGenerator double[] frequencyMidLogBands = FFTUtil.CalculateFrequencyBoundariesLog(370, 12500, 66); double bandWidth = SAMPLERATE / 2d / fftFreqBins.Length; for (int x = 0; x < frequencyMidLogBands.Length - 1; x++) { currentFrame[17 + x] = 0; int lowerIndex = (int)(frequencyMidLogBands[x] / bandWidth); int upperIndex = (int)(frequencyMidLogBands[x + 1] / bandWidth); for (int y = lowerIndex; y < upperIndex; y++) { map[y] = 17 + x; } } // summation of bins above 12.5kHz currentFrame[83] = 0; for (int i = 580; i < fftFreqBins.Length; i++) { map[i] = 83; } return(map); }