Re: [Faudiostream-users] send impulse on trigger?

2023-12-30 Thread Oleg Nesterov
On 12/30, Autumn Cheney via Faudiostream-users wrote: > > how would i send an impulse (i.e, a single sample of value 1) at a trigger > signal > (e.g., a button or a midi gate)? perhaps you can use ba.impulsify Oleg. ___ Faudiostream-users mailing

Re: [Faudiostream-users] [PATCH] minor optimizations for ba.time/period/pulse

2023-11-26 Thread Oleg Nesterov
On 11/26, Julius Smith wrote: > > Sure, that sounds like efficient new expanded capabilities to me. > I am curious to know what the driving application was for that one? I have no idea ;) But at the same time I have no idea what people do with ba.pulse(p) (which truncates 'p' to int), I know

Re: [Faudiostream-users] fix ma.zc()

2023-11-26 Thread Oleg Nesterov
On 11/25, Dario Sanfilippo wrote: > > On Sat, 25 Nov 2023 at 20:38, Oleg Nesterov wrote: > > > So how about the patch below? > > > > This change is not compatible too, but I guess we can treat it as a bugfix? > > > > Agreed. It wouldn't break anything th

Re: [Faudiostream-users] [PATCH] minor optimizations for ba.time/period/pulse

2023-11-26 Thread Oleg Nesterov
On 11/25, Julius Smith wrote: > > Hey, perfection is often a minor step forward! ;) > I would simply say that there is no difference for constant p, but in the > time-varying case there is a new one-sample delay preventing bit-for-bit > compatibility. OK, thanks. I'll try to do something more

Re: [Faudiostream-users] [PATCH] minor optimizations for ba.time/period/pulse

2023-11-25 Thread Oleg Nesterov
Hi Julius, On 11/25, Julius Smith wrote: > > I see that I am missing out by not being on Discord! I think that all the technical questions/discussions should be moved to the faudiostream mailing lists, in this case I would be happy to forget about discord ;) > I like the changes but see that

[Faudiostream-users] fix ma.zc()

2023-11-25 Thread Oleg Nesterov
On 11/25, Oleg Nesterov wrote: > > Thanks for looking at this! Yes, and this reminds me another discussion on discord ;) To remind, ma.zc() is wrong in that it can't detect the crossing if the input is zero in between. So how about the patch below? This change is not compatible too,

Re: [Faudiostream-users] [PATCH] minor optimizations for ba.time/period/pulse

