|
From: Stephen S. <rad...@gm...> - 2009-11-08 19:42:44
|
On Sun, Nov 8, 2009 at 6:45 AM, Stefano D'Angelo <zan...@gm...> wrote: > Hello, > > First of all I want to thank you for this fantastic piece of software > that is FAUST. :-) > > I am writing my master thesis on physical-based modelling techniques > for sound processing and synthesis and the objective of my final > project is to implement a system to develop a system to specify and > deploy physical system simulators. Great! I did something similar, I have been doing work on haptic interaction with physical models, and to help with this I translated one of the STK models (Bowed) into FAUST and achieved quite a significant speed-up for my project using a TI DSP. I had been meaning to post about it sometime.. I found FAUST a nice architecture for this because it made modifying and re-parametrizing variables, experimenting with changes, etc., much easier. I intended to eventually hook into FAUST's GUI architecture for communication with the DSP. I _loved_ how it could be used to generate block diagrams that pretty much directly express my intent, although sometimes I wish I could give the compiler "hints" on which blocks to make visible. ANyways, yes, I think FAUST is pretty fun for physical models. > Now, I already wrote a little subsection about FAUST in my thesis ;-), > but I am also considering whether it would be possible to use it as > the code generator of my system... it could work like this: > > * a bunch of models of physical components are written in FAUST, and > maybe carry with them some additional files needed for physical > modelling; > * a higher level language specifies the topology of such components in > a patch - the patch in such language is translated to FAUST by an > ad-hoc program, and is also reusable as a model in other patches; > * FAUST works as usual, no changes needed. > > If this works well, I am doing all the work myself, so don't worry ;-) Sounds like it could be done by preprocessing some files and generating a simple 'process' to glue them together. It would be cool if the LLVM back-end could be used to generate and execute that model in-memory. Is the LLVM port working? > Anyway, the suitability of FAUST should be pretty much dependent on > how FAUST actually "merges" the blocks together... for example, if an > input signal for a block is a known quantity/function/output from > another block, will the operations involing that input be simplified > in the generated code? Or, in other words, will the blocks be really > "merged" together, or are they just going to be run one after the > other? I think the FAUST compiler is pretty good at optimizing whatever combination of blocks you throw at it. > Also, it would be cool to have a LV2 backend... if it's an easy enough > task, I can probably do that. And it would be even cooler if there is > some kind of FAUST interpreter, but that is probably too much for me > to do. :-) I'm not sure of the advantage of an interpreter, but just having some debugging helpers might go a long way. Sometimes FAUST's error output can be pretty hard to read. Steve |