<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-484</id>
	<title>Nabble - Music-DSP</title>
	<updated>2008-10-02T14:04:33Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Music-DSP-f484.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Music-DSP-f484.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-19787571</id>
	<title>Re: Lumped modeling and WDFs</title>
	<published>2008-10-02T14:04:33Z</published>
	<updated>2008-10-02T14:04:33Z</updated>
	<author>
		<name>Darren Landrum</name>
	</author>
	<content type="html">Martin Eisenberg wrote:
&lt;br&gt;&amp;gt; And that's true. For instance, a simple RC filter would become a
&lt;br&gt;&amp;gt; 3-port series adaptor with R, C, and source terminating the
&lt;br&gt;&amp;gt; ports. Each time step you'd then read all 1-ports' outputs (which
&lt;br&gt;&amp;gt; depend only on older inputs), feed those to the adaptor network,
&lt;br&gt;&amp;gt; update the 1-ports with the adaptor outputs, and finally get the
&lt;br&gt;&amp;gt; output quantity from both terminal values of the C (or R, as the
&lt;br&gt;&amp;gt; case may be).
&lt;br&gt;&lt;br&gt;That paragraph has actually helped me a lot more than all of the papers 
&lt;br&gt;I have found thus far. Thank you.
&lt;br&gt;&lt;br&gt;&amp;gt; Before my first reply I too failed to google up any source. Where
&lt;br&gt;&amp;gt; is that example?
&lt;br&gt;&lt;br&gt;I honestly can't remember. I thought I had saved it but I can't find it 
&lt;br&gt;now. However, based upon your first paragraph in this email, I now know 
&lt;br&gt;how I was reading it wrong.
&lt;br&gt;&lt;br&gt;&amp;gt; It's nothing too arcane -- if you use only 3-port adaptors and
&lt;br&gt;&amp;gt; let the whole structure &amp;quot;dangle&amp;quot; from any one of the 1-ports, you
&lt;br&gt;&amp;gt; have a binary tree. BCT is about leveraging that fact in
&lt;br&gt;&amp;gt; implementing the computation sequence I described above.
&lt;br&gt;&lt;br&gt;I also got pointed to another DAFX paper on the subject, so hopefully 
&lt;br&gt;that will clear things up for me.
&lt;br&gt;&lt;br&gt;Thank you very much for the reply. You've been very helpful in clearing 
&lt;br&gt;this up.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Darren Landrum
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Lumped-modeling-and-WDFs-tp19659318p19787571.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19781901</id>
	<title>Re: Lumped modeling and WDFs</title>
	<published>2008-10-02T08:41:48Z</published>
	<updated>2008-10-02T08:41:48Z</updated>
	<author>
		<name>Martin Eisenberg</name>
	</author>
	<content type="html">From: &amp;quot;Darren Landrum&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19781901&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;darren.landrum@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;gt; I guess one of the problems I'm having is conceptual. At first,
&lt;br&gt;&amp;gt; I was under the impression that the inductors, capacitors, and
&lt;br&gt;&amp;gt; resistors were separate components from the port adapters,
&lt;br&gt;&amp;gt; and that a &amp;quot;circuit&amp;quot; went together by putting the port adapters
&lt;br&gt;&amp;gt; in-between the electronic pieces.
&lt;br&gt;&lt;br&gt;And that's true. For instance, a simple RC filter would become a
&lt;br&gt;3-port series adaptor with R, C, and source terminating the
&lt;br&gt;ports. Each time step you'd then read all 1-ports' outputs (which
&lt;br&gt;depend only on older inputs), feed those to the adaptor network,
&lt;br&gt;update the 1-ports with the adaptor outputs, and finally get the
&lt;br&gt;output quantity from both terminal values of the C (or R, as the
&lt;br&gt;case may be).
&lt;br&gt;&lt;br&gt;(Please note that my earlier integrator example is actually wrong
&lt;br&gt;because reading and writing occur separately.)
&lt;br&gt;&lt;br&gt;For larger circuits, while we can implement an N-port adaptor as
&lt;br&gt;a single block in our network, it's convenient to use a chain of
&lt;br&gt;3-ports. That is computable because each internal connection
&lt;br&gt;involves one adapted port. In the above sequence, these adapted
&lt;br&gt;ports are treated along with the 1-ports -- read first, written
&lt;br&gt;last.
&lt;br&gt;&lt;br&gt;So from a bird's view the adaptors encode circuit topology and
&lt;br&gt;the terminating 1-ports endow it with dynamics. (Let's leave
&lt;br&gt;scattering junctions aside for now.)
&lt;br&gt;&lt;br&gt;&amp;gt; However, based on some stuff I've managed to find on the
&lt;br&gt;&amp;gt; web, it appears that the network of components for a part of
&lt;br&gt;&amp;gt; a circuit would actually go inside of an N-port adapter,
&lt;br&gt;&amp;gt; depending on the number of ports needed.
&lt;br&gt;&lt;br&gt;Before my first reply I too failed to google up any source. Where
&lt;br&gt;is that example?
&lt;br&gt;&lt;br&gt;&amp;gt; Another confusing bit is the Binary Connection Tree, a term
&lt;br&gt;&amp;gt; that Google turned up nothing on other than references to
&lt;br&gt;&amp;gt; various DSP papers.
&lt;br&gt;&lt;br&gt;It's nothing too arcane -- if you use only 3-port adaptors and
&lt;br&gt;let the whole structure &amp;quot;dangle&amp;quot; from any one of the 1-ports, you
&lt;br&gt;have a binary tree. BCT is about leveraging that fact in
&lt;br&gt;implementing the computation sequence I described above.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Lumped-modeling-and-WDFs-tp19659318p19781901.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19768616</id>
	<title>Re: Lumped modeling and WDFs</title>
	<published>2008-10-01T13:36:19Z</published>
	<updated>2008-10-01T13:36:19Z</updated>
	<author>
		<name>Darren Landrum</name>
	</author>
	<content type="html">Martin Eisenberg wrote:
&lt;br&gt;&amp;gt; Is realizing the more complex adaptors your problem? With a
&lt;br&gt;&amp;gt; little practice you can read the code directly from a block
&lt;br&gt;&amp;gt; diagram. Do you understand this link in simple cases, e.g. the
&lt;br&gt;&amp;gt; common 2nd-order IIR? Or are you wondering how to join all those
&lt;br&gt;&amp;gt; blocks into a running system? Perhaps you can point out a
&lt;br&gt;&amp;gt; specific block or circuit that you have trouble handling.
&lt;br&gt;&lt;br&gt;I guess one of the problems I'm having is conceptual. At first, I was 
&lt;br&gt;under the impression that the inductors, capacitors, and resistors were 
&lt;br&gt;separate components from the port adapters, and that a &amp;quot;circuit&amp;quot; went 
&lt;br&gt;together by putting the port adapters in-between the electronic pieces. 
&lt;br&gt;However, based on some stuff I've managed to find on the web, it appears 
&lt;br&gt;that the network of components for a part of a circuit would actually go 
&lt;br&gt;inside of an N-port adapter, depending on the number of ports needed.
&lt;br&gt;&lt;br&gt;Unfortunately, nothing is very clear on how this works. The math that 
&lt;br&gt;describes the I/C/R components is presented, the math describing the 
&lt;br&gt;port adapters is presented, but I'm having difficulty figuring out how 
&lt;br&gt;to use it all together.
&lt;br&gt;&lt;br&gt;Perhaps some of my confusion will be alleviated (or added to) if I just 
&lt;br&gt;started trying to build some of these pieces in Faust and see what happens.
&lt;br&gt;&lt;br&gt;Another confusing bit is the Binary Connection Tree, a term that Google 
&lt;br&gt;turned up nothing on other than references to various DSP papers. 
&lt;br&gt;Several comp-sci friends of mine were also unable to tell me what that 
&lt;br&gt;might mean.
&lt;br&gt;&lt;br&gt;Thank you very much for your reply.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Darren Landrum
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Lumped-modeling-and-WDFs-tp19659318p19768616.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19754171</id>
	<title>[admin] music-dsp FAQ</title>
	<published>2008-09-30T21:00:00Z</published>
	<updated>2008-09-30T21:00:00Z</updated>
	<author>
		<name>douglas repetto-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;Just a reminder that if you are new to the list you should read the
&lt;br&gt;music-dsp FAQ. It contains answers to both technical _and_
&lt;br&gt;adminstrative questions that often come up on the list. If your question
&lt;br&gt;appears in the FAQ it is safe to assume that it has been discussed on the
&lt;br&gt;list many times in the past, and you should probably have a look through
&lt;br&gt;the list archives before posting your question to the list.
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp/musicdspFAQ.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp/musicdspFAQ.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Also of interest to new and not-so-new list members:
&lt;br&gt;&lt;br&gt;The music-dsp list archives
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp/musicdsparchives.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp/musicdsparchives.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;The music-dsp source code archive
&lt;br&gt;&lt;a href=&quot;http://www.musicdsp.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.musicdsp.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;music-dsp books and reviews
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp/dspbooks.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp/dspbooks.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;All this and more at:
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Hasta la pasta,
&lt;br&gt;douglas
&lt;br&gt;&lt;br&gt;(this is an automated message sent out on the 1st and 15th of each month)
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/-admin--music-dsp-FAQ-tp19754171p19754171.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19731613</id>
	<title>Re: Minimum-phase clarifications</title>
	<published>2008-09-29T13:58:52Z</published>
	<updated>2008-09-29T13:58:52Z</updated>
	<author>
		<name>Martin Eisenberg</name>
	</author>
	<content type="html">From: &amp;quot;Blargg&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19731613&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gblargg@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;gt; Do either of these two links describe methods of generating
