/usr/bin/faust2asmjs is in faust 0.9.95~repack1-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | #!/bin/bash
#-------------------------------------------------------------------
# Wrapping resources
CPP_WRAPPER=webaudio-asm.cpp
JS_WRAPPER=webaudio-asm-emcc.js
COMB="false"
COMB_SRC=
COMB_EXPORTED=
COMB_WRAPPED=
COMB_WRAPPED_FILES=
COMB_SEP=
EXPORTED_MONO="['_"$name"_constructor','_"$name"_destructor','_"$name"_getSampleRate','_"$name"_init','_"$name"_instanceInit','_"$name"_instanceConstants','_"$name"_instanceResetUserInterface','_"$name"_instanceClear','_"$name"_compute','_"$name"_getNumInputs','_"$name"_getNumOutputs','_"$name"_setParamValue','_"$name"_getParamValue','_"$name"_getJSON']"
EXPORTED_POLY="['_"$name"_poly_constructor','_"$name"_poly_destructor','_"$name"_poly_getSampleRate','_"$name"_poly_init','_"$name"_poly_instanceInit','_"$name"_poly_instanceConstants','_"$name"_poly_instanceResetUserInterface','_"$name"_poly_instanceClear','_"$name"_poly_compute','_"$name"_poly_getNumInputs','_"$name"_poly_getNumOutputs','_"$name"_poly_setParamValue','_"$name"_poly_getParamValue','_"$name"_poly_getJSON','_"$name"_poly_keyOn','_"$name"_poly_keyOff','_"$name"_poly_allNotesOff','_"$name"_poly_ctrlChange','_"$name"_poly_pitchWheel']"
#-------------------------------------------------------------------
# Set Faust include path
if [ -f $FAUST_LIB_PATH/music.lib ]
then
FAUSTLIB=$FAUST_LIB_PATH
elif [ -f /usr/local/share/faust/music.lib ]
then
FAUSTLIB=/usr/local/share/faust/
elif [ -f /usr/share/faust/music.lib ]
then
FAUSTLIB=/usr/share/faust/
else
echo "$0: Cannot find Faust library dir (usually /usr/local/share/faust)"
fi
#-------------------------------------------------------------------
# Analyze command arguments :
# faust options -> OPTIONS
# existing *.dsp files -> FILES
#
for p in $@; do
if [ $p = "-help" ] || [ $p = "-h" ]; then
echo "faust2asmjs [-poly] [-comb] <file.dsp>"
echo "Use '-poly' to produce a polyphonic DSP, ready to be used with MIDI events"
echo "Use '-comb' to combine several DSP in a unique resulting 'comb.js' file, sharing the same Emcripten runtime"
elif [ $p = "-comb" ]; then
COMB="true"
elif [ $p = "-poly" ]; then
CPP_WRAPPER=webaudio-asm-poly.cpp
JS_WRAPPER=webaudio-asm-poly-emcc.js
elif [ ${p:0:1} = "-" ]; then
OPTIONS="$OPTIONS $p"
elif [[ -e "$p" ]]; then
FILES="$FILES $p"
else
OPTIONS="$OPTIONS $p"
fi
done
#-------------------------------------------------------------------
# compile the *.dsp files
#
BINARIES=""
if [ $COMB = "false" ]; then
for f in $FILES; do
name=$(basename "$f" .dsp)
# compile the C++ code
faust -a $FAUSTLIB/webaudio/$CPP_WRAPPER -i -uim -cn $name $OPTIONS $f -o $name.cpp || exit
if [ $CPP_WRAPPER = webaudio-asm.cpp ]; then
EXPORTED=$EXPORTED_MONO
else
EXPORTED=$EXPORTED_POLY
fi
# compile the C++ code to asm.js
emcc -O2 --memory-init-file 0 $name.cpp -s TOTAL_MEMORY=100663296 --post-js $FAUSTLIB/webaudio/$JS_WRAPPER -o $name-temp.js -s EXPORTED_FUNCTIONS=$EXPORTED || exit
# compose the asm.js code
sed -e "s/DSP/"$name"/g" $name-temp.js > $name.js
rm $name-temp.js
rm $name.cpp
# collect binary file name for FaustWorks
BINARIES="$BINARIES$name.js;"
done
else
for f in $FILES; do
name=${f%.dsp}
# compile the C++ code
faust -a $FAUSTLIB/webaudio/$CPP_WRAPPER -i -uim -cn $name $OPTIONS $f -o $name.cpp || exit
if [ $CPP_WRAPPER = webaudio-asm.cpp ]; then
EXPORTED=$EXPORTED_MONO
else
EXPORTED=$EXPORTED_POLY
fi
# compose the asm.js code
sed -e "s/DSP/"$name"/g" $FAUSTLIB/webaudio/$JS_WRAPPER > $name-wrapper.js
COMB_SRC+=$name.cpp
COMB_SRC+=" "
COMB_EXPORTED+=$COMB_SEP$EXPORTED
COMB_SEP=","
COMB_WRAPPED_FILES+=$name-wrapper.js
COMB_WRAPPED_FILES+=" "
COMB_WRAPPED+=" --post-js "
COMB_WRAPPED+=$name-wrapper.js
done
# compile final file
emcc -O2 --memory-init-file 0 $COMB_SRC -s TOTAL_STACK=20971520 -s TOTAL_MEMORY=41943040 $COMB_WRAPPED -o comb.js \
-s EXPORTED_FUNCTIONS="["$COMB_EXPORTED"]" || exit
# collect binary file name for FaustWorks
BINARIES="comb.js;"
rm $COMB_SRC
rm $COMB_WRAPPED_FILES
fi
echo $BINARIES
|