From 7fe0c70ad4318e1f1d8688ab0522aa38f98cab2d Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Wed, 23 Jul 2025 09:54:12 +0200 Subject: [PATCH 1/3] Add separate processing script for BS1534-20 as fallback solution --- .../BS1534-20/config_directivity.cfg | 10 ++ .../characterization/BS1534-20/proc_Exp.bash | 109 ++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 experiments/characterization/BS1534-20/config_directivity.cfg create mode 100644 experiments/characterization/BS1534-20/proc_Exp.bash diff --git a/experiments/characterization/BS1534-20/config_directivity.cfg b/experiments/characterization/BS1534-20/config_directivity.cfg new file mode 100644 index 00000000..9f8e5109 --- /dev/null +++ b/experiments/characterization/BS1534-20/config_directivity.cfg @@ -0,0 +1,10 @@ +[directivitySetting] +directivityCount = 1; + +[directivityPattern:0] +directivity = [0.0, 180.0, 0.1] + +[distanceAttenuation] +maxDist = 15; +refDist = 0.5; +rolloffFactor = 1; diff --git a/experiments/characterization/BS1534-20/proc_Exp.bash b/experiments/characterization/BS1534-20/proc_Exp.bash new file mode 100644 index 00000000..7608e4c2 --- /dev/null +++ b/experiments/characterization/BS1534-20/proc_Exp.bash @@ -0,0 +1,109 @@ +#!/bin/bash -x + +PROC=proc +OUTDIR=scenes +INDIR=input +INSF=48 +OUTSF=48 +PSF=48 +INSF_HZ="$INSF"000 +OUTSF_HZ="$OUTSF"000 +PSF_HZ="$PSF"000 + +WLEN=$(($OUTSF_HZ/10)) + +# Input files in concatenation order +files=`ls $INDIR/*.wav` + + +# Tools +RESAMPAUDIO=ResampAudio +COPYAUDIO=CopyAudio +INFOAUDIO=InfoAudio +ASTRIP=astrip.exe +IVAS_COD=./IVAS_cod.exe +IVAS_DEC=./IVAS_dec.exe +IVAS_REND=./IVAS_rend.exe + +CUT=bin/cut +BSL=bin/bsl +TMP="TMP"`date +%s%N` + + +################### Definition of test conditions ################### +#conditions="REF" +conditions="REF ANCH3k5 CUT64_3DOF CUT512_3DOF CUT64_6DOF CUT512_6DOF" +# Conditions as functions +# $1 input signal, 48 kHz wav ISM4 +# $2 output signal, 48 kHz wav BINAURAL +function REF { # Direct + $IVAS_REND -if ISM4 -of BINAURAL -i $1 -im $1.0.csv $1.1.csv $1.2.csv $1.3.csv -T $1.ht.csv -o $2 -render_config config_directivity.cfg +} +function ANCH3k5 { # 3.5 kHz anchor + local CF + CF=`echo $PSF_HZ | gawk '{print 3500/$1}'` + $RESAMPAUDIO -i 1 -f cutoff=$CF $1 $2 +} +function ANCH7k { # 7 kHz anchor + local CF + CF=`echo $PSF_HZ | gawk '{print 7000/$1}'` + REF $1 TMP1.wav + $RESAMPAUDIO -i 1 -f cutoff=$CF TMP1.wav $2 +} +function CUT64_6DOF { # CUT64 + $IVAS_COD -ism +4 $1.0.csv $1.1.csv $1.2.csv $1.3.csv 64000 48 $1 TMP.bs + $IVAS_DEC -render_config config_directivity.cfg -T $1.ht.csv BINAURAL 48 TMP.bs $2 +} +function CUT512_6DOF { # CUT64 + $IVAS_COD -ism +4 $1.0.csv $1.1.csv $1.2.csv $1.3.csv 512000 48 $1 TMP.bs + $IVAS_DEC -render_config config_directivity.cfg -T $1.ht.csv BINAURAL 48 TMP.bs $2 +} +function CUT64_3DOF { # CUT64 + cut -f1-4 -d',' $1.ht.csv > TMP.ht.csv + $IVAS_COD -ism 4 $1.0.csv $1.1.csv $1.2.csv $1.3.csv 64000 48 $1 TMP.bs + $IVAS_DEC -T TMP.ht.csv BINAURAL 48 TMP.bs $2 +} +function CUT512_3DOF { # CUT64 + cut -f1-4 -d',' $1.ht.csv > TMP.ht.csv + $IVAS_COD -ism 4 $1.0.csv $1.1.csv $1.2.csv $1.3.csv 512000 48 $1 TMP.bs + $IVAS_DEC -T TMP.ht.csv BINAURAL 48 TMP.bs $2 +} + + +################### Main processing function ################### + + + +# Create output and processing folder +mkdir -p $OUTDIR +mkdir -p $PROC + +for f in $files;do + BASE=`basename $f .wav` + mkdir -p $OUTDIR/$BASE + + # Duplicate input + N_SAMPLES=`$INFOAUDIO $f | grep "No. samples" | cut -f2 -d':' | tr -d '[:space:]'` + N_START=$((N_SAMPLES+1)) + N_MD=`wc -l $f.0.csv | cut -f1 -d' '` + N_HT=`wc -l $f.ht.csv | cut -f1 -d' '` + $COPYAUDIO -C $f $f $PROC/$BASE.2.wav + for i in 0 1 2 3;do + cat $f.$i.csv $f.$i.csv > $PROC/$BASE.2.wav.$i.csv + done + cat $f.ht.csv $f.ht.csv > $PROC/$BASE.2.wav.ht.csv + + for cond in $conditions;do + + # Process condition + $cond $PROC/$BASE.2.wav $PROC/$BASE.2.$cond.wav + + # Cut the output file + $COPYAUDIO -F noheader $PROC/$BASE.2.$cond.wav $PROC/$BASE.2.$cond.pcm + $ASTRIP -start $N_START -blk 2 -wlen $WLEN $PROC/$BASE.2.$cond.pcm $PROC/$BASE.2.$cond.cut.pcm + $COPYAUDIO -F WAVE-NOEX -P integer16,,$OUTSF_HZ,,2 $PROC/$BASE.2.$cond.cut.pcm $OUTDIR/$BASE/"$cond"_"$BASE".wav + done + +done + + -- GitLab From 013ec6f4c2003da04345ceacf4b1def571fd71b2 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Thu, 24 Jul 2025 11:38:51 +0200 Subject: [PATCH 2/3] Fix dpid usage and add STL filter for anchors --- .../BS1534-20/config_directivity.cfg | 10 ----- .../characterization/BS1534-20/proc_Exp.bash | 40 +++++++++++++------ 2 files changed, 28 insertions(+), 22 deletions(-) delete mode 100644 experiments/characterization/BS1534-20/config_directivity.cfg diff --git a/experiments/characterization/BS1534-20/config_directivity.cfg b/experiments/characterization/BS1534-20/config_directivity.cfg deleted file mode 100644 index 9f8e5109..00000000 --- a/experiments/characterization/BS1534-20/config_directivity.cfg +++ /dev/null @@ -1,10 +0,0 @@ -[directivitySetting] -directivityCount = 1; - -[directivityPattern:0] -directivity = [0.0, 180.0, 0.1] - -[distanceAttenuation] -maxDist = 15; -refDist = 0.5; -rolloffFactor = 1; diff --git a/experiments/characterization/BS1534-20/proc_Exp.bash b/experiments/characterization/BS1534-20/proc_Exp.bash index 7608e4c2..ecd51694 100644 --- a/experiments/characterization/BS1534-20/proc_Exp.bash +++ b/experiments/characterization/BS1534-20/proc_Exp.bash @@ -17,7 +17,7 @@ files=`ls $INDIR/*.wav` # Tools -RESAMPAUDIO=ResampAudio +FILTER=filter.exe COPYAUDIO=CopyAudio INFOAUDIO=InfoAudio ASTRIP=astrip.exe @@ -31,32 +31,47 @@ TMP="TMP"`date +%s%N` ################### Definition of test conditions ################### -#conditions="REF" -conditions="REF ANCH3k5 CUT64_3DOF CUT512_3DOF CUT64_6DOF CUT512_6DOF" +conditions="REF ANCH3k5" +#conditions="REF ANCH3k5 CUT64_3DOF CUT512_3DOF CUT64_6DOF CUT512_6DOF" # Conditions as functions # $1 input signal, 48 kHz wav ISM4 # $2 output signal, 48 kHz wav BINAURAL function REF { # Direct - $IVAS_REND -if ISM4 -of BINAURAL -i $1 -im $1.0.csv $1.1.csv $1.2.csv $1.3.csv -T $1.ht.csv -o $2 -render_config config_directivity.cfg + $IVAS_REND -if ISM4 -of BINAURAL -i $1 -im $1.0.csv $1.1.csv $1.2.csv $1.3.csv -T $1.ht.csv -o $2 -render_config $1.cfg -dpid 0 1 2 3 } function ANCH3k5 { # 3.5 kHz anchor - local CF - CF=`echo $PSF_HZ | gawk '{print 3500/$1}'` - $RESAMPAUDIO -i 1 -f cutoff=$CF $1 $2 + REF $1 TMP1.wav + N_SAMPLES=`$INFOAUDIO TMP1.wav | grep "No. samples" | cut -f2 -d':' | tr -d '[:space:]'` + for ch in A B;do + $COPYAUDIO -F noheader --chanA=$ch TMP1.wav TMP1.$ch.pcm + dd if=/dev/zero of=TMP.zero.pcm bs=2 count=232 + cat TMP1.$ch.pcm TMP.zero.pcm > TMP1.$ch.pad.pcm + $FILTER LP35 TMP1.$ch.pad.pcm TMP2.$ch.pcm + $ASTRIP -start 233 -sample TMP2.$ch.pcm TMP2.$ch.delay.pcm + done + $COPYAUDIO -S "FL FR" -F WAVE-NOEX -P integer16,,$PSF_HZ,,1 TMP2.A.delay.pcm TMP2.B.delay.pcm $2 + rm TMP* } function ANCH7k { # 7 kHz anchor - local CF - CF=`echo $PSF_HZ | gawk '{print 7000/$1}'` REF $1 TMP1.wav - $RESAMPAUDIO -i 1 -f cutoff=$CF TMP1.wav $2 + N_SAMPLES=`$INFOAUDIO TMP1.wav | grep "No. samples" | cut -f2 -d':' | tr -d '[:space:]'` + for ch in A B;do + $COPYAUDIO -F noheader --chanA=$ch TMP1.wav TMP1.$ch.pcm + dd if=/dev/zero of=TMP.zero.pcm bs=2 count=232 + cat TMP1.$ch.pcm TMP.zero.pcm > TMP1.$ch.pad.pcm + $FILTER LP7 TMP1.$ch.pad.pcm TMP2.$ch.pcm + $ASTRIP -start 233 -sample TMP2.$ch.pcm TMP2.$ch.delay.pcm + done + $COPYAUDIO -S "FL FR" -F WAVE-NOEX -P integer16,,$PSF_HZ,,1 TMP2.A.delay.pcm TMP2.B.delay.pcm $2 + rm TMP* } function CUT64_6DOF { # CUT64 $IVAS_COD -ism +4 $1.0.csv $1.1.csv $1.2.csv $1.3.csv 64000 48 $1 TMP.bs - $IVAS_DEC -render_config config_directivity.cfg -T $1.ht.csv BINAURAL 48 TMP.bs $2 + $IVAS_DEC -render_config $1.cfg -dpid 0 1 2 3 -T $1.ht.csv BINAURAL 48 TMP.bs $2 } function CUT512_6DOF { # CUT64 $IVAS_COD -ism +4 $1.0.csv $1.1.csv $1.2.csv $1.3.csv 512000 48 $1 TMP.bs - $IVAS_DEC -render_config config_directivity.cfg -T $1.ht.csv BINAURAL 48 TMP.bs $2 + $IVAS_DEC -render_config $1.cfg -dpid 0 1 2 3 -T $1.ht.csv BINAURAL 48 TMP.bs $2 } function CUT64_3DOF { # CUT64 cut -f1-4 -d',' $1.ht.csv > TMP.ht.csv @@ -92,6 +107,7 @@ for f in $files;do cat $f.$i.csv $f.$i.csv > $PROC/$BASE.2.wav.$i.csv done cat $f.ht.csv $f.ht.csv > $PROC/$BASE.2.wav.ht.csv + cp $f.cfg $PROC/$BASE.2.wav.cfg for cond in $conditions;do -- GitLab From ab44d2d2529c8b7e189b7526f61e1c794872df79 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Fri, 29 Aug 2025 13:30:22 +0200 Subject: [PATCH 3/3] Enable all conditions --- experiments/characterization/BS1534-20/proc_Exp.bash | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/experiments/characterization/BS1534-20/proc_Exp.bash b/experiments/characterization/BS1534-20/proc_Exp.bash index ecd51694..1ad695ee 100644 --- a/experiments/characterization/BS1534-20/proc_Exp.bash +++ b/experiments/characterization/BS1534-20/proc_Exp.bash @@ -31,8 +31,7 @@ TMP="TMP"`date +%s%N` ################### Definition of test conditions ################### -conditions="REF ANCH3k5" -#conditions="REF ANCH3k5 CUT64_3DOF CUT512_3DOF CUT64_6DOF CUT512_6DOF" +conditions="REF ANCH3k5 CUT64_3DOF CUT512_3DOF CUT64_6DOF CUT512_6DOF" # Conditions as functions # $1 input signal, 48 kHz wav ISM4 # $2 output signal, 48 kHz wav BINAURAL -- GitLab