2023-11-25 Thread Oleg Nesterov
~ +(1) : mem; > pulse2(p) = period(p) : \(x).(x <= x'); > pulse(p) = period(p) == 0; > process = 100 - (10 @ 90) - (10 @ 170) - (10 @ 240) <: period , pulse*100 , > pulse2*100; > > Dr Dario Sanfilippo > http://dariosanfilippo.com > > > On Sat, 25 Nov 2023

[Faudiostream-users] [PATCH] minor optimizations for ba.time/period/pulse

2023-11-25 Thread Oleg Nesterov
Stephane, I am shy to disturb https://github.com/grame-cncm/faustlibraries with such a trivial/random change(s), but I'd like to "finish" the recent discussion on discord. Note that even ba.time is obviously suboptimal. I can make a PR if you think this makes any sense. - ba.time: eliminate -(1)

Re: [Faudiostream-users] simple method to add harmonics to any quad oscillator

2023-11-20 Thread Oleg Nesterov
On 11/14, Oleg Nesterov wrote: > > On 08/21, Oleg Nesterov wrote: > > > > On 08/20, Julius Smith wrote: > > > > > > Pretty fun! This looks closely related Andy Moorer's technique: > > > > > > @ARTICLE{MoorerDSF75, > > > A

Re: [Faudiostream-users] simple method to add harmonics to any quad oscillator

2023-11-16 Thread Oleg Nesterov
Hi Julius, On 11/14, Julius Smith wrote: > > Hi Oleg, > > That all looks good to me - cool new operator! > > Ideas for xxx: > sidebands OK, thanks, let it be sidebands. Then I'll rename yyy to __sidebands. Please see https://github.com/grame-cncm/faustlibraries/pull/171 Thank you, Oleg.

Re: [Faudiostream-users] simple method to add harmonics to any quad oscillator

2023-11-14 Thread Oleg Nesterov
On 08/21, Oleg Nesterov wrote: > > On 08/20, Julius Smith wrote: > > > > Pretty fun! This looks closely related Andy Moorer's technique: > > > > @ARTICLE{MoorerDSF75, > > AUTHOR = "James A. Moorer", > > TITL

Re: [Faudiostream-users] Int signals compiling with -double

2023-10-30 Thread Oleg Nesterov
On 10/30, Dario Sanfilippo wrote: > > Is there any particular reason for not having division work like the other > operators? Well, I too think that faust lacks the "idiv" operator, int(/) doesn't generate the "good" code. But as you understand it is too late to change the current semantics of

Re: [Faudiostream-users] Fwd: Int signals compiling with -double

2023-10-29 Thread Oleg Nesterov
On 10/30, Dario Sanfilippo wrote: > > > > In > > > that case; functions such as ba.time would also get an improvement. > > > > Why do you think so?? > > > > perhaps you meant that ba.time can overflow? Yes it can, but I don't > > think this should depend on -double. So what exactly did you mean?

Re: [Faudiostream-users] Int signals compiling with -double

2023-10-29 Thread Oleg Nesterov
Dario, I don't understand you, so let me ask... On 10/30, Dario Sanfilippo wrote: > > Perhaps we can include that "^" (pow()) can also be both int or float > depending on the operands. but it already depends on the type of operands ? > perhaps to do everything in > double when using -double,

Re: [Faudiostream-users] Int signals compiling with -double

2023-10-29 Thread Oleg Nesterov
On 10/29, Dario Sanfilippo wrote: > > internal int representation is always 32-bit, and Stéphane explained that > it can't be changed easily. Yes, and this is a bit unfortunate > Since Faust is a high-level language for DSP, wouldn't it make sense to > treat all signals as float unless there's

[Faudiostream-users] fi.svf && low level optimizations

2023-10-18 Thread Oleg Nesterov
In reply to https://github.com/grame-cncm/faustlibraries/pull/166#issuecomment-1767305470 Dario, I am not sure I understand you question, and I am not expert in this area... But. I'd guess that on the modern CPU multiplication is likely not slower than addition. Even if it is slower, the modern

Re: [Faudiostream-users] simple method to add harmonics to any quad oscillator

2023-08-21 Thread Oleg Nesterov
On 08/20, Julius Smith wrote: > > Pretty fun! This looks closely related Andy Moorer's technique: > > @ARTICLE{MoorerDSF75, > AUTHOR = "James A. Moorer", > TITLE = "The Synthesis of Complex Audio Spectra by Means of > Discrete Summation Formulae", > JOURNAL

[Faudiostream-users] simple method to add harmonics to any quad oscillator

2023-08-20 Thread Oleg Nesterov
Hello, When I was playing with fb_fcomb(), I accidentally noticed this trigonometric identity (thanks to maxima): cos(x)*sin(n*x) = (sin((n+1)*x)+sin((n-1)*x))/2 and it gave me idea to write the following: harmonics(vs, c0,s0) = c0*vn(0),s0*vn(0), 1,c0, 0,s0

Re: [Faudiostream-users] Q: fb_comb/fb_fcomb implementation

2023-08-20 Thread Oleg Nesterov
Sorry for delay, You know, I am all confused and I am starting to think I can't make this change ;) despite the fact that technically everything is trivial. On 08/18, Julius Smith wrote: > > Nice! I like the generalization of delay interpolation while keeping > backward compatibility. I would

Re: [Faudiostream-users] Q: fb_comb/fb_fcomb implementation

2023-08-18 Thread Oleg Nesterov
Hi Julius, On 08/17, Julius Smith wrote: > > Hi Oleg, > > This looks good to me. I believe I wrote the original fb_comb in > filter.lib, but I don't remember the extra output delay at all. If I did > it, my wild guess is that I was working from some old CCRMA documentation > for unit generators

[Faudiostream-users] Q: fb_comb/fb_fcomb implementation

2023-08-17 Thread Oleg Nesterov
Hello, This is not a bug-report or something like this, just I am curios. Yesterday I was playing with fi.fb_fcomb() and I'm a bit puzzled. Let's talk about fb_comb() first, they both have the same pattern. Two questions: - Why

Re: [Faudiostream-users] Find N of greatest input

2023-05-27 Thread Oleg Nesterov
Hi Yann, On 05/27, Yann Orlarey wrote: > > Since it is a typical "reduce" > operation, I suggest having "reduce" in the name. Agreed! > We can imagine having > three different versions depending if we start the reduction from the top > outputs, the bottom outputs, or in parallel. Agreed, > //

Re: [Faudiostream-users] Find N of greatest input

2023-05-25 Thread Oleg Nesterov
Hello, I am wondering if it makes any sense to generalize ba.parallelOp, something like parallelOp(op,1) = si.bus(outputs(op)); parallelOp(op,2) = op; parallelOp(op,n) = parallelOp(op,n-1), si.bus(inputs(op)-outputs(op)) : op; then we can do i_max(n) = par(i,n,

[Faudiostream-users] tabulate(r0, r1).cub loss of precision near r0/r1

2023-05-15 Thread Oleg Nesterov
On 05/11, Oleg Nesterov wrote: > > Lets look at the code, > > cub = it.interpolate_cubic(d,y0,y1,y2,y3) > with { > x0 = x1-1; > x1 = int(id); > ... > y0 = rdtable(S, wf, rid(x0, C)); >

Re: [Faudiostream-users] tabulateNd().cub vs 2nd order Taylor approximation

2023-05-11 Thread Oleg Nesterov
Hi Bart, On 05/11, b...@magnetophon.nl wrote: > > >and you will see that .cub() is very inaccurate at the start and at the > >end. > > Seems like we where talking about the same thing all along. OK, > >Contrary, the Chebyshev approximation apprroximates the function on the > >whole > >interval

Re: [Faudiostream-users] tabulateNd().cub vs 2nd order Taylor approximation

2023-05-11 Thread Oleg Nesterov
On 05/11, b...@magnetophon.nl wrote: > > >this? this is not what I meant... > > So what *did* you mean? I can't find my old email on this list... fortunately it is still in my mbox, let me quote it: > 2) you said « tabulate().cub can be improved, it.interpolate_cubic() is simply wrog

Re: [Faudiostream-users] tabulateNd().cub vs 2nd order Taylor approximation

2023-05-10 Thread Oleg Nesterov
Hi Bart, On 05/10, b...@magnetophon.nl wrote: > > On a more serious note: I have no idea how to get this working on NixOS, > sorry. Hmm. I think it should work just fine on NixOS. But nevermind, please forget. > I have also noticed the bug around the edge values with .cub, and have > mentioned

Re: [Faudiostream-users] tabulateNd().cub vs 2nd order Taylor approximation

2023-05-09 Thread Oleg Nesterov
On 05/09, Oleg Nesterov wrote: > > See the attached test-case. If you want to compile it, you need > fpp (https://github.com/oleg-nesterov/fpp), maxima, and Linux. > > Compiled with '-a plot.cpp' > > $ ./test-plot -n 10 | tail -n 1 > 0.00285841338

[Faudiostream-users] tabulateNd().cub vs 2nd order Taylor approximation

2023-05-09 Thread Oleg Nesterov
See the attached test-case. If you want to compile it, you need fpp (https://github.com/oleg-nesterov/fpp), maxima, and Linux. Compiled with '-a plot.cpp' $ ./test-plot -n 10 | tail -n 1 0.00285841338 0.000623551081 As you can see, taylor() uses less memory

Re: [Faudiostream-users] Q: --widening/narrowing-iterations compiler options

2023-03-23 Thread Oleg Nesterov
On 03/22, Stéphane Letz wrote: > > > Le 22 mars 2023 à 21:01, Oleg Nesterov a écrit : > > > > Yet I think an option for gUseMemmove makes sense. I didn't try to check, > > but > > my gut feeling tells me gUseMemmove = true might speedup the code ;) Even if > &

Re: [Faudiostream-users] Triangle LFO with controllable phase?

2023-02-27 Thread Oleg Nesterov
On 02/27, Oleg Nesterov wrote: > > On 02/27, Hermann Meyer wrote: > > > > I always implement the bypass switch in C/C++. > > and I guess this makes sense, but > > > When using select2 in > > faust, always both path been processed. That means, even when y

Re: [Faudiostream-users] Triangle LFO with controllable phase?

2023-02-27 Thread Oleg Nesterov
On 02/27, Hermann Meyer wrote: > > I always implement the bypass switch in C/C++. and I guess this makes sense, but > When using select2 in > faust, always both path been processed. That means, even when you switch > into bypass, the CPU load will stay the same. Not really, only with -sts /

Re: [Faudiostream-users] chebyshev approximation in faust

2022-11-27 Thread Oleg Nesterov
On 11/27, Oleg Nesterov wrote: > > On 11/25, Julius Smith wrote: > > > > I would expect ba.tabulate() to be unbeatable when the function being > > sampled is actually linear, quadratic, or cubic, > > Well ;) If the function is cubic then chebtab() will win even with

Re: [Faudiostream-users] chebyshev approximation in faust

2022-11-27 Thread Oleg Nesterov
On 11/25, Julius Smith wrote: > > I would expect ba.tabulate() to be unbeatable when the function being > sampled is actually linear, quadratic, or cubic, Well ;) If the function is cubic then chebtab() will win even with NX=1. Ignoring the floating point issues, chebtab() will be simply equal to

Re: [Faudiostream-users] chebyshev approximation in faust

2022-11-25 Thread Oleg Nesterov
Damn ;) Julius, Stéphan, I am sorry forthe extra noise but On 11/25, Oleg Nesterov wrote: > > Yesterday I played with ba.tabulate() and I think we can have a better > helper When I re-read my email it looks as if I state that chebtab() is always better than ba.tabulate().

[Faudiostream-users] chebyshev approximation in faust

2022-11-25 Thread Oleg Nesterov
Hello, Yesterday I played with ba.tabulate() and I think we can have a better helper which approximates an unary function using chebyshev polynomials more accurately: chebtab(CK, FX, NX,CD, X0,X1, x) = y with { ck(0) = _; ck(1) = max(0) : min(NX-1);

Re: [Faudiostream-users] Combining the `with` and `letrec` environments in Faust

2022-06-29 Thread Oleg Nesterov
Hi Dario, On 06/29, Dario Sanfilippo wrote: > > On Tue, 28 Jun 2022 at 13:18, Oleg Nesterov wrote: > > > Once I was greatly puzzled why letrec doesn't work as I'd expect, and > > I had to dig into the compiler sources to understand. > > > > For example, I thin

Re: [Faudiostream-users] [Faudiostream-devel] Faust version 2.41.1-rc2 to test

2022-06-28 Thread Oleg Nesterov
On 06/28, Stéphane Letz wrote: > > Here: https://github.com/grame-cncm/faust/releases/tag/2.41.1-rc2 > > Feedback welcome. Well, not related to this release, but if you ask for feedback ;) The 'prefix' primitive is still buggy and suboptimal. See

Re: [Faudiostream-users] Combining the `with` and `letrec` environments in Faust

2022-06-28 Thread Oleg Nesterov
On 06/27, Yann Orlarey wrote: > > The current implementation of letrec is extremely simple and > almost like syntactic sugar, Yes, but I'm afraid it is only simple to you and other faust devs ;) Once I was greatly puzzled why letrec doesn't work as I'd expect, and I had to dig into the compiler

Re: [Faudiostream-users] Faust in Python

2021-11-26 Thread Oleg Nesterov
On 11/26, Stéphane Letz wrote: > > This is a updated version of FAUSTPY, see > https://faustdoc.grame.fr/manual/architectures/#faustpy, > possibly working ? Ah, this one... I tried it once just out of curiosity several years ago, and I had to apply the patch below to make it work. I have no

Re: [Faudiostream-users] Problem about FAUSTPy

2021-11-25 Thread Oleg Nesterov
On 11/26, 佐藤佳希 wrote: > > I would like to use FAUSTPy, but I could not pass "python3 setup.py test". > So, I am wondering if you give me some advice. I can't find FAUSTPy in faust sources, > Also, I attached the errors as error.txt. You didn't ;) Oleg.

Re: [Faudiostream-users] multimode and svf filters

2021-05-29 Thread Oleg Nesterov
On 05/28, Till Bovermann wrote: > > I was thinking to use the fi.svf.lp filter as a building block instead > but it is (AFAICS, it is not mentioned in the doc string...) not a 1st > order design (which is crucial here, partly for consistency with the to > be emulated analog circuitry, partly

Re: [Faudiostream-users] Fix ADSR envelope:

2021-05-11 Thread Oleg Nesterov
Hi, I noticed by accident your discussion in https://github.com/grame-cncm/faustlibraries/pull/80 === From @orlarey: Your ADSR uses a variable slope for the release. This induces a different behavior when the gate is shorter than the AD part. That can

Re: [Faudiostream-users] Inputs as arguments

2021-05-01 Thread Oleg Nesterov
Hi Dario, I can't answer authoritatively, but nobody else bothered to reply and I hate the fact this list has a lot of unanswered technical questions. Add Stephane. On 04/25, Dario Sanfilippo wrote: > > Hello, list. > > I may be missing something obvious but would you know why > > process(x) =

Re: [Faudiostream-users] added fractional-index rdtable and rwtable

2021-04-07 Thread Oleg Nesterov
On 04/07, Oleg Nesterov wrote: > > Note also you can use si.dot() instead to simplify the implementation: > > lagrangeN(N, idx) = lagrange_h(N, idx), si.bus(N+1) : si.dot(N+1); Hmm. I actually meant lagrangeN(N, idx) = si.dot(N+1, lagrange_h(N, idx)); which looks

Re: [Faudiostream-users] added fractional-index rdtable and rwtable

2021-04-07 Thread Oleg Nesterov
Hi Dario, Your commit 85201e341bd4e adds lagrangeN() which uses si.bus(), this means you need to add si = library("signals.lib"); into interpolators.lib, otherwise it.lagrangeN(...) won't compile. Note also you can use si.dot() instead to simplify the implementation:

Re: [Faudiostream-users] When do int or float numerical entries make a difference?

2021-02-08 Thread Oleg Nesterov
On 02/08, Stéphane Letz wrote: > > The ‘pow' operation computed on integer arguments was indeed incorrect at > compile time. Should be fixed in 2.30.12 version on master-dev. commit bb0bf13334e9a1320f0f90b6ae56da277b9d96a5 adds +Type1 ipow(Type1 a, Type2 ex) +{ +if (0 == ex)

Re: [Faudiostream-users] When do int or float numerical entries make a difference?

2021-02-07 Thread Oleg Nesterov
On 02/07, Dario Sanfilippo wrote: > > Other than that, can you tell why -2 or 2 is producing -inf? Runtime integer overflow, I guess. Why didn't you try to simplify your code ? ;) Consider process = 2.0', 2' : par( i, 2, ^(32)); output: 0 0

Re: [Faudiostream-users] noise from fi.highpass

2020-12-22 Thread Oleg Nesterov
Julius, et al, sorry for delay, I was busy. And let me apologize in advance, most probably I won't be responsive till next week. On 12/20, Julius Smith wrote: > > In filters.lib, I just now changed (in faustlibraries / master) > smax = 0.; > to > smax = 1.0-ma.EPSILON; OK, I ran the

Re: [Faudiostream-users] noise from fi.highpass

2020-12-20 Thread Oleg Nesterov
On 12/20, Dario Sanfilippo wrote: > > > --- a/filters.lib > > +++ b/filters.lib > > @@ -1004,7 +1004,7 @@ declare tf2np copyright "Copyright (C) 2003-2019 by > > Julius O. Smith III > declare tf2np license "MIT-style STK-4.3 license"; > > tf2np(b0,b1,b2,a1,a2) = allpassnnlt(M,sv) :

Re: [Faudiostream-users] noise from fi.highpass

2020-12-20 Thread Oleg Nesterov
On 12/20, Oleg Nesterov wrote: > > On 12/19, Julius Smith wrote: > > > > All we can conclude from this test is that tf2s and svf are closer to each > > other than either is to tf2snp. > > Julius, I can't believe it but it seems that tf2snp is just wrong > when cf

Re: [Faudiostream-users] noise from fi.highpass

2020-12-20 Thread Oleg Nesterov
On 12/19, Julius Smith wrote: > > All we can conclude from this test is that tf2s and svf are closer to each > other than either is to tf2snp. Julius, I can't believe it but it seems that tf2snp is just wrong when cf is low ;) test1: F = 20; w1 = 2*ma.PI*F; a1s =

Re: [Faudiostream-users] noise from fi.highpass

2020-12-19 Thread Oleg Nesterov
On 12/19, Dario Sanfilippo wrote: > > I was following this text: > http://www.willpirkle.com/Downloads/AN-4VirtualAnalogFilters.pdf. Thanks! I will read it later... may be ;) > Julius, would you have a function to calculate the coefficients for > fi.tf2snp? Julius will correct me, but I think

Re: [Faudiostream-users] noise from fi.highpass

2020-12-19 Thread Oleg Nesterov
On 12/19, Dario Sanfilippo wrote: > > > And this probably means that Dario was right, and the problem was caused > > by quantisation. > > > > Because IIUC in theory (and unless you modulate HPFfreq) these 3 filters > > > > fi.highpass(2, f) > > fi.svf.hp(f, 1/sqrt(2)) > >

Re: [Faudiostream-users] noise from fi.highpass

2020-12-19 Thread Oleg Nesterov
On 12/19, Alik Rustamoff wrote: > > Today I tested all three. With last two svf filters I don't see any > difference (I use ardour's built in plugin analyser), no noise. > The noisy fi.highpass (the first one) becomes closer to them as cutoff > freq goes higher, but still has different phase

Re: [Faudiostream-users] noise from fi.highpass

2020-12-18 Thread Oleg Nesterov
Hi Dario, this motivated me to look at your library again ;) On 12/18, Alik Rustamoff wrote: > > Hi, Dario, I, btw, ended up using blti filter from your edge of chaos > library. Good collection. No noises just does the job. Then I think that fi.svf.hp() should work equally well. Can you try it?

Re: [Faudiostream-users] Making a sampler with rwtable

2020-11-13 Thread Oleg Nesterov
On 11/13, Karl Schultheisz wrote: > > Nevertheless, I also encounter difficulties when using variable indices. > Consider the case of using gate signals to control recording and playback. > This example alternately records and then plays back repeatedly. I am already sleeping, perhaps I

Re: [Faudiostream-users] Making a sampler with rwtable

2020-11-13 Thread Oleg Nesterov
On 11/13, Oleg Nesterov wrote: > > I think this is a bug. faust wrongly assumes that if ridx is constant then > the output is constant too. > > Perhaps this is because > > Tree sigWriteReadTable(Tree n, Tree init, Tree widx, Tree wsig, Tree > ridx) > {

Re: [Faudiostream-users] Making a sampler with rwtable

2020-11-13 Thread Oleg Nesterov
On 11/13, Karl Schultheisz via Faudiostream-users wrote: > > process = os.osc(55) : rwtable(1024, 0.1, 42, _, 42); > > The result, as demonstrated using faustide, is that the hypothesis is wrong. > The output signal is a constant 0.1, not a 55Hz sinusoid. I think this is a bug. faust wrongly

Re: [Faudiostream-users] shuffle algorithm for faust lists?

2020-11-13 Thread Oleg Nesterov
On 11/13, Oleg Nesterov wrote: > > Not sure if this is a bug or not, add Stephane and Yann. > > On 11/13, Till Bovermann wrote: > > > > // drop the first i elements > > left_drop(0, (x, xs)) = x, xs; > > left_drop(i, (x, xs)) = left_drop(i-1, xs); > >

Re: [Faudiostream-users] shuffle algorithm for faust lists?

2020-11-13 Thread Oleg Nesterov
Not sure if this is a bug or not, add Stephane and Yann. On 11/13, Till Bovermann wrote: > > // drop the first i elements > left_drop(0, (x, xs)) = x, xs; > left_drop(i, (x, xs)) = left_drop(i-1, xs); > > // reverse a list > reverse((x, xs)) = reverse(xs), x; > reverse(x) = x; > > process =

Re: [Faudiostream-users] ba.parallelOp() needs a fix

2020-10-30 Thread Oleg Nesterov
On 10/30, Bart Brouns wrote: > > As for the naming, reduce is already taken: > https://github.com/grame-cncm/faustlibraries/blob/2efc2d01cb6be4e7eb2ae54fe3f3591782786ed0/reducemaps.lib#L74 > > Not sure what a better name would be. may be lreduce? matches maxima's left-to-right lreduce... But

Re: [Faudiostream-users] Using a signal to trigger an envelope

2020-10-02 Thread Oleg Nesterov
On 10/02, i...@formuls.co.uk wrote: > > Hello Faust List, > > I’m trying to use a signal to trigger an envelope, in particular Faust's > dx7envelope. However, I keep encountering an error that states the number of > inputs does not match the number of outputs. I’m trying the following code: > >

Re: [Faudiostream-users] svf vs tf2snp when modulated

2020-09-01 Thread Oleg Nesterov
On 08/31, Julius Smith wrote: > > That's an interesting comparison. > tf2snp is designed to have constant signal power in the presence of > coefficient modulation. If only I knew what does it mean ;) > How is the svf implementation designed? Constant amplitude? No. Please see

[Faudiostream-users] svf vs tf2snp when modulated

2020-08-31 Thread Oleg Nesterov
Stephane, I wrote this email right after our short discussion on slack.com but somehow I forgot to send it. So I don't really know how to compare this filter with the existing filters forms in filters.lib, but please see the simple, stupid and "non-scientific" test below. Note! all 3 band-pass

Re: [Faudiostream-users] demand-rate in faust?

2020-08-25 Thread Oleg Nesterov
Hi Yann, sorry I couldn't reply earlier, On 08/21, Yann Orlarey wrote: > > Hi Oleg, > > Thank you for your example. It is very interesting because it shows that it > is now possible to write pathological Faust programs that cannot be > executed (without infinite memory)! Heh. Thanks, I didn't

Re: [Faudiostream-users] demand-rate in faust?

2020-08-21 Thread Oleg Nesterov
Hi Yann, On 08/21, Yann Orlarey wrote: > > A *very* experimental implementation of the ondemand primitive is available > here : > > https://github.com/grame-cncm/faust/tree/experimental-ondemand > > The implementation is currently only available for -lang ocpp in scalar > mode. Here are some

Re: [Faudiostream-users] arbitrary channels to recursive definition?

2020-07-19 Thread Oleg Nesterov
On 07/18, Yann Orlarey wrote: > > Hi Oleg, > > Here is an implementation of apply. It's the closest I've found ;-). The > idea is to pass to the op function a list of selectors that simulate the > formal parameters but that can be created in arbitrary numbers. (Heh ;) I tried to do something

Re: [Faudiostream-users] arbitrary channels to recursive definition?

2020-07-18 Thread Oleg Nesterov
Hi Yann, On 07/17, Yann Orlarey wrote: > > I'm not sure that answers your question, No it doesn't ;) probably I wasn't clear, please see below. > but you can do that, for instance: of course, you can always rewrite dsBus2int or anything else, but what if you do not want to change the

