[PD] how to avoid (most/many/some) readsf~ dropouts

Dr. Greg Wilder gregwilder at orpheusmediaresearch.com
Tue Jul 15 21:39:32 CEST 2008

Matt Barber wrote:
>> Of course, the 8-channel environment is useful for its ambisonic and other
>> spatialization potential, and one solution that works well (for certain
>> musical situations) is to spatialize monophonic soundfiles in real time.
>>  This is a great solution for reducing performance demand on the hard drive,
>> but quickly becomes expensive in CPU cycles...
> Right.  You can split the difference, though, if you're using
> ambisonics, provided you're using B-format (wxyz).  You can do all
> your ambisonic encoding and room simulation ahead of time, and then do
> the decoding in Pd. This way you'd only be reading four channels at a
> time, and the conversion from B-format to 8-channels is a fairly
> inexpensive set of multiplies and adds (a little more expensive if
> it's a "cube" rather than an "octagon" array, I think, since you could
> discard the "Z" harmonic with the octagon; in Pd a cube decode could
> be on the order of 24 +'s and as few as 4 *'s, most of the adds taking
> place in connections as the vectors are automatically added) -- you
> could easily make an abstraction to just put on the end right before
> you send it to [dac~], since b-format streams should mix linearly.
> I'm sure there are externals which could do this more efficiently than
> an abstraction (loathe as I am to use externals when there's an easy
> abstraction solution).  In this setup, normalization becomes a little
> harder, though.
> It would also be useful if you later wanted to do some simple
> ambisonic "panning" of the solo marimba throughout the array - you'd
> have half the architecture you'd need for it, and B-format encoding of
> two or three streams is not gonna break the bank (unless you were
> doing some kind of full-on room simulation on top of it).
> The point is moot if you're using 2nd-order ambisonics, though, or if
> you've already spent a lot of time mixing and normalizing.

Great points all around.  Of course I spent a great deal of time 
considering a range of similar approaches before I began work on the 
project.  The commission dictated a high-resolution, 8-channel cube 
array, and the decision to avoid B-format came down to the fact that I 
wasn't happy with reverberation quality produced by the available csound 
ambisonic and spatialization algorithms.

I knew I was giving up a certain amount of flexibility by directly 
rendering the files (using csound and a custom java-based preprocessor), 
but it seems I didn't quite anticipate the heavy demand the files would 
put on the playback system.


More information about the Pd-list mailing list