Hi Klaus,

You can give names to the input signals as in your example, but you don't
have to. In other words, instead of writing:

process(x) = f(g(x));

you can use a more idiomatic style, and write:

process = g : f;

Faust is inspired by Moses Schönfinkel's combinatory logic (1924) and John
Backus' FP (1977). The idea of Schönfinkel was to eliminate the need for
variables in mathematical logic. In functional programming, this style is
known as "point-free" or "tacit" programming.

At first sight, it seems complicated to do without variables. But a
variable is just one way (among others) to move a value to its point of
use. In Faust, you can use the `_` and `!` primitives, as well as the five
operations of the block diagram algebra (or the route{} primitive) to
create complex routing to move signals to their point of use.

The advantage of point-free expressions is that they are more modular and
often easier to generalize. Let say you want to write a
quadriphonic amplifier. You can write:

amp4(v,x1,x2,x3,x4) = v*x1, v*x2, v*x3, v*x4;

but it is better to write:

amp4(v) = *(v), *(v), *(v), *(v);

or even better to write:

amp4(v) =  par(c,4,*(v));

This is now easy to generalize to a variable number N of channels:

anyamp(N,v) = par(c,N,*(v));

(note: by convention, we use capital letters for parameters that need to be
known at compile-time, here N)

You can now specialize this general definition, as in:

amp4 = anyamp(4);
amp8 = anyamp(8);

So much for the principle, on an extremely simple example. What you are
trying to do is probably more complicated. Don't hesitate to post a little
diagram if you need help...

Cheers,


Yann


Le lun. 26 juil. 2021 à 10:23, Klaus Scheuermann <kla...@posteo.de> a
écrit :

> Hi All,
>
> so for stereo, I have
> process(x1,x2) = x1,x2;
>
> How would I use 'par' in 'process' for N-channel operation?
>
> (I need the inputs x1, x2, xN later in a function.)
>
> Maybe a list with N entries?
>
> Thanks, Klaus
>
>
> _______________________________________________
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to