forked from TheBigW/DRC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
calcFilterPORC
executable file
·55 lines (45 loc) · 1.58 KB
/
calcFilterPORC
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
#!/bin/bash
# Get command line parameters
PORC="${1}"
IMPULSE_FILE="${2}"
FILTER_FILE="${3}"
CURR_CHANNEL="${4}"
TARGET_CURVE_FILE="${5}"
PORC_PARAMS="${6}"
TAPS=4096
RATE="44100"
filename=$(basename "$IMPULSE_FILE")
extension="${filename##*.}"
EXTRACT_CHAN_FILE="/tmp/porc_1chan"$CURR_CHANNEL.wav
echo "extension : " $extension
if [ "$extension" != "wav" ]; then
echo "detected raw file input : doing sox conversion"
#cleanup previous temp file if exists
rm $EXTRACT_CHAN_FILE -f
echo "destination wave file : " $DEST_WAV
sox -t raw -r $RATE -c 1 -e float -b32 ${IMPULSE_FILE} -t wav ${EXTRACT_CHAN_FILE}
IMPULSE_FILE="$DEST_WAV"
echo "IMPULSE_FILE : " $IMPULSE_FILE
else
REMIX_PARAM="remix "$((CURR_CHANNEL + 1))
echo "wavefile -> converting to pcm for PORC with remix param : "$REMIX_PARAM
regex="Sample Rate : ([0-9]{4,7})"
sox $IMPULSE_FILE -t wav -c 1 ${EXTRACT_CHAN_FILE} $REMIX_PARAM
regex="Sample Rate : ([0-9]{4,7})"
SOXI_RESULT="$(soxi $IMPULSE_FILE)"
[[ $SOXI_RESULT =~ $regex ]]
RATE=${BASH_REMATCH[1]}
fi
if [ -z "$TARGET_CURVE_FILE" ]; then
echo "target curve not set"
else
cp "$TARGET_CURVE_FILE" /tmp/target_curve.txt
PORC_PARAMS="-t /tmp/target_curve.txt "$PORC_PARAMS
fi
#filter length 65535 : same as DRC
echo "calculating filters"
PCM_FILTER="/tmp/porc_tmp_filter"$CURR_CHANNEL".pcm"
echo "executing porc: "$PORC $PORC_PARAMS -n $TAPS -o bin $EXTRACT_CHAN_FILE $PCM_FILTER
python $PORC $PORC_PARAMS -n $TAPS -o bin $EXTRACT_CHAN_FILE $PCM_FILTER
#convert result to wav
sox -t raw -r $RATE -c 1 -e float -b32 ${PCM_FILTER} -t wav $FILTER_FILE