User Activity

  • Posted a comment on discussion Help on Faust : signal processing language

    It can be done! On Sun, Oct 4, 2020 at 12:41 AM Stephane Letz letz@users.sourceforge.net wrote: Thanks Julius, very helpful ! Next step: use the OFDR, the « Optical Faust Diagram Recognition » tool to automatically write the manually designed diagram into ready to use Faust code… ((-; Stéphane Le 4 oct. 2020 à 07:16, Julius O. Smith jos@users.sourceforge.net a écrit : Hi Mark-David, Thanks for the interesting background on your application! Since I'll be teaching Faust at CCRMA pretty soon, I decided...

  • Posted a comment on discussion Help on Faust : signal processing language

    Hi Mark-David, Thanks for the interesting background on your application! Since I'll be teaching Faust at CCRMA pretty soon, I decided to make a tutorial video on this: https://www.youtube.com/watch?v=3WY0ikTFAe4 (in case you might be interested) Cheers, Julius On Wed, Sep 16, 2020 at 10:05 AM Mark-David Hosale mdhosale@users.sourceforge.net wrote: Wow, thank you Julius!! This works! We are using this in a filter chain that is used in the analysis of biophysical signals captured at audio rate. This...

  • Posted a comment on discussion Help on Faust : signal processing language

    Spoiler alert: This might be a complete slew limiter: slew_limiter(slopeMax) = (+ : step_calc(slopeMax) : (+~_))~*(-1) with { step_calc(slopeMax,xmy) = xmy <: min(slopeMax),max(-slopeMax) : select2(xmy<0); }; On Tue, Sep 15, 2020 at 10:09 PM Julius O. Smith jos@users.sourceforge.net wrote: Ok, try this one: import("stdfaust.lib"); dxm = 0.1; // max upgoing slope slew_lim_plus(dxm,x) = x,dxm : (+, : min : (+~))~*(-1); slew_lim_minus(dxm,x) = -slew_lim_plus(dxm,-x); process = 1 : slew_lim_plus(dxm);...

  • Posted a comment on discussion Help on Faust : signal processing language

    Ok, try this one: import("stdfaust.lib"); dxm = 0.1; // max upgoing slope slew_lim_plus(dxm,x) = x,dxm : (+, : min : (+~))~*(-1); slew_lim_minus(dxm,x) = -slew_lim_plus(dxm,-x); process = 1 : slew_lim_plus(dxm); Remember that it only handles upgoing slew-limiting. To get downgoing as well, I would bring out the output of the subtraction of the output from the input and use its sign to switch between up and down using select2. Julius On Tue, Sep 15, 2020 at 7:35 PM Mark-David Hosale mdhosale@users.sourceforge.net...

  • Posted a comment on discussion Help on Faust : signal processing language

    There is a missing '_' in your copy. Here is what I have: slew_lim_plus(dxm,x) = x,dxm : (+, : min : (+~))~*(-1); and it compiles. Let me know how it goes. Julius On Tue, Sep 15, 2020 at 10:31 AM Mark-David Hosale mdhosale@users.sourceforge.net wrote: Thank you again, Julius, for your generous replies. In the example you gave (slew_lim_plus(dxm,x) = x,dxm : (+, : min : (+~))~(-1); ) I couldn't get it to compile . First I get "syntax error, unexpected SEQ," but when I remove the first ': ' I get "syntax...

  • Posted a comment on discussion Help on Faust : signal processing language

    I cannot resist little Faust puzzles like this. Here is a solution for rising slew limiting: slew_lim_plus(dxm,x) = x,dxm : (+, : min : (+~))~*(-1); // where dxm = maximum upgoing slope To derive this, I followed the logic in the theorem that proves Faust can encode any block diagram (one of the early papers). Including falling slew-limiting is left as an exercise. Possibly useless hint: slew_lim_minus(dxm,x) = -slew_lim_plus(dxm,-x); Isn't Faust fun? On Sun, Sep 13, 2020 at 8:10 PM Mark-David Hosale...

  • Posted a comment on discussion Help on Faust : signal processing language

    Conceptually, the slew of a square wave is an impulse train (alternating signs). Merely clipping that impulse train does not widen the transition interval, and only limits the amplitude. You could introduce an FIR filter (impulse response constant over the duration of the slew interval) to convert each impulse into a square pulse, which would integrate to give the shape you're looking for. However, this is still an approximation to slew limiting in op-amps and such. For more accuracy, the width of...

  • Posted a comment on discussion Help on Faust : signal processing language

    Yes, you need to integrate delta after limiting it and before adding it back in, something like process(x) = x - x' : max(-maxchange,min(maxchange)) : +~*(0.99); where I chose 0.99 in place of 1 (or +~_) to use a "leaky" integrator instead of one that could drift away at dc. This is a discrete approximation to "differentiate : clip : integrate" Julius On Sat, Sep 12, 2020 at 12:11 AM Stephane Letz letz@users.sourceforge.net wrote: Welcome Mark-David ! You’ll have to use the « Recursive Composition...

View All

Personal Data

Username:
jos
Joined:
2000-01-05 20:07:25

Projects

  • No projects to display.

Personal Tools

MongoDB Logo MongoDB