<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Yeah, so all that really needs to be done is to force symmetry by copying the 0-pi phase inverted to the pi-2pi phase + guard points for [tabosc4~]. I did that and it's been stable for 3.5 hours. It wouldn't be too hard to fix this in the Pd source; it would be a marked improvement to [osc~] even with the 512-pt table and linear interpolation.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 22, 2015 at 12:43 PM, Matt Barber <span dir="ltr"><<a href="mailto:brbrofsvl@gmail.com" target="_blank">brbrofsvl@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">OK, subtracting out the DC is more stable, but still deteriorates after a bit, since the exact value likely changes with frequency due to interpolation. So the solution is going to have to be in writing the table. We can do it in Pd but we're hampered by the six-digit limit on specifying 2pi directly as a float. The most accurate pi I can think of for feeding through [cos] is [0 -1( -- [atan2]. [cos] uses the cosf() function from C, which expects floats instead of doubles, so hopefully the symmetry is better. I'm going to try it for a while and write back.</div><span class="HOEnZb"><font color="#888888"><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Matt</div></font></span></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Sun, Nov 22, 2015 at 11:16 AM, Roman Haefeli <span dir="ltr"><<a href="mailto:reduzent@gmail.com" target="_blank">reduzent@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><span>On Sun, 2015-11-22 at 10:44 +0100, volker böhm wrote:<br>
> hi,<br>
> i think the timbre change in the FM example is due to a less than ideal cosine wavetable which is used for osc~ (and cos~ etc.).<br>
> the "cos_maketable(void)" in d_osc.c produces a waveform which is slightly asymmetric, i.e. it has a tiny DC offset.<br>
> this in return, causes the timbre shift when used in an FM context (asymmetric FM).<br>
> vb<br>
<br>
</span>Well spotted.<br>
<span><font color="#888888"><br>
Roman<br>
</font></span><br></div></div><span class="">_______________________________________________<br>
<a href="mailto:Pd-list@lists.iem.at" target="_blank">Pd-list@lists.iem.at</a> mailing list<br>
UNSUBSCRIBE and account-management -> <a href="http://lists.puredata.info/listinfo/pd-list" rel="noreferrer" target="_blank">http://lists.puredata.info/listinfo/pd-list</a><br>
<br></span></blockquote></div><br></div>
</blockquote></div><br></div>