On Wed, Mar 2, 2016 at 2:44 PM, Vincent G. Listes <infopap...@yahoo.com.sg>
wrote:
> Is there a document somewhere outside the code that explains polyphony
> handling in FAUST ?
That's easy to explain: There is no polyphony handling in Faust. :) This
falls outside of Faust's scope, all handling of MIDI and other specific
control interfaces is done in the architectures.
That said, Stéphane has recently added a polyphony implementation to the
Faust headers, which was used to implement the polyphony support in
FaustLive. He should be able to tell you more about this.
Stéphane will surely correct me if I'm wrong :), but I think that right now
the most mature polyphony implementations is in the faust-lv2 and faust-vst
architectures, featuring MIDI CC mapping, MIDI master tuning and pitch bend
range controls, MTS tunings, and multi-channel voice allocation. (All that
baggage might actually get in the way if you want to roll your own
implementation, but it might be worth taking a look at.)
Basically, the convention is that a dsp intended to be used as an
instrument should provide control parameters labelled "freq" (pitch in Hz),
"gain" (velocity normalized to the 0-1 range) and "gate" (0/1 signal
indicating whether the voice is playing or not, to be used as a trigger for
the envelop) and implement a monophonic synthesizer using these. The rest
is up to the architecture. There are also some conventions concerning
control meta data indicating CC mappings ("[midi:ctrl n]") and such. Some
of those meta tags concerning MIDI and OSC are described in the Faust Quick
Reference, IIRC. There's also a recent article from Grame about that here:
http://faust.grame.fr/news/2016/01/14/controlling-with-midi.html. This
mostly applies to FaustLive, I guess, but [midi:ctrl n] is implemented at
least by some of the polyphonic plugin architectures, among them faust-lv2
and faust-vst. Presumably an MPE synth architecture would implement its own
voice allocation and interpret some special meta tags in order to assign
the MPE controllers to corresponding controls in the Faust program. At
least that's how I would go about implementing it.
You're right, all this really needs to be documented somewhere. ;-) As it
stands, the above conventions were first implemented in some early
architectures and then became a kind of de facto standard way of doing
these things.
I will be at LAC@Berlin in April, and I've heard rumors that Yann might be
there as well. ;-) So if any of you guys attend LAC we could have a
discussion about all these things.
Albert
--
Dr. Albert Gr"af
Computer Music Research Group, JGU Mainz, Germany
Email: aggr...@gmail.com
WWW: https://plus.google.com/+AlbertGraef
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Faudiostream-devel mailing list
Faudiostream-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-devel