Re: [linux-audio-dev] LAAGA API Proposal

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

Subject: Re: [linux-audio-dev] LAAGA API Proposal
From: Tom Pincince (stillone_AT_snowcrest.net)
Date: Thu Jun 14 2001 - 23:37:03 EEST


> Crossbar is a graph - a bus is not a graph. A bus has collisions for
> more than 2 members, a crossbar allows for multiple active connections
> (if they are mutually exclusieve). But well, its probably off topic.
> I dont need a bus - you seem to be advocating "bus-and-nothing-else".

This is definitely not off topic. Please offer more information about
crossbars.

Here is a simple example of a common audio situation. I will define the
situation and then explain how it is handled using busses. If you could
explain how this situation is handled with crossbars, it may be very
helpful.

A solo performer sings while playing the acoustic guitar. Voice and
guitar each have their own microphone and enter the computer through
separate physical input channels. Independent amounts of stereo reverb
are added to the voice and guitar. The final sound is a stereo mix of
voice, guitar, and reverb with both voice and guitar panned to the
center and the reverb outputs panned hard left and hard right.

Bus method
Within the computer there are two client apps, a mixer and a stereo
reverb. Voice and guitar each feed separate monophonic channel strips
in the mixer. Within the channel strip, and after possibly passing
through mono insert plugins such as compression and EQ, each signal
passes through its own channel fader (mono gain control). The output of
the channel fader feeds 4 busses; main left, main right, and aux sends 1
and 2 which feed the reverb. The output of the reverb feeds the main
left and right busses. Each feed to a bus is managed by a separate gain
control. The total number of bus connections is 10. The main busses
feed linked mono master faders, and the output of these faders feed the
left and right physical outputs.

With Paul's approach, to the best of my knowledge ;-), we define all
input and output ports and their connection lists.

Input ports
1) mixer channel 1
    physical input 1, gain = 1
2) mixer channel 2
    physical input 2, gain = 1
3) mixer main L
    mixer channel 1 fader output, gain = a
    reverb L, gain = b
4) mixer main R
    mixer channel 2 fader output, gain = a
    reverb R, gain =b
5) reverb L
    mixer channel 1 fader output, gain = c
    mixer channel 2 fader output, gain = c
6) reverb R
    mixer channel 1 fader output, gain = d
    mixer channel 2 fader output, gain = d
7) physical output 1
    mixer main L, gain = 1
8) physical output 2
    mixer main R, gain = 1

Gain = a-e settings are determined by aux send levels and pan control.
Pan could be implemented as a separate pair of mixer channel outputs
that receive their input from the fader.

Output ports
1) physical input 1
    mixer channel 1
2) physical input 2
    mixer channel 2
3) mixer channel 1 fader output
    mixer main L
    reverb L
4) mixer channel 2 fader output
    mixer main R
    reverb R
5) reverb L
    mixer main L
6) reverb R
    mixer main R
7) mixer main L
    physical output 1
8) mixer main R
    physical output R

Input ports sum the contents of the output buffers on their lists, with
gain coefficients, and then process.

So how do crossbars work?

Tom


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

This archive was generated by hypermail 2b28 : Fri Jun 15 2001 - 01:07:47 EEST