Hi Dario,

Ok, this looks promising.  I have added the below to oscillators.lib.
Let me know if you'd like to see any changes.  Test results welcome,
especially comparisons to the other oscillators, e.g.,

f = 1000;
oscs = (os.quadosc(f), os.oscrq(f), os.oscs(f), os.oscq(f));
process = oscs;
// study classic corner cases such as those mentioned in
https://vicanek.de/articles/QuadOsc.pdf

Thanks,
- Julius

//-----------------`(os.)quadosc`--------------------
// Sinusoidal oscillator based on QuadOsc by Martin Vicanek
//
// #### Usage
//
// ```
// quadosc(freq) : _
// ```
//
// where
//
// * `freq`: frequency in Hz
//
// #### Reference
// * <https://vicanek.de/articles/QuadOsc.pdf>
//------------------------------------------------------------
// Author: Dario Sanfilippo <sanfilippo.da...@gmail.com> (jos ed.)
quadosc(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;
  };
};

On Mon, Jun 17, 2019 at 11:50 AM Dario Sanfilippo
<sanfilippo.da...@gmail.com> wrote:
>
> Hi, Julius.
>
> I haven't experienced a particular case where this oscillator would be better 
> than others yet but according to table1 in the aforementioned paper it does 
> seem to be the best design, doesn't it? I'm not sure it is computationally 
> heavier than the others.
>
> Though I have a work which is a self-oscillating FDN with frequency shifters 
> in the loops that shift the signals of a very small fraction of Hz. For that, 
> I'd need a very low frequency quadrature oscillator and, according to the 
> table, Biquad, DWG and QSU would not be accurate for that.
>
> Cheers,
> Dario
>
>
>
> On Mon, 17 Jun 2019 at 20:39, Julius Smith <j...@ccrma.stanford.edu> wrote:
>>
>> Hi Dario,
>>
>> I don't see its unique advantage(s).  Can you make a case for it over
>> the oscillators already in oscillators.lib?
>>
>> Thanks,
>> - Julius
>>
>> On Sat, Jun 15, 2019 at 5:04 AM Dario Sanfilippo
>> <sanfilippo.da...@gmail.com> wrote:
>> >
>> > Described in this paper: https://vicanek.de/articles/QuadOsc.pdf.
>> >
>> > If I'm not wrong, it's not in the oscillators library yet so it could be a 
>> > good addition.
>> >
>> > Cheers,
>> > Dario
>> >
>> > import("stdfaust.lib");
>> > 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;
>> > };
>> > };
>> > process = quad_osc(1000);
>> > _______________________________________________
>> > Faudiostream-users mailing list
>> > Faudiostream-users@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/faudiostream-users
>>
>>
>>
>> --
>>
>> Julius O. Smith III <j...@ccrma.stanford.edu>
>> Professor of Music and, by courtesy, Electrical Engineering
>> CCRMA, Stanford University
>> http://ccrma.stanford.edu/~jos/



-- 

Julius O. Smith III <j...@ccrma.stanford.edu>
Professor of Music and, by courtesy, Electrical Engineering
CCRMA, Stanford University
http://ccrma.stanford.edu/~jos/


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

Reply via email to