Le 23 mai 2013 à 11:58, Marc Joliet <mar...@gmx.de> a écrit : > Hi all > > I wanted to request some feedback on another FAUST-related project of mine, > FAUSTPy: > > https://github.com/marcecj/faust_python > > A short summary: FAUSTPy is a Python package that wraps FAUST DSPs in Python > objects dynamically at run-time. It allows processing of NumPy arrays, but > also > handles synthesizers. It is implemented using the fantastic CFFI [0] from the > PyPy developers and the C backend from FAUST2. > > My original motivation for writing it was an initial excitement over PyQt, > with > my idea being that since it's easier to write GUIs in Python, why not use > Python to implement hand-written GUIs for FAUST DSPs? Of course, the more > obvious use case is analysing DSPs using the SciPy stack, as the demo script > hopefully demonstrates. > > While I have implemented most things, I still consider it alpha (maybe beta) > software. There are some things I still need to work out and complete (e.g., > API fine-tuning, testing). I believe it is mostly detail work now and that I > just need to try it out in some applications. Specifically, I wanted to try > writing a standalone JACK GUI for the DSP I included in the FAUSTPy sources > (Regalia-style peak/notch filter) - using PyQt and PyAudio - to see how such > applications perform in general. > > However, I have to work on other things (Uni, etc.), so I'll try putting off > work on FAUSTPy for a week or two. > > Also, one question: are there any other C functions I need to implement other > than min() and max()? All of the DSPs from the examples directory compile > fine, > so I don't think so. > > Some obvious alternatives to the CFFI would be: > > - Cython, which is, to my understanding, not dynamic enough for what I wanted, > but which can be used to wrap C++ code, so would have the advantage of not > requiring FAUST2. > > - the FAUST2 LLVM backend + Unladen Swallow, which ties you to CPython, > whereas > the CFFI works (or at least will work) with various Python implementations. > > - Ctypes, which is dynamic, like the CFFI, but supposedly not as nice to use > and slower. > > Anyway, as far as I can tell, FAUSTPy is pretty much feature complete: > > - groups and parameters are mapped to nested attributes, which are prefixed > according to their type ("b_" for boxes, "p_" for parameters), > > - all meta-data declarations are stored in "metadata" attributes (of the DSP > itself, the groups, and the parameters), > > - information about the type of group/parameter is stored in a "layout"/"type" > attribute, > > - it keeps label-less groups/parameters in a "{b_,p_}anon<N>" attributes > (which > I encountered in the form of checkboxes that only have tooltips), > > - FAUST.compute() differentiates between effects and synthesizers (i.e., > whether the number of inputs is >0 or not), > > - I made sure that the caching mechanism of the CFFI works, so you don't have > to needlessly recompile the same code. > > There is one annoying caveat, though: vectorisation (the -vec option) is > apparently broken with the C backend (faust crashes; C++ works fine though). > > Anyway, I hope people find this useful, and I welcome any form of feedback :) > . > > [0] https://cffi.readthedocs.org/en/release-0.6/ > > Greetings > > -- > Marc Joliet > --
Have you ever thought about using the *dynamic* Faust technology in this application? That is libfaust + LLVM? Stéphane ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may _______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users