expr, expr~, fexpr~

Shahrokh Yadegari syadegar at man104-1.ucsd.edu
Tue Dec 12 01:13:58 CET 2000


Two new objects expr~ and fexr~, which are extensions of expr:

You can obtain a version from:


This version has a number of expr bug fixes as well.
I'll appreciate hearing about bugs, comments, suggestions, etc.

Shahrokh Yadegari (sdy at ucsd.edu)

Here is the README file:

The object "expr" is used for expression evaluaion of control data.

Expr~ and fexpr~ are extentions to the expr object to work with vectors.
The expr~ object is designed to efficiently combine signal and control
stream processing by vector operations on the basis of the block size of
the environment.
NOTE: Functions in expr~ do not support vectors yet.  I am working on

The fexpr~ object provides a flexible mechanism for building FIR and IIR
filters by evaluating expressions on a sample by sample basis and
providing access to prior samples of the input and output audio streams.
When fractional offset is used, fexpr~ uses linear interpolation to
determine the value of the indexed sample.

The three objects expr, expr~, and fexpr~ are implemented in the
same object so the files expr~.pd_linux and fexpr~.pd_linux are links to


Here are some syntax information: (refer to help-expr.pd for examples)

The syntax is very close to how expression are written in
C. Variables are specified as follows where the '#' stands
for the inlet number:
$i#: integer input variable
$f#: float input variable
$s#: symbol input variable

Used for expr~ only:
$v#: signal (vector) input (vector by vector evaluation)

Used for fexpr~ only:
$x#[n]: the sample from inlet # indexed by n, where n has to
	satisfy 0 => n >= -vector size,
	($x# is a shorthand for $x#[0], specifying the current sample)

$y[n]: the output value indexed by n, where n has to
	satisfy 0 > n >= -vector size,

More information about the Pd-list mailing list