#! /bin/sh
# FILTER -- process part of a MIDI stream, psl 3/88
SELECT="select"
PROG=
STATE="criterion"
for ARG
do
	case $ARG
	in
	-*)	if [ "$STATE" = "criterion" ]; then
			SELECT="$SELECT $ARG";
		else
			PROG="$PROG $ARG";
		fi;;
	*)	PROG="$PROG $ARG";
		STATE=program;;
	esac
done
if [ "$SELECT" = "select" -o "$PROG" = "" ] ; then
	echo "Usage: $0 criterion [...] program program-arguments <in >out" 1>&2
	echo "The criteria are arguments to 'select' & must come first." 1>&2
	echo "For example: $0 -c9 -c11 transpose -1o <x >xx" 1>&2
	exit 2
fi
cat >/tmp/$$a
$SELECT </tmp/$$a | $PROG >/tmp/$$b
$SELECT -allbut </tmp/$$a >/tmp/$$c
merge /tmp/$$b /tmp/$$c
rm -f /tmp/$$[abc]
