MatcherCL
Copyright (c) 2014 Sergeev Kirill deLuther Tech.

The MatcherCL software is provided free of charge without warranty of any kind.
Usage: 
Run MatcherCL.exe and follow dialog prompts, SOURCE is file to match to TARGET file average spectrum.
Optionaly convolved SOURCE can be saved, if you don`t need it - just press Cancel in dialog.
Impulse length set to 150 ms internally which gives acceptable low end response and artificial reverberation.

Use MatcherCL.exe -cl sourceName targetName impulseName 
to match sourceName file to targetName file and saves resulting impulse as impulseName file.

To properly use impulse better to turn off auto gains in convolution plugins 
and set gain to 0 db (unity).

Additionally impulse length can be specified as -l [length in seconds], for example:
MatcherCL.exe -l 0.5
Also analysis blocksize to override default, based on sample rate of file, can be specified as -bsa [power of 2], for example:
MatcherCL.exe -bsa 10
Where real block size will be 2^10=1024.
If block size is not specified, than it will be equal next power of 2 from sample rate, i.e. 65536 (2^16) for 44100.
Also convolution block size can be specified, see usage as convolver.

For saving with 24 bit depth add -24 

MatcherCL.exe can be used as standalone offline convolver, just add -c to the command:
MatcherCL.exe -c
(can be done in shortcut to application)
Optionaly, processing block size can be specified (default is 256) as -bsc [block length in samples] for example:
MatcherCL.exe -c -bsc 128

This can be also performed in command line:
MatcherCL.exe -ccl sourceName impulseName convolvedName
Where sourceName file convolved with impulseName file and saves convolution result as convolvedName file.

For testing purposes pulse signal (with default length of 150 ms) can be generated:
MatcherCL.exe -pi
Optionally, sample rate can be specified as:
MatcherCL.exe -pi -sr 96000
Default is 44100.
Also length can be specified as -l length in seconds, for example:
MatcherCL.exe -pi -l 0.5

One of convolution quality tests is convolve some source with pulse impulse and compare result with initial file,
ideally, there should not be difference.

MatcherCL can be used to perform Minimal Phase Transform (MPT):
Run MatcherCL.exe -mpt and follow dialog prompts.

This software uses following libraries: 
libtsp (http://www-mmsp.ece.mcgill.ca/Documents/Software/Packages/libtsp/libtsp.html) 
for audio files handling and Bessel function,
Eigen (http://eigen.tuxfamily.org/) for container classes
and Ooura FFT (http://www.kurims.kyoto-u.ac.jp/~ooura/index.html) for Fourier transforms.
-------------------------------------------------------------------------------
Copyright (C) 2002 Peter Kabal

The libtsp routines are provided free of charge without warranty of
any kind.  All components are copyrighted.  They may be distributed free of
charge provided that the recipients also acquire the right to distribute them.
This software cannot be incorporated into a work which is sold commercially.
However, including this software on distribution media containing other free
software is permitted even when a distribution fee is charged.

$Id: Copying 1.5 2002/09/12 libtsp-v7r0 $
-------------------------------------------------------------------------------
Eigen is Free Software. Starting from the 3.1.1 version, it is licensed under 
the MPL2, which is a simple weak copyleft license. Common questions about the 
MPL2 are answered in the official MPL2 FAQ.
-------------------------------------------------------------------------------
Copyright Takuya OOURA, 1996-2001

You may use, copy, modify and distribute this code for any purpose (include commercial use) and without fee. 
Please refer to this package when you modify this code.
-------------------------------------------------------------------------------
version 0.28
	Added MPT mode, changed analysis window type from KBD to Hamming, from now x64.

version 0.27
	Multichannel impulse creation if both source and target have same number of channels, mono with channel averaging otherwise.

version 0.26
	Command line arguments -ccl sourceName impulseName convolvedName

version 0.25
	Command line arguments -cl sourceName targetName impulseName

version 0.24
	Added normalization for 24 bits

version 0.23
	Added ability to save in 24 bits

version 0.22
	Fixed bug with large analysis block size (greater than 17, i.e. 2^18 and so on)

version 0.21
	Multichannel convolution bug fix

version 0.2
	Changed command line parameters handling, introduced additional parameters: 
now impulse length, block size for analysis and convolution can be specified

version 0.12
	Some minor fixes, recommended for update

version 0.11
	Added sample rate protection: i.e. processing is performed only on files with the same sample rate

version 0.1 
	Initial release