I understand that these 1-letter directory names are on purpose and are supposed to be cute, but it's really horrible idea. Yeah, explanation of these cryptic names is right there it the README, but it's still confusing if I'm just diving right into the source code to look around. And it serves nothing, as far as I can see. A tradeoff for nothing is kinda… weird.
Very lightweight, the whole thing downloads, compiles and runs almost instantly. After you go in the examples directory and run make, here's a little bash command to run and listen to each example in series while looking at its source:<p><pre><code> shopt -s extglob
for f in ex_!(*.*); do ./$f; `play test.wav > /dev/null 2>&1 &`; less $f.c; done
</code></pre>
ex_music is beautiful! But the source is not very expressive, even being familiar with DSP, a lot of the code has me guessing (well, it is expressive, but I guess the variable names are too short to my tastes).
This looks really interesting for web-based (emscripten-compiled) or mobile apps that need to keep their download size small.<p>An observation (not a critique): The LGPL3 license might be a problem for many MIT licensed game engines. If I understand the 'Combined Works' section of the LGPL3 right (I'm not a lawyer), it will not be possible to statically link an LGPL3 lib into a mixed-license project without providing a way for the user to rebuild the entire application from scratch, thus effectively polluting the more liberal licenses like MIT/FreeBSD?
On Ubuntu, you can try it out like so:<p><pre><code> sudo apt-get install libsndfile1 libsndfile1-dev
git clone git@github.com:PaulBatchelor/Soundpipe.git && cd Soundpipe
make
cd e && make
./ex_music && xdg-open test.wav</code></pre>
I'm working on something similar. Though I have started in C++, I'm considering moving to plain C. It was nice seeing this here. Nice project.