Two different issues here:

1) first the code defines a same path for a slider and a bargraph. The old rule 
of « not 2 same paths in the GUI » was somewhat relaxed in this commit:  
https://github.com/grame-cncm/faust/commit/3437255f54ec46c565c159438bde19c3daea757c,
 but still not completely correctly. So I’ve have to fix that. In the meantime 
the code can compile if the DSP is fixed this way:

import("stdfaust.lib");
lf_triangle_phase(freq, phase) = os.lf_triangle(freq) @ (phase * ma.SR/freq);
lfo_freq = hslider("[1] Freq", 0.5, 0.001, 50, 0.01);
lfo1 = lf_triangle_phase(lfo_freq, 0);
lfo_phase = hslider("[2] Phase", 180, 0, 360, 1) / 360;
lfo2 = lf_triangle_phase(lfo_freq, lfo_phase);
process =  lfo1, lfo2 : hbargraph("[3] 0",-1,1), hbargraph("[4] Phase1",-1,1);

2) but then another issue happens: the allocated memory for the delay (@ (phase 
* ma.SR/freq); ) is too big for the wasm memory allocation scheme. So this has 
to be fixed also at DSP code level.

Stéphane 


> Le 26 févr. 2023 à 03:08, Julius Smith <julius.sm...@gmail.com> a écrit :
> 
> I encountered that too and reported it to Stephane.  faust2caqt had no 
> problem.  Looking forward to hearing what that's about!
> 
> On Sat, Feb 25, 2023 at 4:05 PM Dario Sanfilippo <sanfilippo.da...@gmail.com> 
> wrote:
> Just so you know, Julius' code gives me this assert on the IDE:
> 
> ASSERT : please report this message and the failing DSP file to Faust 
> developers (file: wasm_code_container.hh, line: 60, version: 2.54.11, 
> options: -lang wasm-ib -cn 
> a08c5ceec105cc33e58fe2dfaaa8d2f0a80eaf39e4a593811bb636d3de7a14d3 -es 1 -mcd 
> 16 -single -ftz 0 )
> 
> Here is a non-delay-based alternative (tested very briefly, but it seems to 
> work):
> 
>  import("stdfaust.lib");
> 
> PI = ma.PI;
> TWOPI = 2.0 * ma.PI;
> 
> phasor(freq, phase) = ma.frac((loop ~ _) + phase / TWOPI)
>     with {
>         loop(y) = ma.frac(freq / ma.SR + y);
>     };
> 
> tri(ph) = abs(ma.frac(ph - .25) * 4.0 - 2.0) - 1.0;
> ph0 = hslider("ph0", 0, -PI, PI, .001);
> ph1 = hslider("ph1", -PI / 2.0, -PI, PI, .001);
> f = hslider("freq[scale:log]", 1000, 20, 20480, .001);
> 
> // Oscillation by phase-mod
> // process =   os.oscp(0, os.phasor(TWOPI, 1000)) , 
> //             sin(TWOPI * phasor(0, os.phasor(TWOPI, 1000))) , 
> //             tri(phasor(0, os.phasor(TWOPI, 1000)));
> 
> process =   os.oscp(f, ph0) , 
>             os.oscp(f, ph1) , 
>             sin(phasor(f, ph0) * TWOPI) , 
>             sin(phasor(f, ph1) * TWOPI) , 
>             tri(phasor(f, ph0)) , 
>             tri(phasor(f, ph1));
> 
> Dr Dario Sanfilippo
> http://dariosanfilippo.com
> 
> 
> On Sun, 26 Feb 2023 at 00:28, Julius Smith <julius.sm...@gmail.com> wrote:
> Ok, I see it.  The implementation of os.lf_sawpos_phase is impulse-based:
> 
> lf_sawpos_phase(freq,phase) = phasor_imp(freq, (1-1'), phase);
> 
> This means it is only sampled at time zero.  For continuous phase control, 
> you want something delay based, e.g.,
> 
> lf_triangle_phase (freq, phase) = os.lf_triangle(freq) @ (phase * ma.SR/freq);
> 
> Here is my updated test program (no scope needed - I used faust2caqt):
> 
> import("stdfaust.lib");
> 
> lf_triangle_phase(freq, phase) = os.lf_triangle(freq) @ (phase * ma.SR/freq);
> lfo_freq = hslider("[1] Freq", 0.5, 0.001, 50, 0.01);
> lfo1 = lf_triangle_phase(lfo_freq, 0);
> lfo_phase = hslider("[2] Phase", 180, 0, 360, 1) / 360;
> lfo2 = lf_triangle_phase(lfo_freq, lfo_phase);
> process =  lfo1, lfo2 : hbargraph("[3] 0",-1,1), hbargraph("[4] Phase",-1,1);
> 
> On Sat, Feb 25, 2023 at 2:03 PM Christopher Arndt <ch...@chrisarndt.de> wrote:
> Am 24.02.23 um 21:50 schrieb Julius Smith:
> > Hmmm, it looks to me like it should be working.
> > I adapted your test program for use with faust2plot, and it's working 
> > for me:
> 
> Yes, it works, if the phase is set initially. But what I want is to 
> change the phase of one LFO at run-time with a parameter and that 
> doesn't seem to work.
> 
> Here are two images, which demonstrate this, I hope:
> 
> 1) your code (lfophase.dsp) compiled with faust2jack and its output send 
> into a stereo oscilloscope. the two LFOs have different phase
> 
> https://0x20.eu/nc/s/kWSwRE2oHD4rStt/preview
> 
> 2) The code from my original post (lfophase2.dsp) compiled with 
> faust2jaqt again with its output into the scope. I have set the phase 
> two 91 after staring the program, but the output as seen in the scope 
> never changes and the two LFOs are still at the same phase.
> 
> https://0x20.eu/nc/s/Y47eaLK8DGZZTbk/preview
> 
> 
> Chris
> 
> 
> 
> _______________________________________________
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> 
> 
> -- 
> "Anything that can be automated should be"
> _______________________________________________
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> 
> 
> -- 
> "Anything that can be automated should be"
> _______________________________________________
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users



_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to