> ... I put together (it's still WIP, specifically in the domain of
indenting (grammar, rules, that sort of things, it's like C syntax
basically, right?)) an emacs major mode for editing Faust code
<https://bitbucket.org/yassinphilip/emacs-faust-ide>
I tried this just now, and the following line triggers an error:
(setq common-menu )
There appears to be a missing "string arg"
- Julius
On Wed, Jul 19, 2017 at 11:07 AM, yann orlarey <[email protected]> wrote:
> Hi Philip,
>
> Thanks for sharing your Emacs Faust IDE. I am not an Emacs user (shame on
> me ;-)), but it will be of interest for many people! I know that Juan
> Romero did an Emacs mode some years ago: https://github.com/
> rukano/emacs-faust-mode. How does it compare with your work ?
>
> Concerning FaustWorks, it can be tricky to install, and you can spend the
> whole duration of a workshop solving installation problems with the
> participants. This is why FaustLive and online tools are better
> alternatives for workshops. But once correctly installed FaustWorks is
> pleasant to use. A nice feature is the realtime diagram of your code. I
> know people using FaustWorks and FaustLive together (using FaustWorks as an
> editor for a dsp file also opened and running in FaustLive).
>
> Cheers
>
> Yann
>
> 2017-07-18 22:34 GMT+02:00 Yassin Philip <[email protected]>:
>
>> On 18/07/17 10:20, Yann Orlarey wrote:
>>
>> Hi Philip,
>>
>> Hi Yann!
>>
>> Let's say that you want to control the frequency of an oscillator using
>> the signal delivered by the amplitude follower. You can write:
>>
>> import("stdfaust.lib");
>> process = an.amp_follower(0.1) : *(440) : +(440) : os.osc;
>>
>>
>> The amplitude follower delivers an amplitude signal between 0 and 1. This
>> signal is then mapped between 440 and 880 Hz to control the frequency of
>> the oscillator.
>>
>> So far, so good. And thank you for this mapping trick, it's pretty neat.
>>
>> This example can be refined to use the amplitude follower also to control
>> the level of the oscillator:
>>
>> import("stdfaust.lib");
>> process = an.amp_follower(0.1) <: (*(440) : +(440) : os.osc), _ : *;
>>
>> Wow, neater and neater :) But wait, how are the frequency, and now the
>> input level, identified/implied? I mean how do you look at the above
>> expression and intuitively say "Oh, this is the frequency, and this must be
>> the level"?
>>
>> In order to understand these examples, please note that Faust expressions
>> can combine different types of notations:
>>
>> - core notation: 2,3:foo,
>> - applicative notation: foo(2,3),
>> - partial application notation: 3:foo(2).
>> - as well as infix notation: 10*(2+3).
>>
>> Aaah, yes! Light! Thanks for that, really. I'm sure It's written
>> everywhere, explained in so many ways, but I guess it needed to be hammered
>> in my brain (the colouring, surely) :/ Thank you and sorry for being so
>> wooden.
>>
>> The expression an.amp_follower(0.1) is an example of partial application
>> notation. The amplitude follower has two inputs: the first one is the
>> release time and the second one is the signal to analyze.
>>
>> But those two inputs are not mentioned in the amp_follower documentation
>> <http://faust.grame.fr/library.html#amp_follower>! Well, I guess the
>> "signal to analyse" is implied by the "_ :" part..?
>>
>> This is equivalent to:
>>
>> 0.1, _ : an.amp_follower
>>
>> So now, the amp_follower takes two.. inputs..?
>>
>> Using only core notation the first example could be rewritten as:
>>
>> import("stdfaust.lib");
>> process = 0.1, _ : an.amp_follower, 440 : *, 440 : + : os.osc;
>>
>> While using only infix and applicative notation, it could be rewritten as:
>>
>> import("stdfaust.lib");
>> process(x) = os.osc(440 + 440*an.amp_follower(0.1,x));
>>
>> I'm going to have to print this mail and put it above my monitor, I guess.
>>
>> How do you choose between core, infix and partial application notations?
>> It is largely a matter of taste. Personnaly, I like to combine core
>> notation (for the overall structure) with partial application notation (for
>> the slowly varying "parameters") as in the first two examples, and infix
>> notation for mathematical expressions.
>>
>> Ah, yes, a lot of Faust source code syntax I read make sense, now.
>>
>> Cheers
>>
>> Yann
>>
>> Thank you very much, Yann. I'm going to study and practice your example,
>> which look like a solid foundation for understanding the core of Faust
>> object connexions and parameters. Wow, I find Faust incredible.
>>
>>
>> Philippe Coatmeur
>>
>> PS - BTW I put together (it's still WIP, specifically in the domain of
>> indenting (grammar, rules, that sort of things, it's like C syntax
>> basically, right?)) an emacs major mode for editing Faust code
>> <https://bitbucket.org/yassinphilip/emacs-faust-ide> after hearing
>> Romain Michon in the intro/presentation/install
>> <https://ccrma.stanford.edu/%7Ermichon/faustWorkshops/course2015/#intro>
>> of his (quite superb, generous, clever, insightful, please thank him)
>> wokshop repeating about FaustWorks "don't don't don't install, don't use
>> it... just don't" which is I think a poor eulogy for what is at least a
>> great proof of concept ; I was - as with basically all the pieces of the
>> Faust ecosystem - quite baffled with it. For starters it works, and while
>> the editor is very crude (no line # and no search was it for me) I think
>> it's very neat and friendly.
>>
>> For now, My Emacs IDE is doing everything FaustWorks does, and it's a
>> thing, at least for me :) I want to interface it with Faust Live, I cloned
>> the branch but I don't want to mess my install (can Faust and Faust 2 live
>> together?) for now, but eventually I want to integrate it too.
>>
>> -------------------------
>>
>> Yann Orlarey
>> Directeur scientifique
>> www.grame.fr
>>
>>
>>
>> 2017-07-17 16:30 GMT+02:00 Yassin Philip <[email protected]>:
>>
>>> An amplitude follower is just a detection/analysis tool, right?
>>> So you pass a signal through it, and it "follows the amplitude" of said
>>> signal, correct?
>>>
>>> How do I retrieve the information gathered by this amplitude follower to
>>> use it elsewhere? I think once I get this logic, I'll really be on my way.
>>>
>>> Phil
>>>
>>> --
>>> Yassin Philip New album NOW
>>> http://yassinphilip.bitbucket.io
>>>
>>>
>>> ------------------------------------------------------------
>>> ------------------
>>> Check out the vibrant tech community on one of the world's most
>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>> _______________________________________________
>>> Faudiostream-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>>
>>
>>
>> --
>> Yassin Philip New album NOWhttp://yassinphilip.bitbucket.io
>>
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> _______________________________________________
>> Faudiostream-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>
>>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Faudiostream-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>
>
--
Julius O. Smith III <[email protected]>
Professor of Music and, by courtesy, Electrical Engineering
CCRMA, Stanford University
http://ccrma.stanford.edu/~jos/ <http://ccrma.stanford.edu/>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users