-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Kris,
Welcome back.
On 02/17/2012 03:17 PM, Kris Calabio wrote:
  Thanks for the advice!  I sent a similar e-mail to
this list two years ago
 then got distracted with school, work, etc.  I've since found the time and
 motivation to get back into it.
 I am indeed a software developer, but still a novice in many ways.  My only
 experience in audio programming was making a synthesizer in PureData, but I
 want to be more fluent in C/C++ programming so I can work on making JACK
 clients. 
you will like:
https://github.com/jackaudio/jack2/blob/master/example-clients/simple_clien…
  Which leads me to my next question:  are most JACK
applications written in
 C/C++?  I understand that programming as close to the hardware as possible
 is important for performance, but what about programming in a JVM language
 (I have Clojure in mind)?  How reasonable is that? 
At least the DSP part of most pro-audio applications is written in C to
have tight control over worst-case execution time of the code.
The reason for this are real-time constraints: "close to hardware" here
means to have control over memory-allocation and avoid [thread] locks
[in the audio thread]. ie.
  * prevent the memory needed for DSP from being paged out.
  * don't do any memory alloc/dealloc operations in the audio thread
JACK assists greatly with that (calls memlock, provides lock-free
ringbuffers, etc) but you still need to know what you're doing in your
DSP code.
The above constraints rule out [most] garbage-collecting (object
oriented) languages. It is NTL possible to carefully program sound
processing in those langs but you'll need to know much more about what
happens during compilation and/or interpretation of the language. C has
the least pitfalls.
A really good general introduction and nice read is
http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-…
Anyways, There are JACK bindings for a lot of languages incl. JAVA. The
most recent announcement that crossed this email-list is
https://code.google.com/p/java-audio-utils/  (I don't know if that lib
works with Clojure, but it should)
Yet all major (proper?!) sound-applications separate the audio (here:
JACK) part from the user-interface and I/O in one way or another. Mixing
languages for that is not uncommon.
ciao,
robin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iEYEARECAAYFAk8+bnEACgkQeVUk8U+VK0JaHwCfczcirTKxlnlMu5pa5NouCKYp
jN4AoIPXdRHZ7uNqappuL4hlA1T990LI
=H9Zd
-----END PGP SIGNATURE-----