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: Abramo Bagnara (abramo_AT_alsa-project.org)
Date: Sat May 19 2001 - 23:38:09 EEST


Paul Davis wrote:
>
> >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.

... but it worths the effort. Now all is clear, thanks.

> 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

This is the solution I had in my mind. With the help of a vector that
map input channel N to output channel M.

> 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.

My proposal is to allow buffer sharing (like in my soundbox_port_link)
and to have two helper functions for not sharing case.
1) for each in_ch: out[dest[in_ch]] = in[in_ch]*gain[in_ch]

2) for each out_ch: out[out_ch] = sum in[in_ch]*gain[in_ch,out_ch]
                              for each in_ch

The problem that may remain open is the insertion of dest/gains as
controls of a panel, but this is solveable.

-- 
Abramo Bagnara                       mailto:abramo_AT_alsa-project.org

Opera Unica Phone: +39.546.656023 Via Emilia Interna, 140 48014 Castel Bolognese (RA) - Italy

ALSA project http://www.alsa-project.org It sounds good!


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 - 09:41:18 EEST