Re: saolc used in streaming enviroment

From: Ross Bencina (rossb@audiomulch.com)
Date: Wed Oct 20 1999 - 05:36:59 EDT


>Of course, in the strict by-the-book standard, the SAOL
>and SASL are being delivered from the same server (or set
>of servers), so presumably the name matching is handled at
>encode time. You highlight an interesting outside-the-
>standard problem, though. If I have a "SASL controller",
>like a MIDI controller, but capable of sending SASL over
>a wire to a running SAOL orchestra, how do I tell the
>controller what the names of the instruments and controllers
>in the orchestra are?

I've been thinking about this too. What is needed is reflection information,
a relatively complete form would be.

saol_reflection_info{
    srate
    krate
    inchannels
    outchannels

    num_ksigs
    ksigs[]{ //global ksigs settable using control lines in sasl
        name
        description*
        units* // Hz, dB, .etc or none (could be a string to allow other
units to be defined later
        minimum*
        maximum* // sending control values outside minimum and maximum
would have undefined results
    }

    num_tables
    tables[]{ //global tables
        name
        description*
        ???
    }

    num_effect_instances
    effect_instances[]{
        name //an instrument name
        tag*
    }

    num_instrument_types
    instruments[]{
        name
        description*
        num_preset_nums
        preset_nums[]
        num_pfields
        pfields[]{
            name
            description*
            units*
            minimum*
            maximum*
        }

        num_ksigs
        ksigs[]{ //instrument ksigs setable using tagged (labeled) instances
            name
            description*
            units* // Hz, dB, .etc or none (could be a string to allow other
units to be defined later
            minimum*
            maximum* // sending control values outside minimum and maximum
would have undefined results
        }
    }
}

some of this could be synthesized from a saol orc, fields marked * would be
useful but would need language extensions (or perhaps special tagged
comments in the orc). being able to specify which instruments etc were put
into the reflection info would bu usefull (I would use the published
modifier). eg:

published ksig rate; //means that "rate" is placed in the reflection info
for the current scope.

if tagged comments were used (embed info in comments like javadoc) then you
wouldn't have to change the spec at all. it's possible to generate sane
values for the extended (*) reflection info eg {description="";
units="unknown"; minimum=MIN_FLOAT; maximum=MAX_FLOAT}

Cheers,

Ross.



This archive was generated by hypermail 2b29 : Wed May 10 2000 - 12:15:39 EDT