<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">The Korg Polysix kind-of was. The VCOs were linear, and there was an expo convertor that was multiplexed out to each of them, if I remember. There's a schematic I drew of the VCO design flying around on the web.<div class=""><br class=""></div><div class="">In that respect, there's a sense in which *many* synth VCOs are linear, but with an expo convertor tacked on. How much is that expo convertor considered part of the VCO circuit? For a discrete design, that's more of an open question. For something like the 3340, clearly it's not so much.</div><div class=""><br class=""></div><div class="">Tom<br class=""><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 20 Mar 2026, at 21:18, Thomas Hudson <<a href="mailto:thomas.hudson7@icloud.com" class="">thomas.hudson7@icloud.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Thanks to everyone on this thread. I am currently working on a MIDI to Hertz program for the Raspberry Pi (though I can probably move to an ESP32). Two last questions. Can anyone tell me which commercial synths were linear response? I know about the Moog Taurus / Behringer Toro.<div class=""><br class=""></div><div class="">Lastly, can anyone suggest a good design / schematic / kit for a linear VCO? </div><div class=""><br class=""></div><div class="">TIA<br id="lineBreakAtBeginningOfMessage" class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Mar 20, 2026, at 7:39 AM, Mike Bryant <<a href="mailto:mbryant@futurehorizons.com" class="">mbryant@futurehorizons.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><div class="elementToProof" style="font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">Well yes I was actually doing frequencies like 1004Hz (a telecomms test freq) at 8MHz sampling, but as you say the secret with PDM is to stay well away from the peak positive and peak negative values.  However a little bit of high frequency noise injection (from a look up table) added to the digital sinewave helped as this also gets filtered out.</div><div id="appendonsend" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;" class=""></div><hr tabindex="-1" style="font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid; display: inline-block; width: 880.03125px;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""></span><div id="divRplyFwdMsg" dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>Tom Wiltshire <<a href="mailto:tom@electricdruid.net" class="">tom@electricdruid.net</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>20 March 2026 10:37<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Mike Bryant <<a href="mailto:mbryant@futurehorizons.com" class="">mbryant@futurehorizons.com</a>><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span>brianw <<a href="mailto:brianw@audiobanshee.com" class="">brianw@audiobanshee.com</a>>; <a href="mailto:synth-diy@synth-diy.org" class="">synth-diy@synth-diy.org</a> <<a href="mailto:synth-diy@synth-diy.org" class="">synth-diy@synth-diy.org</a>><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [sdiy] Linear response VCOs?</font><div class=""> </div></div><div style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid; overflow-wrap: break-word; line-break: after-white-space;" class="">There's also differences in *where* the errors are worst between PWM and PDM.<div class=""><br class=""></div><div class="">Generally, you worry most about the fundamental and lowest harmonics of the pulse output frequency, since they're the hardest to filter. For PWM, you get the worst fundamental and 3rd harmonic at the midpoint value, when the output is a 50/50 square wave. You get the worst 2nd harmonic at the 25% and 75% values, since that's where that harmonic peaks for pulse waves. This is all fairly "central" and very likely to be values you're using all the time. In short, if your PWM output is at 100KHz, then 100KHz is what you'll get, and your filtering had better be able to deal with that.</div><div class=""><br class=""></div><div class="">For PDM, the central values are the best-case, rather than the worst. With PDM, the worst-case comes as you get to extreme values, so <5% or >95%. This happens because there's so few pulses going out that the effective output rate drops. Imagine we're using a 2MHz PDM output to create a 10-bit DAC. If we output our midpoint value of 512, we get a lovely squarewave at 1MHz - one period on, one period off. If we output a value of 1, we get one period on followed by 1023 periods off - a very narrow pulse wave at 2MHz/1024= 1953Hz. That's terrible! Of course, as you approach these extremes, the amount of fundamental and lower harmonics in such a narrow pulse drops off markedly, but still - you probably weren't thinking of a 2KHz output when you designed your 2MHz PDM DAC.</div><div class="">My view is that the secret with PDM is to discard the extremes and use the good bit in the middle!</div><div class=""><br class=""></div><div class="">Tom</div><div class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On 20 Mar 2026, at 09:30, Mike Bryant <<a href="mailto:mbryant@futurehorizons.com" class="">mbryant@futurehorizons.com</a>> wrote:</div><br class="x_Apple-interchange-newline"><div class=""><div class="x_elementToProof" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">This is why you use PDM, not PWM.  The pulses are at much higher frequency and easier to filter to the correct DC level with less noise.</div><div style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;" class=""><br class=""></div><hr style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; display: inline-block; width: 722.25px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; float: none; display: inline !important;" class=""></span><div id="x_divRplyFwdMsg" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><div style="direction: ltr; font-family: Calibri, sans-serif; font-size: 11pt;" class=""><b class="">From:</b> Synth-diy <<a href="mailto:synth-diy-bounces@synth-diy.org" class="">synth-diy-bounces@synth-diy.org</a>> on behalf of brianw <<a href="mailto:brianw@audiobanshee.com" class="">brianw@audiobanshee.com</a>><br class=""><b class="">Sent:</b> 20 March 2026 08:22<br class=""><b class="">To:</b> <a href="mailto:synth-diy@synth-diy.org" class="">synth-diy@synth-diy.org</a><span class="x_Apple-converted-space"> </span><<a href="mailto:synth-diy@synth-diy.org" class="">synth-diy@synth-diy.org</a>><br class=""><b class="">Subject:</b> Re: [sdiy] Linear response VCOs?</div><div style="direction: ltr;" class=""> </div></div><div style="font-family: Helvetica; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-size: 11pt;" class="">The challenge with PWM is that changing a rail-to-rail square wave into a steady DC value requires a lot of filtering. That filter must remove the sharp rise and fall of the raw PWM output, and thus the DC output value cannot sharply rise or fall either. The problem gets worse if a single channel needs to feed multiple unrelated CV values through a mux+S&H. The slew rate is horrible.<br class=""><br class="">Brian<br class=""><br class=""><br class=""></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; float: none; display: inline !important;" class="">________________________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; float: none; display: inline !important;" class="">This is the Synth-diy mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; float: none; display: inline !important;" class="">Submit email to:<span class="x_Apple-converted-space"> </span></span><a href="mailto:Synth-diy@synth-diy.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class="">Synth-diy@synth-diy.org</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; float: none; display: inline !important;" class="">View archive at:<span class="x_Apple-converted-space"> </span></span><a href="https://synth-diy.org/pipermail/synth-diy/" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class="">https://synth-diy.org/pipermail/synth-diy/</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; float: none; display: inline !important;" class="">Check your settings at:<span class="x_Apple-converted-space"> </span></span><a href="https://synth-diy.org/mailman/listinfo/synth-diy" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class="">https://synth-diy.org/mailman/listinfo/synth-diy</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; float: none; display: inline !important;" class="">Selling or trading? Use<span class="x_Apple-converted-space"> </span></span><a href="mailto:marketplace@synth-diy.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class="">marketplace@synth-diy.org</a></div></blockquote></div><br class=""></div></div><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">________________________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">This is the Synth-diy mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Submit email to: <a href="mailto:Synth-diy@synth-diy.org" class="">Synth-diy@synth-diy.org</a></span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">View archive at: <a href="https://synth-diy.org/pipermail/synth-diy/" class="">https://synth-diy.org/pipermail/synth-diy/</a></span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Check your settings at: <a href="https://synth-diy.org/mailman/listinfo/synth-diy" class="">https://synth-diy.org/mailman/listinfo/synth-diy</a></span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-line: none; text-decoration-thickness: auto; text-decoration-style: solid;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 17px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Selling or trading? Use <a href="mailto:marketplace@synth-diy.org" class="">marketplace@synth-diy.org</a></span></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div></body></html>