Compiled Signal Expressions
Instead of get returning a Set object, we return a SignalExpression that can be combined with other SignalExpressions via set operations to syntactically and semantically mean the same thing. We then simply compile and evaluate the combination on the wavefile once, instead of for each get call.