summaryrefslogtreecommitdiff
path: root/tools/update_qm-dsp.sh
blob: 4e2f43ddcf3e1843e88f172c85212b416d1363ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/sh

if ! test -f wscript || ! test -d gtk2_ardour || ! test -d libs/qm-dsp/;then
	echo "This script needs to run from ardour's top-level src tree"
	exit 1
fi

if test -z "`which rsync`" -o -z "`which git`"; then
	echo "this script needs rsync and git"
	exit 1
fi

ASRC=`pwd`
set -e

TMP=`mktemp -d`
test -d "$TMP"
echo $TMP
trap "rm -rf $TMP" EXIT

cd $TMP
git clone git://github.com/c4dm/qm-dsp.git qm-dsp
cd qm-dsp
git describe --tags > "$ASRC/libs/qm-dsp/gitrev.txt"
QMDSP="$TMP/qm-dsp"

cd "$ASRC/libs/qm-dsp"
find base dsp ext maths -type f -exec rsync -c --progress "$QMDSP/{}" "{}" \;


## this applies to qm-vamp-plugins-v1.7.1-20-g4d15479
## (see also Ardour 5.8-250-gc0c24aff7)
patch -p3 << EOF
diff --git a/libs/qm-dsp/dsp/signalconditioning/FiltFilt.cpp b/libs/qm-dsp/dsp/signalconditioning/FiltFilt.cpp
index 714d5755d..c88641de7 100644
--- a/libs/qm-dsp/dsp/signalconditioning/FiltFilt.cpp
+++ b/libs/qm-dsp/dsp/signalconditioning/FiltFilt.cpp
@@ -35,6 +35,13 @@ void FiltFilt::process(double *src, double *dst, unsigned int length)
 
     if (length == 0) return;
 
+    if (length < 2) {
+	for( i = 0; i < length; i++ ) {
+	    dst[i] = src [i];
+	}
+	return;
+    }
+
     unsigned int nFilt = m_ord + 1;
     unsigned int nFact = 3 * ( nFilt - 1);
     unsigned int nExt	= length + 2 * nFact;
@@ -58,11 +65,16 @@ void FiltFilt::process(double *src, double *dst, unsigned int length)
 	filtScratchIn[ index++ ] = sample0 - src[ i ];
     }
     index = 0;
-    for( i = 0; i < nFact; i++ )
+    for( i = 0; i < nFact && i + 2 < length; i++ )
     {
 	filtScratchIn[ (nExt - nFact) + index++ ] = sampleN - src[ (length - 2) - i ];
     }
 
+    for(; i < nFact; i++ )
+    {
+	filtScratchIn[ (nExt - nFact) + index++ ] = 0;
+    }
+
     index = 0;
     for( i = 0; i < length; i++ )
     {
EOF

git add gitrev.txt base dsp ext maths