&lt;br&gt;&amp;gt; a kernel to feed to the minimum-phase transform, that will
&lt;br&gt;&amp;gt; result on lots of zero/near-zero values at the end? I've had
&lt;br&gt;&amp;gt; trouble understanding them, so I just want to be sure they
&lt;br&gt;&amp;gt; are going to help.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.dspguru.com/howto/tech/minph2.htm&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dspguru.com/howto/tech/minph2.htm&lt;/a&gt;&lt;br&gt;&amp;gt; (the Homomorphic approach)
&lt;br&gt;&lt;br&gt;Except the first, I think all methods on that page rely on the
&lt;br&gt;same ripple positivity constraint. Why the mentioned ripple
&lt;br&gt;adjustment should enforce this constraint I can't say from the
&lt;br&gt;top of my head.
&lt;br&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://users.ece.utexas.edu/~bevans/papers/2000/minPhase/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://users.ece.utexas.edu/~bevans/papers/2000/minPhase/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I've seen some mention of keeping the stopband ripple
&lt;br&gt;&amp;gt; &amp;quot;positive&amp;quot; helping, but I don't know how it could be negative
&lt;br&gt;&amp;gt; in the first place.
&lt;br&gt;&lt;br&gt;A complex spectrum H(w) may cross the frequency axis, as opposed
&lt;br&gt;to just touching or winding around it. Typically the curve is
&lt;br&gt;straight around the crossing so that the magnitude spectrum |H|
&lt;br&gt;has a kink touching down on the axis, as you've probably often
&lt;br&gt;seen. Negating any lobe between two such crossings to make a
&lt;br&gt;smooth function leads to the so-called zero-phase response.
&lt;br&gt;Negative ripple in a filter means that its zero-phase response is
&lt;br&gt;less than the desired response, a definition that works in any
&lt;br&gt;band.
&lt;br&gt;&lt;br&gt;Why does this matter to us? All the design methods in question
&lt;br&gt;start from a prototype filter whose magnitude is supposed to
&lt;br&gt;equal the *squared* magnitude of the minimum-phase result. But
&lt;br&gt;for that to be possible the prototype magnitude must be smooth --
&lt;br&gt;equivalently, the zero-phase response must be nonnegative.
&lt;br&gt;In your second reference this is ensured in the simplest possible
&lt;br&gt;way, by adding the negative extreme value (and scaling to keep
&lt;br&gt;the passband at nominal gain).
&lt;br&gt;&lt;br&gt;&amp;gt; The second link's method has a first step of doing some kind
&lt;br&gt;&amp;gt; of adjustment to the kernel before making the minimum-phase
&lt;br&gt;&amp;gt; version, but I couldn't make sense of the realdemo.m code.
&lt;br&gt;&lt;br&gt;In the demo code H is the prototype linear-phase spectrum, H1 is
&lt;br&gt;the zero-phase spectrum of H, and HR is the positivized target
&lt;br&gt;magnitude spectrum. As far as I see, the only difference between
&lt;br&gt;code and paper is that the paper assumes you can design prototype
&lt;br&gt;filters to given ripple specifications whereas the code reads off
&lt;br&gt;the ripple values from the given example filter, presumably to be
&lt;br&gt;self-contained.
&lt;br&gt;&lt;br&gt;&amp;gt; Some descriptions talk about poles and zeroes, but I still
&lt;br&gt;&amp;gt; haven't found any code that calculates the poles and zeroes of
&lt;br&gt;&amp;gt; an arbitrary impulse response.
&lt;br&gt;&lt;br&gt;Finding the zeros of an FIR is simple in principle; apply a
&lt;br&gt;root-finder to the polynomial that is the transfer function H(z).
&lt;br&gt;There is standard software for that, though not all codes handle
&lt;br&gt;high degrees (long IRs) well. Best ask for recommendations in
&lt;br&gt;newsgroup sci.math.num-analysis if you want to play with
&lt;br&gt;factoring.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Minimum-phase-clarifications-tp19657641p19731613.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19728736</id>
	<title>Re: Lumped modeling and WDFs</title>
	<published>2008-09-29T11:00:59Z</published>
	<updated>2008-09-29T11:00:59Z</updated>
	<author>
		<name>Martin Eisenberg</name>
	</author>
	<content type="html">From: &amp;quot;Darren Landrum&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19728736&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;darren.landrum@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;gt; I've been trying to track down information about lumped
&lt;br&gt;modeling
&lt;br&gt;&amp;gt; and wave digital filters (WDFs) as a possible method of circuit
&lt;br&gt;&amp;gt; modeling. I found Dr. Julius Smith's textbook on the subject,
&lt;br&gt;and
&lt;br&gt;&amp;gt; I've tracked down some papers here and there. However, even
&lt;br&gt;&amp;gt; though my math is strong, my programming skills could really
&lt;br&gt;&amp;gt; use some help, and I was hoping I might find some examples of
&lt;br&gt;&amp;gt; how the different components (dashpots, springs, masses, and
&lt;br&gt;&amp;gt; ports) might actually get implemented in a programming
&lt;br&gt;&amp;gt; language.
&lt;br&gt;&lt;br&gt;Well, here's a bare-bones inductor (not sure which is the
&lt;br&gt;mechanical analog) in C++:
&lt;br&gt;&lt;br&gt;class Inductor {
&lt;br&gt;&amp;nbsp; float state_;
&lt;br&gt;public:
&lt;br&gt;&amp;nbsp; Inductor() &amp;nbsp;{ clear(); }
&lt;br&gt;&amp;nbsp; void clear() &amp;nbsp;{ state_ = 0; }
&lt;br&gt;&amp;nbsp; float tick(float in) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; float oldState = state_; &amp;nbsp;state_ = in; &amp;nbsp;return -oldState;
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;Is realizing the more complex adaptors your problem? With a
&lt;br&gt;little practice you can read the code directly from a block
&lt;br&gt;diagram. Do you understand this link in simple cases, e.g. the
&lt;br&gt;common 2nd-order IIR? Or are you wondering how to join all those
&lt;br&gt;blocks into a running system? Perhaps you can point out a
&lt;br&gt;specific block or circuit that you have trouble handling.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Lumped-modeling-and-WDFs-tp19659318p19728736.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19669417</id>
	<title>Re: FAUST and Csound (was Re: programming languages for real-time audio)</title>
	<published>2008-09-25T06:21:48Z</published>
	<updated>2008-09-25T06:21:48Z</updated>
	<author>
		<name>Dan Stowell</name>
	</author>
	<content type="html">I'd definitely like to see this; using faust-built units as
&lt;br&gt;benchmarking test cases is a nice thought. All sorts of caveats of
&lt;br&gt;course (as usual with benchmarks) but it'd be great to have such
&lt;br&gt;music-dsp-specific benchmark data available.
&lt;br&gt;&lt;br&gt;Dan
&lt;br&gt;&lt;br&gt;&lt;br&gt;2008/9/19 victor &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19669417&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Victor.Lazzarini@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I had some chats with Yann (we keep bumping into each other at various
&lt;br&gt;&amp;gt; conferences) about doing exactly this. I think it is a great idea (and
&lt;br&gt;&amp;gt; possibly
&lt;br&gt;&amp;gt; the only output FAUST does not have at this stage).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; One thing this might enable is to benchmark music languages (Csound vs.
&lt;br&gt;&amp;gt; PD vs. SC3), which is something worth doing once and for all (I can see
&lt;br&gt;&amp;gt; a paper in this...)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Victor
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ----- Original Message ----- From: &amp;quot;Michael Gogins&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19669417&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gogins@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; To: &amp;quot;A discussion list for music-related DSP&amp;quot; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19669417&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;music-dsp@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sent: Friday, September 19, 2008 9:22 PM
&lt;br&gt;&amp;gt; Subject: Re: [music-dsp] programming languages for real-time audio
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I have considered making a generator so Faust code will compile into
&lt;br&gt;&amp;gt;&amp;gt; plugin Csound opcodes.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; dupswapdrop -- the music-dsp mailing list and website: subscription info,
&lt;br&gt;&amp;gt; FAQ, source code archive, list archive, book reviews, dsp links
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&lt;a href=&quot;http://www.mcld.co.uk&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.mcld.co.uk&lt;/a&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19669417.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19659318</id>
	<title>Lumped modeling and WDFs</title>
	<published>2008-09-24T15:22:44Z</published>
	<updated>2008-09-24T15:22:44Z</updated>
	<author>
		<name>Darren Landrum</name>
	</author>
	<content type="html">Hello, all.
&lt;br&gt;&lt;br&gt;I've been trying to track down information about lumped modeling and 
&lt;br&gt;wave digital filters (WDFs) as a possible method of circuit modeling. I 
&lt;br&gt;found Dr. Julius Smith's textbook on the subject, and I've tracked down 
&lt;br&gt;some papers here and there. However, even though my math is strong, my 
&lt;br&gt;programming skills could really use some help, and I was hoping I might 
&lt;br&gt;find some examples of how the different components (dashpots, springs, 
&lt;br&gt;masses, and ports) might actually get implemented in a programming language.
&lt;br&gt;&lt;br&gt;I looked through the Music-DSP archives, and I couldn't find anything. 
&lt;br&gt;I've found papers that describe the math, but not how to use the math. 
&lt;br&gt;If anyone out there has any links or pointers, I would greatly 
&lt;br&gt;appreciate it.
&lt;br&gt;&lt;br&gt;Thank you all for your time.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Darren Landrum
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Lumped-modeling-and-WDFs-tp19659318p19659318.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19657641</id>
	<title>Minimum-phase clarifications</title>
	<published>2008-09-24T13:46:12Z</published>
	<updated>2008-09-24T13:46:12Z</updated>
	<author>
		<name>Blargg</name>
	</author>
	<content type="html">I want to clarify my understanding of the minimum-phase transform. The
&lt;br&gt;two main uses I understand it to have for digital audio are:
&lt;br&gt;&lt;br&gt;1) alter the time-domain response so that most of the energy is at the
&lt;br&gt;front, and
&lt;br&gt;&lt;br&gt;2) reduce the number of taps in the filter kernel, to reduce
&lt;br&gt;computation requirements without affecting how well it filters.
&lt;br&gt;&lt;br&gt;I'd like to focus on #2, the performance aspect. If one doesn't need a
&lt;br&gt;linear phase response, there are more possible sets of coefficients
&lt;br&gt;for the FIR that meet one's magnitude requirements, many of which
&lt;br&gt;aren't linear-phase. Some of these sets have fewer non-zero
&lt;br&gt;coefficients at the beginning and/or end, allowing fewer taps and thus
&lt;br&gt;less computation in some applications.
&lt;br&gt;&lt;br&gt;Apparently one way of arriving at a shorter kernel is to generate the
&lt;br&gt;kernel, then make the minimum-phase version of it and chop off the
&lt;br&gt;(near) zeroes at the end. Based on some readings, the method used to
&lt;br&gt;generate the starting kernel is critical in determining how well it
&lt;br&gt;shortens.
&lt;br&gt;&lt;br&gt;Do I have things correct so far? I've not made much progress in
&lt;br&gt;understanding how to generate optimal input kernels. I've implemented
&lt;br&gt;the minimum-phase transform code and fed it several kernels, and I do
&lt;br&gt;seem some shortening (particularly with a sinc windowed by a kaiser
&lt;br&gt;with beta=9), but I get the idea there must be some way of generating
&lt;br&gt;a more optimal input kernel that &amp;quot;bunches up&amp;quot; better with the
&lt;br&gt;minimum-phase transform.
&lt;br&gt;&lt;br&gt;Do either of these two links describe methods of generating a kernel
&lt;br&gt;to feed to the minimum-phase transform, that will result on lots of
&lt;br&gt;zero/near-zero values at the end? I've had trouble understanding them,
&lt;br&gt;so I just want to be sure they are going to help.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.dspguru.com/howto/tech/minph2.htm&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.dspguru.com/howto/tech/minph2.htm&lt;/a&gt;&amp;nbsp;(the Homomorphic approach)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://users.ece.utexas.edu/~bevans/papers/2000/minPhase/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://users.ece.utexas.edu/~bevans/papers/2000/minPhase/&lt;/a&gt;&lt;br&gt;&lt;br&gt;I've seen some mention of keeping the stopband ripple &amp;quot;positive&amp;quot;
&lt;br&gt;helping, but I don't know how it could be negative in the first place.
&lt;br&gt;The second link's method has a first step of doing some kind of
&lt;br&gt;adjustment to the kernel before making the minimum-phase version, but
&lt;br&gt;I couldn't make sense of the realdemo.m code. Some descriptions talk
&lt;br&gt;about poles and zeroes, but I still haven't found any code that
&lt;br&gt;calculates the poles and zeroes of an arbitrary impulse response.
&lt;br&gt;Without code to help me visualize them, I can't make much sense of
&lt;br&gt;them and how to adjust them.
&lt;br&gt;&lt;br&gt;If possible, I'd like to end up with an approach that works just as
&lt;br&gt;simply as a windowed sinc or the &amp;quot;remez&amp;quot; method, where I specify the
&lt;br&gt;basic parameters and get a shorter non-linear kernel than the linear
&lt;br&gt;one would have been.
&lt;br&gt;&lt;br&gt;Thanks for any help. I've got more questions to follow, just want to
&lt;br&gt;set the context first.
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Minimum-phase-clarifications-tp19657641p19657641.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19632560</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T10:14:14Z</published>
	<updated>2008-09-23T10:14:14Z</updated>
	<author>
		<name>Michael Gogins</name>
	</author>
	<content type="html">The shootout does specify the implementation of the language. In the past, I recall seeing some shootouts with different implementations of the same language.
