I think the problem I'll run into is the 128 channel case. I'm hoping for a general solution... I'm almost positive this will require runtime checks. Your solution is what I was thinking for functions requiring exactly N channels (I'm not sure if there are many functions like that).



On Tue, Aug 26, 2008 at 2:11 PM, Henning Thielemann <lemming@henning-thielemann.de> wrote:

On Mon, 25 Aug 2008, John Van Enk wrote:

How well would the storablevector package (Data.StorableVector) work for
storing audio data? One of the major issues I'm still working over is that I
want to maintain something similar to a [[a]] format (since the underlying
PortAudio library and hardware could support hundreds of interleaved
channels) but I would like to be able to build in some typechecking to the
functions to make sure the number of channels matches the nubmer expected in
the functions.

With
 data Stereo a =  Stereo !a !a

you could also use
 Stereo (Stereo a)
  for quadrophony and so on. Would this be convenient enough?

StorableVector stores everything of fixed length for which a Storable instance is defined.



--
/jve