That is an excellent, witty way to measure pulse withs using only tilde obects - my hat's off to you.
The methond only has limited accuracy since its measurement is in samples. For instance, a 1/2 cycle of a 440-hz. tone at 44.1 kHz is only 50 samples, so there's only 2% accuracy. That's about 1/3 of a half tone (30-ish cents) which would sound horribly out of tune. There's an alternative sine-to-sawtooth recipe described here: http://msp.ucsd.edu/Publications/icmc10.pdf This is the basis of my guitar processing patch, smeck, but should be more broadly useful. But it has its own limitations: the sawtooth you get out is wiggly if the input sn't a pure sinusoid. There's also the possibility of simply pitch tracking with sigmund~. Use a maximum frequency around 6000 and a maximum of 6 partals (default 50!) for best results. cheers M On Sun, Apr 27, 2014 at 11:27:33AM +0200, Simon Iten wrote: > dear list, > > i have a strange problem with my “sinetosawtooth” patch. > > it is basically a version of the pitch to voltage conversion used in the old > gr300 guitar synths from roland. > > i cut out all the clutter to make it easier to look at and understand. (cut > out the adaptive filtering at the input since i use a sine wave for this > example and not a guitar string) > > here is how it works (or should): > > -an input signal gets amplified by a large factor and clipped. this squares > the input. > > -the square wave is converted to pulses. > > -the pulses from the rising of the square wave are used to set and reset an > accumulating filter (rpole~) > > this results in a sawtooth wave that varies in amplitude depending on the > frequency of the input. > > -a sample and hold samples the peak of the sawtooth and holds it until the > next peak occurs. this, after a conversion gives us the input frequency. yeah! > > in the example patch i used the falling edges of the square wave to > trigger the sample and hold. this samples the sawtooth amplitude after half > the rising. (this is also why i have 22050 in fexpr~ and not 44100) i could > not figure out how to sample the peak of the sawtooth, so suggestions here > are very welcome. > > now to the problem: > > the extracted frequency does not exactly correspond to the input frequency. > it is pretty close at low frequencies but gets worse at higher frequencies. > the factor is not constant. at even higher frequencies (around 5000 hertz) > the reported frequency gets totally out of control. > > i first thought this is because the samphold~ object is inaccurate. but i > then saw that the sawtooth wave from the rpole~ object has no constant > amplitude even with the input frequency not changing. so it seems that either > rpole~ or change~ is not accurate. > > or the problem is that i sample in the middle of the rising and not at the > top ( as described earlier) > > attached the sinetosawtooth patch. set your sound card to 44100 or change the > 22050 in fexpr~ to half the sampling frequency. > > i would really appreciate if somebody could have a look at this, > > thanks, simon > > _______________________________________________ > Pd-list@iem.at mailing list > UNSUBSCRIBE and account-management -> > http://lists.puredata.info/listinfo/pd-list _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list