Richard Dobson wrote:
> Changing orcs according to the i/o range is the one thing we need to
> avoid. We need orcs to be completely portable.
i agree.
> The problem is only that of the 'raw' range. I maintain that the only
> sane range (and one compatible with everythng else, clearly including
> MAX/MSP and PD) is +-1.0. But ~some~ users reserve the right to
> read/write raw floats in any range whatsoever (or rather, in no range!),
> so we need to cover that somehow. At the moment, in my 0dbfs code, I
> have 1.0 hard-coded as the floats range, everywhere, except for 'raw'
> where I ignore 0dbfs completely, and use Istvan's 'floatran_noscl'
> alternatives. But this is clearly wrong for csound~ in PD, and
> presumably for csound~ in Max too.
but what amplitude range corresponds to 0dB inside an orchestra?
+-1.0? are there actually opcodes that expect different ranges to
work properly? if i'm not missing anything, 0dbfs is used for
interfacing with the external world, while there still needs to be
a means to specify the dynamic range inside an orchestra (or keep
it fixed at a reasonable default, e.g. +-1.0). i seem to be
confused :)
> All we need is a mechanism (possibly in the main 'O' structure) to
> signal use of 0dbfs (or the current formatted conversions) for raw
> streams. As I consider this will be the predominant behaviour for the
> majority of Csound users (and certianly for Csound running uinside PD or
> MAX), I would like to make this the default, and have a command flag, if
> one is needed at all, to suppress 0dbfs conversion for raw files only.
> As by definition, 'raw' data can never come in from hardware, only from
> disk, it should be possible (haven't looked at the code yet) to override
> 'raw' automatically when input is from a real-time source. If this is
> sufficient, then no flag is needed.
note that a realtime source doesn't necessarily have to be a
hardware device (as in csound~, both msp and pd).
> If streamed floats in a different range really are a possibility, one
> trick might be to add an optional numeric argument to the -f flag, such
> as " -f1000" to say that the range of incoming floats is +- 1000.0.
sounds reasonable.
> Ironically, had I kept in the code that (unintentionally) converted raw
> float streams, PD Csound might well be working already!
yes, it does. in not so recent versions of csound ;)
> I'm now applying 0dbfs handling to soundin and diskin. A ~lot~ of easy
> but tedious code to add in <sigh>.
thanks for your efforts!
<sk>