On Fri, Dec 5, 2008 at 4:36 PM, Henning Thielemann
<[EMAIL PROTECTED]> wrote:
>
>>
>> Data Types:
>> HSoundFile-3 -  custom AudioBuffer class.  Implementations are
>> provided for UArr Double, List Double, and StorableVector Double
>
> StorableVector or StorableVector.Lazy? The latter seems appropriate here.

I think that StorableVector is the correct choice.  AudioBuffers are
meant to be read/written strictly, in small chunks.  I could certainly
try StorableVector.Lazy.  It may in fact be more performance.

>
>> Codecs                                         - real 1m20s
>> Enumerator                                  - real 19s
>> WAVE                                            - real 29.1s
>> hsndfile                                         - real 2.0s
>
> You said, hsndfile can run with IOCArray and StorableVector. Which one did
> you use here?

IOCArray.  I didn't test hsndfile with StorableVector.  I would expect
performance to be comparable here.

>
> I'm also still not satisfied with the signal processing speed I achieve
> currently, although it increased dramatically using StorableVector instead
> of [Double]. Your simple task is certainly a good testcase to track down
> the problems.

My suspicion is that signal processing should be done with a Stream
type, something like the following:

data Stream a = Stream a | EOF | Err String

using some sort of buffer (Arrays, StorableVector, etc.).  The real
problem is that this leads to notably lower-level code than one would
like to write.  I've been toying with ways around this problem
recently, but so far have nothing concrete.
_______________________________________________
haskell-art mailing list
haskell-art@lurk.org
http://lists.lurk.org/mailman/listinfo/haskell-art

Reply via email to