Skip to content

Commit

Permalink
Removing Window functions and their applicability as they did not int…
Browse files Browse the repository at this point in the history
…roduce any valuable advantage in the algorithm
  • Loading branch information
AddictedCS committed Jun 8, 2013
1 parent 9a92ca7 commit 2699b89
Show file tree
Hide file tree
Showing 20 changed files with 23 additions and 310 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
using Soundfingerprinting.Image;
using Soundfingerprinting.SoundTools.Properties;
using Soundfingerprinting.Strides;
using Soundfingerprinting.Windows;


public partial class WinDrawningTool : Form
{
private readonly IAudioService audioService;
Expand Down Expand Up @@ -98,7 +97,6 @@ private void BtnDrawFingerprintsClick(object sender, EventArgs e)
{
config.Stride = new IncrementalStaticStride(strideSize, config.SamplesPerFingerprint);
config.NormalizeSignal = normalize;
config.WindowFunction = noWindow ? new CachingHanningWindow(new NoWindow()) : new CachingHanningWindow(new HanningWindow());
});
List<bool[]> fingerprints = songToDraw.RunAlgorithm().Result;
Expand Down
17 changes: 1 addition & 16 deletions src/Soundfingerprinting.SoundTools/Misc/WinMisc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
using Soundfingerprinting.Hashing.Utils;
using Soundfingerprinting.SoundTools.Properties;
using Soundfingerprinting.Strides;
using Soundfingerprinting.Windows;


public partial class WinMisc : Form
{
private readonly IFingerprintUnitBuilder fingerprintUnitBuilder;
Expand Down Expand Up @@ -116,7 +115,6 @@ private void BtnDumpInfoClick(object sender, EventArgs e)
Task.Factory.StartNew(
() =>
{
IWindowFunction windowFunction = GetWindowFunction();
bool normalizeSignal = _cbNormalize.Checked;
int secondsToProcess = (int)_nudSecondsToProcess.Value;
Expand All @@ -134,7 +132,6 @@ private void BtnDumpInfoClick(object sender, EventArgs e)
? (IStride)
new IncrementalRandomStride(0, (int)_nudDatabaseStride.Value, config.SamplesPerFingerprint)
: new IncrementalStaticStride((int)_nudDatabaseStride.Value, config.SamplesPerFingerprint);
config.WindowFunction = windowFunction;
config.NormalizeSignal = normalizeSignal;
config.UseDynamicLogBase = _cbDynamicLog.Checked;
});
Expand All @@ -157,7 +154,6 @@ private void BtnDumpInfoClick(object sender, EventArgs e)
0, comparisonStride, config.SamplesPerFingerprint, firstQueryStride)
: new IncrementalStaticStride(
comparisonStride, config.SamplesPerFingerprint, firstQueryStride);
config.WindowFunction = windowFunction;
config.NormalizeSignal = normalizeSignal;
config.UseDynamicLogBase = _cbDynamicLog.Checked;
});
Expand All @@ -178,7 +174,6 @@ private void BtnDumpInfoClick(object sender, EventArgs e)
0, comparisonStride, config.SamplesPerFingerprint, firstQueryStride)
: new IncrementalStaticStride(
comparisonStride, config.SamplesPerFingerprint, firstQueryStride);
config.WindowFunction = windowFunction;
config.NormalizeSignal = normalizeSignal;
config.UseDynamicLogBase = _cbDynamicLog.Checked;
});
Expand Down Expand Up @@ -229,16 +224,6 @@ private void BtnDumpInfoClick(object sender, EventArgs e)
}).ContinueWith(result => FadeControls(true));
}

private IWindowFunction GetWindowFunction()
{
if (_cbUseNoWindow.Checked)
{
return new NoWindow();
}

return new HanningWindow();
}