&lt;br&gt;&lt;br&gt;Of course, you are quite correct that the only truly valid benchmark involves performing the exact same task -- take these inputs, give me those outputs -- in the relevant languages.
&lt;br&gt;&lt;br&gt;With respect to software synthesis, I have done just that with all C++, all Java, Lua/C++, Python/C++, and Python/Csound implementations. 
&lt;br&gt;&lt;br&gt;The inputs were a sequence of notes generated by the logistic equation, and the outputs were soundfiles synthesized with a simple frequency modulation instrument. The all C++ implementation was faster than the Python/Csound implementation by about one percent, and 3 times faster than the all Java implementation; the others were slightly slower than the all Java. 
&lt;br&gt;&lt;br&gt;The Java test was done some years ago, and the results might be different today. All of these tests computed the audio signal one sample frame at a time. Normally, software synthesizers compute blocks of sample frames in each iteration of the inner loops. When Csound is used in this way, it is about 3 times faster than with 1 frame at a time. I would expect a similar speedup if I coded the all C++ and all Java synthesizers this way as well. This block efficiency thing may also be changing, since it depends mostly on how much code and data is hanging around in the fastest cache.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Mike
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;From: David Cournapeau &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19632560&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cournape@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Sent: Sep 23, 2008 9:25 AM
&lt;br&gt;&amp;gt;To: A discussion list for music-related DSP &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19632560&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;music-dsp@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Subject: Re: [music-dsp] programming languages for real-time audio
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;On Tue, Sep 23, 2008 at 9:59 PM, Michael Gogins &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19632560&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gogins@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The meaningful distinction then, is between the fastest implementation of one language, and the fastest implementation of another language.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;I guess I did not formulate my email correctly, because this was the
&lt;br&gt;&amp;gt;point I thought I was making :) I think the language shootout is not
&lt;br&gt;&amp;gt;adapted for this, because it is too coarse-grained. The language
&lt;br&gt;&amp;gt;shoutout is nice if you want to know the order of magnitude of the
&lt;br&gt;&amp;gt;languages, but it is not precise enough for anything more
&lt;br&gt;&amp;gt;fine-grained. Typically, would you choose java instead of fortran for
&lt;br&gt;&amp;gt;high performance linear algebra ? I believe a better comparison would
&lt;br&gt;&amp;gt;be some basic dsp implemented with a good C compiler and in ocaml.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;David
&lt;br&gt;&amp;gt;--
&lt;br&gt;&amp;gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;&amp;gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19632560.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19627619</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T06:25:49Z</published>
	<updated>2008-09-23T06:25:49Z</updated>
	<author>
		<name>David Cournapeau</name>
	</author>
	<content type="html">On Tue, Sep 23, 2008 at 9:59 PM, Michael Gogins &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19627619&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gogins@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The meaningful distinction then, is between the fastest implementation of one language, and the fastest implementation of another language.
&lt;br&gt;&lt;br&gt;I guess I did not formulate my email correctly, because this was the
&lt;br&gt;point I thought I was making :) I think the language shootout is not
&lt;br&gt;adapted for this, because it is too coarse-grained. The language
&lt;br&gt;shoutout is nice if you want to know the order of magnitude of the
&lt;br&gt;languages, but it is not precise enough for anything more
&lt;br&gt;fine-grained. Typically, would you choose java instead of fortran for
&lt;br&gt;high performance linear algebra ? I believe a better comparison would
&lt;br&gt;be some basic dsp implemented with a good C compiler and in ocaml.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;&lt;br&gt;David
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19627619.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19627148</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T05:59:57Z</published>
	<updated>2008-09-23T05:59:57Z</updated>
	<author>
		<name>Michael Gogins</name>
	</author>
	<content type="html">Software is not written in an abstract language, but in a concrete language. In practice, for critical software, the fastest implementation of the language is always used. So, these differences ARE significant.
&lt;br&gt;&lt;br&gt;The meaningful distinction then, is between the fastest implementation of one language, and the fastest implementation of another language.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Mike
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;From: David Cournapeau &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19627148&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cournape@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Sent: Sep 23, 2008 8:23 AM
&lt;br&gt;&amp;gt;To: A discussion list for music-related DSP &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19627148&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;music-dsp@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Subject: Re: [music-dsp] programming languages for real-time audio
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;On Tue, Sep 23, 2008 at 8:49 PM, Michael Gogins &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19627148&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gogins@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; Csound and other software are not written only for you, they are written for a community of users. In my experience with trading systems, Csound, and other software, there are ALWAYS users for whom even a 15% performance difference is critical.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Critical as in, &amp;quot;If it's not 15% faster, I can't use it.&amp;quot; This is the literal, unexaggerated truth.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Sure, I am well aware of that. But I never said 15 % did not matter. I
&lt;br&gt;&amp;gt;was saying that if you have a &amp;quot;variance&amp;quot; of 200 % for speed between
&lt;br&gt;&amp;gt;two implementations of the same language (and that's certainly true
&lt;br&gt;&amp;gt;for C/C++ considering the compiler as an implementation of the
&lt;br&gt;&amp;gt;language), a difference of 100 % between two languages is not
&lt;br&gt;&amp;gt;meaningful. This is all the more true if you need to squeeze a few %
&lt;br&gt;&amp;gt;of performances
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;David
&lt;br&gt;&amp;gt;--
&lt;br&gt;&amp;gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;&amp;gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19627148.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19626517</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T05:23:58Z</published>
	<updated>2008-09-23T05:23:58Z</updated>
	<author>
		<name>David Cournapeau</name>
	</author>
	<content type="html">On Tue, Sep 23, 2008 at 8:49 PM, Michael Gogins &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19626517&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gogins@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Csound and other software are not written only for you, they are written for a community of users. In my experience with trading systems, Csound, and other software, there are ALWAYS users for whom even a 15% performance difference is critical.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Critical as in, &amp;quot;If it's not 15% faster, I can't use it.&amp;quot; This is the literal, unexaggerated truth.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;Sure, I am well aware of that. But I never said 15 % did not matter. I
&lt;br&gt;was saying that if you have a &amp;quot;variance&amp;quot; of 200 % for speed between
&lt;br&gt;two implementations of the same language (and that's certainly true
&lt;br&gt;for C/C++ considering the compiler as an implementation of the
&lt;br&gt;language), a difference of 100 % between two languages is not
&lt;br&gt;meaningful. This is all the more true if you need to squeeze a few %
&lt;br&gt;of performances
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;&lt;br&gt;David
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19626517.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19626307</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T05:09:51Z</published>
	<updated>2008-09-23T05:09:51Z</updated>
	<author>
		<name>info-255</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp;&amp;gt; &amp;quot;If it's not 15% faster, I can't use it.&amp;quot; This is the literal, 
&lt;br&gt;unexaggerated truth.
&lt;br&gt;&lt;br&gt;15%? &amp;nbsp;Sometimes it's a question of 1%!
&lt;br&gt;&lt;br&gt;&amp;gt; I would say that being 2x slower (or faster) is not statistically significant
&lt;br&gt;&lt;br&gt;&lt;br&gt;I normally code in assembler, as C is generally 3x slower. &amp;nbsp;It's OK for 
&lt;br&gt;background routines (calculating filter coefficients, for example), but 
&lt;br&gt;for time critical stuff only assembler will do. &amp;nbsp;And yes, I already use 
&lt;br&gt;the fastest DSPs the manufacturers provide, so changing chips is not an 
&lt;br&gt;option.
&lt;br&gt;&lt;br&gt;Tom
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19626307.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19625995</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T04:49:14Z</published>
	<updated>2008-09-23T04:49:14Z</updated>
	<author>
		<name>Michael Gogins</name>
	</author>
	<content type="html">Csound and other software are not written only for you, they are written for a community of users. In my experience with trading systems, Csound, and other software, there are ALWAYS users for whom even a 15% performance difference is critical. 
