I've been using ocaml-portaudio for some pitch-detection software I'm
working on.  I noticed that some functionality was missing and decided
to add it in.  Specifically I've been working on: different formats,
callbacks and using Bigarrays.

I don't know how useful callbacks are - if the execution of the
callback takes too long portaudio will silently fail (pun intended).
On my machine (an EeePC 1000H) the callback couldn't handle much more
than a Bigarray.blit.  Generating random noise, for example, would
cause the thread to terminate execution after a few seconds.  This
also requires OCaml 3.12 and the use of threads.

The other significant change I've made is switching to Bigarrays.
This results in far less copying of data and allows for almost
seamless use of non-interleaved arrays.  I have noticed that Liquid
Soap uses float array arrays extensively and that Bigarrays will break
compatibility.  While I have currently rewritten the read and write
functions to use Bigarrays I can easily support both in order to not
break compatibility.  However this leads me to wonder (and forgive me
if this is an ignorant question, I don't use Liquid Soap and only
briefly looked through the source) why float array arrays are used
over Bigarrays given that Bigarrays are compatible with C.

My code can be found on github:
https://github.com/aplusbi/ocaml-portaudio  Some functionality is
still missing or untested, but please let me know if any of this work
is of use to Savonet.

Thanks,
Niki Yoshiuchi

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Savonet-devl mailing list
Savonet-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-devl

Répondre à