Re: [Faudiostream-users] arbitrary channels to recursive definition?

2020-07-17 Thread Oleg Nesterov
Hi Yann, On 07/17, Yann Orlarey wrote: > > Hi Till, > > What about : but is there a generic solution? IOW. Suppose you have a wants_list() function and a constant N. How can you turn N inputs into the N-ary list and pass it to wants_a_list ? wants_list(sig.bus(N)) won't work. Oleg.

Re: [Faudiostream-users] arbitrary channels to recursive definition?

2020-07-16 Thread Oleg Nesterov
On 07/16, Till Bovermann wrote: > > import("stdfaust.lib"); > dsBus2int_6 = si.bus(6) : \(x0, x1, x2, x3, x4, x5).(left_shift((x0, x1, x2, > x3, x4, x5))) with { > left_shift((x, xs)) = left_shift(xs) & ((x > 0) << 1) ; > left_shift(x) = x > 0; > }; not that it matters, but si.bus(6)

Re: [Faudiostream-users] demand-rate in faust?

2020-07-16 Thread Oleg Nesterov
Add Stephane and Yann. At least the 2nd problem is obviously a (minor) compiler bug. On 07/16, Till Bovermann wrote: > > Dear Oleg, James, Dario, all, > > > `control` looks promising, however, it is not as straight-forward as I > thought: Yes. And I think it is still experimental, at least I