&lt;br&gt;&lt;br&gt;Critical as in, &amp;quot;If it's not 15% faster, I can't use it.&amp;quot; This is the literal, unexaggerated truth. 
&lt;br&gt;&lt;br&gt;My salary -- and the profits of my employer -- depends on it. It's also the reason why there is still a &amp;quot;float&amp;quot; version of Csound.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Mike
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;From: David Cournapeau &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19625995&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cournape@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Sent: Sep 23, 2008 3:41 AM
&lt;br&gt;&amp;gt;To: A discussion list for music-related DSP &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19625995&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;music-dsp@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Subject: Re: [music-dsp] programming languages for real-time audio
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;On Sat, Sep 20, 2008 at 5:22 AM, Michael Gogins &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19625995&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gogins@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; Yes, I have examined OCaml and I have played with Faust.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Faust may conceivably be useful to some persons. For most people, I think it would be just about as easy to write code using a class library such as the STK. However, I hope that Faust continues to be developed because (a) the code may be easier to read for signal processing tasks, and (c) once written the code may automatically be built into various kinds of plugins.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I have considered making a generator so Faust code will compile into plugin Csound opcodes.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; OCaml as benchmarked with other functional languages compared with C++: slower. See this from &lt;a href=&quot;http://shootout.alioth.debian.org/u32/benchmark.php?test=all〈=all:&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://shootout.alioth.debian.org/u32/benchmark.php?test=all〈=all:&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;I don't want to go into 'benchmark are meaningless' meme, but I have a
&lt;br&gt;&amp;gt;hard time believing a factor 2-3 mean anything. I mean with the same C
&lt;br&gt;&amp;gt;code/same compiler, you can easily get this factor by running on
&lt;br&gt;&amp;gt;slightly different CPU, specially for floating point, or by slightly
&lt;br&gt;&amp;gt;different compiler options (see for example how ATLAS performances are
&lt;br&gt;&amp;gt;changed by some tiny-looking changes in some options/micro-revision
&lt;br&gt;&amp;gt;changes); you can certainly lose/gain such a factor using a different
&lt;br&gt;&amp;gt;compiler. IOW, I would say that being 2x slower (or faster) is not
&lt;br&gt;&amp;gt;statistically significant.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;I am not saying that OCAML is not slower than C++ for dsp (I have no
&lt;br&gt;&amp;gt;idea - I would guess that for real-time, the gc may be a problem), but
&lt;br&gt;&amp;gt;if speed was a criteria, I would not base my judgement on those
&lt;br&gt;&amp;gt;benchmarks.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;David
&lt;br&gt;&amp;gt;--
&lt;br&gt;&amp;gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;&amp;gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website:
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19625995.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19623359</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T01:30:26Z</published>
	<updated>2008-09-23T01:30:26Z</updated>
	<author>
		<name>Erik de Castro Lopo</name>
	</author>
	<content type="html">David Cournapeau wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; On Sun, Sep 21, 2008 at 4:39 PM, Erik de Castro Lopo
&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19623359&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mdsp-erikd@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; It is not in my opinion a good language for real-time DSP, so I
&lt;br&gt;&amp;gt; &amp;gt; tend to use C for that instead.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; We want more :) Did you write anything about your findings on the
&lt;br&gt;&amp;gt; limitations of ocaml for real-time dsp ?
&lt;br&gt;&lt;br&gt;I didn't write anything, but it basically comes down to insufficient
&lt;br&gt;control of the garbage collector.
&lt;br&gt;&lt;br&gt;The other thing is that DSP programming is mainly imperative programming
&lt;br&gt;and although you can do imperative programming in Ocaml, C is a better
&lt;br&gt;imperative language than Ocaml.
&lt;br&gt;&lt;br&gt;Erik
&lt;br&gt;-- 
&lt;br&gt;-----------------------------------------------------------------
&lt;br&gt;Erik de Castro Lopo
&lt;br&gt;-----------------------------------------------------------------
&lt;br&gt;Question #70427: Sitting beside women on public transport because
&lt;br&gt;one is forced to
&lt;br&gt;&lt;a href=&quot;http://islamqa.com/index.php?ln=eng&amp;ds=qa&amp;lv=browse&amp;QR=70427&amp;dgn=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://islamqa.com/index.php?ln=eng&amp;ds=qa&amp;lv=browse&amp;QR=70427&amp;dgn=4&lt;/a&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19623359.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19622906</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T00:50:59Z</published>
	<updated>2008-09-23T00:50:59Z</updated>
	<author>
		<name>David Cournapeau</name>
	</author>
	<content type="html">On Sun, Sep 21, 2008 at 4:39 PM, Erik de Castro Lopo
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19622906&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mdsp-erikd@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It is not in my opinion a good language for real-time DSP, so I
&lt;br&gt;&amp;gt; tend to use C for that instead.
&lt;br&gt;&lt;br&gt;We want more :) Did you write anything about your findings on the
&lt;br&gt;limitations of ocaml for real-time dsp ?
&lt;br&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Faust does look interesting.
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;It does. I wondered if this could be applicable to numerical computing
&lt;br&gt;too (they mention matrix/vector as a future direction in some of their
&lt;br&gt;online slides). I think it is a much better alternative to C++
&lt;br&gt;meta-programming for efficient code generation,
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;&lt;br&gt;David
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19622906.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19622766</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-23T00:41:00Z</published>
	<updated>2008-09-23T00:41:00Z</updated>
	<author>
		<name>David Cournapeau</name>
	</author>
	<content type="html">On Sat, Sep 20, 2008 at 5:22 AM, Michael Gogins &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19622766&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gogins@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Yes, I have examined OCaml and I have played with Faust.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Faust may conceivably be useful to some persons. For most people, I think it would be just about as easy to write code using a class library such as the STK. However, I hope that Faust continues to be developed because (a) the code may be easier to read for signal processing tasks, and (c) once written the code may automatically be built into various kinds of plugins.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have considered making a generator so Faust code will compile into plugin Csound opcodes.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; OCaml as benchmarked with other functional languages compared with C++: slower. See this from &lt;a href=&quot;http://shootout.alioth.debian.org/u32/benchmark.php?test=all&amp;lang=all:&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://shootout.alioth.debian.org/u32/benchmark.php?test=all&amp;lang=all:&lt;/a&gt;&lt;br&gt;&lt;br&gt;I don't want to go into 'benchmark are meaningless' meme, but I have a
&lt;br&gt;hard time believing a factor 2-3 mean anything. I mean with the same C
&lt;br&gt;code/same compiler, you can easily get this factor by running on
&lt;br&gt;slightly different CPU, specially for floating point, or by slightly
&lt;br&gt;different compiler options (see for example how ATLAS performances are
&lt;br&gt;changed by some tiny-looking changes in some options/micro-revision
&lt;br&gt;changes); you can certainly lose/gain such a factor using a different
&lt;br&gt;compiler. IOW, I would say that being 2x slower (or faster) is not
&lt;br&gt;statistically significant.
&lt;br&gt;&lt;br&gt;I am not saying that OCAML is not slower than C++ for dsp (I have no
&lt;br&gt;idea - I would guess that for real-time, the gc may be a problem), but
&lt;br&gt;if speed was a criteria, I would not base my judgement on those
&lt;br&gt;benchmarks.
&lt;br&gt;&lt;br&gt;cheers,
&lt;br&gt;&lt;br&gt;David
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19622766.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19622389</id>
	<title>java sound, without hardware device</title>
	<published>2008-09-23T00:05:08Z</published>
	<updated>2008-09-23T00:05:08Z</updated>
	<author>
		<name>Rory Solomon</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;I have some code I've written based on the Java Sound API that takes
&lt;br&gt;multiple sound clips, and mixes them together in an interesting way
&lt;br&gt;and plays the result. I am now trying to run this in a server
&lt;br&gt;environment, where the resulting mix will be recorded to a file
&lt;br&gt;instead of played to line out.
&lt;br&gt;&lt;br&gt;However the server I am trying to run this on does not appear to have
&lt;br&gt;any audio devices installed, and I seem to be running into roadblocks
&lt;br&gt;with Java Sound not being able to allocate any lines if there is not a
&lt;br&gt;Mixer that supports it. (And with no hardware devices I'm getting no
&lt;br&gt;Mixers.)
&lt;br&gt;&lt;br&gt;Does anyone know if this is possible?
&lt;br&gt;&lt;br&gt;Any info would be appreciated -
&lt;br&gt;&lt;br&gt;thanks!
&lt;br&gt;Rory
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/java-sound%2C-without-hardware-device-tp19622389p19622389.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19592254</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-21T00:39:39Z</published>
	<updated>2008-09-21T00:39:39Z</updated>
	<author>
		<name>Erik de Castro Lopo</name>
	</author>
	<content type="html">Darren Landrum wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Has anyone taken a close look at Ocaml for real-time DSP?
&lt;br&gt;&lt;br&gt;I have. I love Ocaml as a general purpose langauge and as language for
&lt;br&gt;technical computing and as a language for off line DSP.
&lt;br&gt;&lt;br&gt;It is not in my opinion a good language for real-time DSP, so I 
&lt;br&gt;tend to use C for that instead.
&lt;br&gt;&lt;br&gt;&amp;gt; By the way, here's the link to Faust, just in case:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://faust.grame.fr/index.php&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://faust.grame.fr/index.php&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I don't recall if it got mentioned yet. It's a functional language for 
&lt;br&gt;&amp;gt; DSP that compiled to efficient C/C++ code.
&lt;br&gt;&lt;br&gt;Faust does look interesting.
&lt;br&gt;&lt;br&gt;Erik
&lt;br&gt;-- 
&lt;br&gt;-----------------------------------------------------------------
&lt;br&gt;Erik de Castro Lopo
&lt;br&gt;-----------------------------------------------------------------
&lt;br&gt;&amp;quot;I'll just say that having programmed in Lisp the shortcomings
&lt;br&gt;of Java are glaringly obvious.&amp;quot; -- Erann Gat
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19592254.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19590923</id>
	<title>Re: Re: programming languages for real-time audio</title>
	<published>2008-09-20T19:03:20Z</published>
	<updated>2008-09-20T19:03:20Z</updated>
	<author>
		<name>Stephen Sinclair</name>
	</author>
	<content type="html">On Sat, Sep 20, 2008 at 10:27 AM, Michael Gogins &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19590923&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gogins@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; For a composer, or a researcher, or somebody programming for their own
