Re: [linux-audio-dev] matrix model vs. memory

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] matrix model vs. memory
From: Paul Davis (pbd_AT_op.net)
Date: Sat May 19 2001 - 23:01:46 EEST


>You're making me feel very stupid, still I am not sure to understand :-(
>
>It seems you're asking if a gain control should or should not added to
>each plugin (to avoid an extra buffer). But if my supposition is right I
>don't understand how this is related to matrix route N*M.

This will take a while.

Consider a situation: there are two ports. One of them is an input
port - it "accepts" data from another (output) port. The other port is
an output port - it "delivers" data to another (input) port.

Connect the two ports.

Somehow, the system has to have a method of "transferring" data from
the output port to the input port. It could be handled via some
optimization that allows both ports to use the same buffer space, thus
eliminating any actual "work" associated with the transfer. It could
be handled by a variant on memcpy(). It could be handled many
different ways - there just has to be some method of accomplishing the
"transfer" of data so that whatever is sent to the output port is
available at the connected input port.

Now, as the data passes from the output port to the input port
(semantically speaking; again, i am not concerned with the details of
the mechanism), there is the question of whether it is modified en
route. It might seem obvious to say "of course not" - the transfer
mechanism should ensure identical data is available at the input port
as was sent to the output port.

But thats just a specific case of a connection with an identity
transform attached to the data. There is a more general version which
says that the transfer executes some transformation on the data as it
moves from the output port to the input port.

Now, clearly, that transformation could be anything, and we don't want
to start modelling the presence of a full-blown digital FX processor
between every pair of connected ports. But I believe that the presence
of a gain function attached to every such connection *is* a legitimate
question to ponder. Its legitimate because it really represents the
most basic kind of transformation of the data when we consider the
fact that we're working with audio data. Its also legitimate because
it lets us implement a basic gain control with great efficiency (see
my message to Karl).

Its also very valuable in allowing us to construct a model in which
the gain between any two ports is a property of the *connection*,
rather than a function of one port or the other. This seems
*extremely* desirable to me. It allows different kinds of UIs to be
built that escape from some of the confines of traditional analog
gear.

Lets take the classic case: imagine an output port that is routed to 5
input ports. How do you control the signal level sent to each input
port? Do you make this an "input gain" on each input port? Do you have
N different gain levels on the output port? No, it seems to me that
the gain level is a property of the connection, not the ports.

So, given that there is some basic mechanism in place to effect the
"transfer" of data, does it allow for gain control, or not? I consider
gain to be such a basic mechanism that its worth building a *version*
of it in at this level.

But I'm open to being convinced otherwise, and just having the
"transfer" mechanism do nothing to the data.

--p


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Thu May 24 2001 - 10:12:00 EEST