Eric,

I was hoping to use a packed format like ByteString eventually. Right now, I want to get everything working nicely. As it stands, I end up marshaling a lot of information into/out of arrays which I'd much rather keep as a block of memory.

I'm guessing that some sort of unboxed array would be close to what I want. If you have suggestions, I'm more than open to them. (This is my first attempt at writing a library.)

/jve

On Sun, Aug 24, 2008 at 1:06 PM, Eric Kidd <haskell@randomhacks.net> wrote:
On Sun, Aug 24, 2008 at 12:41 PM, John Van Enk <vanenkj@gmail.com> wrote:
> It implements the Haskell bindings to the PortAudio library. This is the
> library behind Audacious. I *have not* implemented the callback model yet,
> but I plan to do that.
>
> Perhaps this will be something which is useful to you?

Looks like a great binding! We actually use portaudio in callback mode
at work, with reasonable success (from C++).

One question: I notice that your writeStream function represents audio
using '[[a]]'.

 writeStream :: (Storable a) => PaStream a -- ^ The output stream
             -> [[a]]                    -- ^ The samples to be played
             -> Int                      -- ^ Number of frames
             -> IO (Either String ErrorCode) -- ^ The return status
of the write

In my experiments, I've been somewhat unsatisfied with the performance
of '[[a]]' as an audio format. Would you be interested in also
supporting an array-based format for audio data?

I'm currently converting my program to use HCodec's Data.Audio
representation, which looks pretty promising. I don't know how it
performs yet, but I'll let you know.

Thank you for the pointer to your library! It will make an excellent
addition to the available Haskell sound libraries.

Cheers,
Eric



--
/jve