DPortAudio

Jonas Kivi seewebsite at foremail.fom
Tue Jul 19 18:14:01 PDT 2011


14.7.2011 22.34, Andrej Mitrovic kirjoitti:
> There are already two bindings that exist for PortAudio. One is at
> http://www.dsource.org/projects/bindings/wiki/Portaudio, and the other
> is Derelict which has its own binding as well.
> However the dsource bindings have missing symbols, and the 1-byte
> alignment of struct members crashes the tests which I've ported to D.
> When using default 4-byte alignment the tests will run without issues
> (the PortAudio documentation recommends 4-byte alignment, so I don't
> know why 1-byte alignment was used).


I made the bindings on dsource... I don't know about the alignment 
stuff. The decision to use 1-byte alignment was made with trial and 
error. I think it was propably the only way the whole thing worked on 
Linux at the time. (A couple of years ago.) It still works "fine" on 
Linux and Mac OS X with the 1-byte alignment. I should propably test 
4-byte alignment again. (If I get the time...) I'm using GDC as the 
compiler.

There were some performance issues with the D versions. It was much 
easier for the D versions to drop audio, than the corresponding C 
versions, but that might have been due to the alignment or other 
issues... I remember there were some issues with threads, GC and 
crashes. But it eventually worked. By trial and error, which isn't such 
a good way to write software.

> For the above reasons (and because I've worked on PortMidi as well),
> I've started my own bindings to PortAudio. Currently it's only built
> on Win32 platforms, but I'll see about getting it to work on Linux as
> well.
>
> Project link: https://github.com/AndrejMitrovic/DPortAudio
>
> It has about 15 ported tests, with a few dozen more to do.

Great stuff. I hope you get it to work on Linux as well, as I don't want 
to start messing with it until somebody else has gotten it working. You 
are obviously doing a much better job at making the bindings complete 
with good examples. That is great!

> More samples will be coming by, including how to use PortAudio with
> PortMidi to make some cool realtime manipulation of audio data and
> visuals via a MIDI interface.

That would be nice. I've been meaning to test PortMidi to get some midi 
controls for my app (the Pihlaja video viewer thing).

On a related note, I've also made bindings (barely working) for Jack.
http://www.dsource.org/projects/bindings/browser/trunk/jack
It might not be much interest for Windows users, and it's a bit more 
complex system, but I found it to perform a little better than 
PortAudio. (But that might be due to the alignment issues in my 
PortAudio bindings, as discussed above.) Oh, and Jack also works on 
Windows nowadays.

I'm still using PortAudio for my app, as it was easier to bundle into my 
installer, but I might change to Jack (it also has midi support) if my 
app ever becomes more audio oriented. I can change between the two with 
a compile switch (hurray, how wonderful).

Jonas Kivi


More information about the Digitalmars-d-announce mailing list