3 if ! test -f wscript || ! test -d gtk2_ardour || ! test -d libs/qm-dsp/;then
4 echo "This script needs to run from ardour's top-level src tree"
8 if test -z "`which rsync`" -o -z "`which git`"; then
9 echo "this script needs rsync and git"
17 QMFILES=`find . -type f | grep -v MSVCqm-dsp | grep -v wscript`
22 trap "rm -rf $TMP" EXIT
25 git clone git://github.com/c4dm/qm-dsp.git qm-dsp
27 git describe --tags > "$ASRC/libs/qm-dsp/gitrev.txt"
30 cd "$ASRC/libs/qm-dsp"
31 find base dsp ext maths -type f -exec rsync -c --progress "$QMDSP/{}" "{}" \;
34 ## this applies to qm-vamp-plugins-v1.7.1-20-g4d15479
35 ## (see also Ardour 5.8-250-gc0c24aff7)
37 diff --git a/libs/qm-dsp/dsp/signalconditioning/FiltFilt.cpp b/libs/qm-dsp/dsp/signalconditioning/FiltFilt.cpp
38 index 714d5755d..c88641de7 100644
39 --- a/libs/qm-dsp/dsp/signalconditioning/FiltFilt.cpp
40 +++ b/libs/qm-dsp/dsp/signalconditioning/FiltFilt.cpp
41 @@ -35,6 +35,13 @@ void FiltFilt::process(double *src, double *dst, unsigned int length)
43 if (length == 0) return;
46 + for( i = 0; i < length; i++ ) {
52 unsigned int nFilt = m_ord + 1;
53 unsigned int nFact = 3 * ( nFilt - 1);
54 unsigned int nExt = length + 2 * nFact;
55 @@ -58,11 +65,16 @@ void FiltFilt::process(double *src, double *dst, unsigned int length)
56 filtScratchIn[ index++ ] = sample0 - src[ i ];
59 - for( i = 0; i < nFact; i++ )
60 + for( i = 0; i < nFact && i + 2 < length; i++ )
62 filtScratchIn[ (nExt - nFact) + index++ ] = sampleN - src[ (length - 2) - i ];
65 + for(; i < nFact; i++ )
67 + filtScratchIn[ (nExt - nFact) + index++ ] = 0;
71 for( i = 0; i < length; i++ )
75 git add gitrev.txt base dsp ext maths