Ok, I didn't even know there was a haskell-art list, although I've
joined it now.  It's great to see that others are trying to work on
similar projects.  I've already learned quite a lot from looking at
your implementations.

I'm not sending this to haskell-cafe as it seems everyone on that list
who was interested is also on this list.  This seems like a good place
to discuss some of my concerns and get a few things ironed out.

One of the things I'd like to see is a conventional way to represent
audio data in haskell.  What I've been using so far is:
type Sound = Double
type SoundFrame = [Double]

and using [SoundFrame] for the output of my decoding functions.  Which
is fine, as far as that goes.  However, it's probably not the best
option.  A storablevector (if it were made lazy) would likely be more
efficient, both in terms of memory usage and processing.  An arrow
approach (looking at YampaSynth) could be usable too, but I figured
I'd have quite enough work to do without that.  Are there any
suggestions here?

I've started to look at your libsndfile wrapper, and it looks fairly
usable.  I haven't had a chance to really dig into the interface,
though.  As I've already mentioned, the one thing I would most like to
see is a lazy version, enabling something like this:
do
 hFile <- openFile "path/filename" ReadMode
 hOutFile <- openFile "path/newFile" WriteMode
 (format, audioData) <- HSnd.readFile hFile
 HSnd.writeFile hOutFile format $ some_processing_func audioData
 closeFile hFile
 closeFile hOutFile

That's why I took the approach of writing encoders and decoders
instead of wrapping libsndfile.  LazyByteString should allow this, as
long as I encode and decode appropriately.  I think this could work
with libsndfile, but I don't know how to do it myself.

The other problem with libsndfile is that it's GPL, and that may not
be appropriate for all projects.  Reading/writing sound files seems a
basic enough task that I would like to see a LGPL or BSD library for
it.

Anyway, thanks for letting me know about your projects.  I've only
just started using Haskell, so I'm not very familiar with the
landscape yet.

Thank you,
John
_______________________________________________
haskell-art mailing list
haskell-art@lists.lurk.org
http://lists.lurk.org/mailman/listinfo/haskell-art

Reply via email to