&lt;br&gt;&amp;gt; purposes, programming ease might well much more important.
&lt;br&gt;&lt;br&gt;It's not just &amp;quot;programming ease&amp;quot;, though. &amp;nbsp;I mean, I don't find C or
&lt;br&gt;C++ particularly &amp;quot;hard&amp;quot;, per se. &amp;nbsp;But when writing an application it's
&lt;br&gt;often just better to use a dynamic language, hence people's interest
&lt;br&gt;in Python-like environments lately. &amp;nbsp;Then, when you go to do the audio
&lt;br&gt;engine, having to re-write all the data structures in C just to meet
&lt;br&gt;real-time needs seems kind of annoying and even limiting. &amp;nbsp;Equally,
&lt;br&gt;restricting yourself to C in the first place to avoid this problem,
&lt;br&gt;just because you know your application will have an audio output, also
&lt;br&gt;feels limiting.
&lt;br&gt;&lt;br&gt;It's not just &amp;quot;ease&amp;quot;, it's convenience, and making better use of both
&lt;br&gt;your time and your mental resources. &amp;nbsp;My solution is usually to do the
&lt;br&gt;complex parts of the application and then control an audio thread in C
&lt;br&gt;using the barest parameter space, trying hard to replicate code as
&lt;br&gt;little as possible. &amp;nbsp;But it'd be nice to just do the audio in the
&lt;br&gt;language of choice, period. &amp;nbsp;With JIT compilers getting better and
&lt;br&gt;better these days, I was wondering if it's getting to the point where
&lt;br&gt;it's possible to do this now.
&lt;br&gt;&lt;br&gt;I think that one day when I have time I'm going to write simple
&lt;br&gt;RtAudio bindings for one of these new JavaScript engines that claim to
&lt;br&gt;be almost as fast as... well.. Java maybe, and just see how much raw
&lt;br&gt;audio processing I can do. &amp;nbsp;And many articles on these new engines
&lt;br&gt;claim to still have room for improvement, so things will only be
&lt;br&gt;getting better I think.
&lt;br&gt;&lt;br&gt;Steve
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19590923.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19587791</id>
	<title>Re: Re: programming languages for real-time audio</title>
	<published>2008-09-20T11:05:14Z</published>
	<updated>2008-09-20T11:05:14Z</updated>
	<author>
		<name>grahamwakefield</name>
	</author>
	<content type="html">&lt;br&gt;On Sep 20, 2008, at 2:54 AM, Tim Blechmann wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Fri, 2008-09-19 at 21:02 -0700, Graham Wakefield wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Tim Blechmann:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Have you looked at Vessel? It seems very nice and a quick
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; way to test lua's realtimeness.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Yes, I can speak from experience that it performs very well indeed;
&lt;br&gt;&amp;gt;&amp;gt; very low jitter. This was one of the most attractive features of Lua
&lt;br&gt;&amp;gt;&amp;gt; for me, when I first chose to use it.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; i hadn't heard of vessel before ... i was just skimming through your
&lt;br&gt;&amp;gt; master thesis, thought ... seems interesting ...
&lt;br&gt;&amp;gt; but i'm curious, did you do any analysis of the worst-case response
&lt;br&gt;&amp;gt; times of the lua interpreter, when running in a real-time thread? &amp;nbsp;
&lt;br&gt;&amp;gt; like,
&lt;br&gt;&amp;gt; is entering/leaving the interpreter lock-free?
&lt;/div&gt;&lt;br&gt;Well, standard Lua is entirely single-threaded. The code is very &amp;nbsp;
&lt;br&gt;lean, I gave up worrying about the overhead. Most of the time seems &amp;nbsp;
&lt;br&gt;to be spent in variable lookups. &amp;nbsp;You can extend Lua for multi- 
&lt;br&gt;threading with locks, but it doesn't make much sense to do so (can &amp;nbsp;
&lt;br&gt;send refs if you need). There are extensions to Lua for spawning jobs &amp;nbsp;
&lt;br&gt;into secondary threads, such as LuaLanes.
&lt;br&gt;&lt;br&gt;Like most of the other projects that have been discussed, I'm still &amp;nbsp;
&lt;br&gt;using C/C++ for the actual DSP, but Lua for the management, &amp;nbsp;
&lt;br&gt;allocation etc. of the graph nodes, along with timing and everything &amp;nbsp;
&lt;br&gt;else. I wouldn't use Lua to do actual DSP as such except for &amp;nbsp;
&lt;br&gt;prototyping, though apparently the v2 (release early next year?) of &amp;nbsp;
&lt;br&gt;LuaJIT is approaching speeds approaching C... might be worth keeping &amp;nbsp;
&lt;br&gt;an eye on. LuaJIT 1.0 is already pretty fast!
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Also, the allocator used by Lua can be very easily replaced: http://
&lt;br&gt;&amp;gt;&amp;gt; www.lua.org/manual/5.1/manual.html#lua_Alloc
&lt;br&gt;&amp;gt;&amp;gt; For my work I used dlmalloc as a drop-in replacement, which performed
&lt;br&gt;&amp;gt;&amp;gt; very well. It's on my todo list to compare this with TLSF and of
&lt;br&gt;&amp;gt;&amp;gt; course the rollendurchmesserzeitsammler.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; unfortunately tlsf is just a single-threaded allocator ... &amp;nbsp;
&lt;br&gt;&amp;gt; therefore it
&lt;br&gt;&amp;gt; is not usable, where the allocator needs to be accessed from multiple
&lt;br&gt;&amp;gt; real-time threads ... well, for most computer music systems, that &amp;nbsp;
&lt;br&gt;&amp;gt; may be
&lt;br&gt;&amp;gt; the case, but we're living in 2008, where most of the personal &amp;nbsp;
&lt;br&gt;&amp;gt; computers
&lt;br&gt;&amp;gt; provide multiple processors ...
&lt;/div&gt;&lt;br&gt;If anything, I would expect that in the future we might be looking at &amp;nbsp;
&lt;br&gt;smaller granularity of threading, data-parallel and task-parallel &amp;nbsp;
&lt;br&gt;etc, so I'm keeping tabs on the potential of these kinds of &amp;nbsp;
&lt;br&gt;developments instead (Intel Building Blocks, OpenCL, etc). Figuring &amp;nbsp;
&lt;br&gt;out the real-time safe, low latency ways to do this (including &amp;nbsp;
&lt;br&gt;allocation) is on my plate over the coming year.
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19587791.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19585962</id>
	<title>Re: Re: programming languages for real-time audio</title>
	<published>2008-09-20T07:27:49Z</published>
	<updated>2008-09-20T07:27:49Z</updated>
	<author>
		<name>Michael Gogins</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&amp;gt;Michael Gogins:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Of course, like so many of these research languages, ATS code is 
&lt;br&gt;&amp;gt;&amp;gt; compiled to C code before it is compiled to machine language... so even 
&lt;br&gt;&amp;gt;&amp;gt; if you like the language you still have to have a C development system... 
&lt;br&gt;&amp;gt;&amp;gt; if you have to have a C development system anyway, why not write 
&lt;br&gt;&amp;gt;&amp;gt; somewhat faster code in C++ with an existing rich signal processing library?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;It's hard to manually do the kind of optimization performed by 
&lt;br&gt;&amp;gt;whole-program optimizers such as faust, mlton or stalin.
&lt;br&gt;&amp;gt;Have you looked at the output of those compilers? That's pretty
&lt;br&gt;&amp;gt;extreme stuff.
&lt;/div&gt;&lt;br&gt;&amp;gt; Kjetil:
&lt;br&gt;&lt;br&gt;&amp;gt;Anyway, hearing your arguments, it reminds me of old assembler vs. C
&lt;br&gt;&amp;gt;disussions. The simple truth is that developing in a higher level
&lt;br&gt;&amp;gt;language simply is faster, and it frees up your brain to concentrate
&lt;br&gt;&amp;gt;on the algorithms instead of gory low-level details. You can 
&lt;br&gt;&amp;gt;try out things more quickly, and if you think you can make
&lt;br&gt;&amp;gt;your stuff run faster if developed directly in C or assember
&lt;br&gt;&amp;gt;later on, you are free to do so.
&lt;br&gt;&lt;br&gt;I agree -- in principle, and in practice. That is, in some contexts I agree
&lt;br&gt;in practice. I find Python productive compared to C++, for example. (Though
&lt;br&gt;the margin is not as huge as I thought it might be. I use both Python and C++
&lt;br&gt;both in my day job and in composing music, so I think factors of learning 
&lt;br&gt;curve and knowledge of the languages have pretty much evened out by now.)
&lt;br&gt;&lt;br&gt;I think the question whether programming ease and clarity 
&lt;br&gt;makes an effective difference will vary by
&lt;br&gt;person, so it boils down to which objective is more important. C/C++ rules in
&lt;br&gt;this field because for most of the people producing software for other people
&lt;br&gt;to use, final performance is the overriding objective.
&lt;br&gt;&lt;br&gt;For a composer, or a researcher, or somebody programming for their own 
&lt;br&gt;purposes, programming ease might well much more important.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Mike
&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19585962.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19584621</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-20T04:22:01Z</published>
	<updated>2008-09-20T04:22:01Z</updated>
	<author>
		<name>Kjetil S. Matheussen-3</name>
	</author>
	<content type="html">&lt;br&gt;Tim Blechmann:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; Also, the allocator used by Lua can be very easily replaced: http:// 