private void GetFingerprintSimilarity(IFingerprintUnit databaseSong, IFingerprintUnit querySong, SimilarityResult results)
{
double sum = 0;
Expand Down
27 changes: 0 additions & 27 deletions src/Soundfingerprinting.SoundTools/Misc/WinMisc.designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@
<Compile Include="Fingerprinting.Tests\FingerprintManagerTest.cs" />
<Compile Include="Fingerprinting.Tests\FingerprintUtilsTest.cs" />
<Compile Include="Fingerprinting.Tests\Wavelets\HaarWaveletTest.cs" />
<Compile Include="Fingerprinting.Tests\Windows\HanningWindowTest.cs" />
<Compile Include="Infrastructure.Test\DependencyResolverTest.cs" />
<Compile Include="NeuralHashing.Tests\BinaryOutputUtilTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
namespace Soundfingerprinting.Configuration
{
using Soundfingerprinting.Strides;
using Soundfingerprinting.Windows;


public class CustomFingerprintingConfiguration : IFingerprintingConfiguration
{
public CustomFingerprintingConfiguration()
Expand All @@ -19,7 +18,6 @@ public CustomFingerprintingConfiguration()
FingerprintLength = defaultFingerprinting.FingerprintLength;
Stride = defaultFingerprinting.Stride;
LogBins = defaultFingerprinting.LogBins;
WindowFunction = defaultFingerprinting.WindowFunction;
NormalizeSignal = defaultFingerprinting.NormalizeSignal;
UseDynamicLogBase = defaultFingerprinting.UseDynamicLogBase;
}
Expand All @@ -46,8 +44,6 @@ public CustomFingerprintingConfiguration()

public IStride Stride { get; set; }

public IWindowFunction WindowFunction { get; set; }

public bool NormalizeSignal { get; set; }

public bool UseDynamicLogBase { get; set; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
namespace Soundfingerprinting.Configuration
{
using Soundfingerprinting.Strides;
using Soundfingerprinting.Windows;


public class DefaultFingerprintingConfiguration : IFingerprintingConfiguration
{
public DefaultFingerprintingConfiguration()
Expand All @@ -18,7 +17,6 @@ public DefaultFingerprintingConfiguration()
LogBase = 2;
Stride = new IncrementalStaticStride(5115, FingerprintLength * Overlap);
LogBins = 32;
WindowFunction = new CachingHanningWindow(new NoWindow());
NormalizeSignal = false;
UseDynamicLogBase = true;
}
Expand Down Expand Up @@ -105,10 +103,14 @@ public DefaultFingerprintingConfiguration()
/// </remarks>
public IStride Stride { get; private set; }

public IWindowFunction WindowFunction { get; private set; }

/// <summary>
/// Gets a value indicating whether the algorithm has to normalize the signal
/// </summary>
public bool NormalizeSignal { get; private set; }

/// <summary>
/// Gets a value indicating whether the algorithm should use dynamic logarithmic base, instead of static
/// </summary>
public bool UseDynamicLogBase { get; private set; }
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
namespace Soundfingerprinting.Configuration
{
using Soundfingerprinting.Strides;
using Soundfingerprinting.Windows;


public interface IFingerprintingConfiguration
{
/// <summary>
Expand Down Expand Up @@ -64,11 +63,6 @@ public interface IFingerprintingConfiguration
/// </remarks>
IStride Stride { get; }

/// <summary>
/// Gets window function applied on spectrogram
/// </summary>
IWindowFunction WindowFunction { get; }

/// <summary>
/// Gets a value indicating whether the algorithm has to normalize the signal
/// </summary>
Expand Down
4 changes: 2 additions & 2 deletions src/Soundfingerprinting/FFT/Exocortex/ExocortexFFTService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ public class ExocortexFFTService : IFFTService
{
private readonly object lockObject = new object();

public float[] FFTForward(float[] signal, int startIndex, int length, double[] window)
public float[] FFTForward(float[] signal, int startIndex, int length)
{
float[] complexSignal = new float[2 * length]; /*even - Re, odd - Img, thats how Exocortex works*/

// take 371 ms each 11.6 ms (2048 samples each 64 samples)
for (int i = 0; i < length /*2048*/; i++)
{
complexSignal[2 * i] = (float)window[i] * signal[startIndex + i];
complexSignal[2 * i] = signal[startIndex + i];
complexSignal[(2 * i) + 1] = 0;
}

Expand Down
4 changes: 2 additions & 2 deletions src/Soundfingerprinting/FFT/FFTW/CachedFFTWService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ public class CachedFFTWService : FFTWService, IDisposable
Dispose(true);
}

public override float[] FFTForward(float[] signal, int startIndex, int length, double[] window)
public override float[] FFTForward(float[] signal, int startIndex, int length)
{
lock (lockObject)
{
return base.FFTForward(signal, startIndex, length, window);
return base.FFTForward(signal, startIndex, length);
}
}

Expand Down
7 changes: 1 addition & 6 deletions src/Soundfingerprinting/FFT/FFTW/FFTWService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,13 @@

public class FFTWService : IFFTService
{
public virtual float[] FFTForward(float[] signal, int startIndex, int length, double[] window)
public virtual float[] FFTForward(float[] signal, int startIndex, int length)
{
IntPtr input = GetInput(length);
IntPtr output = GetOutput(length);
IntPtr fftPlan = GetFFTPlan(length, input, output);
float[] applyTo = new float[length];
Array.Copy(signal, startIndex, applyTo, 0, length);
for (int i = 0; i < length; i++)
{
applyTo[i] = (float)(applyTo[i] * window[i]);
}

Marshal.Copy(applyTo, 0, input, length);
InteropFFTW.execute(fftPlan);
float[] result = new float[length * 2];
Expand Down
3 changes: 1 addition & 2 deletions src/Soundfingerprinting/FFT/IFFTService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ public interface IFFTService
/// <param name="signal">Array to be transformed</param>
/// <param name="startIndex">Index to start at</param>
/// <param name="length">Length of FFT window</param>
/// <param name="window">Window function to be applied before the FFT</param>
/// <returns>Twice as bigger result with real amd img transforms</returns>
float[] FFTForward(float[] signal, int startIndex, int length, double [] window);
float[] FFTForward(float[] signal, int startIndex, int length);
}
}
5 changes: 2 additions & 3 deletions src/Soundfingerprinting/FFT/SpectrumService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public float[][] CreateSpectrogram(float[] samples, int overlap, int wdftSize)
float[][] frames = new float[width][];
for (int i = 0; i < width; i++)
{
float[] complexSignal = fftService.FFTForward(samples, i * overlap, wdftSize, new double[wdftSize]);
float[] complexSignal = fftService.FFTForward(samples, i * overlap, wdftSize);
float[] band = new float[(wdftSize / 2) + 1];
for (int j = 0; j < (wdftSize / 2) + 1; j++)
{
Expand Down Expand Up @@ -63,10 +63,9 @@ public float[][] CreateLogSpectrogram(float[] samples, IFingerprintingConfigurat
int width = (samples.Length - configuration.WdftSize) / configuration.Overlap; /*width of the image*/
float[][] frames = new float[width][];
int[] logFrequenciesIndexes = GenerateLogFrequencies(configuration);
double[] window = configuration.WindowFunction.GetWindow(configuration.WdftSize);
for (int i = 0; i < width; i++)
{
float[] complexSignal = fftService.FFTForward(samples, i * configuration.Overlap, configuration.WdftSize, window);
float[] complexSignal = fftService.FFTForward(samples, i * configuration.Overlap, configuration.WdftSize);
frames[i] = ExtractLogBins(complexSignal, logFrequenciesIndexes, configuration.LogBins);
}

Expand Down
5 changes: 0 additions & 5 deletions src/Soundfingerprinting/Soundfingerprinting.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -148,16 +148,11 @@
<Compile Include="Wavelets\IWaveletService.cs" />
<Compile Include="FFT\SpectrumService.cs" />
<Compile Include="Wavelets\WaveletService.cs" />
<Compile Include="Windows\CachingHanningWindow.cs" />
<Compile Include="Windows\NoWindow.cs" />
<Compile Include="Builder\FingerprintUnit.cs" />
<Compile Include="Builder\ITargetOn.cs" />
<Compile Include="Wavelets\StandardHaarWaveletDecomposition.cs" />
<Compile Include="Windows\HammingWindow.cs" />
<Compile Include="Windows\HanningWindow.cs" />
<Compile Include="Wavelets\IntegralImage.cs" />
<Compile Include="Wavelets\IWaveletDecomposition.cs" />
<Compile Include="Windows\IWindowFunction.cs" />
<Compile Include="Utils\ConstantQ\SparKernel.cs" />
<Compile Include="Wavelets\WaveletUtils.cs" />
<Compile Include="Builder\IWithConfiguration.cs" />
Expand Down

0 comments on commit 2699b89

Please sign in to comment.