Re: [Faudiostream-users] demand-rate in faust?

2020-07-14 Thread Oleg Nesterov
On 07/14, Till Bovermann wrote: > > Thanks also to you, Oleg; is there somewhere an example for the control > primitive, Sorry, I do not know. But see below. However, I did "git pull" and it seems that "control/enable" are already supported in FIR scalar mode. Probably the commit

Re: [Faudiostream-users] demand-rate in faust?

2020-07-14 Thread Oleg Nesterov
On 07/14, James Mckernon wrote: > > I have some more thoughts on this that are perhaps worth discussing in > a separate thread. Briefly, I feel like a 'dumb' select2, which only > ever evaluates one of its branches, You probably want the "control" primitive. Currently it is only supported by

Re: [Faudiostream-users] function dimensionality

2020-07-14 Thread Oleg Nesterov
On 07/14, Till Bovermann wrote: > Dear list, > > I am confused about this. > I have the following function taking a list of arguments (note the inner > brackets; > > ((( input args as list: > reason being that this function will later be encapsulated into a recursion > operator that applies the

Re: [Faudiostream-users] FAUSTPy

2020-06-14 Thread Oleg Nesterov
On 06/13, vince via Faudiostream-users wrote: > > if I try the test_examples.py, it just terminates the process without any > errors and nothing happens. I'd suggest you to contact the author ;) the patch below seems to make $ PYTHONPATH=. python3 FAUSTPy work on my laptop, but the the

Re: [Faudiostream-users] towards 1-bit DSD dsp in faust — state in a foreign function?

2020-06-04 Thread Oleg Nesterov
On 06/04, James Mckernon wrote: > > I can't tell whether this would be useful to your case, but could you > declare a static variable, c-side, within your foreign function? This > allows some kind of state to be held between calls to that function. Heh ;) OK, suppose we have

Re: [Faudiostream-users] towards 1-bit DSD dsp in faust — state in a foreign function?

2020-06-04 Thread Oleg Nesterov
On 06/04, Till Bovermann wrote: > > I discovered the `ffunction` primitive that allows to integrate foreign > functions > into the language, however, AFAICS (and according to sletz on slack, and from > what > I got from the documentation at [3]), they need to be stateless. > > the aforementioned

Re: [Faudiostream-users] Pattern matching and lists in Faust

2020-05-26 Thread Oleg Nesterov
On 05/26, Oleg Nesterov wrote: > > Yann, Stephane, I am curious if it is possible to change the compiler to > make par(i, 0, expr) work? the patch below seems to work ;) but I am sure you can do something better. Oleg. --- a/compiler/evaluate/eval.cpp +++ b/compiler/evaluate/eval.cpp

Re: [Faudiostream-users] Pattern matching and lists in Faust

2020-05-26 Thread Oleg Nesterov
On 05/25, Yann Orlarey wrote: > > For example the expression > `()` or `NIL` in Lisp, which indicates an empty list, does not exist in > Faust. Yes. it's a pity ;) Well, to some degree nil = 0:!; resembles the empty list. Say, output(nil) == 0 and process = sin(nil); works

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-23 Thread Oleg Nesterov
Dario, I'm afraid I can't help. Firstly, I do not really understand your questions. But even if I understood, I am not sure I could answer authoritatively. On 05/22, Dario Sanfilippo wrote: > > On Fri, 22 May 2020 at 20:22, Oleg Nesterov wrote: > > > On 05/22, Dario S

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-22 Thread Oleg Nesterov
argh, forgot to comment this part of your email... On 05/22, Dario Sanfilippo wrote: > > On Fri, 22 May 2020 at 08:20, Oleg Nesterov wrote: > > > See above. try > > > > process(3, (_<-100,-1,-1,-1, _==0,0,0,0, _>100,1,1,1, 10,10,10)); > > >

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-22 Thread Oleg Nesterov
On 05/22, Dario Sanfilippo wrote: > > Sorry for the confusion. What I wanted to ask is: why aren't the extra > parentheses making a difference? Because (0, (1,2,3)) is parsed as > ((0),((1,2,3)), right? Sorry, can't understand... but in any case, I think that extra parentheses should _only_ make

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-22 Thread Oleg Nesterov
On 05/22, Dario Sanfilippo wrote: > > > But this doesn't really matter. What (I think) does matter is that, say, > > 1,2 should match (x,xs), no matter how many parentheses you add. > > > > What is the reason why this is not happening? confused... this _is_ happening, iiuc. And again,

Re: [Faudiostream-users] crossfeedback

2020-05-22 Thread Oleg Nesterov
Dario, sorry for noise but I simply can't resist... On 05/22, Dario Sanfilippo wrote: > > process(carFreq, modFreq, modModMult, indexMult) = ( > ( > ( > (_, hslider("modModMult",100,100,1000,1):*), > hslider("modFreq",100,100,1000,1):+ > ):os.osc, hslider("carModMult",100,100,1000,1):* > ) > ,

Re: [Faudiostream-users] crossfeedback

2020-05-22 Thread Oleg Nesterov
On 05/21, Sam Pluta wrote: > > I made this crossfeedback synth in Faust: > > import("stdfaust.lib"); > > process(carFreq, modFreq, modModMult, indexMult) = note that the code below doesn't use any of theese inputs. It seems to me you actually want process = ...same code...; Just in

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-22 Thread Oleg Nesterov
On 05/22, Dario Sanfilippo wrote: > > > As for ifN. Perhaps something like this can work for you: > > > > ifN(N, inp) = par(n, N, line(n,C)) with { > > C = (outputs(inp) - N) / (N + 1); > > take(i) = inp : route(outputs(inp),1,i+1,1); > >

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-21 Thread Oleg Nesterov
On 05/20, Dario Sanfilippo wrote: > > I use the "ceil" function for the cond in "if" as I want _any_ non-zero > value to result true, whereas ba.if gives false for any fractional > condition < 1. I opened an issue about this but I think that fixing it, if > bad behaviour (bad if thinking of C/C++,

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-20 Thread Oleg Nesterov
On 05/20, Dario Sanfilippo wrote: > > a_f(f) = ifthenelseif(( f < 25, .532, > f < 31.5, .506, > f < 40, .480, > f < 50, .455, > f < 63, .432, > f < 80, .409, > f < 100, .387, > f < 125, .367, > f < 160, .349, > f < 200, .330, > f < 250, .315, > f < 315, .301, > f < 400, .288, > f < 500, .286, > f

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-20 Thread Oleg Nesterov
On 05/20, Dario Sanfilippo wrote: > > Was there already something like that not that I'm aware of, > or was there a simpler way of doing > it? Sorry, I don't understand... doing what?? why do you want this helper? Oleg. ___ Faudiostream-users

Re: [Faudiostream-users] Help with pattern matching to implement an if-then-else-if function

2020-05-20 Thread Oleg Nesterov
On 05/19, Dario Sanfilippo wrote: > > Hello, list. I hope that you're all well. > > I just started using pattern matching and I'd kindly ask for your help to > better understand how things work. > > The goal is to implement an *ifthenelseif* function that takes cond-then > pairs as arguments

Re: [Faudiostream-users] 4fb8849b833629 ("Fixup quadosc") looks wrong

2020-04-17 Thread Oleg Nesterov
Hi Bart, it seems that you are not convinced, let me try again. On 04/16, Oleg Nesterov wrote: > > On 04/16, Bart Brouns wrote: > > > > Somehow the initial value of `u` got lost in the last commit to this > > function: > > https://github.com/gr

Re: [Faudiostream-users] 4fb8849b833629 ("Fixup quadosc") looks wrong

2020-04-16 Thread Oleg Nesterov
Hi Bart, I am not sure I understand you, but I'll try to answer anyway ;) Please correct me. On 04/16, Bart Brouns wrote: > > Somehow the initial value of `u` got lost in the last commit to this > function: >

[Faudiostream-users] 4fb8849b833629 ("Fixup quadosc") looks wrong

2020-04-16 Thread Oleg Nesterov
Bart, could you explain the commit 4fb8849b833629 ("Fixup quadosc") ? It looks absolutely wrong. - It removes the 1st output (cosine), why ?? - It makes the 2nd output less precise - It makes the generated C++ code worse. Oleg.

Re: [Faudiostream-users] Hilbert filter

2019-07-06 Thread Oleg Nesterov
On 07/05, Julius Smith wrote: > > Do we know its copyright status? I think it would > be worth adding to the library if we can determine this and author. I found it here: http://yehar.com/blog/?p=368 But see also the hiir library http://ldesoras.free.fr/src/hiir-1.20.zip from Laurent de Soras

Re: [Faudiostream-users] Hilbert filter

2019-07-05 Thread Oleg Nesterov
On 07/05, Julius Smith wrote: > > I like to look at the dB magnitude and phase (in degrees) of the > frequency response. So feed 1-1' to analytic instead of a sinusoid. > The ideal response is 0 dB for the magnitude at all frequencies, and > 90 or -90 degrees for the phase, depending on whether

Re: [Faudiostream-users] Hilbert filter

2019-07-05 Thread Oleg Nesterov
On 07/05, Dario Sanfilippo wrote: > > https://dsp.stackexchange.com/questions/37411/iir-hilbert-transformer/59157#59157 Heh. Funny that. I too played with hiir library a long ago. I even found the code I wrote hiir_hilber(N, T) = hilbert with { coef = FPP(=N, =T) eval {

Re: [Faudiostream-users] Hilbert filter

2019-07-05 Thread Oleg Nesterov
On 07/05, Dario Sanfilippo wrote: > > Hello, everybody. > > Here's yet another design to obtain analytic signals, taken from Olli's > post: > https://dsp.stackexchange.com/questions/37411/iir-hilbert-transformer/59157#59157 > . > > analytic(x) = real, > > imaginary > > with { > >

Re: [Faudiostream-users] Arguably the best recursive quadrature oscillator around

2019-06-23 Thread Oleg Nesterov
On 06/15, Dario Sanfilippo wrote: > > quad_osc(f) = tick ~ (_ , _) > with { > init = 1-1'; > w = 2*ma.PI*f/ma.SR; > k1 = tan(.5*w); > k2 = 2*k1/(1+k1*k1); > tick(u, v) = omega-k1*(v+k2*omega) , v+k2*omega > with { > omega = (u+init)-k1*v; > }; > }; another case when we need to

Re: [Faudiostream-users] Hilbert filter

2019-06-23 Thread Oleg Nesterov
On 06/23, Oleg Nesterov wrote: > > Of course. But as for fi.hilbert, I simply can't imagine any practical > usage of it... Cough... and I just noticed it can't be compiled ;) hilbert = pospass : !,_; won't work, you need hilbert(N) = pospass(N) : !

  1   2   >