&lt;br&gt;&amp;gt; &amp;gt; www.lua.org/manual/5.1/manual.html#lua_Alloc
&lt;br&gt;&amp;gt; &amp;gt; For my work I used dlmalloc as a drop-in replacement, which performed &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; very well. It's on my todo list to compare this with TLSF and of &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; course the rollendurchmesserzeitsammler.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; unfortunately tlsf is just a single-threaded allocator ... therefore it
&lt;br&gt;&amp;gt; is not usable, where the allocator needs to be accessed from multiple
&lt;br&gt;&amp;gt; real-time threads ... well, for most computer music systems, that may be
&lt;br&gt;&amp;gt; the case, but we're living in 2008, where most of the personal computers
&lt;br&gt;&amp;gt; provide multiple processors ...
&lt;/div&gt;&lt;br&gt;Don't you have to do extermely frequent allocations for this to matter?
&lt;br&gt;I mean, that the TLSF allocator uses mutexes instead of lock-free 
&lt;br&gt;teqniques for supporting multiple threads.
&lt;br&gt;&lt;br&gt;Since allocating memory happens relatively seldom, plus that TLSF
&lt;br&gt;only uses about 180 instructions for allocating and freeing,
&lt;br&gt;I don't really think this should make a difference
&lt;br&gt;since the mutex will hardly be used anyway.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; i am not sure about rollendurchmesserzeitsammler, but the last time i
&lt;br&gt;&amp;gt; checked, it was relying on tlsf ... kjetil, do you know how rdmzs would
&lt;br&gt;&amp;gt; perform with multiple real-time threads?
&lt;br&gt;&lt;br&gt;rollendurch is tuned to work with snd-rt, which is single threaded (for
&lt;br&gt;now), so it doesn't support multithreaded access. But it's not very hard
&lt;br&gt;to support.
&lt;br&gt;&lt;br&gt;rollendurch has two memory allocators, which must be configured
&lt;br&gt;at compile time to select which allocator to use: TLSF and
&lt;br&gt;a (very naive) custom-made pool-based allocator.
&lt;br&gt;&lt;br&gt;For TLSF, as mentioned, you must use a mutex around alloc() and free(),
&lt;br&gt;but for the pool-based allocator, it's relatively trivial
&lt;br&gt;to add true multi-threading support just by using
&lt;br&gt;atomic_add and lock-free fifo queues. (see algorithm below)
&lt;br&gt;&lt;br&gt;The pool-based allocator is, as I said, very naive, so it
&lt;br&gt;can't really be used in general. It probably works okay for
&lt;br&gt;about 99% (or more) of normal music algorithm use, but it
&lt;br&gt;wastes an enourmous amount of memory plus that for some
&lt;br&gt;types of code it could &amp;quot;mysteriously&amp;quot; :-) run out of memory
&lt;br&gt;very quickly, or unquickly:
&lt;br&gt;&lt;br&gt;alloc(size):
&lt;br&gt;&amp;nbsp; if pools[size]!=NULL:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ret=pools[size]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;pools[size]=pools[size].next
&lt;br&gt;&amp;nbsp; else:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ret=freemem;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;freemem+=size
&lt;br&gt;&amp;nbsp; return ret;
&lt;br&gt;&lt;br&gt;free(mem,size):
&lt;br&gt;&amp;nbsp; if (freemem-size)==mem:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;freemem-=size
&lt;br&gt;&amp;nbsp; else:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;mem.next=pools[size]
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;pools[size]=mem.next
&lt;br&gt;&lt;br&gt;But it's very fast though. :-)
&lt;br&gt;It should be more than 10 times faster than TLSF. (not
&lt;br&gt;that it seems to matter in my tests though, unfortunately)
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19584621.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19584103</id>
	<title>Re: Re: programming languages for real-time audio</title>
	<published>2008-09-20T02:54:23Z</published>
	<updated>2008-09-20T02:54:23Z</updated>
	<author>
		<name>Tim Blechmann-2</name>
	</author>
	<content type="html">On Fri, 2008-09-19 at 21:02 -0700, Graham Wakefield wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; Tim Blechmann:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; btw, from what i heard, recent versions of lua provide a real-time &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; safe
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; garbage collector ... does anyone know, how if performs in low- 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; latency
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; real-time systems?
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Have you looked at Vessel? It seems very nice and a quick
&lt;br&gt;&amp;gt; &amp;gt; way to test lua's realtimeness.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Yes, I can speak from experience that it performs very well indeed; &amp;nbsp;
&lt;br&gt;&amp;gt; very low jitter. This was one of the most attractive features of Lua &amp;nbsp;
&lt;br&gt;&amp;gt; for me, when I first chose to use it.
&lt;/div&gt;&lt;br&gt;i hadn't heard of vessel before ... i was just skimming through your
&lt;br&gt;master thesis, thought ... seems interesting ...
&lt;br&gt;but i'm curious, did you do any analysis of the worst-case response
&lt;br&gt;times of the lua interpreter, when running in a real-time thread? like,
&lt;br&gt;is entering/leaving the interpreter lock-free?
&lt;br&gt;&lt;br&gt;&amp;gt; Also, the allocator used by Lua can be very easily replaced: http:// 
&lt;br&gt;&amp;gt; www.lua.org/manual/5.1/manual.html#lua_Alloc
&lt;br&gt;&amp;gt; For my work I used dlmalloc as a drop-in replacement, which performed &amp;nbsp;
&lt;br&gt;&amp;gt; very well. It's on my todo list to compare this with TLSF and of &amp;nbsp;
&lt;br&gt;&amp;gt; course the rollendurchmesserzeitsammler.
&lt;br&gt;&lt;br&gt;unfortunately tlsf is just a single-threaded allocator ... therefore it
&lt;br&gt;is not usable, where the allocator needs to be accessed from multiple
&lt;br&gt;real-time threads ... well, for most computer music systems, that may be
&lt;br&gt;the case, but we're living in 2008, where most of the personal computers
&lt;br&gt;provide multiple processors ...
&lt;br&gt;i am not sure about rollendurchmesserzeitsammler, but the last time i
&lt;br&gt;checked, it was relying on tlsf ... kjetil, do you know how rdmzs would
&lt;br&gt;perform with multiple real-time threads?
&lt;br&gt;&lt;br&gt;cheers, tim
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19584103.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19582459</id>
	<title>Re: Re: programming languages for real-time audio</title>
	<published>2008-09-19T21:02:25Z</published>
	<updated>2008-09-19T21:02:25Z</updated>
	<author>
		<name>grahamwakefield</name>
	</author>
	<content type="html">&amp;gt; Tim Blechmann:
&lt;br&gt;&amp;gt;&amp;gt; btw, from what i heard, recent versions of lua provide a real-time &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; safe
&lt;br&gt;&amp;gt;&amp;gt; garbage collector ... does anyone know, how if performs in low- 
&lt;br&gt;&amp;gt;&amp;gt; latency
&lt;br&gt;&amp;gt;&amp;gt; real-time systems?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Have you looked at Vessel? It seems very nice and a quick
&lt;br&gt;&amp;gt; way to test lua's realtimeness.
&lt;br&gt;&lt;br&gt;Yes, I can speak from experience that it performs very well indeed; &amp;nbsp;
&lt;br&gt;very low jitter. This was one of the most attractive features of Lua &amp;nbsp;
&lt;br&gt;for me, when I first chose to use it.
&lt;br&gt;&lt;br&gt;It's also quite configurable: &lt;a href=&quot;http://www.lua.org/manual/5.1/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.lua.org/manual/5.1/&lt;/a&gt;&amp;nbsp;
&lt;br&gt;manual.html#2.10
&lt;br&gt;Tweaking the pause and step multipliers improved the overhead &amp;nbsp;
&lt;br&gt;significantly when used within an audio process. In Lua~ I have the &amp;nbsp;
&lt;br&gt;collector effectively turned off while running coroutine updates, and &amp;nbsp;
&lt;br&gt;then run a conservative step of gc at the end of each DSP callback, &amp;nbsp;
&lt;br&gt;this reduced the overhead of gc logic slightly, at the expense of &amp;nbsp;
&lt;br&gt;slightly greater memory use.
&lt;br&gt;&lt;br&gt;Also, the allocator used by Lua can be very easily replaced: http:// 
&lt;br&gt;www.lua.org/manual/5.1/manual.html#lua_Alloc
&lt;br&gt;For my work I used dlmalloc as a drop-in replacement, which performed &amp;nbsp;
&lt;br&gt;very well. It's on my todo list to compare this with TLSF and of &amp;nbsp;
&lt;br&gt;course the rollendurchmesserzeitsammler.
&lt;br&gt;&lt;br&gt;BTW The Vessel application was my MS thesis, but the standalone app &amp;nbsp;
&lt;br&gt;described there isn't in a publicly downloadable state. It is about &amp;nbsp;
&lt;br&gt;95% the same as the lua~ external for Max/MSP, which is downloadable, &amp;nbsp;
&lt;br&gt;and documented here: &lt;a href=&quot;http://www.mat.ucsb.edu/%7Ewakefield/lua%7E/lua%&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.mat.ucsb.edu/%7Ewakefield/lua%7E/lua%&lt;/a&gt;&amp;nbsp;
&lt;br&gt;7E.htm
&lt;br&gt;Since then, I've been working on a new version which is not only more &amp;nbsp;
&lt;br&gt;efficient (buffer use minimization is the biggest improvement over &amp;nbsp;
&lt;br&gt;lua~, but there are many more), but also operates in the main thread &amp;nbsp;
&lt;br&gt;while dispatching all signal processing events (with sample accuracy) &amp;nbsp;
&lt;br&gt;to the audio thread through wait-free queues. The upshot is that the &amp;nbsp;
&lt;br&gt;articulation of audio events, coroutines, dsp graph changes and so on &amp;nbsp;
&lt;br&gt;can all exist in the same accurately timed script as OpenGL calls, &amp;nbsp;
&lt;br&gt;GUI event handling, and so on. This is part of a joint project with &amp;nbsp;
&lt;br&gt;Wes Smith, called LuaAV, which ought to be in a stable state in the &amp;nbsp;
&lt;br&gt;next week or so. I'll post an update on that if people are &amp;nbsp;
&lt;br&gt;interested. In the meantime, here's a placeholder: &lt;a href=&quot;http://lua-&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lua-&lt;/a&gt;&amp;nbsp;
&lt;br&gt;av.mat.ucsb.edu/about.html
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19582459.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19582067</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-19T19:35:50Z</published>
	<updated>2008-09-19T19:35:50Z</updated>
	<author>
		<name>Darren Landrum</name>
	</author>
	<content type="html">Michael Gogins wrote:
&lt;br&gt;&amp;gt; CLAM might be overkill. What's wrong with STK? Then there's SndObj, which is not only C++ but also has Python wrappers.
&lt;br&gt;&lt;br&gt;STK I had completely forgotten about. SndObj I've already played with 
&lt;br&gt;and dismissed. STK looks like it has a lot of stuff I need, and it 
&lt;br&gt;wouldn't be hard to add everything else. It's worth a shot, anyway.
&lt;br&gt;&lt;br&gt;-- Darren
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19582067.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19581141</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-19T16:54:39Z</published>
	<updated>2008-09-19T16:54:39Z</updated>
	<author>
		<name>Michael Gogins</name>
	</author>
	<content type="html">CLAM might be overkill. What's wrong with STK? Then there's SndObj, which is not only C++ but also has Python wrappers.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Mike
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;From: Darren Landrum &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19581141&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;darren.landrum@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Sent: Sep 19, 2008 6:09 PM
&lt;br&gt;&amp;gt;To: A discussion list for music-related DSP &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19581141&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;music-dsp@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Subject: Re: [music-dsp] programming languages for real-time audio
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Darren Landrum wrote:
&lt;br&gt;&amp;gt;&amp;gt; Michael Gogins wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; If you let your personal taste dictate your choice of tool, you most 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; likely will end up using the wrong tool. Use the tool that will do the 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; job best.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I'm not saying that personal differences don't have any role at all. 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Suppose that, for some odd reason, my brain was wired so that I just 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; couldn't deal with languages in which I have to be sure to delete 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; every object that I allocate. I would be foolish not to use a garbage 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; collected language, in that case.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; In your case, I am simply wondering if this bias of yours is something 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; you might be able to overcome for the sake of more effective work in 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; the future. Once again, I remind you that the track record of C/C++ in 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; signal processing and music programming -- military (most demanding), 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; research, open source, and commercial -- simply blows every other 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; language away.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Well, I'm also wanting to build these tools mainly for my own use, and 
&lt;br&gt;&amp;gt;&amp;gt; intend to release them as open source. As such, I'm actually better off 
&lt;br&gt;&amp;gt;&amp;gt; using a sub-optimal tool and actually getting them done, than using an 
&lt;br&gt;&amp;gt;&amp;gt; optimal tool that I get too frustrated with and then never get them 
&lt;br&gt;&amp;gt;&amp;gt; done. Of course, my secondary goal is to create some (hopefully) nice 
&lt;br&gt;&amp;gt;&amp;gt; software synthesizers and effects for Linux music production.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; I've not got my heart set on Ocaml. I just want to explore some options 
&lt;br&gt;&amp;gt;&amp;gt; before I dive in and get too far. Heck, I'd just use Csound if it had 
&lt;br&gt;&amp;gt;&amp;gt; one very important capability (oversampling). I could probably build 
&lt;br&gt;&amp;gt;&amp;gt; GUIs for Csound instruments (I've investigated the Csound API).
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; I've been doing a lot of research into DSP and the math of DSP, but 
&lt;br&gt;&amp;gt;&amp;gt; creating implementations, and more importantly, finished &amp;quot;products&amp;quot;, has 
&lt;br&gt;&amp;gt;&amp;gt; been very elusive to me, and I'm trying to rectify that, however it may 
&lt;br&gt;&amp;gt;&amp;gt; happen.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Forgive the reply to myself, but I do have to say, in all honesty, I'll 
&lt;br&gt;&amp;gt;probably end up coding in C++ using CLAM (&lt;a href=&quot;http://clam.iua.upf.edu/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://clam.iua.upf.edu/&lt;/a&gt;) than 
&lt;br&gt;&amp;gt;trying to learn a new language, suitable or not. I just wish there were 
&lt;br&gt;&amp;gt;an easier way to make softsynths and the like on Linux for us math-heads 
&lt;br&gt;&amp;gt;who aren't such good coders.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;-- Darren
&lt;br&gt;&amp;gt;--
&lt;br&gt;&amp;gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;&amp;gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19581141.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19581131</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-19T16:53:30Z</published>
	<updated>2008-09-19T16:53:30Z</updated>
	<author>
		<name>Michael Gogins</name>
	</author>
	<content type="html">You may be interested in Vessel, which is part of LuaAV. It provides Lua wrappers and coroutine scheduling for DSP classes written in C++ (the synz package). I have examined the code, but I have not tried to run it. Adobe Systems also presented a VST plugin Lua scripting project at one of the Lua conferences a few years ago.
&lt;br&gt;&lt;br&gt;I have worked on something similar myself, but I think I will drop it in favor of pure C++ that is built in a hidden, encapsulated way. As far as the user is concerned, it will be like a scripting language -- hit the button and go.
&lt;br&gt;&lt;br&gt;The idea of Lua remains attractive because it has an extremely small footprint for a powerful language. You can build it right into your libraries and applications. In fact, it comes with Csound on Windows, in the form of LuaJIT.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Mike
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;From: Tim Blechmann &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19581131&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tim@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Sent: Sep 19, 2008 5:48 PM
&lt;br&gt;&amp;gt;To: A discussion list for music-related DSP &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19581131&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;music-dsp@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Subject: Re: [music-dsp] programming languages for real-time audio
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;hi all ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; In your case, I am simply wondering if this bias of yours is something
&lt;br&gt;&amp;gt;&amp;gt; you might be able to overcome for the sake of more effective work in
&lt;br&gt;&amp;gt;&amp;gt; the future. Once again, I remind you that the track record of C/C++ in
&lt;br&gt;&amp;gt;&amp;gt; signal processing and music programming -- military (most demanding),
&lt;br&gt;&amp;gt;&amp;gt; research, open source, and commercial -- simply blows every other
&lt;br&gt;&amp;gt;&amp;gt; language away.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;in this discussion, one should distinguish between a signal processing
&lt;br&gt;&amp;gt;language and a real-time scripting language ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;the signal processing code should prbly be written in a language like c
&lt;br&gt;&amp;gt;or c++ for performance reasons ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;personally, i would be interested in a real-time safe scripting
&lt;br&gt;&amp;gt;language, targeting a virtual machine with a jit compiler, though ...
&lt;br&gt;&amp;gt;llvm looks quite interesting, but i am not sure about it's real-time
&lt;br&gt;&amp;gt;safety ... might be an interesting research project ...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;btw, from what i heard, recent versions of lua provide a real-time safe
&lt;br&gt;&amp;gt;garbage collector ... does anyone know, how if performs in low-latency
&lt;br&gt;&amp;gt;real-time systems?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;best, tim
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;--
&lt;br&gt;&amp;gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;&amp;gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19581131.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19580290</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-19T15:23:02Z</published>
	<updated>2008-09-19T15:23:02Z</updated>
	<author>
		<name>Kjetil S. Matheussen-3</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;Darren Landrum:
&lt;br&gt;&amp;gt; I don't recall if it got mentioned yet. It's a functional language for
&lt;br&gt;&amp;gt; DSP that compiled to efficient C/C++ code.
&lt;br&gt;&lt;br&gt;Faust has actually been mentioned a few times in this discussion.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Darren Landrum:
&lt;br&gt;&amp;gt; How about the fact that I really, really hate C/C++ and would rather
&lt;br&gt;&amp;gt; gouge my own eyes out than spend four years teaching myself a language I
&lt;br&gt;&amp;gt; hate when functional languages really suit the way I think and I can
&lt;br&gt;&amp;gt; ramp up on them quickly?
&lt;br&gt;&lt;br&gt;Stalin Scheme is a functional language. You can
&lt;br&gt;think of Scheme as the dynamically typed brother
&lt;br&gt;of ML, which Ocaml is a descendent of.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Michael Gogins:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Of course, like so many of these research languages, ATS code is 
&lt;br&gt;&amp;gt; compiled to C code before it is compiled to machine language... so even 
&lt;br&gt;&amp;gt; if you like the language you still have to have a C development system... 
&lt;br&gt;&amp;gt; if you have to have a C development system anyway, why not write 
&lt;br&gt;&amp;gt; somewhat faster code in C++ with an existing rich signal processing library?
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;It's hard to manually do the kind of optimization performed by 
&lt;br&gt;whole-program optimizers such as faust, mlton or stalin.
&lt;br&gt;Have you looked at the output of those compilers? That's pretty
&lt;br&gt;extreme stuff.
&lt;br&gt;&lt;br&gt;Anyway, hearing your arguments, it reminds me of old assembler vs. C
&lt;br&gt;disussions. The simple truth is that developing in a higher level
&lt;br&gt;language simply is faster, and it frees up your brain to concentrate
&lt;br&gt;on the algorithms instead of gory low-level details. You can 
&lt;br&gt;try out things more quickly, and if you think you can make
&lt;br&gt;your stuff run faster if developed directly in C or assember
&lt;br&gt;later on, you are free to do so.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Tim Blechmann:
&lt;br&gt;&amp;gt; personally, i would be interested in a real-time safe scripting
&lt;br&gt;&amp;gt; language, targeting a virtual machine with a jit compiler, though ...
&lt;br&gt;&amp;gt; llvm looks quite interesting, but i am not sure about it's real-time
&lt;br&gt;&amp;gt; safety ... might be an interesting research project ...
&lt;br&gt;&lt;br&gt;There is a project for compiling faust to llvm. I don't
&lt;br&gt;know if it's usable yet.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Tim Blechmann:
&lt;br&gt;&amp;gt; btw, from what i heard, recent versions of lua provide a real-time safe
&lt;br&gt;&amp;gt; garbage collector ... does anyone know, how if performs in low-latency
&lt;br&gt;&amp;gt; real-time systems?
&lt;br&gt;&lt;br&gt;Have you looked at Vessel? It seems very nice and a quick
&lt;br&gt;way to test lua's realtimeness.
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19580290.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19580160</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-19T15:09:41Z</published>
	<updated>2008-09-19T15:09:41Z</updated>
	<author>
		<name>Darren Landrum</name>
	</author>
	<content type="html">Darren Landrum wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Michael Gogins wrote:
&lt;br&gt;&amp;gt;&amp;gt; If you let your personal taste dictate your choice of tool, you most 
&lt;br&gt;&amp;gt;&amp;gt; likely will end up using the wrong tool. Use the tool that will do the 
&lt;br&gt;&amp;gt;&amp;gt; job best.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm not saying that personal differences don't have any role at all. 
&lt;br&gt;&amp;gt;&amp;gt; Suppose that, for some odd reason, my brain was wired so that I just 
&lt;br&gt;&amp;gt;&amp;gt; couldn't deal with languages in which I have to be sure to delete 
&lt;br&gt;&amp;gt;&amp;gt; every object that I allocate. I would be foolish not to use a garbage 
&lt;br&gt;&amp;gt;&amp;gt; collected language, in that case.
&lt;br&gt;&amp;gt;&amp;gt; In your case, I am simply wondering if this bias of yours is something 
&lt;br&gt;&amp;gt;&amp;gt; you might be able to overcome for the sake of more effective work in 
&lt;br&gt;&amp;gt;&amp;gt; the future. Once again, I remind you that the track record of C/C++ in 
&lt;br&gt;&amp;gt;&amp;gt; signal processing and music programming -- military (most demanding), 
&lt;br&gt;&amp;gt;&amp;gt; research, open source, and commercial -- simply blows every other 
&lt;br&gt;&amp;gt;&amp;gt; language away.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Well, I'm also wanting to build these tools mainly for my own use, and 
&lt;br&gt;&amp;gt; intend to release them as open source. As such, I'm actually better off 
&lt;br&gt;&amp;gt; using a sub-optimal tool and actually getting them done, than using an 
&lt;br&gt;&amp;gt; optimal tool that I get too frustrated with and then never get them 
&lt;br&gt;&amp;gt; done. Of course, my secondary goal is to create some (hopefully) nice 
&lt;br&gt;&amp;gt; software synthesizers and effects for Linux music production.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've not got my heart set on Ocaml. I just want to explore some options 
&lt;br&gt;&amp;gt; before I dive in and get too far. Heck, I'd just use Csound if it had 
&lt;br&gt;&amp;gt; one very important capability (oversampling). I could probably build 
&lt;br&gt;&amp;gt; GUIs for Csound instruments (I've investigated the Csound API).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've been doing a lot of research into DSP and the math of DSP, but 
&lt;br&gt;&amp;gt; creating implementations, and more importantly, finished &amp;quot;products&amp;quot;, has 
&lt;br&gt;&amp;gt; been very elusive to me, and I'm trying to rectify that, however it may 
&lt;br&gt;&amp;gt; happen.
&lt;/div&gt;&lt;br&gt;Forgive the reply to myself, but I do have to say, in all honesty, I'll 
&lt;br&gt;probably end up coding in C++ using CLAM (&lt;a href=&quot;http://clam.iua.upf.edu/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://clam.iua.upf.edu/&lt;/a&gt;) than 
&lt;br&gt;trying to learn a new language, suitable or not. I just wish there were 
&lt;br&gt;an easier way to make softsynths and the like on Linux for us math-heads 
&lt;br&gt;who aren't such good coders.
&lt;br&gt;&lt;br&gt;-- Darren
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19580160.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19579926</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-19T14:48:41Z</published>
	<updated>2008-09-19T14:48:41Z</updated>
	<author>
		<name>Tim Blechmann-2</name>
	</author>
	<content type="html">hi all ...
&lt;br&gt;&lt;br&gt;&amp;gt; In your case, I am simply wondering if this bias of yours is something
&lt;br&gt;&amp;gt; you might be able to overcome for the sake of more effective work in
&lt;br&gt;&amp;gt; the future. Once again, I remind you that the track record of C/C++ in
&lt;br&gt;&amp;gt; signal processing and music programming -- military (most demanding),
&lt;br&gt;&amp;gt; research, open source, and commercial -- simply blows every other
&lt;br&gt;&amp;gt; language away.
&lt;br&gt;&lt;br&gt;in this discussion, one should distinguish between a signal processing
&lt;br&gt;language and a real-time scripting language ...
&lt;br&gt;&lt;br&gt;the signal processing code should prbly be written in a language like c
&lt;br&gt;or c++ for performance reasons ...
&lt;br&gt;&lt;br&gt;personally, i would be interested in a real-time safe scripting
&lt;br&gt;language, targeting a virtual machine with a jit compiler, though ...
&lt;br&gt;llvm looks quite interesting, but i am not sure about it's real-time
&lt;br&gt;safety ... might be an interesting research project ...
&lt;br&gt;&lt;br&gt;btw, from what i heard, recent versions of lua provide a real-time safe
&lt;br&gt;garbage collector ... does anyone know, how if performs in low-latency
&lt;br&gt;real-time systems?
&lt;br&gt;&lt;br&gt;best, tim
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19579926.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19579880</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-19T14:42:03Z</published>
	<updated>2008-09-19T14:42:03Z</updated>
	<author>
		<name>Darren Landrum</name>
	</author>
	<content type="html">Michael Gogins wrote:
&lt;br&gt;&amp;gt; If you let your personal taste dictate your choice of tool, you most likely will end up using the wrong tool. Use the tool that will do the job best.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm not saying that personal differences don't have any role at all. Suppose that, for some odd reason, my brain was wired so that I just couldn't deal with languages in which I have to be sure to delete every object that I allocate. I would be foolish not to use a garbage collected language, in that case. 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In your case, I am simply wondering if this bias of yours is something you might be able to overcome for the sake of more effective work in the future. Once again, I remind you that the track record of C/C++ in signal processing and music programming -- military (most demanding), research, open source, and commercial -- simply blows every other language away.
&lt;br&gt;&lt;br&gt;Well, I'm also wanting to build these tools mainly for my own use, and 
&lt;br&gt;intend to release them as open source. As such, I'm actually better off 
&lt;br&gt;using a sub-optimal tool and actually getting them done, than using an 
&lt;br&gt;optimal tool that I get too frustrated with and then never get them 
&lt;br&gt;done. Of course, my secondary goal is to create some (hopefully) nice 
&lt;br&gt;software synthesizers and effects for Linux music production.
&lt;br&gt;&lt;br&gt;I've not got my heart set on Ocaml. I just want to explore some options 
&lt;br&gt;before I dive in and get too far. Heck, I'd just use Csound if it had 
&lt;br&gt;one very important capability (oversampling). I could probably build 
&lt;br&gt;GUIs for Csound instruments (I've investigated the Csound API).
&lt;br&gt;&lt;br&gt;I've been doing a lot of research into DSP and the math of DSP, but 
&lt;br&gt;creating implementations, and more importantly, finished &amp;quot;products&amp;quot;, has 
&lt;br&gt;been very elusive to me, and I'm trying to rectify that, however it may 
&lt;br&gt;happen.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Darren Landrum
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19579880.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19579572</id>
	<title>Re: programming languages for real-time audio</title>
	<published>2008-09-19T14:14:03Z</published>
	<updated>2008-09-19T14:14:03Z</updated>
	<author>
		<name>Michael Gogins</name>
	</author>
	<content type="html">If you let your personal taste dictate your choice of tool, you most likely will end up using the wrong tool. Use the tool that will do the job best.
&lt;br&gt;&lt;br&gt;I'm not saying that personal differences don't have any role at all. Suppose that, for some odd reason, my brain was wired so that I just couldn't deal with languages in which I have to be sure to delete every object that I allocate. I would be foolish not to use a garbage collected language, in that case. 
&lt;br&gt;&lt;br&gt;In your case, I am simply wondering if this bias of yours is something you might be able to overcome for the sake of more effective work in the future. Once again, I remind you that the track record of C/C++ in signal processing and music programming -- military (most demanding), research, open source, and commercial -- simply blows every other language away.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Mike
&lt;br&gt;&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;From: Darren Landrum &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19579572&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;darren.landrum@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Sent: Sep 19, 2008 4:51 PM
&lt;br&gt;&amp;gt;To: A discussion list for music-related DSP &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19579572&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;music-dsp@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt;Subject: Re: [music-dsp] programming languages for real-time audio
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Michael Gogins wrote:
&lt;br&gt;&amp;gt;&amp;gt; Of course, like so many of these research languages, ATS code is 
&lt;br&gt;&amp;gt;compiled to C code before it is compiled to machine language... so
&lt;br&gt;&amp;gt;even if you like the language you still have to have a C development
&lt;br&gt;&amp;gt;system... if you have to have a C development system anyway, why not
&lt;br&gt;&amp;gt;write somewhat faster code in C++ with an existing rich signal processing
&lt;br&gt;&amp;gt;library?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;How about the fact that I really, really hate C/C++ and would rather 
&lt;br&gt;&amp;gt;gouge my own eyes out than spend four years teaching myself a language I 
&lt;br&gt;&amp;gt;hate when functional languages really suit the way I think and I can 
&lt;br&gt;&amp;gt;ramp up on them quickly?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Okay, that's all a bit of exaggeration, but you get my point. Besides, I 
&lt;br&gt;&amp;gt;have no real experience with Ocaml. Just because I got pretty good at 
&lt;br&gt;&amp;gt;one functional language (Faust) doesn't mean I'd be any good at another.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Also, Ocaml has no readily available LV2 or JACK interfaces, or anything 
&lt;br&gt;&amp;gt;like that. As for DSP code libraries, well, I have yet to find one of 
&lt;br&gt;&amp;gt;those I want to use in any language. Ocaml can use C libraries, which 
&lt;br&gt;&amp;gt;may ease construction of things like LV2 plugins, as well as allow the 
&lt;br&gt;&amp;gt;use of libraries like libsamplerate, libsndfile, and libfftw3.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;I guess &amp;quot;try it out and see&amp;quot; is the only real option here.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Thanks for the reply!
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;Regards,
&lt;br&gt;&amp;gt;Darren Landrum
&lt;br&gt;&amp;gt;--
&lt;br&gt;&amp;gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;&amp;gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19579572.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-19579335</id>
	<title>Re: FAUST and Csound (was Re: programming languages for real-time audio)</title>
	<published>2008-09-19T13:54:00Z</published>
	<updated>2008-09-19T13:54:00Z</updated>
	<author>
		<name>Stephen Sinclair</name>
	</author>
	<content type="html">On Fri, Sep 19, 2008 at 4:51 PM, victor &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=19579335&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Victor.Lazzarini@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; I had some chats with Yann (we keep bumping into each other at various
&lt;br&gt;&amp;gt; conferences) about doing exactly this. I think it is a great idea (and
&lt;br&gt;&amp;gt; possibly
&lt;br&gt;&amp;gt; the only output FAUST does not have at this stage).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; One thing this might enable is to benchmark music languages (Csound vs.
&lt;br&gt;&amp;gt; PD vs. SC3), which is something worth doing once and for all (I can see
&lt;br&gt;&amp;gt; a paper in this...)
&lt;br&gt;&lt;br&gt;Some time I'd love to do this for ChucK as well. &amp;nbsp;While it's got a lot
&lt;br&gt;of cool Ugens (e.g., STK), it's actually currently quite difficult to
&lt;br&gt;write new ones. &amp;nbsp;Having FAUST output them would make it way easier.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Steve
&lt;br&gt;--
&lt;br&gt;dupswapdrop -- the music-dsp mailing list and website: 
&lt;br&gt;subscription info, FAQ, source code archive, list archive, book reviews, dsp links 
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/cmc/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/cmc/music-dsp&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&lt;a href=&quot;http://music.columbia.edu/mailman/listinfo/music-dsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://music.columbia.edu/mailman/listinfo/music-dsp&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/programming-languages-for-real-time-audio-tp19123444p19579335.html" />
</entry>

</feed>
