tag:blogger.com,1999:blog-68538826983588362722024-03-28T14:05:26.364+02:00KassutronicsSynthesizer DIY and other sound electronicsKassutronicshttp://www.blogger.com/profile/03895013450664527714noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-6853882698358836272.post-198502060155077892021-11-30T20:20:00.000+02:002021-11-30T20:20:32.109+02:00Wavefolder<p>This voltage controlled Wavefolder creates a rich spectrum of musical timbres, thanks to a smooth wavefolder core, integrated overdrive for added punch and clarity, and built-in VCA for ease of use.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjMKSipSA5KHm4zNQoCSZ960gVX8InVCC5rF44pRCBWcfqAvOgSKr1y2wK3y5TyEUz4XRfNpKZa4waAVIYMhMRsSaHeRCCtxM_0DJe6HKkGILow4SAenQfaGcA6BX6lg0isKGDkughFgh47O0wHOp2-SMs1MyZ9ka_p2x9sGPo2LYm4vC42_EdZ5GM2=s2048" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2047" data-original-width="2048" height="320" src="https://blogger.googleusercontent.com/img/a/AVvXsEjMKSipSA5KHm4zNQoCSZ960gVX8InVCC5rF44pRCBWcfqAvOgSKr1y2wK3y5TyEUz4XRfNpKZa4waAVIYMhMRsSaHeRCCtxM_0DJe6HKkGILow4SAenQfaGcA6BX6lg0isKGDkughFgh47O0wHOp2-SMs1MyZ9ka_p2x9sGPo2LYm4vC42_EdZ5GM2=s320" width="320" /></a></div><span><a name='more'></a></span><p>Wavefolders are one of the key elements in so-called West-coast synthesis techniques. When fed with a relatively pure waveshape such as a sine or triangle, the wavefolder adds harmonics to the sound by folding over the waves in some way. Thus, a wavefolder is essentially an extremely nonlinear amplifier, where the folds in the transfer function strongly distort the sound.</p><p>The character or timbre of this distortion depends however on the details of the transfer function. In this module, the wavefolding core is based on a series of simple transistor circuits, that create rounded-off folds for a smooth sound, somewhat (but not quite) like higher-order sine waves.</p><p><br /></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgw4P9VKqLmZbL8j2sR0c3zqwhjCGtCqway7VyY33z1ypQbFww_TYYrVGeVV2s97AAaCpzGc6kfTdSmfYLtzAkq6tObNkD5mAdI4e0zU8z_qooxxqqDUOJykj2sKXhQu4HMu5YvxVbkoiPl_uNx-57E9UsKFN8zHAjWyPcNW1RXAu2GngjiAJsnb2xb=s1159" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="510" data-original-width="1159" height="176" src="https://blogger.googleusercontent.com/img/a/AVvXsEgw4P9VKqLmZbL8j2sR0c3zqwhjCGtCqway7VyY33z1ypQbFww_TYYrVGeVV2s97AAaCpzGc6kfTdSmfYLtzAkq6tObNkD5mAdI4e0zU8z_qooxxqqDUOJykj2sKXhQu4HMu5YvxVbkoiPl_uNx-57E9UsKFN8zHAjWyPcNW1RXAu2GngjiAJsnb2xb=w400-h176" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The four-stage wavefolder core</td></tr></tbody></table><p>The amount of wavefolding is adjusted by the large Fold control. Starting with a nearly undistorted sound at the counter-clockwise position, turning up the Fold control adds folds one-by-one, up to the full 7 folds. Turning even further, the wavefolder leaves it's normal operating regime and starts to internally saturate and eventually clip. At this point it is perhaps not a proper wavefolder anymore, but that doesn't mean it doesn't sound good!</p><p>The Odd / Even control adjusts the transfer function to create predominantly odd or even harmonics, which each have a different character, or at in-between settings creates a fuller sound with all harmonics. The wavefolder core is followed by an overdrive circuit. Turning up the Drive contol adds warm saturation to the sound, and at higher settings starts creating a sharper edge, giving the wavefolder some punch. At extreme settings, the overdrive turns the once gentle sinusoidal folds into nearly ear-splitting square waves. The final step in the signal chain is an integrated VCA, with the output amplitude controlled by the Level control.</p><p>As with all synthesis techniques, wavefolders become musically interesting when introducing dynamics, i.e. changes to the timbre over time. To this end, the wavefolder has CV inputs for the fold amount and for the VCA, with an attenuator control for each. Adding just a little bit of Fold CV creates pleasent dynamics and satisfying bass sounds, while turning up the modulation depth releases all the chaos this module has to offer. The Level control does just what it says - control the VCA level (or output level if no signal is connected to the VCA jack) - but having the it closeby will come in handy to keep the wide range of timbres balanced in the mix.</p><p>For those who want even more CV options, at the cost of a little extra panel space, three expansion points are provided. Two allow for extra inputs for the Fold and Level CV, respectively, and the third adds voltage control over the Odd / Even knob. Wiring instructions for these are given at the end of the documentation.</p><p>Here is a demo video of the basic features, using only a sine wave oscillator and some envelopes:</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/Y-ZeL4wj_LQ" width="320" youtube-src-id="Y-ZeL4wj_LQ"></iframe></div><div><br /></div><ul style="text-align: left;"><li><a href="https://store.kassutronics.net/product?product_id=10" target="_blank">Kassutronics store</a></li><li><a href="https://github.com/kassu/kassutronics/tree/master/documentation/Wavefolder" target="_blank">Documentation</a></li></ul><p><br /></p>Kassutronicshttp://www.blogger.com/profile/03895013450664527714noreply@blogger.com3tag:blogger.com,1999:blog-6853882698358836272.post-40357558974861290152020-10-08T11:46:00.002+03:002021-01-07T21:04:39.291+02:00SlopeThe Slope module is a voltage controlled slew limiter and modulation source. The core idea behind this module comes form the classic Serge Dual Universal Slope Generator, which has in turn inspired many popular modules including the Makenoise Maths and and the Befaco Rampage.<p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1DJtY_J3KmuUNoDhzy_WtACkhPyy_X8mLNqW7NLHu9obCyeYj-2IbskwiWjuIgvVCFSWIosUWGR2d7OuYG07eBMytPiCXFQLYjG-KAULGN9MbGLE518zfVACMz1FYvSknoZKO_bRzmj4/s2048/IMG_20200913_171956_.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2047" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1DJtY_J3KmuUNoDhzy_WtACkhPyy_X8mLNqW7NLHu9obCyeYj-2IbskwiWjuIgvVCFSWIosUWGR2d7OuYG07eBMytPiCXFQLYjG-KAULGN9MbGLE518zfVACMz1FYvSknoZKO_bRzmj4/s320/IMG_20200913_171956_.jpg" width="320" /></a></div><span><a name='more'></a></span><p>This is version 2 of my adaptation of the module; <a href="https://kassu2000.blogspot.com/2016/04/slope-generator.html">the original version is available here</a> as circuit diagram. This version comes as a proper PCB and front panel set, featuring a single slope generator in an 8 hp eurorack module. At the modules' heart is a voltage controlled slew limiter, whose output is a copy of the input voltage except with any sharp steps replaced by smooth ramps, with a rate set by the front panel <i>Rise</i> and <i>Fall</i> controls as well as the corresponding control voltages. When used on pitch CV, the slew limiter creates a glide effect.</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlD2Glz-7U4xFfthkZtCDdnFA-hTb-GpsbroAzQU_r9x09P_dImRxaSpgboaZ5MYARmP9BA9WZdj0p8Y_PAr_-m2tvT502PK0zaskmBcsMyt307cYxEzP03UchqaIiJ9aFkAGtVtubuyg/s2048/IMG_20200913_191457.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="2048" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlD2Glz-7U4xFfthkZtCDdnFA-hTb-GpsbroAzQU_r9x09P_dImRxaSpgboaZ5MYARmP9BA9WZdj0p8Y_PAr_-m2tvT502PK0zaskmBcsMyt307cYxEzP03UchqaIiJ9aFkAGtVtubuyg/s320/IMG_20200913_191457.jpg" /></a></div><p><br /></p><p>Additional logic circuitry turns the Slope into a versatile modulation source. By feeding a signal to the <i>Gate</i>, the module becomes a voltage controlled envelope generator, with the attack time set by <i>Rise</i>, an optional <i>Sustain</i> phase, and the decay time by <i>Fall</i>.</p><h2 style="text-align: left;">About the circuit</h2><div style="text-align: left;">The circuit is described in more detail in the original <a href="https://kassu2000.blogspot.com/2016/04/slope-generator.html">slope generator</a> article. This module retains popular features of the original design, such as individual shape controls for rise and fall, and sustain and loop controls.</div><p style="text-align: left;">Internally several improvements were made to the circuit. The configuration of the slew limiter core has been changed from inverting to a non-inverting unity-gain amplifier. This ensures very accurate tracking (0.01% gain error) between the input and output voltage, so pitch control voltage can be processed by the unit without tuning errors. Accurate gain is further preserved by a high 1M input impedance to avoid loading down the voltage source, and a low-impedance output to drive the subsequent stage accurately.</p><p style="text-align: left;">The logic circuit has been improved to provide well-defined end-of rise (EOR) and end-of-cycle (EOC) gate outputs, which open up gate delay and pulse timing functions, as well as complex cycling when multiple modules are used together. The gate outputs are driven by push-pull comparators, so they can both source and sink current and will trigger nearly any module properly.</p><p style="text-align: left;">Finally all outputs have status LEDs to show what is going on visually; the main output LED is bicolor.</p><h2 style="text-align: left;">Typical applications</h2><div>Like it's predecessors, the Slope module can be used in numerous applications, especially if patched together in pairs or with other modules. However this module was designed with the following appications in mind, that don't need any special patching.</div><div><br /></div><h3 style="text-align: left;">Voltage controlled slew limiter.</h3><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyOOoqlsl4Rhcr4ok1RkQWQaUsE0i6QNuA54zLpZJ4XPlkqb47s3HFYPGTM569x9WP2F98eJQrq97mkJk6RDiHOEFwKBH_sN-4BgnjtWXcej6yZp6sZql0U18jrRGEEl60QsK784fok7A/s648/slew_limiter.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="648" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyOOoqlsl4Rhcr4ok1RkQWQaUsE0i6QNuA54zLpZJ4XPlkqb47s3HFYPGTM569x9WP2F98eJQrq97mkJk6RDiHOEFwKBH_sN-4BgnjtWXcej6yZp6sZql0U18jrRGEEl60QsK784fok7A/w640-h320/slew_limiter.png" width="640" /></a></div><p style="text-align: left;">This is the most basic function of the slope. Fed with a voltage to the <b>In</b> jack, the <b>Out</b> signal will be a copy of the input but with any fast changes limited by the Rise and Fall slew rates. Rise and fall rates are independently controllable, and each have a CV input with attenuverter.</p><p style="text-align: left;">Used on pitch CV, this gives a glide effect. The CV inputs can be used to change the glide times, or for example fed with a gate to turn the glide effectively on or off (the response polarity and amount can be set with the attenuverters).</p><p style="text-align: left;">The slew limiter can also process audio signal, in which case it is a non-linear low-pass filter.</p><div style="text-align: left;"><br /></div><h3 style="text-align: left;">ADSR envelope</h3><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy7KD05DOVBa5LrpXAlInW8rmr5l0O-jNCuJIxOzoaA7S1qCXp6WtdR2heM8wbgagh9o21VxeQS-NrtV1YSg3qgBuSZ7dwNcDqkeufNSCHEvz26OS9b7GYW1u2WXLykNmaJTXL5Ry24j8/s648/asr_envelope.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="648" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy7KD05DOVBa5LrpXAlInW8rmr5l0O-jNCuJIxOzoaA7S1qCXp6WtdR2heM8wbgagh9o21VxeQS-NrtV1YSg3qgBuSZ7dwNcDqkeufNSCHEvz26OS9b7GYW1u2WXLykNmaJTXL5Ry24j8/w640-h320/asr_envelope.png" width="640" /></a></div><br /><div>The Slope has an internal set-reset latch, turning it into an envelope generator. The envelope is started by a rising edge on the <b>Gate</b> input, and the attack time is set by the Rise control. When reaching about 8V, the output will go to the decay/release phase, at a rate set by the Fall control. The <b>Sustain </b>control feeds part of the buffered gate signal back to the input, making the Slope a complete 4-stage voltage controlled envelope generator. The only limitation is that the decay and release rates are set by the same control, but their effect can be balanced by adjusting the <b>Shape</b> controls (see below).</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmTY1f9ECQElxzzdhesrwnrlXH093yMN-sakPRHYQxpGqpNKbtWZyDGJKZtbbYVQRfOywmtIGVhiTTj4HvRwT9uU8hznkVUbvoIXjDlCd_Ka06Qt9N25XPxTPd7Wlx1PggynTzBUENwJk/s324/typical_envelope.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="324" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmTY1f9ECQElxzzdhesrwnrlXH093yMN-sakPRHYQxpGqpNKbtWZyDGJKZtbbYVQRfOywmtIGVhiTTj4HvRwT9uU8hznkVUbvoIXjDlCd_Ka06Qt9N25XPxTPd7Wlx1PggynTzBUENwJk/s320/typical_envelope.png" /></a></div><br /><div>The <b>EOR</b> and <b>EOC</b> outputs generate gate signals at different envelope stages, and can be used to trigger other modules at, for example triggering a second envelope to create a faux-delay effect. Even more gate timings can be found by combining EOC, EOR and the original gate input with an external logic module. </div><div><br /></div><h3 style="text-align: left;">Low-frequency oscillator</h3><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMKEi81GCtRhaBVJ2JHyquMQsbxtEY6l8NnzKEM2RKwSLxBzkiP3BvNrR9-HtIedFjHI50rAChpGfLqaWG5fgBYNAhFmNZKPoFk-oWPV93XSbAQDABNPXSeddLA3v3umdMCylFV0RMiME/s648/fast_slow_LFO.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="648" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMKEi81GCtRhaBVJ2JHyquMQsbxtEY6l8NnzKEM2RKwSLxBzkiP3BvNrR9-HtIedFjHI50rAChpGfLqaWG5fgBYNAhFmNZKPoFk-oWPV93XSbAQDABNPXSeddLA3v3umdMCylFV0RMiME/w640-h320/fast_slow_LFO.png" width="640" /></a></div><div><br /></div><div>The <b>Loop</b> switch internally connects the <b>EOC</b> output to the <b>Gate</b> input, which will cause the Slope output to loop forever. By adjusting Rise and Fall rates, the speed of the LFO can be set, and the shape can be varied between rising ramp, triangle and falling ramp. In loop mode the LFO can go up to several kHz in frequency, and down to cycles lasting 10s of seconds. Even slower LFO rates can be achieved by feeding a fixed voltage to the CV inputs, and adjusting the CV controls counter-clockwise.</div><div><br /></div><div style="text-align: center;"><img border="0" data-original-height="324" data-original-width="324" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq9o3SNn5YGw_rmc7p71QYydtwa-g1-Sv9ulEmTBBHO7leWPAagFH_7SM1qoYHI-bQfiXYteeduf30jBngFDpLHH7fe-BXb1Y8bofMd7ElNYFN0A2zF4Xtrjx_MCahTJdY7XDXZ1OEN8U/s320/lfo_shapes.png" /></div><div><br /></div><div>The shape can be further adjusted with the <b>Shape</b> controls, independently for the rising and falling part of the cycle. These controls internally feed part of the output back to the input, adjusting the shape between exponential decay and exponential growth, as shown in the figure above. Linear ramps are achieved with the shape controls at the center position. The shape controls similarly affect the shape in ADSR and Slew limiter usage.</div><div><br /></div><h3 style="text-align: left;">Gate delay</h3><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2obWcQkdPP7RHo4h7aR_RPC_axIELBpXa8f_DVNiUGMCEizKtvgXW07dLkyB-7GLAbEUS3Kym5Oy9oJnmw-UWsJ-Im8X5y1sKgygNO1T0RKSyfTYjEbpsvJ6k9pVm_ZZGU7xNDU5_C3c/s648/gate_delay.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="648" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2obWcQkdPP7RHo4h7aR_RPC_axIELBpXa8f_DVNiUGMCEizKtvgXW07dLkyB-7GLAbEUS3Kym5Oy9oJnmw-UWsJ-Im8X5y1sKgygNO1T0RKSyfTYjEbpsvJ6k9pVm_ZZGU7xNDU5_C3c/w640-h320/gate_delay.png" width="640" /></a></div><br /><div>A special use of the ADSR envelope is the gate delay, where only the <b>EOR</b> output is used. It will output a gate delayed by an amount controlled by the Rise control. The length of the gate can be adjusted by the Fall time. Such a delayed gate can be used to create off-beat elements in a sequence, or if comined with the original gate on an OR module create a double trigger delay effect on a synth or drum voice.</div><div><br /></div><div>When the Sustain control is fully CCW, the EOR output length is only determined by the Fall time. However when Sustain is added, the EOR will last at least as long as the original Gate, plus some time which depends on both Sustain and Fall.</div><div><br /></div><h2 style="text-align: left;">PCBs and front panels</h2><div>PCBs and front panels are for sale in the kassutronics store. To build your own, please read the build documentation, which includes the full schematics, BOM and specifications. <br /><br /><ul style="text-align: left;"><li><a href="https://store.kassutronics.net/eurorack-diy-c-1/slope-p-9">Kassutronics Store</a></li><li><a href="https://github.com/kassu/kassutronics/tree/master/documentation/Slope">Build documentation</a></li></ul></div><div><br /></div><div><br /></div>Kassutronicshttp://www.blogger.com/profile/03895013450664527714noreply@blogger.com23tag:blogger.com,1999:blog-6853882698358836272.post-71984939778269510932019-10-15T13:05:00.002+03:002021-08-05T09:09:58.231+03:00QuantizerTo help the modular system play in musical tune, I decided I wanted a Quantizer module. After significantly longer development time than I anticipated, the result is this two-channel Quantizer in 10hp Eurorack format.<div><br /><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxQhtkOGj_eELdzUjU_oQPtQKpVK9Ml8Avc3xJRIMChTr6uQxlOaXv0gIjo8REcSzpthkgkGpU0qpOOmrAx7Hlo6zqqn1dXRerAmeoD9HPEKB-wU_dqAxMxgOODhQtduLwBgdiKi5G8eo/s1600/IMG_2511_crop2.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="1318" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxQhtkOGj_eELdzUjU_oQPtQKpVK9Ml8Avc3xJRIMChTr6uQxlOaXv0gIjo8REcSzpthkgkGpU0qpOOmrAx7Hlo6zqqn1dXRerAmeoD9HPEKB-wU_dqAxMxgOODhQtduLwBgdiKi5G8eo/s400/IMG_2511_crop2.jpg" width="328" /></a></td></tr><tr><td class="tr-caption">Quantizer module with printed wooden front panel<br /></td></tr></tbody></table><br />
<a name='more'></a>
<br />
In its simplest form, a quantizer is a module that takes in a control voltage, and outputs the same voltage <i>rounded </i>to the nearest note. In the usual V/Oct tuning system, and assuming we use just tuning, that means rounding to the nearest 1/12th of a Volt.<br />
<br />
An obvious extension to such a basic quantizer is to have adjustable scales, where some of the 12 notes are disabled and hence will never be output. For example a quantizer could be set to a major scale to make sure the VCOs will always play only notes from that scale.<br />
<br />
In my Quantizer I chose to have completely flexile scales, defined by 12 illuminated push buttons that are toggled on and off by pressing them. This allows any custom scale to be programmed, or for example only a subset of a scale to get more control over the resulting music. I often find enabling only 3 or 4 notes gives more useful results than a traditional 7-tone scale.<br />
<br />
<h3>
User interface</h3>
Rather than the traditional piano keyboard layout, I ended up with a circular layout of the scale buttons that is comparable to the concept of <a href="https://ianring.com/musictheory/scales/">bracelets</a>. This layout is to me more intuitive compared to the piano keyboard - for example transposing the scale is just rotating the notes on the ring. As shown below, on the front panel layout I still made shaded regions to indicated the black keys on the piano keyboard for reference.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGNSO7YnFTqJUkmT76DV8EYWSPIDWC84HugNgDMdZd5pb3c_9C0AOQh60k0nAZLVPFKNdpyt0FH6-Wb-Rgi5L3gGPLkbZgOkv6wBurGB8sFL35ViQGXS3dxBiRFpXLKdrQEXe9p5Uup6Q/s1600/ModuleOverview.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="726" data-original-width="864" height="537" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGNSO7YnFTqJUkmT76DV8EYWSPIDWC84HugNgDMdZd5pb3c_9C0AOQh60k0nAZLVPFKNdpyt0FH6-Wb-Rgi5L3gGPLkbZgOkv6wBurGB8sFL35ViQGXS3dxBiRFpXLKdrQEXe9p5Uup6Q/s640/ModuleOverview.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Front panel layout</td></tr>
</tbody></table>
<br />
Below the scale buttons are function buttons, including two buttons to rotate the scale clockwise or counterclockwise, allowing one to easily change the key. Using the shift button in combination with the scale buttons more advanced options can be changed, such as different variations on transposing one or both channels. The operation of all functions is explained in detail in the user manual.<br />
<br />
Each of the two quantizer channels has obviously an input and output jack. The Gate output (and corresponding LED) go high whenever a new note is quantized, and can be used for example to trigger envelopes. Finally, each channel has a Trig input, which can optionally be used to trigger the quantization at desired times. When nothing is connected to the Trig input, the quantizer goes to a new note whenever the input voltage changes to the next note.<br />
<br />
Finally there are two assignable CV inputs A and B. In my first prototype these inputs were absent, but after playing with rotations and transpositions for a few minutes it became blatently obvious that these functions should be sequenceable with CV. The CV inputs can be assigned to almost all functions, such as changing key, transposing one or both channels, adjusting gate lenght or even loading a completely different scale from memory.<br />
<br />
<h3>
Hardware design</h3>
<div>
Quantization is inherently a digital operation, and it is no surprise that this module is implemented digitally. While quantizers made up of only discrete logic chips exist (notably Ray Wilson's <a href="http://musicfromouterspace.com/analogsynth_new/VOLTAGEQUANTIZER/VOLTAGEQUANTIZER.php">MFOS Voltage Quantizer</a>), a microcontroller makes the implementation both a lot simpler and more flexible. The venerable ATMega328P is a good match for the complexity of this project, and makes the Quantizer programmable in the Arduino IDE which hopefully lowers the barrier to firmware development if anyone is interested in that.</div>
<div>
<br /></div>
<div>
A key component of a quantizer is a digital-to-analog converter (DAC), which should be highly linear to ensure all quantized notes are in tune. Rather than a fancy DAC chip I went with filtered pulse-width modulation (PWM). While PWM has limitations, it gives excellent linearity since the output voltage steps are derived from the accurate timing of the crystal oscillator. Filtering the PWM signal properly is challenging, but using a 4th order buffered passive filter the results were satisfactory.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbmUXzQXIKQWvVGoTP05fiwW_NSy6ViOkjwEe6LtbZ_NGrcO9Ya1B2SDnv8T7XNE2LeWHDew6ZDXOdlVV_yjt8ihiMoPfk1tdkln0WQ36NiU7LRBUi1PXgwtMWfmlpqafv0FGtRz5jHA/s1600/quantizer_frontpcb_front.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="759" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbmUXzQXIKQWvVGoTP05fiwW_NSy6ViOkjwEe6LtbZ_NGrcO9Ya1B2SDnv8T7XNE2LeWHDew6ZDXOdlVV_yjt8ihiMoPfk1tdkln0WQ36NiU7LRBUi1PXgwtMWfmlpqafv0FGtRz5jHA/s320/quantizer_frontpcb_front.jpg" width="151" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCSDFFOCZSTd-BRjlDnJ2UyCsjyavjI6OiRtOktZDPfwzK5LeKSP0aCHAVFqhOD3ov9k2uhhdrPyF8m0PI4dNMWQ4iythMcyHjAJ50dAzWqtR7E7cVRiJdtTb0uWZUVh_ncD_BqK7rBy0/s1600/quantizer_mainpcb_front.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="783" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCSDFFOCZSTd-BRjlDnJ2UyCsjyavjI6OiRtOktZDPfwzK5LeKSP0aCHAVFqhOD3ov9k2uhhdrPyF8m0PI4dNMWQ4iythMcyHjAJ50dAzWqtR7E7cVRiJdtTb0uWZUVh_ncD_BqK7rBy0/s320/quantizer_mainpcb_front.jpg" width="156" /></a></div>
<br />
A more detailed description of the hardware as well as schematics are available in the build document. The hardware part of this module is not open source, but like with my other designs personal, non-commercial use is allowed.<br />
<br />
<h3>
Software design</h3>
The firmware of the Quantizer is written in the Arduino IDE, and made available open-source such that anyone can make modifications or alternatives if desired. Due to the limited resources on the 8-bit microcontroller, hardware and software are fairly tightly knit together. If you fancy developing the firmware for this module, the comments in the code give the best starting point. Also feel free to get in touch, I am happy to help where I can.<br />
<br />
<h3>
Building the Quantizer</h3>
<div>
Are you intersted in a Quantizer for your own system? I recommend first reading the user manual to see if the Quantizer fits your needs, and then have a look at the build document for building information.</div>
<div>
<br /></div>
<div>
I offer PCBs and front panels for sale, and generally also pre-programmed microcontroller chips if you don't fancy programming it yourself. The build involves a few 0805 and SOIC-size SMD components, but is mostly through-hole. While the component count is high compared to my other modules, there is nothing particularly difficult in the build.</div>
<div>
<br /></div>
<div>
All documentation <a href="https://github.com/kassu/kassutronics/tree/master/documentation/Quantizer">can be found on Github</a>.<br />
<br />
<h3>
Demo</h3>
</div>
<div>
The short demo video below demonstrates some of the Quantizer features. The Beatstep Pro drives a slow 4-note sequence which is fed to the CV A input and set to change the Rotation of the Quantizer. This creates a simple chord progression.</div>
<div>
<br /></div>
<div>
The melody voice comes from Quantizer channel 1. It's input is a free-running LFO, and the trigger is provided by a second channel of the Beatstep Pro. This combination creates quantized pseudo-random melodies, which follow the key of the chord progression.</div>
<div>
<br /></div>
<div>
The chords are made up by two VCOs. One comes from channel 2 of the Quantizer, also fed by the same LFO, but triggered only on quarter notes. The second VCO plays the root note directly from the Beatstep Pro.</div>
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/sZi0tdiRquc/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/sZi0tdiRquc?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;"><br /></div>
<div><br /></div><div>
Channel 37 did a great review and build video of the Quantizer:<div>
</div></div></div></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/K7Pd1eG54EM" width="320" youtube-src-id="K7Pd1eG54EM"></iframe></div><br /><div><br /></div>Kassutronicshttp://www.blogger.com/profile/03895013450664527714noreply@blogger.com36tag:blogger.com,1999:blog-6853882698358836272.post-63008009629124132802019-07-20T15:34:00.002+03:002021-01-07T21:03:50.719+02:00KS-20 FilterMy interest in the MS-20 style filter was sparked by videos from Look Mum No Computer, who built a DIY low pass version. This filter makes great basslines, with both strong bottom end which is not reduced at high resonance, and gnarly sound due to a nonlinear resonance path. Clearly I needed such a filter in my system, and the result of that is this module which I tackily named the KS-20.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTX2iL0BwmGaizqW_KgMFNxXx6AdB2D_pRgSFuQTEXNOUje1P_JJm6TRVNZYxrUr9UgtPpLLXT5t3qoiEC9Z9Id4P_4yCzwyFR-n0Zvzx79J_1OE0dZzkXAstKPQr65nCcZZi94jHrREk/s1600/IMG_2510_KS-20_crop.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1237" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTX2iL0BwmGaizqW_KgMFNxXx6AdB2D_pRgSFuQTEXNOUje1P_JJm6TRVNZYxrUr9UgtPpLLXT5t3qoiEC9Z9Id4P_4yCzwyFR-n0Zvzx79J_1OE0dZzkXAstKPQr65nCcZZi94jHrREk/s640/IMG_2510_KS-20_crop.png" width="492" /></a></div>
<br />
<a name='more'></a><br />
The Korg MS-20 synthesizer had two filters in series, one high-pass and one low-pass. Internally, these filters are nearly identical, differing only in where the signal is fed to the filter. My KS-20 module contains one such filter core (of the later, OTA-based variant), and a front panel knob to smoothly transition between the two modes of the original MS-20 filters. It blends from a two-pole low pass, via a resonant allpass, to a one-pole resonant high-pass. Using two KS-20 modules in series the original MS-20 configuration can be created.<br /><br />
What sets the MS-20 style filter apart from other classic filter designs is a nonlinear resonance path, created by diodes or in this module LEDs. This nonlinearity is needed to avoid clipping when self-oscillating. More interestingly however, the nonlinear resonance makes the sound of the filter strongly depend on the amplitude of the incoming signal. This is where the drive knob comes in, allowing you to drastically change the character of the filter. At low drive settings, the filter is mostly linear and has a clean resonance. When increasing the drive level, the sound starts to "break up", and there is a sweet spot where the incoming sound and the filter resonance are competing with each other. At even higher drive level, the incoming signal starts to take over and pushes the resonance away, even when the resonance is set to self-oscillation.<br />
<br />
This module is strongly based on the schematic <a href="https://www.schmitzbits.de/ms20.html">published by René Schmitz</a>, and all credit should go to him. In particular the choice to replace the string of diodes with an LED in the resonance feedback path was his. I did verify that this makes no notable difference to the sound. My additions were the variable mode control and drive knob.<br />
<br />
The KS-20 is an 8hp eurorack module, using only through-hole components and a single PCB. It draws up to 25mA current per rail.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujpHyknkIQYiZvh48Jaj1xEuqEuwq7oDe0DA1h37mXUMAS2CRnLRvUapwxHAybF6EVAHVcOtjr4NT-btP6RJ0sNACUnYpcApbdoAzUZhLxW3Gx06P_CNa5M1BxUzZCr6cYXjUvY4qa88/s1600/KS-20_1_1_3DView.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="893" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujpHyknkIQYiZvh48Jaj1xEuqEuwq7oDe0DA1h37mXUMAS2CRnLRvUapwxHAybF6EVAHVcOtjr4NT-btP6RJ0sNACUnYpcApbdoAzUZhLxW3Gx06P_CNa5M1BxUzZCr6cYXjUvY4qa88/s640/KS-20_1_1_3DView.png" width="355" /></a></div>
<br />
<br />
<h3>
Circuit description</h3>
<div>
There are two versions of the MS-20 filter. Initially Korg used the Korg35 module, which contains a few transistors cleverly arranged to from the filter core. Later this was replaced with a design based on Operational Transconductance Amplifiers (OTAs), which is what the KS-20 is also using.</div>
<div>
<br /></div>
<div>
There are two nearly identical filter stages, each using a single OTA. The OTA is configured as integrator-with-negative-feedback, which creates the same transfer function as a single RC filter stage, as shown in the following figure.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjjHs6VtFVHBMEzhZgCjmZgz_C-8RuN3p1DnVW1II3vhOs0C08rgVVkhahdhIajoDFW9mG0wFoi7jObIp58O2oPDPtvq09x6_txAIFOoFmdvZNsA-1cmR0d8QhmnwA7crzigMEQf8i1yQ/s1600/FilterCoreRC.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="396" data-original-width="1174" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjjHs6VtFVHBMEzhZgCjmZgz_C-8RuN3p1DnVW1II3vhOs0C08rgVVkhahdhIajoDFW9mG0wFoi7jObIp58O2oPDPtvq09x6_txAIFOoFmdvZNsA-1cmR0d8QhmnwA7crzigMEQf8i1yQ/s640/FilterCoreRC.png" width="640" /></a></div>
<div>
<br /></div>
<div>
First, let's consider the case where the signal is applied to LP_IN, and HP_IN is connected directly to GND. The OTA (U1A) creates a variable current, which is proportional to the voltage at LP_IN multiplied with the control current IABC. This OTA current is integrated by C, and the resulting voltage buffered by the opamp. The resistor R1 creates negative feedback, reducing the output current of the OTA as the output voltage approaches the input voltage. If a voltage step would be applied to LP_IN, this creates an exponential curve at OUT, just like it would charging up the capacitor in the equivalent RC circuit on the right. Hence, with HP_IN grounded, the OTA filter section is just like a single-pole RC low pass filter. The difference is, that the effective value of R can be adjusted with the control current IABC, forming the basis for the voltage control of the filter.</div>
<div>
<br /></div>
<div>
Also just like with the equivalent RC circuit, the OTA filter section can be turned into a high-pass filter by exchanging the input and ground terminal. So, connecting the signal to HP_IN and grounding LP_IN creates a high pass section. In fact, the two inputs can be used at the same time. It should be noted that the HP_IN node must be a low impedance point.</div>
<div>
<br /></div>
<div>
The MS-20 filter consists of two of these sections in series as shown below.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtChrHfOx69rLUtaXlnbg8j1z9Wr_WmUQiIWKRt8YPD8Qh6DE-cfw0zA86zRaT55FPGkahezsG3Xfj5J7aheN6w-DhMuXCFMa1c-VNGCIuYr5B6v5EEO0Jq5aRLpt-s73a_f-w7LiZ5YI/s1600/FilterCoreComplete.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="847" data-original-width="1351" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtChrHfOx69rLUtaXlnbg8j1z9Wr_WmUQiIWKRt8YPD8Qh6DE-cfw0zA86zRaT55FPGkahezsG3Xfj5J7aheN6w-DhMuXCFMa1c-VNGCIuYr5B6v5EEO0Jq5aRLpt-s73a_f-w7LiZ5YI/s640/FilterCoreComplete.png" width="640" /></a></div>
<div>
<br /></div>
<div>
In the low-pass filter, HP_IN is once again grounded and there are two low-pass sections in series, forming a two-pole (12dB/oct) low-pass. Resonance is created through positive feedback of the output to the <i>high-pass</i> input of the first section. Hence, in the resonance feedback loop there is a bandpass filter (one high-pass and one low-pass). This configuration avoids the infamous drop in volume associated with the Moog transistor ladder filter, where the resonance feedback loop goes through the full low-pass fitler which creates negative feedback at low frequencies.</div>
<div>
<br /></div>
<div>
For the high-pass version of the MS-20 filter, the LP_IN point is grounded and the signal is fed to HP_IN. Hence, only the second section is used for a single-pole (6dB/oct) high-pass, and the first section is only there for creating resonance.</div>
<div>
<br /></div>
<h3>
Build documentation</h3>
<div>
I offer PCBs and front panels for this module for sale. All documentation required to build this module is <a href="https://github.com/kassu/kassutronics/tree/master/documentation/KS-20%20VCF">available on github</a>.</div>
Kassutronicshttp://www.blogger.com/profile/03895013450664527714noreply@blogger.com54tag:blogger.com,1999:blog-6853882698358836272.post-10373796321391750532019-03-04T11:57:00.000+02:002021-01-07T21:03:35.393+02:00Dual VCA<i>You can never have enough VCAs</i>, a common meme in modular synthesis declares. While this module certainly cannot fill that infinite gap, it does provide two handy voltage controlled amplifiers.
They are linear, DC coupled VCAs, suitable for both audio and CV processing.<br />
<br />
<a name='more'></a><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXZ2JH93soE4VkWC2suT2rpgJ0TdxME_C6L78vjk-2WQYUXjYs8_I7qu1yHUUWSO92Bp_yDmtZAGmX7nlYDKsn8QWpoYcvCeYtJNIkmBVkc8-qfWvHYzzZtperj7kP75nHzVe85KqQSe8/s1600/dualvca_render.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="861" data-original-width="840" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXZ2JH93soE4VkWC2suT2rpgJ0TdxME_C6L78vjk-2WQYUXjYs8_I7qu1yHUUWSO92Bp_yDmtZAGmX7nlYDKsn8QWpoYcvCeYtJNIkmBVkc8-qfWvHYzzZtperj7kP75nHzVe85KqQSe8/s640/dualvca_render.png" width="624" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Front panel and render of the PCB</td></tr>
</tbody></table>
<br />
The control inputs have dedicated attenuators, and each VCA can be manually opened with the Bias control. Finally, the module has a built-in mixer, summing the output of both VCAs and one auxiliary input into the Sum Out jack. This way, for example, multiple units can be daisy-chained to form a multichannel voltage controlled mixer.<br />
<br />
The module is built around the AS3360 dual VCA chip, a clone of the CEM3360. This chip is easy to implement, reasonably priced and has decent performance. The rest of the circuit is implemented with 0805 SMD parts.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhioKLTQ8HwGljnJH9mNYszc2vDyiQf0Io5-Y3R4S_YY13GcK3DQWINLY8dedeD0rr8eha5BGrfCo-rfbiu42kmjGVYX_HhOP53_Pp_nued2FWFtLlSZdk_5UOgk3Izf_QLxXK2BxGXk8M/s1600/dualvca_specs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1139" data-original-width="843" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhioKLTQ8HwGljnJH9mNYszc2vDyiQf0Io5-Y3R4S_YY13GcK3DQWINLY8dedeD0rr8eha5BGrfCo-rfbiu42kmjGVYX_HhOP53_Pp_nued2FWFtLlSZdk_5UOgk3Izf_QLxXK2BxGXk8M/s1600/dualvca_specs.png" /></a></div>
<br />
<h3>
Circuit description</h3>
<div>
<div>
The CEM/AS3360 is an easy-to-use VCA chip, and requires few external components for basic operation. However, like the other CEM chips, it was originally designed to be integrated in ``normal'' analog (poly)synths. In a modular synth, where the inputs and outputs are exposed directly to the outside world, some external scaling and protection circuitry is needed.</div>
<div>
<br /></div>
<h4>
VCA core</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG9dT4MhrbVxTrTGSDe2jZxpa2oGVK6Ed2PkjvsI7eiNbIW83_Q-h0u6DP4UcE2aYLCJNA9ZMeu2xFxiFxEhTYPUd9dSa-4rpEp0Wt3hYcEsK18GumYdWbaAf0c2gl-m8m9CjWfHoNePk/s1600/dualvca_schema_core.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="546" data-original-width="1600" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG9dT4MhrbVxTrTGSDe2jZxpa2oGVK6Ed2PkjvsI7eiNbIW83_Q-h0u6DP4UcE2aYLCJNA9ZMeu2xFxiFxEhTYPUd9dSa-4rpEp0Wt3hYcEsK18GumYdWbaAf0c2gl-m8m9CjWfHoNePk/s640/dualvca_schema_core.png" width="640" /></a></div>
<div>
<br /></div>
<div>
Let's first describe the basic configuration of VCA channel 1 (channel 2 is identical). The VCA itself, U1A, is a current-in, current-out amplifier. The input signal voltage is converted to a current by R18, and the output current is converted back to a voltage by R22. Choosing these of equal value gives the VCA a nominal voltage gain of 1. The value of 51k is chosen such that a standard +/- 5 V modular signal has a peak current of 100 uA, which I found to be a good trade-off between signal-to-noise ratio and distortion. The AS3360 can handle at least 300 uA of signal current, so there is plenty of headroom at the input side (+/- 15 V min.), however the output swing is limited to around +/-10 V. The output signal is buffered by U4A, which is a unity-gain buffer. The network R2, R14 and C16 allows the opamp to handle significant capacitive load arising from long patch cables.</div>
<div>
<br /></div>
<div>
The VCA core itself has an exponential control scale (pin 3). The chip however includes a log converter (pins 5 and 4), which accepts a linear control voltage between 0 and 1.7 V (nominal) and generates the appropriate exponential voltage for the VCA. The VCA block further includes power supply connections (with decoupling capacitors drawn at the bottom of the schematic) and a decoupling capacitor on the internal reference voltage generated by the VCA on pin 8. This reference voltage is not used in the external circuitry, but is used internally by the log and exponential converters.</div>
<div>
<br /></div>
<h4>
CV signal conditioning</h4>
<div>
The module is designed to accept a useful CV range from 0 V to 4.5 V (with fully opened CV attenuator), which must be scaled to the 0 V to 1.7 V range expected by the AS3360. The incoming CV must therefore by attenuated with a gain of 1.7/4.5 = 0.38. The module must also safely accept any voltage in the +/- 12 V eurorack power supply voltage, whereas the AS3360 absolute maximum rating for CV is -2 V to +2.5 V.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUnKZ-VWiSBeKwD6AyYG2k1scViIogZ9m1BA5kQTKPQHFBua_BSfjyKFU8FUiUoJChBljdKx6LTLP6L3qiocEqCrXGHdB3bfcPiLTe3pdFsLkBgFtm9aycdkPnMn61B-MIFqkFlAeAo4g/s1600/dualvca_schema_cvsection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="1600" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUnKZ-VWiSBeKwD6AyYG2k1scViIogZ9m1BA5kQTKPQHFBua_BSfjyKFU8FUiUoJChBljdKx6LTLP6L3qiocEqCrXGHdB3bfcPiLTe3pdFsLkBgFtm9aycdkPnMn61B-MIFqkFlAeAo4g/s640/dualvca_schema_cvsection.png" width="640" /></a></div>
<div>
<br /></div>
<div>
The required scaling and clipping is performed by two inverting opamp stages, U2A and U2B. U2A first sums the external CV with the bias voltage set by RV3, and <i>amplifies </i>it by a factor -1.96. The output of U2A is clipped to about +/- 10 V, which corresponds to a CV input range of +/- 5 V. U2B then attenuates the CV by a factor -5.1, giving the required overall gain of -1.96/-5.1 = 0.38. Thanks to the clipping action of U2A, overvoltage on the CV input is limited +/- 2 V at the output of U2B. R15 and D2 further clip the negative part of this range, keeping the voltage well within the AS3360 absolute maximum spec.</div>
<div>
<br /></div>
<div>
For good measure, the two CV processing stages both include a roll-off capacitor limiting high-frequency CV signals. The CV bandwidth (3 dB attenuation) after both stages is 22 kHz, fast enough for audio-rate modulation.</div>
<div>
<br /></div>
<div>
R20 gives the control voltage a slight negative bias of about 25 mV. In testing, I found this helps to ensure the AS3360 turns off completely.</div>
<div>
<br /></div>
<h4>
Mixer section</h4>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLiwTEG_pfWy9QnQPSzynUIBDGPcP0D4se6amiumbGkrQRVXyiWoRkYbuP4gzC-cKnMy5vycppWtRocM1iL-Pnd6NLWtCIbh2gGbIp_9Esevk1d-yHQlapQf-cuXWP4-eWA9p5P3OexMY/s1600/dualvca_schema_mixer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="513" data-original-width="1376" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLiwTEG_pfWy9QnQPSzynUIBDGPcP0D4se6amiumbGkrQRVXyiWoRkYbuP4gzC-cKnMy5vycppWtRocM1iL-Pnd6NLWtCIbh2gGbIp_9Esevk1d-yHQlapQf-cuXWP4-eWA9p5P3OexMY/s400/dualvca_schema_mixer.png" width="400" /></a></div>
<div>
<br /></div>
<div>
U5A and U5B form a standard mixer with unity gain. U5A sums and inverts the two VCA output signals and an external (Aux In) signal together, and U5B inverts them again to restore normal polarity. Using C10 and C11 the mixer is band-limited to 22 kHz, and U2B has a series output resistor R31 in the feedback loop to isolate the opamp from capacitive load.</div>
</div>
<div>
<br /></div>
<h3>
Build documentation</h3>
<div>
<span style="background-color: white; color: #444444; font-family: "trebuchet ms" , "trebuchet" , "verdana" , sans-serif;">The PCB for this module is available for sale. The build documentation below contains everything you need to know to complete a successful module. Please read it through carefully before starting!</span></div>
<br />
<ul>
<li><a href="https://github.com/kassu/kassutronics/tree/master/documentation/Dual%20VCA">Build documentation</a></li>
</ul>
Kassutronicshttp://www.blogger.com/profile/03895013450664527714noreply@blogger.com0tag:blogger.com,1999:blog-6853882698358836272.post-58335526507865059662018-10-17T16:20:00.000+03:002021-01-07T21:03:16.616+02:00ASR EnvelopeMy first envelope was a traditional ADSR envelope, adapted from Yusynth's design which uses a (7)555 timer as the core logic element. That design works great, but I originally made it only on prototyping board. Recently, in need of more envelopes, I decided to make a proper PCB layout, and revisit the envelope design in the process.<br />
<br />
I realized that in typical uses of an ADSR envelope, I tend to set the Decay and Release controls to roughly the same value. This gives the decay and release portion of the sound the same time constant, which often sounds natural to me. I decided that it would be handy to have some envelope generators where the Decay and Release time combined in a single knob, and the result is this module which I called ASR envelope.<br />
<br />
<a name='more'></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4L1BK068_gr8-u204XZTA9CyJ-RKUngGuWxErYlG3PP9zR0gsArPaWQKQ8TKHarilWjOuGZfjNKDN7nSjOY8NNdxVD1A375lAoY9vmzB4nEsD9QvUmpWFIInPHhF8Jd_6v_6JtxiBcB4/s1600/20180825_122827_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="247" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4L1BK068_gr8-u204XZTA9CyJ-RKUngGuWxErYlG3PP9zR0gsArPaWQKQ8TKHarilWjOuGZfjNKDN7nSjOY8NNdxVD1A375lAoY9vmzB4nEsD9QvUmpWFIInPHhF8Jd_6v_6JtxiBcB4/s400/20180825_122827_2.jpg" width="61" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis8E69YAxaWqt5mg9oUwe-F4FNPSexkWUiPpdU24U_FryOUM5WYCZDkMBJG-DDN2ACGEUZ3-D9LNOLWqlsR15MJXDvK254LdYmfw2DbVKWV04LlTTTQhnuPdO7o4Vl_ROrDuucwpVYs3U/s1600/ASREnvelope3D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="464" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis8E69YAxaWqt5mg9oUwe-F4FNPSexkWUiPpdU24U_FryOUM5WYCZDkMBJG-DDN2ACGEUZ3-D9LNOLWqlsR15MJXDvK254LdYmfw2DbVKWV04LlTTTQhnuPdO7o4Vl_ROrDuucwpVYs3U/s400/ASREnvelope3D.png" width="115" /></a></div>
<br />
Merging Decay and Release into a single control greatly simplifies the logic portion of the circuit. Where the 555 timer in Yusynths design was cleverly used to create three logic states, the core logic now only needs two states which can be easily implemented with, for example, a single opamp. The three controls of the ASR envelope also fit comfortably on a 4hp eurorack panel, leaving space for a loop switch and indicator LED. The simplified circuit fits on a single PCB using all through-hole components.<br />
<br />
<h3>
Circuit description</h3>
The envelope circuit (excluding power supply and LED driver circuitry) is as follows:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpgrsTiRdkiCO1ZKhvEQL9ACK6rFLA8zkQvyCOLLs8g6n9CamkUmCa6c841X90UeqWDnqO2Y0BdueQW5N1WFwCLiOfAWbhguShrRx4VEyPwxiByqIBqqP2ojHsRnQTGG_gNWyVrlue_II/s1600/ASRSchematicWeb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="519" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpgrsTiRdkiCO1ZKhvEQL9ACK6rFLA8zkQvyCOLLs8g6n9CamkUmCa6c841X90UeqWDnqO2Y0BdueQW5N1WFwCLiOfAWbhguShrRx4VEyPwxiByqIBqqP2ojHsRnQTGG_gNWyVrlue_II/s1600/ASRSchematicWeb.png" width="920" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
The gate input is conditioned by U2A, using positive feedback (R2) to create hysteresis and form a Schmitt trigger. This turns any input gate signal into a well-defined gate with around +/- 10V levels. The rising edge of the gate is turned into a short trigger pulse (C1, R6 and D1), which is fed to U1A.<br />
<br />
U1A is the heart of the circuit, and also uses positive feedback (R3) to form a Schmitt trigger with threshold levels (on the positive input of U1A) around +8V and -8V. In envelope mode (that is, with the loop switch S1 as shown in the schematic), it is used as a "Set-Reset flip flop" logic element. In it's default state, which we will call Reset, the STATE output of the flip flop is low (around -10V). When a trigger pulse arrives, the flip flop is Set, STATE goes high and the timing capacitor C2 is charged through D2. The charging rate is set by the Attack potentiometer RV1. The voltage on C2 is buffered by U1B, which in turn feeds the output of the module.<br />
<br />
The output is also fed back to the negative input of U1A. When the charging curve reaches +8V, the flip-flop is Reset and STATE goes low. Now starts the discharge phase. C2 can only discharge through the Release potentiometer RV3, which sets the discharge rate, and the "precision diode" formed by U2B and D4. The precision diode arrangement compensates the diode drop of D4, such that will discharge to exactly the voltage on the positive input (pin 5) of U2B. Note that R11 and C7 are needed to stabilize the opamp which otherwise has difficulty with the large capacitive load C2.<br />
<br />
The discharge voltage (pin 5 of U2B) depends on several factors. If the gate input is still high, we are in the Decay/Sustain phase of the cycle, and C2 will discharge to a voltage set by the Sustain potentiometer RV2 through D3. R9 is chosen so the Sustain level is 100% when RV2 is fully clockwise. If the gate is low, we are in the Release phase, and C2 will discharge to 0V, set by R12. The combination of D3, D5 and R12 forms a diode-OR or maximum value circuit: the voltage presented to U2B is the highest of the sustain voltage (through D3) or STATE (through D5), minus one diode drop. When both are negative, it is clipped to 0V by R12. Note that STATE is only positive during the Attack phase, and it's role here is to prevent discharging of C2 during Attack.<br />
<br />
This completes the normal four-phase envelope cycle, and the system is back to it's default state with STATE low and the output at 0V. The typical envelope shape at the output is as follows, with a peak voltage around 8V:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOgHdO1r0zOh2O3Mad3oYUbLm0LXvx1_Ty26yIqh8rw520eN5uG47C1zGsYSXH4RsTerS93w8MevYLIpCnzR4-IjKpi4V9-_CBGKJo2OQ_3m5PC95sGN6YqM8gt01z3izAyYxFfXRKw6o/s1600/scope_typical_ADSRplot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="413" data-original-width="596" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOgHdO1r0zOh2O3Mad3oYUbLm0LXvx1_Ty26yIqh8rw520eN5uG47C1zGsYSXH4RsTerS93w8MevYLIpCnzR4-IjKpi4V9-_CBGKJo2OQ_3m5PC95sGN6YqM8gt01z3izAyYxFfXRKw6o/s320/scope_typical_ADSRplot.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Typical envelope shape</td></tr>
</tbody></table>
<br />
When the gate length is shorter than the Attack phase or the Sustain control is fully CCW, the Decay and Sustain phases are skipped and we have an AR envelope shape. The shortest possible AR envelope has an attack of about 1.5 ms, limited by R4 (which is needed to avoid burning out the logarithmic pot at the shortest settings). The decay time is similarly limited by R10.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxQfBu3PzUlgVIHqMQRUTfsfI5-qoqMTFaMHXFjCy_-5hhz9VKcoBNxpX65nZ0BbbU-xttiALztF0gtoX-RDE6A3gm6LBJcXZX-NhXw0RFcBJPohvxUGCtAz-7_eqXvbB0IW8ZBqE63rU/s1600/scope_shortest_ARplot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="413" data-original-width="596" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxQfBu3PzUlgVIHqMQRUTfsfI5-qoqMTFaMHXFjCy_-5hhz9VKcoBNxpX65nZ0BbbU-xttiALztF0gtoX-RDE6A3gm6LBJcXZX-NhXw0RFcBJPohvxUGCtAz-7_eqXvbB0IW8ZBqE63rU/s320/scope_shortest_ARplot.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Shortest AR envelope</td></tr>
</tbody></table>
<br />
Switching the loop switch S1 disables the Sustain circuit and bypasses D5. Now, the STATE signal is connected directly to both the charging and discharging side, and the circuit becomes a standard relaxation oscillator. This generates a bipolar triangle-like LFO waveform, with adjustable rise and fall rates (by Attack and Release, respectively), with output levels of approximately +/- 8V.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRTlnxC8L33Ox7qgdOY-v8IJiK-UhyphenhyphenWhAE63iAtntbd6gUULuGDFhwqsevfpL9FbRqHKYqZdNdRBzvtPGRrNpW4mVOm1to4Jhwk4xFPZ3TUfp-Nc3heGVSMvS50nYf3lbu6BLOvRreafk/s1600/scope_loop_typicalplot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="413" data-original-width="596" height="221" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRTlnxC8L33Ox7qgdOY-v8IJiK-UhyphenhyphenWhAE63iAtntbd6gUULuGDFhwqsevfpL9FbRqHKYqZdNdRBzvtPGRrNpW4mVOm1to4Jhwk4xFPZ3TUfp-Nc3heGVSMvS50nYf3lbu6BLOvRreafk/s320/scope_loop_typicalplot.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Typical waveform in loop mode</td></tr>
</tbody></table>
<br />
The complete schematic and bill of materials are available in the build documentation below, which also contains some important notes on what components to use.<br />
<br />
<h3>
Build documentation</h3>
<h3>
<div style="font-size: medium; font-weight: 400;">
I offer the PCB for this module for sale. The build documentation below contains everything you need to know to complete a successful module. Please read it through carefully before starting, and especially check the notes in the Bill of Materials when ordering parts.</div>
<div style="font-size: medium; font-weight: 400;">
<br /></div>
<div style="font-size: medium; font-weight: 400;">
<ul>
<li><a href="https://github.com/kassu/kassutronics/tree/master/documentation/ASR%20Envelope">Build documentation</a></li>
</ul>
</div>
</h3>
Kassutronicshttp://www.blogger.com/profile/03895013450664527714noreply@blogger.com19tag:blogger.com,1999:blog-6853882698358836272.post-51174818398608959022018-07-08T16:06:00.000+03:002021-01-07T21:03:22.996+02:00Transistor ladder filterWhen I started with synth DIY, I knew little about how transistors work, and the famous Moog transistor ladder filter just looked like magic. Intrigued, I stared long at the schematics posted by <a href="http://yusynth.net/Modular/EN/MOOGVCF/index.html">Yusynth</a>, and worked my way to the very detailed and mathematical <a href="http://timstinchcombe.co.uk/synth/Moog_ladder_tf.pdf">analysis</a> by Tim Stinchcombe.<br />
<a name='more'></a><br />
Eventually the transistor ladder filter was the very first synth module I built, initially in a cardboard box and later transplanted to fit behind a eurorack-format panel. My implementation was a kludge on prototyping board, with later modifications bodged in and not-quite-quality components. While the circuit still sounds fine, it now has intermittent issues which are simply not worth tracking down and fixing anymore. Instead, I designed a proper PCB for the circuit and built a few new ones. The PCB fits behind an 8HP eurorack panel with all through-hole components and no wiring required. I sometimes have some of these PCBs available for sale, and the build documentation can be found at the bottom of this page.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqEw0Lrc8uwHZ2jhX28O3xs0IkIpeKo90zCKZmR5yfbYBnKx1xZZdkZhwMl7k-__0lHcoCnSb61yOlovVLttrAvD1tqFxLnYZaQdkoX5G3JzyzriDgApEnY0ViLfc3erVoV_ibkt1xQJc/s1600/20180325_185559.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="521" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqEw0Lrc8uwHZ2jhX28O3xs0IkIpeKo90zCKZmR5yfbYBnKx1xZZdkZhwMl7k-__0lHcoCnSb61yOlovVLttrAvD1tqFxLnYZaQdkoX5G3JzyzriDgApEnY0ViLfc3erVoV_ibkt1xQJc/s400/20180325_185559.jpg" width="130" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWAmYz0HFvxFPTMWCF-XzvZ9HB6SxGPKNYcjh9iQN1Uj56Gm347Aw-n5k-Xv2F_cpQ0nR3_HMmJtsCS2q8Zqbkg5mcy8seQ7RzX0KqofeB8IWUt6IrOgiGKCm8u2Gv8KrIkQeGbMxm6To/s1600/20180325_174048.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="641" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWAmYz0HFvxFPTMWCF-XzvZ9HB6SxGPKNYcjh9iQN1Uj56Gm347Aw-n5k-Xv2F_cpQ0nR3_HMmJtsCS2q8Zqbkg5mcy8seQ7RzX0KqofeB8IWUt6IrOgiGKCm8u2Gv8KrIkQeGbMxm6To/s400/20180325_174048.jpg" width="160" /></a></div>
<br />
My version of the filter is not intended to be an exact replica of the Moog filter. While it uses the traditional transistor ladder core and exponential converter, I used an opamp instrumentation amplifier (inspired by <a href="https://janswaal.home.xs4all.nl/Emusic/Moog/">Rick Jansen</a>) as output stage replacing the original discrete outputs. I added a CV input with attenuverter and a Drive control, allowing to adjust the input saturation that is a significant part of the filters characteristic sound.<br />
<br />
<h3>
Build documentation</h3>
<h3>
<div style="font-size: medium; font-weight: 400;">
I offer the PCB for this module for sale. The build documentation below contains everything you need to know to complete a successful module. Please read it through carefully before starting, and especially check the notes in the Bill of Materials when ordering parts.</div>
<div style="font-size: medium; font-weight: 400;">
<br /></div>
<div style="font-size: medium; font-weight: 400;">
<ul>
<li><a href="https://github.com/kassu/kassutronics/tree/master/documentation/Transistor%20Ladder%20Filter">Build documentation</a></li>
</ul>
</div>
</h3>
Unknownnoreply@blogger.com29tag:blogger.com,1999:blog-6853882698358836272.post-54178898023820155242018-07-05T12:38:00.003+03:002021-01-07T21:02:40.024+02:00Avalance VCOThanks to <a href="https://www.lookmumnocomputer.com/simplest-oscillator/">Look Mum No Computer</a>, a super simple oscillator circuit has been popular lately based on the reverse avalance breakdown effect in normal transistors. I decided to experiment with this idea myself, and in particular see if I can add basic V/Oct control to it.<br />
<a name='more'></a><br />
<h3>
The circuit</h3>
<div>
<br /></div>
<div>
The oscillator core cosists of the timing capacitor C1 and in parallel transistor Q1 connected "in reverse". The base lead of the transistor is not used and should be cut off as short as possible to avoid picking up noise. The circuit operates by charging up C1 until it reaches the reverse breakdown voltage of Q1. When Q1 reaches breakdown it will suddenly allow current to flow through it, quickly discharging C1 again. Then Q1 resumes normal operation and the next cycle of the oscillator begins. Thus it is a saw core, and Q1 assumes the function of both the comparator and the reset switch found in <a href="https://kassu2000.blogspot.com/2015/12/vco-part-1-core.html">traditional saw core oscillators</a>.</div>
<div>
<br /></div>
I shifted the topology around a little bit, and referenced the oscillator core to +12V instead of ground. This way a normal ground-referenced transistor can act as a current sink to control the oscillator frequency, much like in traditional saw-core VCOs.<br />
<br />
I used the exponential converter found in the Moog transistor ladder filter. It consists of a PNP buffer (Q5) and a NPN transistor (Q4) as exponential converter and current sink. Q4 and Q5 have roughly opposite temperature coefficients, providing a very rudimentary form of temperature compensation. In order to isolate the oscillator core from output loading, I added a darlington buffer to the output (Q2 and Q3). Finally the output is AC coupled to remove the offset voltage.<br />
<br />
<a href="http://www.kerrywong.com/2014/03/19/bjt-in-reverse-avalanche-mode/">As others have investigated,</a> many transistors are suitable in principle as avalanche oscillator, but their threshold voltage and other behavior differs. Of the transistors I had at hand, I found the 2N3904 has a threshold voltage around 9V, giving a suitable amplitude close to the 10Vpp modular standard. A list of suggested transistors can be found in <a href="http://www.kerrywong.com/2014/03/19/bjt-in-reverse-avalanche-mode/">Kerry Wong's article</a>, but note that the voltages listed there are 3V higher due to the LED in series with the transistor.<br />
<br />
The capacitor value sets the frequency range, I went with a smallish value to reduce the current needed from the exponential converter. Smaller values don't seem to work at all, which is a pity since reducing the current further would help with tracking and stability. A larger capacitor such as 1uF could be used for LFO-range operation (for electrolytic caps the + lead should connect to +12V).<br />
<br />
I made a stripboard layout that fits neatly behind a 4HP eurorack panel, and a single drawing with all info you need to make your own:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ_17jNFaupRi-oEM4zochaNuTNVcyI6q-u5dfdoPEWC9wfUP7l7zkn3x7Z-jiK2boSiKW5c17XYLid2TLST2BQkVQGCWJWImKRbqeCUeYLCEPfTBQTyS7MOw97wiaPIv0siP5EYgdYvE/s1600/AvalanceVCOSchematics.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1131" data-original-width="1600" height="452" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ_17jNFaupRi-oEM4zochaNuTNVcyI6q-u5dfdoPEWC9wfUP7l7zkn3x7Z-jiK2boSiKW5c17XYLid2TLST2BQkVQGCWJWImKRbqeCUeYLCEPfTBQTyS7MOw97wiaPIv0siP5EYgdYvE/s640/AvalanceVCOSchematics.png" width="640" /></a></div>
<br />
You can download a <a href="https://drive.google.com/uc?export=download&id=1IrOJ68SQeJpusNVqXHuvm2J7iJJvssAZ">PDF version here</a>, and the <a href="https://drive.google.com/uc?export=download&id=10NTM3MwIhK7qJSaFYgkdNmj5YhchUa41">front panel layout here</a>. I made the front panel out of 2mm plywood, and the final result looks like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9RSXGv3lWNQ0UD66pBZmnYt9NKfU79v_QdT6wTviJ686G4a5Z2vawIzfm1IxrwQX1P514tJdCotx42Bgka0oFSyKlytr6u6phEVLFIpQFRAdFGKx7qeEIl8RKG5dKrS8G4QyBMlWeltE/s1600/20180705_121915.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1251" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9RSXGv3lWNQ0UD66pBZmnYt9NKfU79v_QdT6wTviJ686G4a5Z2vawIzfm1IxrwQX1P514tJdCotx42Bgka0oFSyKlytr6u6phEVLFIpQFRAdFGKx7qeEIl8RKG5dKrS8G4QyBMlWeltE/s320/20180705_121915.jpg" width="250" /></a></div>
<br />
<br />
<h3>
Tracking</h3>
<br />
So, you ask, how well does it track 1V/Oct? Well, for a synth VCO not very well at all, but for such a simple circuit I think it's not bad. I got it down to the following tracking error:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHxk6Xa1TX-1ypFvwNO1QwFQkIaAYKCFCek34fb2hlSpxZ_VPF9LDSm_I931-JWozuADOOuwTUDAMW-afn1sZ3NcEWjNqccpuT8cfqEvJtBvor17-AGja1arPa1VJXAbEPAbu5p44P0Rs/s1600/avalanchetuning.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="563" data-original-width="563" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHxk6Xa1TX-1ypFvwNO1QwFQkIaAYKCFCek34fb2hlSpxZ_VPF9LDSm_I931-JWozuADOOuwTUDAMW-afn1sZ3NcEWjNqccpuT8cfqEvJtBvor17-AGja1arPa1VJXAbEPAbu5p44P0Rs/s320/avalanchetuning.png" width="320" /></a></div>
<br />
While the low and high end are horribly off, there is a range between about 30 Hz and 500 Hz where one could pull of a half-decent bassline or some drifting drone tunes. Drift, indeed, is probably a more serious concern since temperature stability is very limited. At higher frequencies self-heating (presumably of the expo converter Q4) is the biggest issue, causing the frequency to drift up when tuned to high frequencies.Kassutronicshttp://www.blogger.com/profile/03895013450664527714noreply@blogger.com40tag:blogger.com,1999:blog-6853882698358836272.post-40680158326913832802018-06-06T09:54:00.002+03:002021-01-07T21:02:10.678+02:00VCO 3340<div style="clear: both; text-align: left;">
The CEM3340 VCO chip is one of the legendary chips designed by Doug Curtis that played an important role in the analog polysynths of the 1980s. By integrating a complete analog VCO on a chip, it made more compact and cost-effective synth designs possible.</div>
<div>
<div>
<br /></div>
<div>
Together with the classic analog polysynths themselves, the Curtis chips have long been out of production. In 2018 however, thanks to the new boom in analog synthesis, the 3340 VCO chip is once again available, from no less than three sources. Curtis' own company OnChip Systems re-issued the CEM3340 Rev. G, and cloned/compatible devices are available from CoolAudio (v3340) and from the Latvian company Alfa (AS3340).</div>
<div>
<br />
<a name='more'></a><br /></div>
<div>
The new availability of these chips triggered my interest in building a VCO around these chips. I chose to use the AS3340, which is the cheapest of the three options. The 3340 VCO is known for good tracking and temperature stability. It has the exponential converter and temperature compensation built in, which makes it very easy to build a decent VCO. For the module, I wanted to stick with that idea: an easy to build VCO with good stability and basic features. After a few revisions, the result looks like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkwOmk6eBjJR01S1udVGzKY8bRCykv-Ou-sQLvuaIZedWsm-kELhRn_U4LDcfORpFQ27gefRZC3xnLncQF4LoMEQAKZJWjXfa7TNoKm8KtkLtFRmNztTt4sPl0LbGsW2uD1y-W-KBl2S4/s1600/VCO3340Module.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="960" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkwOmk6eBjJR01S1udVGzKY8bRCykv-Ou-sQLvuaIZedWsm-kELhRn_U4LDcfORpFQ27gefRZC3xnLncQF4LoMEQAKZJWjXfa7TNoKm8KtkLtFRmNztTt4sPl0LbGsW2uD1y-W-KBl2S4/s400/VCO3340Module.jpg" width="238" /></a></div>
<br />
<h3>
Features</h3>
<br />
<ul>
<li>Pulse, Saw, Triangle and Sine outputs </li>
<li>Big frequency control + fine-tune control</li>
<li>PWM control, serves as attenuator for PWM input or as pulse width control when no PWM is connected </li>
<li>Exponential (V/Oct) and linear FM inputs</li>
<li>Switchable hard and soft sync</li>
<li>9mm pots, Thonkiconn jacks and all throughhole components on a single PCB </li>
<li>8hp Eurorack format</li>
</ul>
</div>
</div>
<br />
<h3>
About the design</h3>
<div>
<br /></div>
The 3340 chip is a triangle core oscillator, and in addition outputs saw and pulse wave forms, the latter with PWM. The waveform outputs levels are not standard eurorack levels and all different, so external scaling is needed to bring them to the standard 10Vpp.<br />
<br />
Since it is a triangle core oscillator, it is a great starting point for glitch-free sine waves. I added the same JFET-based triangle-to-sine converter that I <a href="https://kassu2000.blogspot.com/2016/02/vco-part-2-waveshaping.html">use in my other VCOs</a>.<br />
<br />
The 3340 chip has some unusual implementations of "hard" and "soft" synchronization. They give slightly different results, and the results also depend on the amplitude of the sync signal and whether it has positive, negative or both positive and negative transients. To keep the module simple, I decided to expose the sync inputs (switchable between hard and soft) directly via only an AC coupling capacitor. The user can experiment with different transients by feeding a saw, inverted saw or square/pulse wave to the sync input. The amplitude can also be tuned if desired with an external attenuator.<br />
<br />
The module has exponential and linear FM inputs, that can also best be used with external attenuators. For Pulse Width Modulation an attenuator is integrated into the module. If no PWM signal is plugged in, the PWM control simply sets the pulse width manually.<br />
<br />
<h3>
Build documentation</h3>
<div>
I offer the PCB for this module for sale. The build documentation below contains everything you need to know to complete a successful module. Please read it through carefully before starting, and especially check the notes in the Bill of Materials when ordering parts.</div>
<div>
<br /></div>
<div>
<ul>
<li>All documentation can be found on <a href="https://github.com/kassu/kassutronics/tree/master/documentation/VCO%203340">github</a>.</li>
</ul>
</div>
<br />
<h3>
Demos</h3>
<div>
Here is a short demo of the basic functions of the VCO. There is some clipping or other issue in the audio track, so it sounds grittier than in reality:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/5rmUaaMWEd8/0.jpg" src="https://www.youtube.com/embed/5rmUaaMWEd8?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div>
<br /></div>
<div>
Molten Music Technology has made a much nicer demo of the VCO 3340:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/WRmyfDsCgxE/0.jpg" src="https://www.youtube.com/embed/WRmyfDsCgxE?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div>
<br /></div>
<div>
He also has a <a href="https://www.youtube.com/watch?v=oYQ5qySH9NM">complete build video</a> of this module, based on the kit sold by <a href="https://www.infinitemachinery.com/">Infinite Machinery</a>.</div>
<div>
<br /></div>
<div>
<br /></div>
<br />
<br />
<br />Unknownnoreply@blogger.com74tag:blogger.com,1999:blog-6853882698358836272.post-15398977713029100782018-04-28T08:27:00.003+03:002021-01-07T21:01:49.087+02:00Precision attenuverter / mixerThe word <i>attenuverter</i>, a combination of attenuator and inverter, has become pretty standard in the modular synth world. The attenuverter does exactly what it's name suggests: it is a single control that can be used to attenuate and optionally invert a signal. Turn the control clockwise to get an attenuated version of the input signal, and counter-clockwise to get the inverted version. With the control at center position, the output is simply off.<br />
<div>
<br />
<a name='more'></a><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTbL7RbYA1MIck8S634yJPFDVK4jjlOO3qndLX-TMqXJo2qFbY6oRTeJ19E5kacnKMhl1XW-uMVX5puWtA71yKOXhlfqFdMVGndJFnnYfc7aBdKXVZAX602qwAyggMSqCK4A6hmVf7_ZQ/s1600/photo_11.JPG" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1551" data-original-width="807" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTbL7RbYA1MIck8S634yJPFDVK4jjlOO3qndLX-TMqXJo2qFbY6oRTeJ19E5kacnKMhl1XW-uMVX5puWtA71yKOXhlfqFdMVGndJFnnYfc7aBdKXVZAX602qwAyggMSqCK4A6hmVf7_ZQ/s640/photo_11.JPG" width="331" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Quad Attenuverter module, described in more detail at the end of this post</td></tr></tbody></table><div class="separator" style="clear: both; text-align: center;">
</div></div><div class="separator" style="clear: both; text-align: center;"><br /></div>
<div>
In it's basic form, the standard attenuverter circuit looks like this:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZp1tOAw0R_tpVV6CwcurkU4kYuaDaJwzdyTQAx4z88yOiGEd4MzEp_l8kncByUT7gAYR2Dozy91bvaCcz7QxHUGqYRjB4nfXS8puMYlraB79K0DTgEmCQky8pPud5pUWTAlPmKQV8gUE/s1600/Attenuverter-bare.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="239" data-original-width="669" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZp1tOAw0R_tpVV6CwcurkU4kYuaDaJwzdyTQAx4z88yOiGEd4MzEp_l8kncByUT7gAYR2Dozy91bvaCcz7QxHUGqYRjB4nfXS8puMYlraB79K0DTgEmCQky8pPud5pUWTAlPmKQV8gUE/s640/Attenuverter-bare.png" width="640" /></a></div>
<div>
<br /></div>
<div>
This is a clever little circuit. The opamp is configured with both inverting and non-inverting inputs, having the gain equation</div>
<div>
<br /></div>
<div style="text-align: center;">
<i>Vout = 2a Vin - Vin</i>,</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
where <i>a</i> is a number between 0 and 1 representing the potentiometer position. For <i>a</i> = 1 (fully CW), <i>Vout = Vin</i> and the circuit is just a voltage follower with some unused resitors (no current flows through either of the 100k resistors in this case). With <i>a = </i>0 (fully CCW), the opamp's + input is grounded and we have a simple inverting amplifier with a gain of -1. With <i>a = </i>0.5 (center position), the positive and negative gain cancel and <i>Vout</i> = 0.</div>
<div>
<br /></div>
<div>
Attenuverters are great for flexible modulation routing. However, it is this center position where they can be very annoying: it can be difficult to dial in a small amount of modulation. Turn it down too far, and you end up increasing it again on the inverting side.</div>
<div>
<br /></div>
<div>
The <i>precision attenuverter </i>is designed to help with this problem. By adding load resistors to the potentiometer, the response curve is made non-linear, increasing the sensitivity near the center. This idea is not new, but rather an extension of <a href="http://sound.whsites.net/project01.htm">a common technique</a> to create quasi-logarithmic behavior with linear potentiometers, and I wouldn't be surprised if others have also applied it to attenuverters.</div>
<div>
<br /></div>
<div>
The precision attenuverter circuit is as follows:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLc7MWGfnzGhCg7fB-iKgH4jEJeAUzF310RLUeA26dN8c7mvFEHuy8N4Ew7KJRjupIr8hpc71PA62oYgcUV4-UfiQmtGedKX-_Mvaicar6xcl-iMLqNA-mb9CvAjgnuCYCEp8hGEo95bU/s1600/Attenuverter.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="308" data-original-width="669" height="292" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLc7MWGfnzGhCg7fB-iKgH4jEJeAUzF310RLUeA26dN8c7mvFEHuy8N4Ew7KJRjupIr8hpc71PA62oYgcUV4-UfiQmtGedKX-_Mvaicar6xcl-iMLqNA-mb9CvAjgnuCYCEp8hGEo95bU/s640/Attenuverter.png" width="640" /></a></div>
<div>
<br /></div>
<div>
Note that the potentiometer itself still is a linear type. Depending on the choice of Rs, the response curve of the total circuit can be chosen more or less nonlinear, as shown in the graph below. I typicaly choose Rs = 47k, which gives about double the sensitivity in the center region compared to a linear attenuverter.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPoqEaVwZjsNdr3cjB2WQAuBESET8OMT0v1QAWBj2-GAetIQ0d-bTRO1SiLfEb2uq4zOEJvFdS7zRiTUzH4R9ijU7psoYbl7nXTBuFkNyAZO1R5KOQzo1UJVSNWQtYEmnUpRg658CjbLo/s1600/sensitivity.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="768" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPoqEaVwZjsNdr3cjB2WQAuBESET8OMT0v1QAWBj2-GAetIQ0d-bTRO1SiLfEb2uq4zOEJvFdS7zRiTUzH4R9ijU7psoYbl7nXTBuFkNyAZO1R5KOQzo1UJVSNWQtYEmnUpRg658CjbLo/s400/sensitivity.png" width="400" /></a></div>
<div>
<br /></div>
<h3>
Quad precision attenuverter and mixer</h3>
<div>
I designed a PCB in Eurorack format with 4 of these precision attenuverters and an integrated unity gain mixer. The attenuverters have individual outputs, and the mixer takes its inputs from the attenuverter output jacks normal switches. Hence, by default the Sum output contains the sum of all attenuverter outputs. However, if a cable is plugged to an individual attenuverter output, that attenuverter is removed from the mix. Finally, there is a unity-gain Aux input to combine for example mutliple mixing modules together.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2HBJlJdUmm4W9cbvUFFkD5XTEQ7eL_vzD-h70DmyIgHrh-5MsSyAlrTcmkWfyH6kL9Fx7aUZf9H2mjz5enQYucfVv1MdlGM2Fd3SGfwWCRm591d95Kr7qXLTZ-If0AJXvLL6VKDiZ5Xw/s1600/collage_11.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1368" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2HBJlJdUmm4W9cbvUFFkD5XTEQ7eL_vzD-h70DmyIgHrh-5MsSyAlrTcmkWfyH6kL9Fx7aUZf9H2mjz5enQYucfVv1MdlGM2Fd3SGfwWCRm591d95Kr7qXLTZ-If0AJXvLL6VKDiZ5Xw/s400/collage_11.png" width="341" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<br /></div>
<div>
This PCB is my first endevour in surface mount technology, with 0805 passives and SOIC opamps. Soldering the SMD parts is quick and easy, faster than filling a through-hole board once you get used to it. I included space for trimmer potentiometers, which are useful only if you use potentiometers with center detent to set the gain to exactly zero on center, but I did not mount these in my own modules.<br /><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
</div>
<div>
<b>Update August 2019:</b> PCB version 1.1 is now available. It now features a 5V reference voltage, which is normalled to the first input jack. Hence, the first knob can be used as an offset voltage if nothing is connected to it's input. If desired the other input jacks can be also be connected to the 5V reference with solder jumpers on the PCB. The front panel layout has not changed with this revision.<br />
<br />
<h3>
Build documentation</h3>
I offer the PCB for this module for sale. The build documentation below contains everything you need to know to complete a successful module. Please read it through carefully before starting, and especially check the notes in the Bill of Materials when ordering parts.<br />
<br />
<ul>
<li><a href="https://github.com/kassu/kassutronics/tree/master/documentation/Attenuverter">Build documentation (github)</a></li>
</ul>
</div>
Unknownnoreply@blogger.com19tag:blogger.com,1999:blog-6853882698358836272.post-52189961143344400882016-04-09T11:36:00.002+03:002020-10-08T17:24:59.626+03:00Slope generatorThe design of this module started of as a simple AD/AR envelope generator, but in the end it became a module strongly influenced by the classic Serge <i>voltage controlled slope</i> module, which is a voltage controlled slew limiter, as well as by a modern implementation, the Makenoise <i>Maths</i>. Anyway, this module is a voltage controlled slew limiter, ADSR envelope generator and LFO. The heart (the voltage control method) comes directly from the Serge design, but the surrounding logic circuitry is different.<br />
<div>
<a name='more'></a><b><br />Update October 2020: <a href="https://kassu2000.blogspot.com/2020/10/slope.html">a new improved version of this module is now available</a>!</b></div>
<div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyVoav1WHPNCbA6MvTSccVrJ6efhRMUCB18ekDf3Wl4bzZWMfTfJjkgmKRkEIUZskOlK_5AB_hU5OQWLtHoaxnEol4eSX6hawZmvM7YtL2iiACp63UD6RHxgRNuE50LfnRuNM1IGKTRh4/s1600/12938224_1044290245638389_7076797900559599806_n.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyVoav1WHPNCbA6MvTSccVrJ6efhRMUCB18ekDf3Wl4bzZWMfTfJjkgmKRkEIUZskOlK_5AB_hU5OQWLtHoaxnEol4eSX6hawZmvM7YtL2iiACp63UD6RHxgRNuE50LfnRuNM1IGKTRh4/s400/12938224_1044290245638389_7076797900559599806_n.jpg" width="336" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Slope module with wooden front panel</td></tr>
</tbody></table>
<h3>
What it does</h3>
</div>
<div>
This is a very versatile module. The central component in a slew limiter. Here is an example where a stepped voltage from a sequencer (not shown) was fed to the input, and at the output slowly glides from one level to the next:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRN8mNyHyRaHLakuqbnlP333TyxEv2W6Z7Ju1JLxwuGs14YmOcpxZ3vtLzyHPnNrHgaNeGk3toAZbzKKKrHLiODvZ3klHKPlRCcv1i-ukyzr0Vsf9VpYDvbvDuUgDnRKBSeNiWDxIVHa4/s1600/Slew.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRN8mNyHyRaHLakuqbnlP333TyxEv2W6Z7Ju1JLxwuGs14YmOcpxZ3vtLzyHPnNrHgaNeGk3toAZbzKKKrHLiODvZ3klHKPlRCcv1i-ukyzr0Vsf9VpYDvbvDuUgDnRKBSeNiWDxIVHa4/s320/Slew.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Example use as slew limiter</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
A common usage for this effect is to create glide or glissando on pitch CV. The slew limiter has separate controls for the <b>rise </b>time (slower in this example) and the <b>fall </b>time (faster in this example), and both can be controlled with CV.</div>
<div>
<br /></div>
<div>
The unit also has a gate input, which can be used to generate ADSR style envelopes:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPxz7QZkd95lcmGoS8Qc76Kuo-6G8kOK8sy_eiYjv2_iDTMwFOYaq-7BxovJ3ZMcjylDo4o0yOcZ9R-9MIqAQ-V9IkkQn87fmGgYPoXb-c7WjzmhT5IfAJ8JCQkNirny7hYMdD8Titnps/s1600/ADSR_Lin.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPxz7QZkd95lcmGoS8Qc76Kuo-6G8kOK8sy_eiYjv2_iDTMwFOYaq-7BxovJ3ZMcjylDo4o0yOcZ9R-9MIqAQ-V9IkkQn87fmGgYPoXb-c7WjzmhT5IfAJ8JCQkNirny7hYMdD8Titnps/s320/ADSR_Lin.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">ADSR envelope</td></tr>
</tbody></table>
<br />
When used as an envelope, the rise control sets the attack time, and the fall control sets both the decay and the release time, and there is <b>sustain</b> control that sets the sustain height. There are separate <b>shape </b>controls for both rise and fall, which can be used to create exponential shapes in two different ways:<br />
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif4NkRylrs1OETOqaTipgTLLhgWw5JumOxBSNJx8egz6Nx4jf7jwE9PcoWYvkSmvyOx-7Qj_kfOpfuHJWRH35dD5dx8taNWjgMMCu1biryEuvEkXCQZ0Y5mY-xBKgV57Nba0b2189zieg/s1600/ADSR_ExpLog.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif4NkRylrs1OETOqaTipgTLLhgWw5JumOxBSNJx8egz6Nx4jf7jwE9PcoWYvkSmvyOx-7Qj_kfOpfuHJWRH35dD5dx8taNWjgMMCu1biryEuvEkXCQZ0Y5mY-xBKgV57Nba0b2189zieg/s320/ADSR_ExpLog.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">"Exponential growth"</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO0Oz6SCKHmgtUkjaY3lu1l9V6kH6P6hbv6GeNoaf3Bkp35TujRMofjl81FlG9VL4a4exXJexAWk26gEhFiRXAdXPhHhyphenhyphenXOtXMElKs5WgUYv76IvRKV1aQpqUjTr4btSGrtPyF0-m5CgY/s1600/ADSR_LogExp.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO0Oz6SCKHmgtUkjaY3lu1l9V6kH6P6hbv6GeNoaf3Bkp35TujRMofjl81FlG9VL4a4exXJexAWk26gEhFiRXAdXPhHhyphenhyphenXOtXMElKs5WgUYv76IvRKV1aQpqUjTr4btSGrtPyF0-m5CgY/s320/ADSR_LogExp.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">"Exponential decay"</td></tr>
</tbody></table>
<div>
<br />
Finally, there is a <b>loop</b> switch, which turns the module into a kind of LFO. It can generate various waveforms, ranging from very slow (10s of seconds) to audio rate.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLsqLwFJjsCu65hH5FqiAwx4gXy7MlCUMq4ydmVApzrgtMxX48-MepYZYe8U0h_mCo77tQcUt5HrDN-zW0wBtkWQd5CTxUTPv_J2pCXcfFf_P4BkRG9Tsnx1hKoUxZj8J9AlMZVDgQ7ZU/s1600/Loop_linear.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLsqLwFJjsCu65hH5FqiAwx4gXy7MlCUMq4ydmVApzrgtMxX48-MepYZYe8U0h_mCo77tQcUt5HrDN-zW0wBtkWQd5CTxUTPv_J2pCXcfFf_P4BkRG9Tsnx1hKoUxZj8J9AlMZVDgQ7ZU/s320/Loop_linear.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Looping mode with linear ramps</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglyvn3J-DsIp_ICeDQhlBb12hOm2e5QelP1FPyX61xS13W4SvKKzWNm9sIYg2y-UCMnK9w_avAU8Gcp7cpfBacLgqoU-iPH74wSMXn6R1sBskGpEIcJsfdKeHNvC4g9Ad5tZtJ_blWLy0/s1600/Loop_funny.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglyvn3J-DsIp_ICeDQhlBb12hOm2e5QelP1FPyX61xS13W4SvKKzWNm9sIYg2y-UCMnK9w_avAU8Gcp7cpfBacLgqoU-iPH74wSMXn6R1sBskGpEIcJsfdKeHNvC4g9Ad5tZtJ_blWLy0/s320/Loop_funny.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Looping with different shape settings</td></tr>
</tbody></table>
<br />
In addition to the main intended modes (slew limiter, envelope and LFO), one can try to use the functions simultaneously, which usually produces some glitchy quirks.<br />
<br />
<h3>
How it works</h3>
<div>
Let me first introduce a basic slew limiter, with the following schematic:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR70T6qs5GqQLJskNzzpJQ7H4mE7j7LLxc9Hf131zNxduV1HczYl_48rckoA7zYuA7-F6i1CraGigfXKbzdbYlFOKC1q_61l-ELJq3CpZIrE0ihyphenhyphenSOHE3epFx_kwEg1S_DIvIJR5uW1vQ/s1600/SlewLimiterConcept.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR70T6qs5GqQLJskNzzpJQ7H4mE7j7LLxc9Hf131zNxduV1HczYl_48rckoA7zYuA7-F6i1CraGigfXKbzdbYlFOKC1q_61l-ELJq3CpZIrE0ihyphenhyphenSOHE3epFx_kwEg1S_DIvIJR5uW1vQ/s640/SlewLimiterConcept.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Basic slew limiter</td></tr>
</tbody></table>
<div>
<br /></div>
The slew limiter consists of two parts, an integrator and a comparator, which are combined in a feedback loop.<br />
<br />
The integrator consists of U1C and C1. Any current that comes in through R3, has to go through C1, because the opamp input does not take any current. But to make current go through C1, the voltage across it has to continuously decrease. Similarly, when a negative current goes through R3, the output has to increase. The output of U1C is the inverted sum of all current that has ever gone through R3.<br />
<br />
The comparator is U1B. It compares the + input with ground (the voltage at the - input). The + voltage is influenced by R2 and R1: it is the average of the <i>In </i>and the <i>Out </i>voltage (we use R1 = R2). If <i>In + Out > 0</i>, that is, <i>In</i> is larger than <i>-Out</i>, the comparator output goes to +12V. This makes a positive current go through R3, which makes <i>Out</i> decrease until <i>-Out =</i> <i>In.</i> Then the circuit stabilizes.<br />
<br />
In short, the whole circuit is an inverter, but the output only changes slowly due to the integrator. The time constant of the slew limiter is set by R3*C1, and can be changed by making R3 a variable resistor.<br />
<br />
<h4>
Adding voltage control</h4>
<div>
To make a <i>voltage controlled</i> slew limiter, we need some way to make a voltage controlled variable resistance in place of R3. There are several ways of doing this, but a very nice solution was introduced by Serge Tcherepnin back in the 70. The idea is to use long-tailed pairs (LTP), which I already talked about in the <a href="http://kassu2000.blogspot.fi/2015/10/vca.html">VCA article</a>. A very helpful explanation of this circuit can be found on <a href="http://www.timstinchcombe.co.uk/index.php?pge=vcs">Tim Stinchcombes</a> site.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP5EEY85EnhGECVV39SL4CQrpIaYIZbOt3mEkpVRjb8kbFIS6Q11qjVTAFUMAfAbV6nKNXROTXu-RS1PP63hPqkpn-FIamAekEPJ6dHCir0iByyw0h6t5qPVo8SeVOZPoSLrTIR1VE7TA/s1600/SlewLimiterVoltageControl.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP5EEY85EnhGECVV39SL4CQrpIaYIZbOt3mEkpVRjb8kbFIS6Q11qjVTAFUMAfAbV6nKNXROTXu-RS1PP63hPqkpn-FIamAekEPJ6dHCir0iByyw0h6t5qPVo8SeVOZPoSLrTIR1VE7TA/s640/SlewLimiterVoltageControl.png" width="640" /></a></div>
<br />
When the output of U1B is <i>negative</i> (the module <i>Out </i>is rising), the pair Q3+Q4 is active. Resistor R3 sets the total current (and thus the maximum slew rate). This current can be drawn either through Q4, in which case it goes to the integrator, or through Q3, which simply connects to ground. How the current is distributed between Q3 and Q4 is determined by the differential voltage (<i>Rise2</i> - <i>Rise1</i>), which give two points for voltage control.<br />
<br />
Similarly, when the output of U1B is <i>positive</i>, and <i>Out</i> is falling, the pair Q1+Q2 is active, giving voltage control over the falling slew rate.<br />
<br />
Finally, because the slew limiter inverts the signal, an extra inverting amplifier U1A has been put at the input. The total circuit now has a gain of 1.<br />
<br />
<h4>
Loop stability (update March 2019)</h4>
<div>
The basic slew limiter circuits shown above has stability issues at some settings, causing the output voltage of U1B to oscillate. While these oscillations are quite small at the final output, it is a good idea to fix them.</div>
<div>
<br /></div>
<div>
The slew limiter can be stabilized with a small resistance in series with the timing capacitor C1. This is shown as resistor R7 in the complete circuit below. The value of R7 can be adjusted if needed, in my tests 470 Ohm seemed to work well. Note that the output is tapped off between C1 and R7, such that the voltage drop over R7 does not affect the slew limiter output.<br />
<br /></div>
<h3>
Complete circuit</h3>
<div>
Below is the complete circuit of the module. In addition to the slew limiter part, there is gate processing and logic for the envelope mode, the loop function, and finally processing of the voltage control sigals.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsTcKsRnUtKBOJbAj77UFcuVMuA3QNjVlO3n1kEbPH7A5ZX364tLerI6dRXPqCknp5nKmARJ2vz3B-1NBpS0htyxFCSsOejVqTQ0UVMpBHPoF3hTtdjsYsiGPBHGUgqcEYgl7idiNigII/s1600/SlopePublish3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1290" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsTcKsRnUtKBOJbAj77UFcuVMuA3QNjVlO3n1kEbPH7A5ZX364tLerI6dRXPqCknp5nKmARJ2vz3B-1NBpS0htyxFCSsOejVqTQ0UVMpBHPoF3hTtdjsYsiGPBHGUgqcEYgl7idiNigII/s640/SlopePublish3.png" width="515" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<h4>
Envelope</h4>
<div>
The gate input is processed by a Schmitt trigger, Q5 + Q6 and surrounding components, which turns any input signal (at least ~ 1V) into a well-defined gate. This gate is turned into a short trigger pulse by C3/R17. </div>
</div>
<div>
<br /></div>
<div>
The envelope timing is controlled by U1D, which acts as a set/reset latch. The latch is "set" by the trigger pulse. This makes the output of U1D go negative, and this negative voltage is fed to the slew limiter, which then starts to ramp up the main output. Feedback resistor R11 keeps the latch "set" even when the trigger has ended. The slew output continues to rise, but when it reaches about 5V it "resets" the latch via R10 and D1. The slew limiter is now free to go downwards again, completing the Attack/Release envelope circuit. The Sustain function is created by feeding part of the gate signal to the slew input through R8.</div>
<div>
<br /></div>
<h4>
Loop function</h4>
<div>
The loop function is very simple: it switches in a positive feedback path R5 around U1B. This makes that the slew limiter wants to continue in the direction it is going. It continues until the output reaches about +5V or -5V, and the negative feedback via R1 becomes stronger than the positive feedback through R5. Then it flips around, and loops eternally in the +/-5V range.</div>
<div>
<br /></div>
<h4>
Control voltage processing</h4>
<div>
U2 forms four <i>attenuverter</i> circuits, that can attenuate as well as invert a CV signal with a single knob. U1A and U1C are for the rise and fall CV inputs, respectively, and these are scaled down and fed to the <i>Rise2</i> and <i>Fall2 </i>points in the slew limiter. U1B and U1D are for the <i>shape</i> controls. These work by feeding a portion of the output back to the voltage control points <i>Rise1</i> and <i>Fall1</i>, either directly or inverted. This creates, depending on the setting of the shape potentiometer, either exponentially growing or exponentially decaying outputs. Exponential decay is like the RC charging/discharging curve found in many traditional ADSRs (including <a href="http://kassu2000.blogspot.fi/2015/05/precision-adsr.html">mine</a>), while exponential growth gives signals that start off slowly, but then end with a fast spike. The manual settings for rise and fall time are also combined to the <i>Rise1</i> and <i>Fall1</i> points.</div>
<br />
<h4>
Other details and modification ideas</h4>
<br />
<ul>
<li>The frequency range can be adjusted by changing R3 and/or C1. Bigger values give slower response.</li>
<li>The output of U1B could be used as a basis for logic signals that indicate when the output is rising (U1B at -12V), falling (U1B at +12V) or in steady state (U1B at about 0V). Especially the falling option is easy to implement and useful: the module can then be a pulse delay and shaper, where rise time sets the delay and fall time sets the pulse length.</li>
<li>It would be useful to add an LED to indicate what the output is doing. A bicolor LED (two LEDs in one package) is most suitable, for example with an opamp driver circuit as shown in this LFO, or simply with a series resistor (value 2.2k - 10k depending on desired brightness) directly from <i>Raw out</i> to ground.</li>
</ul>
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1DmQOv7AsQXmkiHCC0rRnNDb58hU1-kavHwyVHaw2pSu1_lgAVIOYMkmocDSkzNpMwbscVsMoWnumtbKCfK8Fpdo86BIymlleGuK_TjYafqdHn9ZLZ2ryNsEtQfid35_pa17n8lp45uQ/s1600/12524221_1044290332305047_1719988479579642709_n.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1DmQOv7AsQXmkiHCC0rRnNDb58hU1-kavHwyVHaw2pSu1_lgAVIOYMkmocDSkzNpMwbscVsMoWnumtbKCfK8Fpdo86BIymlleGuK_TjYafqdHn9ZLZ2ryNsEtQfid35_pa17n8lp45uQ/s320/12524221_1044290332305047_1719988479579642709_n.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Built module on a prototyping PCB</td></tr>
</tbody></table>
</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6853882698358836272.post-56768974605870613112016-02-08T21:43:00.001+02:002016-04-11T22:14:51.133+03:00VCO part 2: waveshapingThis is the second part on my VCO module, following <a href="http://kassu2000.blogspot.fi/2015/12/vco-part-1-core.html">part 1 here</a>. This post shows the waveshaping to convert the saw-tooth output from the oscillator core to triangle, sine and square/pulse waves. The pulse and triangle wave circuits are taken almost directly from Yusynth, but the sine shaper is different. An alternative waveshaping circuit with suboscillator will follow in part 3.<br />
<br />
<a name='more'></a><h3>
Circuit diagram</h3>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHIxCL4vAFnajex10VevLK6RFYGLdmccTSRcHsQ22LTN4v16XRVth2vQIIzn215U8DWbGX111QO_lPcjPSRaQV5gfBhyFVuVUk-AuK2hHw3ZV2jk6135mAxfT8ra9-6BSenkx7SG4jqyU/s1600/VCO-Waveshaping-1-schematic-ai.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="488" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHIxCL4vAFnajex10VevLK6RFYGLdmccTSRcHsQ22LTN4v16XRVth2vQIIzn215U8DWbGX111QO_lPcjPSRaQV5gfBhyFVuVUk-AuK2hHw3ZV2jk6135mAxfT8ra9-6BSenkx7SG4jqyU/s640/VCO-Waveshaping-1-schematic-ai.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">(For personal use only)</td></tr>
</tbody></table>
<br /></div>
<div>
Here is the complete circuit diagram of the submodule. It's main input is Saw in from the VCO core, and it outputs pulse, triangle and sine waveforms. The green lines show the waveforms used to turn the sawtooth into a triangle wave. In addition a spare op-amp U2a is used as "attenuverter" to give bipolar control over the FM control voltage input. </div>
<div>
<br /></div>
<h4>
Pulse wave</h4>
<div>
To create a square/pulse wave with pulse-width modulation, only a comparator is needed, comparing the sawtooth wave to the pulse-width CV voltage. This is done by U1b. The CV voltage is created by U1a, which adds two inputs (typically a pulse width potentiometer and a PWM input) in inverting configuration. R3, R4 and R5 form a voltage divider, to scale the opamp output range (about +/- 10.5 V) to a bit less than +/- 5 V, which is the amplitude of the saw. It is a bit luxurious to use a separate summing opamp, but the advantage is that it nicely clips the CV signal. Note that R3 and R4 could be replaced by a single 150 kOhm resistor, but I did not have that at hand. Finally, the saw-tooth coming out of U1b is attenuated by R6, R7 and buffered by U2b. </div>
<div>
<br /></div>
<h4>
Triangle wave</h4>
<div>
The saw-to-triangle converter is a classic full-wave precision rectifier composed of U1c and U1d. U1c is a half-wave precision rectifier, acting as an inverter for the positive part of the input, and blocking the negative part. U1d then sums two times the inverted half-wave with one time the original sawtooth, creating a triangle. U1d also doubles the amplitude, and subtracts an offset (set by trimmer R18), such that the final saw-tooth output goes from +5V to -5V. I used 100k resistors (all 1%) in parallel and series to get 50k and 200k, respectively.</div>
<div>
<br /></div>
<div>
Of the few saw-to-triangle circuits I tried, this one worked by far the best, but it is not perfect and a small glitch is visible at one turning point of the triangle. The capacitor C3 forms a low-pass filter together with R15+R16, which helps to reduce the glitch. It has a very conservative cut-off frequency of 36 kHz, which is far above the audio range, but it still has some effect as the glitch propagates further in the circuit. C3 could be increased to 47 pF or 100 pF depending on taste.</div>
<div>
<br /></div>
<h4>
Sine wave</h4>
<div>
The triangle-to-sine shaper uses the same JFet distortion circuit discussed in <a href="http://kassu2000.blogspot.fi/2015/10/variable-waveshape-lfo.html">this LFO circuit</a>. R19 is used to adjust the amplitude, and thus the shape of the sine wave. U2c buffers (and inverts) the signal, and again forms a 36 kHz low pass filter to reduce the glitch in the triangle. The output of the JFet circuit is amplified (and again inverted) by U2d, to roughly +/-5V amplitude. The final amplitude depends on the JFet used, and it may be needed to adjust R26 accordingly. U2d also forms again a 36 kHz low pass filter, and the final sine output is almost glitch-free.</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
Panel connections</h3>
<div>
The diagram below shows the connections between the front panel and the two modules (this one and the <a href="http://kassu2000.blogspot.fi/2015/12/vco-part-1-core.html">VCO core</a>).</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjINduHrqE62vqM9DtasKnXHBaxSaDYdfn5mgHjzYa1ZEprVtGlep8cxWZdWKQRxBPshcG5Ox1kcRDwThT1Rirb3BMH0UkeOGuoK7MXkCfGTqSp_vb55lI9EcZAWpG5pdEuUNlj3j5Z03w/s1600/VCO-Waveshaping-1-connections%2527.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="368" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjINduHrqE62vqM9DtasKnXHBaxSaDYdfn5mgHjzYa1ZEprVtGlep8cxWZdWKQRxBPshcG5Ox1kcRDwThT1Rirb3BMH0UkeOGuoK7MXkCfGTqSp_vb55lI9EcZAWpG5pdEuUNlj3j5Z03w/s640/VCO-Waveshaping-1-connections%2527.png" width="640" /></a></div>
<div>
<br /></div>
<div>
I created a fairly compact panel layout (8 HP), using multiple functions on the knobs. The "PWM" knob sets the pulse-width when no input is connected, and attenuates the PWM input otherwise. A second PWM input is available, since there was a free spot on the panel. Similarly, the "FM" knob acts as attenuverter for the FM input (switched between linear or exponential), but acts as a fine tune when no FM input is connected. These double functions sacrifice a bit of functionality in favor of compact size, so this is a matter of taste (in fact, I used a more spacious layout for a second VCO).</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHlzuizgj3MvpnXKUAulCQvc1BW6qD9Xc2PlqC1PJp_5PA76NBtV4-6tiQySGqN-siCHT2p5zvaL7AaS0T1__49bxEShsnInAzRp-ZWCDpH8c3G1xsFlfi732Y5593eDzadLDOo_xXgXo/s1600/IMG_0958.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHlzuizgj3MvpnXKUAulCQvc1BW6qD9Xc2PlqC1PJp_5PA76NBtV4-6tiQySGqN-siCHT2p5zvaL7AaS0T1__49bxEShsnInAzRp-ZWCDpH8c3G1xsFlfi732Y5593eDzadLDOo_xXgXo/s320/IMG_0958.JPG" width="312" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Panel layout (right) and separate core (bottom left) and waveshaping (top left) boards.</td></tr>
</tbody></table>
<div>
<br /></div>
<h3>
Trimming procedure</h3>
<div>
There are 4 trimmers in total, two on each board. </div>
<div>
<br /></div>
<div>
The V/Oct trimmer (R11 on the core board) is independent of others. It is somewhat tricky to setup, I find the easiest is to use a keyboard/synth with CV out (or midi to CV converter), and listen to the VCO and the synth together, so one can tune by the beatnote. Best is to start with a rather high frequency, say 3 kHz. Here R11 should have almost no effect (check this). Tune the VCO with the frequency knob here, and then go to a few octaves lower, and tune again but now by adjusting R11. Iterating this a few times should get good tuning. Then check all octaves and make fine adjustments.</div>
<div>
<br /></div>
<div>
The waveshaping should be configured in order: </div>
<div>
<ol>
<li>First, set R23 on the core board to have a symmetric saw wave around 0V. Then look at or listen to the triangle wave, and adjust R23 to minimize the glitch. This can be done fine by ear, just try to cancel high frequencies as much as possible.</li>
<li>Next, adjust R18 on the waveshaping board to center the triangle output around 0V. If it was so far off that the triangle was clipping, go back to step 1 and adjust that again.</li>
<li>Finally, listen to the sine output, and adjust R19 and R18 iteratively until you get the best sine wave. This can be done again by ear, minimizing overtones, or with a spectrum analyzer program <a href="https://www.zeitnitz.eu/scope_en">such as this</a>, minimizing the total harmonic distortion (THD) measurement. I got values below 1%.</li>
<li>You might do another round of R23 (core board), R18, R19 to get even lower THD on the sine wave, but check that you like the triangle sound as well.</li>
</ol>
<div>
<br /></div>
<h3>
Waveforms</h3>
</div>
<div>
Below are the triangle and sine waveforms. They have quite small "glitching" on the top of the waveform. On this module I used C1 = 10pF, C2 = 10pF and omitted C3. However, I recommend using the values shown in the schematic above, as they will further reduce the glitch without affecting the audio signal. You can also see the sine wave has larger amplitude (vertical scale is about 2V/div on both plots), which I originally left as they sound with a similar perceived loudness. However, it would also make sense to reduce R27 to make the sine amplitude match the +/- 5V "standard" for eurorack VCOs (if you want exactly 5V, you have to adjust R27 for each module to compensate for the JFet tolerances).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4kcel8MSmpS0_BjZ0k7JBs5y6ax9-6aaF2JZOHNXpzznlbnbCvq2FwBQArLnNYICxpUCdDBshJ3X9rkJctIpSc1FdPQ253muuQ9AhX7qysN_zzdll0CnmRi7HT0T_kRkk41PTyFSuAHA/s1600/VCO1_trisine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4kcel8MSmpS0_BjZ0k7JBs5y6ax9-6aaF2JZOHNXpzznlbnbCvq2FwBQArLnNYICxpUCdDBshJ3X9rkJctIpSc1FdPQ253muuQ9AhX7qysN_zzdll0CnmRi7HT0T_kRkk41PTyFSuAHA/s400/VCO1_trisine.png" width="400" /></a></div>
<br />
The next figure is a spectrum of the sine wave. While it is not a perfect sine (especially in the logarithmic dB scale you see a lot of harmonics), it comes quite close for a waveshaping circuit. The second harmonic is more than 40 dB below the fundamental, which means its amplitude is more than 100 times smaller. The total harmonic distortion is 0.8%.<br />
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhavMkxmca8LYuf5Sv6MfYirA1-Q90AHRLavfrHwFllyS8DfV535CLZZI-QnLK2lydfLw6n8vhtVFF08jwtNzoJQ9D-eveLu_7l3mhJ2gaoN_fATKYM73eOITM8YEZuriaUizz3d6lcZzM/s1600/vco1_spec_sine081thd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="157" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhavMkxmca8LYuf5Sv6MfYirA1-Q90AHRLavfrHwFllyS8DfV535CLZZI-QnLK2lydfLw6n8vhtVFF08jwtNzoJQ9D-eveLu_7l3mhJ2gaoN_fATKYM73eOITM8YEZuriaUizz3d6lcZzM/s400/vco1_spec_sine081thd.png" width="400" /></a></div>
<br />
(The thick peaks around 4000 Hz and16000 Hz are extra noise in the measurement, unrelated to the VCO).</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6853882698358836272.post-59391651127100137932015-12-09T16:37:00.006+02:002021-01-07T20:59:15.711+02:00VCO part 1: coreA synth needs oscillators, and while it is fairly easy to make things oscillate, building a tunable and stable comes with some difficulties. First I was thinking not to go DIY at all for this, but I finally decided to build VCOs based on <a href="http://yusynth.net/Modular/EN/VCO/index.html">Yusynth's design</a>. Here I present the first part of the circuit: the 'core' oscillator taking V/Oct inputs, and producing sawtooth outputs.<br />
<br />
<a name='more'></a><br />
<br />
This sub-module contains the oscillator core, exponential converter with V/Oct inputs, and sawtooth outputs, so it is usable as a complete module on its own. Wave-shaping to produce other waveforms will be done on a separate board, and discussed in a separate article. Here, I first discus the most important parts of the circuit separately, and then give the full circuit. This article has a lot of detail, but you can skip ahead if you just want to see the circuit.<br />
<br />
<h3>
Oscillator core</h3>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi3hfTw2N-Oe3lAB6CqdRm7wcXk_YSX22o398No3iEcQcEzANcSC6IssYOidp4W6WLX03kNZyo_jXDVPBwZ9-2Op1JQIB7yP152MnXCAj_J9NIvj_cEyM2VRB5XKJQrgz_KwmXiUnMFoc/s1600/YUVCO-Core-2-core.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi3hfTw2N-Oe3lAB6CqdRm7wcXk_YSX22o398No3iEcQcEzANcSC6IssYOidp4W6WLX03kNZyo_jXDVPBwZ9-2Op1JQIB7yP152MnXCAj_J9NIvj_cEyM2VRB5XKJQrgz_KwmXiUnMFoc/s400/YUVCO-Core-2-core.png" width="400" /></a></div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
The oscillator core is a fairly standard sawtooth core, taken directly from Yusynth. It was a bit tricky for me to understand at first, so it deserves some explanation.</div>
<div>
<br /></div>
<div>
The basic idea is as follows. First we assume C1 is initially discharged. The voltage at C1 is buffered by U2c, such that the voltage at point A is initially 5V. The current source forces a current Ic through the capacitor, which means the capacitor must charge up and the voltage at A goes down linearly in time. U1 is a comparator, comparing voltage A with voltage B, the latter of which is 0V. When A goes below 0V, the comparator trips, and briefly activates Q1. Q1 is a JFet switch, that very quickly allows the capacitor to discharge, until A is at 5V again and the cycle starts over. The frequency is determined by the current Ic.</div>
<div>
<br /></div>
<div>
But how does the comparator circuit work in detail? To make this easier to understand, I have drawn what the waveforms at A,B, and C look like (schematically):<br />
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUw7gOiizg23iAmiNdCnv-gd1h4nQnckhyphenhyphenjiB8K5k8SUeK3AG6xvCj0WvvYJNyTo37Wb_U1yD_mCiUYeXUZA0_uAiTzJx4qf6_k9sn9GPclWErDICnoPDn4ajMcQbHKXy_bF8QpNY9BuQ/s1600/VCOWaveformsABC.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUw7gOiizg23iAmiNdCnv-gd1h4nQnckhyphenhyphenjiB8K5k8SUeK3AG6xvCj0WvvYJNyTo37Wb_U1yD_mCiUYeXUZA0_uAiTzJx4qf6_k9sn9GPclWErDICnoPDn4ajMcQbHKXy_bF8QpNY9BuQ/s640/VCOWaveformsABC.png" width="640" /></a></div>
<br /></div>
<div>
First, a bit about the JFet. A JFet conducts when the gate voltage (the arrow) is equal to either the source or drain voltage (most JFets are symmetric between source and drain). If the gate voltage goes negative to a certain 'Pinch-off' voltage (between -3V and -10V for J111), the JFet stops conducting.<br />
<br />
First, we look at the down-ramping phase at point A. During this time, A is positive, and B is at 0V. This means the comparator output is low (B < A), and the voltage at point C is pulled to -12V. This propagates through the diode, and is low enough for Q1 to be pinched off.<br />
<br />
Now, when the voltage at A reaches just below 0V, the comparator output flips to high. Voltage C jumps to +12V, but the diode and R2 clamp it to +5V at the Q1 gate. This makes Q1 conduct, and C1 quickly discharges, such that the voltage A goes back to 5V and the cycle starts over again.<br />
<br />
In this description one step is missing: Q1 has to be on long enough such that C1 can discharge completely. This is where C2 and R5 come in: they form a high-pass filter, creating positive feedback from output C back to B. This creates a positive spike at B, keeping the comparator on for a while (B > A). C2 and R5 are chosen such that the spike constant is as short as possible, while still allowing C1 to properly discharge (the discharge time is less than 1 us, and much shorter than drawn in the picture).<br />
<br />
<h3>
Current source</h3>
<div>
Now, we need a current source (or more accurately, current sink) that creates the current Ic. In order to have 1V/Oct tracking, the current Ic should be the exponential of the input control voltage. I use a standard arrangement, but it is worth explaining. For a much more detailed explanation and more circuit variations, see <a href="http://www.schmitzbits.de/expo_tutorial/index.html">this page by René Schmitz</a>. Here is the schematic for the current sink:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMcQ955cJt8m2QLrDRqmju5E632groNOxa8B6Q2a1M1LnpOYUhsEvpC3YBH3V5w0MOCqtzU5pON2BAhnZ-N7PwjCAx-u9EmAgu4Gn6DeLKuxZ37-ThFpM2Q9jCa-PJdJ6EacNo8YeLb9s/s1600/YUVCO-Core-2_expo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMcQ955cJt8m2QLrDRqmju5E632groNOxa8B6Q2a1M1LnpOYUhsEvpC3YBH3V5w0MOCqtzU5pON2BAhnZ-N7PwjCAx-u9EmAgu4Gn6DeLKuxZ37-ThFpM2Q9jCa-PJdJ6EacNo8YeLb9s/s400/YUVCO-Core-2_expo.png" width="400" /></a></div>
<div>
<br /></div>
<h4>
Exponential current sink</h4>
<div>
The current sink is drawn in the right half of the schematic. As already discussed in the article about <a href="http://kassu2000.blogspot.fi/2015/10/transistor-matching.html">transistor matching</a>, a simple transistor is an exponential voltage-to-current converter. The emitter current <i>I<sub>E</sub></i> is given by the equation</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="text-align: center;">
<br /></div>
<div style="margin-left: 1em; margin-right: 1em; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXILe9YfJP6VVBTd8rgt1pQbfBjepswBlPZZPBCP0rRF7WDMshSCLyCQgW0A74nk0FfkUd_7qO6-WJrKZ5U_DpspYzg8YvGJiGKb9v-eRmwGhT5D65zMJ17SwIZ1ZxoPv7L8Uch_9fBLs/s1600/eq_expo_ebersmoll.png" style="margin-left: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXILe9YfJP6VVBTd8rgt1pQbfBjepswBlPZZPBCP0rRF7WDMshSCLyCQgW0A74nk0FfkUd_7qO6-WJrKZ5U_DpspYzg8YvGJiGKb9v-eRmwGhT5D65zMJ17SwIZ1ZxoPv7L8Uch_9fBLs/s1600/eq_expo_ebersmoll.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXILe9YfJP6VVBTd8rgt1pQbfBjepswBlPZZPBCP0rRF7WDMshSCLyCQgW0A74nk0FfkUd_7qO6-WJrKZ5U_DpspYzg8YvGJiGKb9v-eRmwGhT5D65zMJ17SwIZ1ZxoPv7L8Uch_9fBLs/s400/eq_expo_ebersmoll.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
where <i>V<sub>BE</sub></i> is the base-emitter voltage,<i> I<sub>S</sub></i> is the saturation current, and </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="clear: both; text-align: left;">
is the thermal voltage. The approximation holds for <i>I<sub>E</sub></i> >> <i>I<sub>S</sub></i>. The collector current Ic (which is the 'output' of this subcircuit) is practically equal to the emitter current. The problem is that this function has a strong temperature dependence, directly via <i>V<sub>T</sub></i> and indirectly through<i> I<sub>S</sub></i>, which changes strongly with temperature. To cancel the temperature dependence of <i> I<sub>S</sub></i>, a matched pair Q2, Q3 is used in a current mirror configuration. To understand this, first assume Vb1 = Vb2 = 0V. Because the emitters of Q2 and Q3 are tied toegether, this means they both have equal <i>V<sub>BE</sub></i> and, if they are at the same temperature, equal emitter currents. Now, the opamp U2a is configured as a voltage-to-current converter, forcing the current Iref defined by R1 (5V over 1MOhm gives 5 uA) through Q2. The current mirror action makes the same current go through Q3, giving an output current of 5 uA independent of temperature.</div>
<div style="clear: both; text-align: left;">
Of course we want to change the output current with a voltage, which can now be done by making Vb1 and Vb2 unequal. The output current is given by</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR9ol0lrJ3s7viPZB2FKOyBfPhqbSpU_F-pFgBKxXw4POR_wuyGh59QRfaI913Yw4k0GRGAM9giAkHCtjM86zu5E2g94CrrNTmU69E2IwbxnizJsnSeDzB97CO2rD4X8lrkf6tPhvilfY/s1600/eq_expo_Ic.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR9ol0lrJ3s7viPZB2FKOyBfPhqbSpU_F-pFgBKxXw4POR_wuyGh59QRfaI913Yw4k0GRGAM9giAkHCtjM86zu5E2g94CrrNTmU69E2IwbxnizJsnSeDzB97CO2rD4X8lrkf6tPhvilfY/s400/eq_expo_Ic.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="clear: both; text-align: left;">
We feed the control voltage to Vb1 (and keep Vb2 at 0V). Using <i>V<sub>T </sub></i>= 25 mV (at room temperature), this equation works out to -17.3 mV per octave, meaning that every time we lower Vb1 by 17.3 mV, Ic doubles.<br />
<br />
This equation is of course only an approximation. For very small currents, the -1 neglected previously plays a role, but that is of no practical importance because <i>I<sub>S</sub></i> is typically very small. More importantly, for large currents the exponential breaks down, and Ic is limited by the effective internal resistance of the transistor. This is usually dealt with using some sort of 'high frequency trim' (see René Schimtz' page), but I found I can get very satisfactory results by simply using small currents only, feeding in a negative CV offset for low frequencies.<br />
<br />
Finally, to use a 1V/octave control voltage, we need to make a voltage divider with a ratio of 0.0173 (and an inverter, but that will follow later). However, here the second temperature dependence comes into play...</div>
<h4 style="clear: both; text-align: left;">
Resistor divider and tempco</h4>
<div>
The temperature dependence of <i>V<sub>T</sub></i> is less severe than that of <i>I<sub>S</sub></i>, but it is a nasty one as it affects the V/octave tracking rather than a tuning offset. <i>V<sub>T</sub></i> scales with the absolute temperature <i>T </i>(in Kelvin),</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeJW-axCaxwj5_Ec3vLB6ZpAWdC-5RqjGKxBIAaz52mwO77Gzq1O0EQLWAEqFEANOJVKDR3-XDkrmaWtB18u2jZ-g0em72X1bHbr-LxndzyOvybh5B_fQE_niki88ESFSfNvO_Q5U6EsU/s1600/transistoreq_vt.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeJW-axCaxwj5_Ec3vLB6ZpAWdC-5RqjGKxBIAaz52mwO77Gzq1O0EQLWAEqFEANOJVKDR3-XDkrmaWtB18u2jZ-g0em72X1bHbr-LxndzyOvybh5B_fQE_niki88ESFSfNvO_Q5U6EsU/s400/transistoreq_vt.png" /></a></div>
<div>
<br /></div>
<div>
where <i>k<sub>B</sub></i> is Boltzmann constant and <i>q</i> is the electron charge. The standard way to compensate for this, is to make a voltage divider with a special <i>tempco </i>resistor, whose resistance also changes linear with absolute temperature. These are a bit harder to get, though, and I used a standard NTC (negative temperature coefficient) resistor in stead. The circuit is given on René Schmitz' page, but I adjusted the values a bit to get a good match for my resistor. I used a Vishay 4.7k NTC resistor, which has detailed equations for the temperature dependence in the datasheet. The voltage divider shown above gives the following output ratio (blue line):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqw-xtBZARPc1Dvlw5KAE_sWXwnUY0eTBiyKi_qPkVA4T980JKoYiPzfK1VKnsBH90DKKQntGvmOvp4QTeLCegVdUqAJNUtCMKVDiozkkMeYnlWtorDWvf_n9jUr6xyu_hs_WzvwxxP08/s1600/NTCTempCoPlot.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqw-xtBZARPc1Dvlw5KAE_sWXwnUY0eTBiyKi_qPkVA4T980JKoYiPzfK1VKnsBH90DKKQntGvmOvp4QTeLCegVdUqAJNUtCMKVDiozkkMeYnlWtorDWvf_n9jUr6xyu_hs_WzvwxxP08/s320/NTCTempCoPlot.png" width="320" /></a></div>
</div>
<div>
The yellow line is the ideal voltage divider ratio. For temperatures from about 15-40 degrees C the match is very close, which is good enough for me.<br />
<br /></div>
<div>
<h3>
Complete circuit</h3>
</div>
<div>
Below is the complete circuit diagram for the VCO core, and some notes about the circuit:<br />
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho9JVVVl5GaOwmiMB1CeIjJT7SX89yDVzTThs0NXhx2yrwOh1vFiRG7BzlKFCSWS-4GXAEuJQlOPQwGr32aqvLsf6vHKs-qa6ksMu_w7YatTdm_gYxTD_43RQNvkSU-oeftrkBUoK1V1E/s1600/YUVCO-Core-2-full.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho9JVVVl5GaOwmiMB1CeIjJT7SX89yDVzTThs0NXhx2yrwOh1vFiRG7BzlKFCSWS-4GXAEuJQlOPQwGr32aqvLsf6vHKs-qa6ksMu_w7YatTdm_gYxTD_43RQNvkSU-oeftrkBUoK1V1E/s640/YUVCO-Core-2-full.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">VCO Core (for personal use only)</td></tr>
</tbody></table>
</div>
<div>
<br />
<h4>
Supply voltage rejection</h4>
<div>
It's important that the VCO frequency doesn't change when there is noise or changes of the power supply. I used an LM336/5 zener diode (D2) to generate a stable 5V reference. This reference is used for all things that determine the frequency:</div>
<div>
<ul>
<li>Iref (set by R1)</li>
<li>The saw amplitude (C1 resets to Vref and ramps down to 0V)</li>
<li>The CV input summer U2b, as well as the course and fine tuning pots (not shown in the diagram).</li>
</ul>
<div>
The last one deserves an extra note. U2b sums the CV inputs, and inverts them to provide -1V/octave to the tempco divider. To get a good tuning range, some negative CV offset is needed, but instead of tying one leg of the tuning pot to -12V (which would make it sensitive to supply fluctuations), the tuning pot(s) are connected only to the 5V reference (and ground), and a part of the 5V reference is added to U2b's <i>positive</i> input. This seemed a good idea, but later I realized the downside: the negative input of U2b is now regulated to 2.5V, and the VCO frequency changes when plugging in a CV cable carrying 0V. The best solution would be to create a -5V reference (for example with an inverting opamp), and use that as tuning offset.</div>
</div>
<div>
<br /></div>
<div>
Apart from the supply voltage, there is also a chance the "ground" potential may fluctuate when something is drawing current. I noticed this with the VCO on the breadboard - drawing current on one side of the board can easily change the ground rail by 10 mV, and inside the exponential converter, that is more than half an octave! Therefore, take care to create low-impedance ground paths, especially the points marked with * in the schematic.</div>
</div>
<div>
<br />
<i>Note: </i>In general, a good precaution for any VCO is to connect the power lead as close as possible to the power supply regulators, or even connect current-hungry modules (or ones with problematic blinking leds) on a separate bus board from the VCOs.<br />
<br />
<h4>
Other parts</h4>
</div>
<div>
In addition to the exponential frequency CV, a linear FM input is added. This input simply changes Iref (U2a sums the linear FM with the voltage over R1).</div>
</div>
<div>
<br /></div>
<div>
I added hard and soft sync inputs as Yusynth has them. They seem to work, but I have to experiment with the sync more to see if it needs any changes. The hard sync changes the comparator level (point B in the first figure), and a high input voltage will even stop the VCO completely. The soft sync lets the VCO operate as normal, but on sharp rising edges in the sync input it resets the VCO. Note that the hard and soft sync should not be connected at the same time (best to use a switch).<br />
<br />
U2d inverts the output, amplifies and shifts it (with trimpot R23) from 0-5V to +/-5V. Two outputs are drawn, one (with series resistor) to connect to the output jack, and the other that will be used for the wave-shaping circuit. The power and ground lines are also connected through to the wave shaping circuit (not shown).<br />
<br />
<h4>
Components</h4>
<div>
All components are standard ones, but a few notes:</div>
<div>
<ul>
<li>C1 should ideally have a low temperature coefficient. Yves Usson specifies silver mica, but they are hard to get and probably overkill. I used C0G (or NP0) ceramic, which are specified at max +/- 25 ppm/degree C. A polypropylene cap is also still acceptable, with a temperature coefficient of 200 ppm/degree C. In any case, temperature dependence is still probably dominated by the exponential converter.</li>
<li>For best tracking with multiple V/octave inputs, R17, R18 and R19 should be hand-matched to 0.1% or so (but I didn't myself bother).</li>
<li>The tempco resistor R10 is a <a href="http://www.vishay.com/docs/29049/ntcle100.pdf">Vishay NTCLE100E3472JB0</a> 4.7k NTC resistor. Probably any 4.7k NTC can be used, but it's best compare the temperature coefficients in the datasheet.</li>
</ul>
</div>
<br />
<h3>
Built circuit</h3>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-k8x1QHnax3Lm7zeFEx_0ssuzt9B97SSncrzmIDwgGb3dnY2VNN01I1Gle92wgI2UAkSZfUK3Pb5MwJwYJf0J6Qwt6nVLlMQ-Uyzno_98ZtAemwGKsMyfUUhDop4lx8yOvYMC4lpCbTg/s1600/IMG_0958.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-k8x1QHnax3Lm7zeFEx_0ssuzt9B97SSncrzmIDwgGb3dnY2VNN01I1Gle92wgI2UAkSZfUK3Pb5MwJwYJf0J6Qwt6nVLlMQ-Uyzno_98ZtAemwGKsMyfUUhDop4lx8yOvYMC4lpCbTg/s320/IMG_0958.JPG" width="312" /></a></div>
<br /></div>
I built two VCO cores, each on a small prototype board (<a href="http://www.tme.eu/en/details/pc-4/universal-pcbs/sci/">this type</a>). The lower board in the picture is the VCO core, the upper board contains wave shaping for pulse, triangle and sine waves (more on that later).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinyqxgbJYMEqNe7efaXUP4NunEM6GCyoqJ6bDw3TCGEA-2vQkWm_h01-ynjcCxzyCD-RUcAutyKUexts9mVi3Ong3uXgLlpJTQVtWS8TbWYPhDtHkFmPzyr0JnJFE_lJ72jzBWm_CsEDg/s1600/VCO2_saw.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="208" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinyqxgbJYMEqNe7efaXUP4NunEM6GCyoqJ6bDw3TCGEA-2vQkWm_h01-ynjcCxzyCD-RUcAutyKUexts9mVi3Ong3uXgLlpJTQVtWS8TbWYPhDtHkFmPzyr0JnJFE_lJ72jzBWm_CsEDg/s320/VCO2_saw.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Saw output waveform</td></tr>
</tbody></table>
<br />
Performance of the module is good. It tracks 1V/oct from 50Hz up to several kHz. At higher frequency it is a bit too low, a high frequency trim could be added if that is a concern. The saw has a very sharp edge. The potential tuning range (but not 1V/oct tracking) extends from sub-audio (I tried down to about 1 Hz, it might go lower for LFO use) to supersonic frequencies (>40 kHz).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj04qTx9BQrK3Fz2oWXG10PyxfGaFzUBn-okQL7OnHcacbGmB7c1xyZfqvkDoOhxoEgHqJpGgGUS7YI59UyhRimR4cVZZur_0ACSEyzXxm1UAMzmhp0yakrxhdT46OVvuQsS8C8lopsR2w/s1600/vco2_sawspec.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj04qTx9BQrK3Fz2oWXG10PyxfGaFzUBn-okQL7OnHcacbGmB7c1xyZfqvkDoOhxoEgHqJpGgGUS7YI59UyhRimR4cVZZur_0ACSEyzXxm1UAMzmhp0yakrxhdT46OVvuQsS8C8lopsR2w/s400/vco2_sawspec.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Spectrum of saw waveform</td></tr>
</tbody></table>
Here is a spectrum of the saw output, recorded with a cheap sound card and <a href="https://www.zeitnitz.eu/scope_en">this program</a>. The sound card is so cheap that it doesn't have anti-alias filtering, and frequencies above 22050 Hz 'fold back'. In the spectrum you can see this folding effect even a second time again at 0 Hz, which is caused by frequencies above 44100 Hz. The smallest harmonics at the right are thus actually above 60 kHz.</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6853882698358836272.post-2873079457283862732015-10-20T15:17:00.001+03:002021-01-07T21:05:35.506+02:00Discrete VCAThis is a very simple Voltage controlled amplifier (VCA) module, using a classic differential amplifier. The design comes from <a href="http://yusynth.net/Modular/EN/VCA/index.html">Yusynth</a>, and I implemented it without significant changes. However, it was a good example to learn about transistor amplifiers, and I write down what I learned below.<br />
<br />
<br />
<a name='more'></a><br />
<h3>
Long-tailed pair</h3>
<div>
Below is a schematic of a basic <i>long-tailed pair </i>differential amplifier, which is the heart of the VCA circuit. A good complete description can be found on the <a href="https://wiki.analog.com/university/courses/electronics/text/chapter-12">Analog Devices Wiki</a>, but here I try to give a basic understanding of the function.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMBGILmBw-lK-Y2omHpqrGpnLruZqjn9knlr61d8EdBzyf-fJi383yAg4PJVamt6ktK3nOwbps_gTS998csltHxYYQ8NnO2WxeD000pxvoz2gtRW80S0Q3sg-5TVSzjOHPAls03mSY3VI/s1600/VCAIntro.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMBGILmBw-lK-Y2omHpqrGpnLruZqjn9knlr61d8EdBzyf-fJi383yAg4PJVamt6ktK3nOwbps_gTS998csltHxYYQ8NnO2WxeD000pxvoz2gtRW80S0Q3sg-5TVSzjOHPAls03mSY3VI/s320/VCAIntro.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Basic differential amplifier</td></tr>
</tbody></table>
<br />
The amplifier consists of 2 identical transistors, Q1 and Q2, with their emitters connected together and their collectors connected to the positive supply via resistors R1 and R2, which we also assume to be identical. The common base connection is fed by a current source which forces a total current <i>I</i> through the amplifier. Being a differential amplifier, it (ideally) doesn't care about the actual input voltages <i>V<sub>in1</sub></i> and<i> </i><i>V<sub>in2</sub></i>, but only about their difference <i>v<sub>in</sub></i><i> = </i><i>V<sub>in2</sub></i><i> - </i><i>V<sub>in1</sub></i>. We are also only interested in the differential output voltage, <i>v<sub>out</sub></i> = <i>V<sub>out2</sub></i> - <i>V<sub>out1</sub></i>.<br />
<div>
<br /></div>
<div>
First consider the case when <i>v<sub>in</sub></i> = 0 V, so <i>V<sub>in1</sub></i> = <i>V<sub>in2</sub></i>. The circuit is completely symmetric, so half of the current <i>I</i> goes through Q1 and half through Q2. The currents through R1 and R2 are equal, and thus <i>V<sub>out2</sub></i> = <i>V<sub>out1</sub></i> and <i>v<sub>out</sub></i> = 0 V.</div>
<div>
<br /></div>
<div>
Now if we increase <i>V<sub>in1</sub></i>, transistor Q1 is turned on a bit more, so the current can more easily flow through Q1 than through Q2. As a result, more current flows through R1, so <i>V<sub>out1</sub></i><i> </i>goes down (at the same time, less current flows through R2 and <i>V<sub>out2</sub></i> goes up). This makes <i>v<sub>out</sub></i> now negative, so our amplifier is inverting.</div>
<div>
<br /></div>
<div>
One is usually interested in the <i>small-signal gain</i>, which is the gain for a small values of <i>v<sub>in</sub></i>. It can be calculated from the transistor equation I wrote in the <a href="http://kassu2000.blogspot.fi/2015/10/transistor-matching.html">transistor matching</a> post using linear approximation, but here I only give the result (see also the Analog Devices article for a calculation, but it skips the first steps):</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiumVzGs1LqI2QdN7Rvs0cyr30pP6UyN7COOgTjN68H6AKOZaMbkfXSQbyp96YOI9pKmIeI5xFw_oZo95hm6dHRR9L7tUjnGNjMRR8s0Sr-sy1j6WUOqqa87GGQBNrV1KP__AqWSJ_ntFs/s1600/longtailedpairdiffgain.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiumVzGs1LqI2QdN7Rvs0cyr30pP6UyN7COOgTjN68H6AKOZaMbkfXSQbyp96YOI9pKmIeI5xFw_oZo95hm6dHRR9L7tUjnGNjMRR8s0Sr-sy1j6WUOqqa87GGQBNrV1KP__AqWSJ_ntFs/s1600/longtailedpairdiffgain.png" /></a></div>
<div>
<br /></div>
<div>
where <i>R</i> = <i>R1 = R2</i>, <i>I </i>is the current through the current source and <i>V<sub>T</sub></i> is the thermal voltage, 25 mV at room temperature. The important feature is that the gain scales with <i>I</i>, so we can make a VCA if we have a voltage controlled current source.</div>
<div>
<br /></div>
<div>
The small-signal gain equation is valid when <i>v<sub>in</sub></i><i> </i>is much smaller than 2<i>V<sub>T</sub></i>. For larger input signals the amplifier saturates. Here is a simulation of the output voltages as function of<i> </i><i>v<sub>in</sub></i>. Note how <i>V<sub>out1</sub></i> and <i>V<sub>out2</sub></i> are each others opposite, reflecting the symmetry of the circuit. The linear input range is a few 10s of millivolts, as expected. The simulated small-signal gain is 190, close to the expected value of 200.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5riVQpJ6Cw7O50Tw0FbuZQWQpbo-R4QTRVxD0e8oL0XkpfzvDCzWDjf7idMeaVPdK7WLVlPse94y2XGjoj6i6F7v-PThY_o1b6398KpjyDsgZZBHQAfuOkRQuclp66z4kNeX53crtqsM/s1600/VCAIntro_I1mA_R10k_G190.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5riVQpJ6Cw7O50Tw0FbuZQWQpbo-R4QTRVxD0e8oL0XkpfzvDCzWDjf7idMeaVPdK7WLVlPse94y2XGjoj6i6F7v-PThY_o1b6398KpjyDsgZZBHQAfuOkRQuclp66z4kNeX53crtqsM/s400/VCAIntro_I1mA_R10k_G190.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Simulated long-tailed pair with R1 = R2 = 10kOhm and I = 1 mA.</td></tr>
</tbody></table>
<div>
<br />
<h3>
Complete VCA</h3>
<div>
On to the actual VCA circuit, which is shown below. I built it as extra feature onto a Moog VCF module (which will be covered in a future blog post), using two spare opamps on a TL074. For a single VCA a TL072 could be used in stead.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJZwlF2RxUcGGUFJcKytJBTJJB4hfHJ_ZIViRhgvNrp37DRr0sPtjof_G1riVVW5ounJkvqu2tMFV4i5AU302i_CL7KNevV9A9i8LaaSuuX2ssMRzTnY6HwLdYAC9MljNPrNwGUQfESI/s1600/YuVCASimplified_FixInversion.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="578" data-original-width="1247" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJZwlF2RxUcGGUFJcKytJBTJJB4hfHJ_ZIViRhgvNrp37DRr0sPtjof_G1riVVW5ounJkvqu2tMFV4i5AU302i_CL7KNevV9A9i8LaaSuuX2ssMRzTnY6HwLdYAC9MljNPrNwGUQfESI/s640/YuVCASimplified_FixInversion.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Complete VCA circuit</td></tr>
</tbody></table>
<br />To keep the amplifier in its linear range, the input signal is divided by a facor 220 by R21 and R22. This was chosen (by ear) to amplify a +/-5V signal without much distortion. The output of the long-tailed pair is processed by an opamp differential amplifier (U1b), which turns the differential output voltage in a normal single output. It also has a gain of 22 to restore the signal to its original level.</div>
<div>
<br /></div>
<div>
To control the gain, a simple resistor (R3) is used as a current source. Current (and thus gain) is set by the voltage at the emitter of Q3. Q3 itself is set up as a voltage follower; the emitter voltage is always about 0.6 V below the base voltage, which is in turn set by the inverting summing amplifier U1a, which combines a CV input and potentiometer setting. If I calculated correctly, the complete circuit has a gain of 1 with about 2 V of CV input. The trimmer potentiometer R18 should be adjusted to make the output just silent when the gain is turned down. </div>
<div>
<br /></div>
For best results (best power supply noise rejection), Q1 and Q2 should be a <a href="http://kassu2000.blogspot.fi/2015/10/transistor-matching.html">matched pair</a>. The trimmer R14 can be used to get rid of any DC offset voltage, making transistor matching a bit less critical.<br />
<br />
Compared to Yusynth's original, I left out the input summing amplifier, input level pot and LED. Some resistor values are changed - notably I reduced the signal level in the differential pair (changed R21, R6 and R7). These values worked for me to process a 5V-peak signal without too much distortion, but it is worth to play with the values.</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6853882698358836272.post-35970693856225159892015-10-18T20:53:00.000+03:002017-04-13T13:26:17.285+03:00Variable waveshape LFOThis is a fairly simple LFO circuit, whose wave shape can be smoothly varied between downward ramp, triangle and upward ramp. In addition, a square/pulse wave and a sine wave output are given.<br />
<br />
<a name='more'></a><h3>
Original circuit</h3>
<div>
Below is a basic and common triangle oscillator circuit, consisting of an integrator (U1a, R1, C1) and a Schmitt trigger (U1b, R2, R3).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX9Lblw5hvBkGIj5xQaj6U-DB3OfUNnLg0Qg2At1ezRIhSk644fVAApg9rqpLCPtOglpWPX7Jx5Zag5DpH5ObK3xp_VgZIQ3KAHwBzrK6C6LV6ajcOnfziI6t8sr6iEWzjN9GH7JEWWPk/s1600/VariableShapeLFO-Intro.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX9Lblw5hvBkGIj5xQaj6U-DB3OfUNnLg0Qg2At1ezRIhSk644fVAApg9rqpLCPtOglpWPX7Jx5Zag5DpH5ObK3xp_VgZIQ3KAHwBzrK6C6LV6ajcOnfziI6t8sr6iEWzjN9GH7JEWWPk/s400/VariableShapeLFO-Intro.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Triangle oscillator</td></tr>
</tbody></table>
<br />
It works as follows:<br />
<ul>
<li>Assume U1b's output is high (the positive rail, <i>V<sub>supply</sub></i>). This makes a current flow through R1 and C1. Charge build-up in C1 means output of U1a must decrease linearly in time.</li>
<li>When the output of U1a goes below about -<i>V<sub>supply</sub></i>/2, the + input of U1b goes below ground and the output of U1b switches to negative (-<i>V<sub>supply</sub></i>).</li>
<li>The current reverses, and the voltage at U1b output starts to increase again until it reaches +<i>V<sub>supply</sub></i>/2.</li>
<li>U1b goes high again, and the cycle repeats.</li>
</ul>
<div>
The oscillation period is determined by R1*C1 (times some constant, <a href="http://www.sdiy.org/colbecklabs/circuits/triangle_oscillator.html">see here</a> for the formulas)</div>
<div>
<br /></div>
<h3>
Variable waveshape version</h3>
</div>
<div>
The basic idea is to use a different value of R1 for charging and for discharging, so that the up ramp and down ramp have different periods. One can use two resistors (or pots), and diodes to force the current for each ramp through the right resistor. However, it would be nicer to have independent control of shape and frequency. Here is the solution I ended up with (note: it turns out that Ken Stone uses the same idea <a href="http://cgs.synth.net/modules/cgs58_lfo.html">here</a>)</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicRxGVDvaJ1y7DhCnmpR9UAaGNHMlmBC1nOnx4X0gwbGtfpId22QrFe9CNAXbLbX7RsU5gI5mYj8HRJgklGtaRCnCLZefIdqxiqMYfVGxeFAMRwNlabEn0_3wBz6gktDNYMtz2dB70sJM/s1600/VariableShapeLFO-Core.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="409" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicRxGVDvaJ1y7DhCnmpR9UAaGNHMlmBC1nOnx4X0gwbGtfpId22QrFe9CNAXbLbX7RsU5gI5mYj8HRJgklGtaRCnCLZefIdqxiqMYfVGxeFAMRwNlabEn0_3wBz6gktDNYMtz2dB70sJM/s640/VariableShapeLFO-Core.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Variable waveshape LFO core</td></tr>
</tbody></table>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
R1 is replaced by a potentiometer (plus a small offset R5), where each half is fed by a diode. One diode conducts in the up ramp, and one in the down ramp. The total cycle time stays constant independent of shape. Frequency is controlled by R2, which reduces the output voltage of U1b and thereby the charging/discharging current.<br />
<br />
The diodes are actually implemented as precision rectifiers: U1c and U1d compensate the 0.6 V voltage drop of the diodes. This gives the oscillator a very wide frequency range: with the component values as shown, it goes up to about 40 Hz, and at the slowest setting one oscillation takes 10s of seconds. In addition, the opamps buffer the output of R2, which keeps sharp edges on the ramp setting even at low frequency.<br />
<br />
R5 is intended to limit the current a bit more than the opamp drive capability, to reduce frequency change when setting R1 to one of its extreme settings. But the value of R5 is a compromise, and can be adjusted or even omitted.<br />
<br />
The frequency range can be changed as desired by changing the value of C1 and/or R1.<br />
<br />
<h3>
Sine-wave converter</h3>
<div>
I wanted to try out a classic and very simple triangle-to-sine conversion circuit based on a JFET transistor, and it worked so well I kept it in this LFO. More info and references can be found on <a href="http://www.timstinchcombe.co.uk/index.php?pge=trisin">this page</a>. The basic circuit has a nice symmetry:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjtaB76-qKLx7B0XJHn1vbxdQGNKVgDOYLfIeoHqZAeNs8u8swoJCCcH8uRKIeLoDQ3YqDXUvDJQshCOPDuWoUplTrOmv0N0DDyb1QL1emsy0-idHx2jOP2kgJdygx5XXU1lZbWIgNMwc/s1600/TriToSin-JFet.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="223" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjtaB76-qKLx7B0XJHn1vbxdQGNKVgDOYLfIeoHqZAeNs8u8swoJCCcH8uRKIeLoDQ3YqDXUvDJQshCOPDuWoUplTrOmv0N0DDyb1QL1emsy0-idHx2jOP2kgJdygx5XXU1lZbWIgNMwc/s400/TriToSin-JFet.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Triangle-to-sine conversion</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
The JFET is in this case always forward-biased, contrary to their normal usage. Depending on the polarity of the input, D3 or D4 limits the JFETs gate voltage. Saturation of the JFET then gives the triangle-to-sine conversion. The input level needs to be adjusted carefully to get the right amount of saturation, but it gives a very nice sine wave, reaching less then 1% total harmonic distortion (THD) in my circuit.</div>
<div>
<br /></div>
<div>
It seems almost any JFET will work to give good sine waves, but the input voltage and current levels where it works vary wildly between models (and even between each one, but usually they are tested to fall in a certain range). JFETs are not too easy to get as they are rarely used in modern electronics, which is also the biggest downside of this circuit. From the options I had, J201 seemed reasonable, with a zero-gate-voltage resistance of about 2 kOhm. This sets the scale for R14 and R15, and thereby the total voltage and current needs. The optimal input amplitude was about 1.1 V for my circuit. A positive surprise was that the J201 worked much better in this application than I had expected from simulations.</div>
<div>
<br /></div>
<h3>
Complete circuit</h3>
<div>
Below is the complete circuit. In addition to the parts discussed above, it contains input level scaling (R9 trimpot), input buffering (U2b) and output buffering and level restoration (U2c) for the sine wave converter. A bi-color LED (L1, L2) is added to visually show the triangle output, using U2a as bi-directional current driver.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN4FKNTbzjQ22lo_51ZeXzod5pdr-FxM6yHTHtwyu9Pq60aWcNBy-JCO2mjaP284mqgsYF9I7yfsM1iQzGe2x0Wt7Fu0lOHB8J5D5nLd6GKnP7UAM75W7_nlIxhPKN9YWLHXabMV2gDks/s1600/VariableShapeLFO+%25282%2529.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN4FKNTbzjQ22lo_51ZeXzod5pdr-FxM6yHTHtwyu9Pq60aWcNBy-JCO2mjaP284mqgsYF9I7yfsM1iQzGe2x0Wt7Fu0lOHB8J5D5nLd6GKnP7UAM75W7_nlIxhPKN9YWLHXabMV2gDks/s640/VariableShapeLFO+%25282%2529.png" width="594" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Variable waveshape LFO (for personal use only)</td></tr>
</tbody></table>
</div>
<div>
The triangle and sine wave have about 5 V amplitude, the square wave goes full swing of the opamp, about 10.5 V.</div>
<div>
<br /></div>
<h3>
Results</h3>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJV1CVWBNxmrqPrfdnQWAWdeW-svKr-brSgrTG2__IiWG7aEJuMrsK9r3_De3ElYgLAAQzMUs0htHlPvDqZA8rulfaMyUsuSP-1KUbfVeG0LF5botKKTgA-YGC_953ANYzK9_lnEOtGf0/s1600/IMG_0935.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJV1CVWBNxmrqPrfdnQWAWdeW-svKr-brSgrTG2__IiWG7aEJuMrsK9r3_De3ElYgLAAQzMUs0htHlPvDqZA8rulfaMyUsuSP-1KUbfVeG0LF5botKKTgA-YGC_953ANYzK9_lnEOtGf0/s320/IMG_0935.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The circuit built on a small protoboard</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
Here is a plot of the triangle and sine wave shape (Shape pot centered) at the fastest setting. In this case, the sine wave had a THD of 0.9%. The non-linearity of the triangle wave is because I recorded the trace through a sound card (using <a href="https://www.zeitnitz.eu/scope_en">this program</a>).</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvl0Uu3aiYgCT3EKrtqduJvf0pUcrUUvBRR9kLP4KrXhAvVywfvHi-FI858-_vDmS1dOd9QxWEzkHm7MNz0qsvLNi8bCZTq2b7yCQ6W8l8ohofAXvs6V736kIGXtxRGH89L_Z1DBJ7qBE/s1600/lfo_tri_sin_thd1p.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvl0Uu3aiYgCT3EKrtqduJvf0pUcrUUvBRR9kLP4KrXhAvVywfvHi-FI858-_vDmS1dOd9QxWEzkHm7MNz0qsvLNi8bCZTq2b7yCQ6W8l8ohofAXvs6V736kIGXtxRGH89L_Z1DBJ7qBE/s400/lfo_tri_sin_thd1p.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Triangle (red) and sine (green) wave </td></tr>
</tbody></table>
<div>
<br /></div>
<div>
And here is a recording of the ramp wave (Shape pot maximal). The sine output also gives an interesting shape in this case.</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Wtxt4m9d7qbKVe4-3fhP9sM36aNAxzROM6x7djneCrcOaF-3l9AxfgQWkuiB-9GJIbfpQ67ElTFa_wQlRGu7ecy9l5KTUf_-LEh4gLEpotz7tTB0qbuS8TPClL8KOzutZlQzj2ApCys/s1600/ramp_to_sin_j201_1k.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Wtxt4m9d7qbKVe4-3fhP9sM36aNAxzROM6x7djneCrcOaF-3l9AxfgQWkuiB-9GJIbfpQ67ElTFa_wQlRGu7ecy9l5KTUf_-LEh4gLEpotz7tTB0qbuS8TPClL8KOzutZlQzj2ApCys/s400/ramp_to_sin_j201_1k.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Up ramp (green) and half sinusoid (red)</td></tr>
</tbody></table>
<br />
<h3>
Limitations and ideas</h3>
<div>
<ul>
<li>The edges of the ramp are fast enough for most uses, but at extremely slow settings the edges are a few ms long. Enough to hear for example in a frequency ramp. This could perhaps be improved by using opamps with larger drive capability for U1c/U1d.</li>
<li>Frequency changes a bit (up to about 10%) with changing the shape. The reason might be that the supply voltages are not exactly symmetric in my system. </li>
<li>Frequency will change directly with supply voltage in general. If you care about this a lot, it might be easier to go for ramp/saw style oscillators that use only a single reference voltage, and use a precision voltage reference to define it.</li>
</ul>
</div>
</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6853882698358836272.post-12562081569142257222015-10-12T18:14:00.005+03:002019-02-12T14:50:20.900+02:00Transistor matchingMany common synth circuit require 'matched pairs' of transistors, often for differential amplifiers. Examples of these will follow in later posts, but first here are some notes of how to get these matched pairs.<br />
<br />
<a name='more'></a><br />
<h3>
What is transistor matching and why</h3>
<div>
Let's start with a bit of theory, taking an NPN transistor as example (but feel free to skip this part).</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqhcw3sV65vc6YaWUd2hcjLA3LRABDL4a_VjD5GAX7AAy6lWO3YpJjKBLxEaNJy1JTfxw288D3abS1eB74BT-DJQltI2e3ag0P-c8MlavqhFSfQCfmqI7MKVaGc4pZ3062lq1E2QcVbSg/s1600/npn.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqhcw3sV65vc6YaWUd2hcjLA3LRABDL4a_VjD5GAX7AAy6lWO3YpJjKBLxEaNJy1JTfxw288D3abS1eB74BT-DJQltI2e3ag0P-c8MlavqhFSfQCfmqI7MKVaGc4pZ3062lq1E2QcVbSg/s1600/npn.png" /></a></div>
<br />
<br /></div>
<div>
In the active region (<i>V<sub>C</sub></i> > <i>V<sub>B</sub></i> > <i>V<sub>E</sub></i>) the emitter current <i>I<sub>E</sub></i> is described by the equation (Ebers-Moll model):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzAYkv23tUgpM6OvoU1OaAHl_YjT9mteOxsX8rMyREyyY6A2VPgwG3FWtLr2XaHEklMyZ_e49s4SuEWtBCmjSDP_WWYt59T6lYRfbJK9gpCnWWf5YP1DvfcmRMtud9EHhd3FrPcqwu8Z0/s1600/transistoreq.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzAYkv23tUgpM6OvoU1OaAHl_YjT9mteOxsX8rMyREyyY6A2VPgwG3FWtLr2XaHEklMyZ_e49s4SuEWtBCmjSDP_WWYt59T6lYRfbJK9gpCnWWf5YP1DvfcmRMtud9EHhd3FrPcqwu8Z0/s1600/transistoreq.png" /></a></div>
<br />
where <i>I<sub>S</sub></i> is the <i>saturation current</i>, <i>V<sub>BE</sub></i><i> = </i><i>V<sub>B</sub></i> - <i>V<sub>E</sub></i> is the base-emitter voltage, and <i>V<sub>T</sub></i> is the thermal voltage defined by the absolute temperature <i>T</i> (in Kelvin)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi58VeSdEAE_jU-vqdwMcMbj0P_hv_Y43hGi5YBLaUseGmHkuoR5u7SPSCOLYRSp5bXGrsFvmC3RVdYyTgEQoFGDN-B4C1bA0goBWhNgsYMoLqFpiECPmf7vMG8y7XByBieUqtg5iXRZhk/s1600/transistoreq_vt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi58VeSdEAE_jU-vqdwMcMbj0P_hv_Y43hGi5YBLaUseGmHkuoR5u7SPSCOLYRSp5bXGrsFvmC3RVdYyTgEQoFGDN-B4C1bA0goBWhNgsYMoLqFpiECPmf7vMG8y7XByBieUqtg5iXRZhk/s1600/transistoreq_vt.png" /></a></div>
<br />
or about 25 mV at room temperature.<br />
<br />
That is a lot of info, but the main point is that the current passing through the transistor (note that the emitter current is almost equal to the collector current for a high-gain transistor) depends on the base-emitter voltage, and the parameter <i>I<sub>S</sub></i>. This parameter depends on the details of how the transistor is made, and can be different from one transistor to the next (it also changes with temperature).<br />
<br />
When making a differential amplifier, the linearity (and offset voltage) of the amplifier relies on both transistors having the same voltage-to-current characteristic, and so having the same <i>I<sub>S</sub></i>. So, the goal is to find a pair transistors with (nearly) equal <i>I<sub>S</sub></i>.<br />
<br />
<h3>
How to measure <i>I<sub>S</sub></i></h3>
</div>
<div>
We cannot measure <i>I<sub>S</sub></i> directly, but instead we can pass a known current <i>I<sub>E</sub></i> through the transistor, and measure the voltage <i>V<sub>BE</sub></i>. Assuming the temperature does not change, matching <i>V<sub>BE</sub></i> is then the same as matching <i>I<sub>S</sub></i> directly. The traditional solution is to build an accurate current source, use an accurate multimeter to measure <i>V<sub>BE</sub></i>, and try to stabilize the temperature in the test setup.</div>
<div>
<br /></div>
<div>
A much better way was presented by Ian Fritz in <a href="https://web.archive.org/web/20151002134800if_/http://home.comcast.net/~ijfritz/MiscProj/transmat001.pdf">this article</a>. The article gives a detailed description, but the basic idea is to directly measure the <i>difference </i>between two transistors directly, operated with the same power supply. This greatly reduces the required accuracy of the current source, as well as the required temperature stability. However, <i>relative</i> temperature between the two transistors is still critical.</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDnd_6PRgQYGMmyb062m-0pXUZJtEqNNlHFbEsxvwlSPjPQzB1WEI6hoPNnSKMY5YgqAoSZEqiW0qswvAB1wgDfSmfkcY8tieNmjeRoLjqvIs-mZWLp_IQCswt-b2bs7q_0109ku2Ipks/s1600/TransistorMatchingFixDiode.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="358" data-original-width="325" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDnd_6PRgQYGMmyb062m-0pXUZJtEqNNlHFbEsxvwlSPjPQzB1WEI6hoPNnSKMY5YgqAoSZEqiW0qswvAB1wgDfSmfkcY8tieNmjeRoLjqvIs-mZWLp_IQCswt-b2bs7q_0109ku2Ipks/s320/TransistorMatchingFixDiode.png" width="290" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Transistor matching circuit by Ian Fritz</td></tr>
</tbody></table>
<br /></div>
<div>
I reproduced the circuit here for clarity, but all credit and copyright goes to Ian Fritz. Rref and D1 act like a simple voltage regulator, setting <i>V<sub>C</sub></i> to a fixed value (about 0.6 V). R1 and R2 determine the currents of the transistors. It is a good idea to match R1 and R2 (measure a bunch of resistors with a multimeter and pick the best pair) to ensure equal emitter currents. We measure the differential voltage between the emitter terminals with a multimeter (set to the most sensitive setting, preferably microvolts). Because the transistor base terminals are connected together, the measurement is the difference in <i>V<sub>BE</sub></i> of Q1 and Q2. If the multimeter reads 0 V, we know the transistors are matched!</div>
<div>
<br /></div>
<div>
If you are familiar with differential amplifiers, there is actually a more intuitive way to explain this circuit. This circuit is simply a differential amplifier with 0 V differential input (both inputs are grounded). If the (differential) output is also 0 V, it means you have a good match.</div>
<div>
<br /></div>
<div>
Ian Fritz uses this technique to find a match to within 50 microvolts, but for basic differential amplifiers we don't care that much; some sources give 2 mV as a requirement. In stead of trying all possible pairs until you find a match, it is much easier to define one transistor to be your reference transistor, and leave it always in place as Q1. Then put all other transistors in as Q2 one by one, and record the voltage. You will typically find values of about 1 or 2 mV. Then, from the recorded values you can pick good matched pairs.</div>
<div>
<br /></div>
<h3>
My setup and findings</h3>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLLWjWDWN7Af8jDG2XD-r1kmc_TDc2lNP9yao98PS_7E_8iKPV9KSx1uZyOp03EWu3R5fmGJgxf9tzmbXXDDBWA5pzBgVImJc5bhH_N9Gf5PuTZ8XqHYLQSmjJ2_QQcMkZDRoDQMrP190/s1600/IMG_0462.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLLWjWDWN7Af8jDG2XD-r1kmc_TDc2lNP9yao98PS_7E_8iKPV9KSx1uZyOp03EWu3R5fmGJgxf9tzmbXXDDBWA5pzBgVImJc5bhH_N9Gf5PuTZ8XqHYLQSmjJ2_QQcMkZDRoDQMrP190/s320/IMG_0462.JPG" width="239" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My transistor matching setup</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
I built the circuit on a breadboard, using two 9V batteries as power supply, and a batch of 25 BC547C transistors. It is immediately clear that temperature stability is key, and just touching a transistor will easily give 10mV difference or more. So you have to put in a transistor, and wait until Q1 and Q2 are again at equal temperature (wait until the reading stabilizes). To speed up the waiting, I put a small fan next to the setup. Ideally you would avoid touching the transistors, but getting them in place with tweezers is annoying. I tried wearing gloves to reduces thermal contact, but it hardly helped and was cumbersome. So, a few minutes of waiting for each transistor is needed. After a while, you get something like this, where the numbers are measured in mV:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYlDByJpWGQJCPwMl1J1fh6u5eHpXl4AN3C6TsL49VlA_roYYp94E5YDohIMSlZ-y-4yR1fqrMjxok6gdw7tUyrkZR14irCVl7nxlsvtZU5z86yplakYyo32Q_e-OppiPcvPW1vDKKEHk/s1600/IMG_0463.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYlDByJpWGQJCPwMl1J1fh6u5eHpXl4AN3C6TsL49VlA_roYYp94E5YDohIMSlZ-y-4yR1fqrMjxok6gdw7tUyrkZR14irCVl7nxlsvtZU5z86yplakYyo32Q_e-OppiPcvPW1vDKKEHk/s320/IMG_0463.JPG" width="210" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Measured transistors with their measured <i style="font-size: medium; text-align: start;">V<sub>BE</sub></i><span style="font-size: 12.8px;"> </span><br />
<span style="font-size: 12.8px;">(in mV) relative to the 'reference transistor'</span></td></tr>
</tbody></table>
<div>
<br /></div>
<div>
The good news is that this technique is extremely simple, and the batch was still tested within an hour. Most transistors were actually very closely matched (owing to modern fabrication facilities, it was probably a lot worse back in the 60's), and I could sort almost all of them into pairs that are matched to within 0.1 or 0.2 mV.</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6853882698358836272.post-9572210555853813282015-10-11T23:43:00.001+03:002018-07-06T12:17:58.283+03:00Spring reverbI had been considering before to make a DIY spring reverb, but to construct springs and transducers seemed too much hassle. Proper reverb tanks are a bit hard to get, but when I found that Schneiders Laden sells the small <a href="http://www.schneidersladen.de/en/intellijel-springray-small-tank-2010.html">Accutronics AMC2BF3</a> reverb tank for the very reasonable price of €12.90, I could not resist.<br />
<br />
<a name='more'></a><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX-Zo52xGGOGBdVRXRa2Sa-PsdIXZOaYdSJbjsaDgh07UB1YRHwtmhXvhgix6meXfrd5Gaj18MgmfdBOczJeft5xX8-7CzAuRwoOwAOlTIC_yMHjVwuAJJnLGtqL4EHyk0hCZ2FUlHJXk/s1600/IMG_0924.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="" border="0" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX-Zo52xGGOGBdVRXRa2Sa-PsdIXZOaYdSJbjsaDgh07UB1YRHwtmhXvhgix6meXfrd5Gaj18MgmfdBOczJeft5xX8-7CzAuRwoOwAOlTIC_yMHjVwuAJJnLGtqL4EHyk0hCZ2FUlHJXk/s320/IMG_0924.JPG" title="" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Accutronics AMC2BF3 spring reverb tank</td></tr>
</tbody></table>
<br />
All that remained was to make a driver and pickup amplifier circuit - how hard could that be? Well, turns out it is not completely trivial, but this is my best throw at it so far and I am not unhappy with the results (though there are some issues, see the end of the article).<br />
<br />
A good resource on the topic is found at <a href="http://sound.whsites.net/articles/reverb.htm">Elliot Sound Products</a>, and the circuit described here is largely based on that page. But, lazy as I am, I also ignored a lot of the advice and simplified the design a bit.<br />
<br />
First things first, here is a picture of the inside of reverb tank. The input coil on the lefts transduces the electrical signal to vibrations in the strings, which are attached to little magnets. The sound waves travel through the metal, with many reflections. On the right, the output coil picks up the resulting movement, which can sound like echoes of the original input.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl4Eq9LxaqPRbJw8YJix29d2B5_dvu1Ic-JQcp6Hm3J7ZLHT_zjET_PpyO9oFk2W7oRQsICL3gHF4aGK6Jk5mXFQTbUQThp2dtzwikG16SvBUXU30d03c-B6y3cMvCwbqaj4uQqafr_P0/s1600/IMG_0923.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="129" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl4Eq9LxaqPRbJw8YJix29d2B5_dvu1Ic-JQcp6Hm3J7ZLHT_zjET_PpyO9oFk2W7oRQsICL3gHF4aGK6Jk5mXFQTbUQThp2dtzwikG16SvBUXU30d03c-B6y3cMvCwbqaj4uQqafr_P0/s320/IMG_0923.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The innards</td></tr>
</tbody></table>
<br />
The basic strategy is to drive the input hard, because the transfer efficiency between the coils and springs is quite low. Then on the output, a sensitive amplifier with high gain is needed to restore the signal to its original level.<br />
<h3>
The circuit</h3>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij9foBhshl7QDyW3hhqd85roSQRYQ0DG8l64ZRyBFOnwAgwwCUVQNiUV5zXbDl5WVmNX1BxlrJsw0MrXchKUrMfKYNcHHpqUBbKaMjvsBeu_w6nhjZ7iLSVUVoA8VLDK4pMXRuq0uPeaE/s1600/Spring-Reverb+%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij9foBhshl7QDyW3hhqd85roSQRYQ0DG8l64ZRyBFOnwAgwwCUVQNiUV5zXbDl5WVmNX1BxlrJsw0MrXchKUrMfKYNcHHpqUBbKaMjvsBeu_w6nhjZ7iLSVUVoA8VLDK4pMXRuq0uPeaE/s640/Spring-Reverb+%25281%2529.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Here is the circuit as I built it. For simplicity, it is built around a single TL074 quad opamp package. The first amplifier (U1a) is an inverting summer, adding two inputs together. The second input is normalled to the output connection, creating a feedback path. The signal is then high-pass filtered by C6/R10 with a cutoff frequency of 340 Hz. It's worth to play with these values to try out different tones. Low frequencies are said to cause rumble, but that is not necessarily a bad thing. Some filtering is needed though, to avoid DC offsets.<br />
<br />
The second amplifier (U1b) drivers the spring reverb. The ESP pages suggest that a typical opamp does not give enough current to properly drive a reverb tank, and the TL074 has actually very limited output current, but I found this circuit can easily drive it to audible levels (you hear the sound in the springs), and I decided that that should be enough.<br />
<br />
A bit more detail on that: when driving the tank one has to take voltage and current into account. My tank has a nominal impedance of 150 Ohm at 1 kHz, which means a 10 V drive at 10 kHz gives 7 mA current, about what is recommended by Accutronics (and also pretty much the limit of the TL074). But the reverb is essentially a coil, so impedance depends linearly on frequency. At 100 Hz it requires only about 1 V to drive 7 mA (a bit more because of DC resistance), but at 10 kHz it would take 100 V, which we obviously won't get from our 12 V power supply. So, at the very least we cannot drive the tank as recommended, and probably we will get some serious distortion. However, the spring washes out the sound completely, hiding the distortion.<br />
<br />
Back to the circuit. U1b acts as a voltage-to-current converter, with R9 setting the ratio. C4 and C5 form again a high-pass filter (cutoff frequency 330 Hz), such that no DC current can flow through the coil. R8 reduces the gain at high frequency, where the coil impedance is high. All these values were found with experimentation, and in retrospect hardly make any sense, so I recommend to experiment. In theory, R9 should be higher to reduce overall gain, and R8 should be lower to reduce high-frequency gain where the opamp will clip. In practice this worked for me, and one can always reduce the input level if gain is too high.<br />
<br />
The pickup (recovery) amplifier is also based on the ESP page. U1c is a non-inverting amplifier, with a gain of 45 set by R3/R2. C2/C3 reduce the gain to 1 for DC, such that the offset error of the opamp is not amplified. C1 and R1 are designed to improve high-frequency response, and should be adjusted for sound (or omitted completely).<br />
<br />
While this amplifier works well in general, the high gain makes it sensitive to pick up noise. The reverb tank comes with a twisted-pair wire, which I found does not provide enough shielding. The wire and amplifier are very good at picking up 50-Hz related and high-frequency noise. I improved the situation a lot by replacing the twisted pair wire with a piece of coaxial cable; in addition the wire connection and feedback elements should be as close to the opamp input as possible and never far away from a ground wire/trace. Noise is still an issue; I added C7 to damp high frequencies. Alternatively, one can adjust (increase or remove) R1 and C1, but I found it is a trade-off between clarity in the sound and noise rejection.<br />
<br />
Finally, the signal is mixed on the wet/dry potentiometer and inverted again by U1d. The output is normalled to the second input jack to create a feedback loop; the sound of this is not spectacular but it is an easy addition.<br />
<h3>
Results</h3>
Here is a sound example, and I think it is fair to say it sounds like reverb. For more percussive sounds (not in this demo) it gives metallic 'ploink' sounds, even with quite low input level. Finally, when knocking the tank or touching the springs, all kinds of craziness comes out...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe frameborder="no" height="166" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/203588585&color=ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false" width="100%"></iframe>
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
I built the module in my usual style - on a small prototype board and with a 'temporary' front panel out of cardboard.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCRj3ToqKVB5M6V-xpKo5Znwhs_dQ1Mla8kJpaofuNoEsihmej5meD73fm-3q1hZ8jxIfUNTwJp1pEtGZD3_xxuHDga3JP0wZ02ZfMeCPm82fZuTTpuc8VwgIA-dqUd5bWJL9dzUfXxSE/s1600/IMG_0927.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCRj3ToqKVB5M6V-xpKo5Znwhs_dQ1Mla8kJpaofuNoEsihmej5meD73fm-3q1hZ8jxIfUNTwJp1pEtGZD3_xxuHDga3JP0wZ02ZfMeCPm82fZuTTpuc8VwgIA-dqUd5bWJL9dzUfXxSE/s320/IMG_0927.JPG" width="209" /></a></div>
<h3>
Suggestions</h3>
<div>
I am quite happy with the result, but improvements are possible. It is probably worth to try using an NE5532 opamp in stead of U1b and U1c. For the driver, it suits because it can deliver larger currents; for the pickup amplifier it may allow for lower noise (I doubt one can hear a difference on that, though).</div>
<div>
<br /></div>
<div>
The feedback path is not optimal, as it includes the wet/dry pot, so one is feeding back the dry signal aswell. However, the feedback behavior doesn't change dramatically when using only the wet setting.</div>
<div>
<br /></div>
<div>
The main issue with this remains noise pickup from external sources. It may be worth to try more shielding, perhaps even the entire tank (wrapping in grounded aluminium foil for example), and/or modify the pickup amplifier design.</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6853882698358836272.post-41095991300418480712015-05-30T22:19:00.004+03:002022-01-13T08:08:36.599+02:00Precision ADSRThis is a modified version of Yves Usson's <a href="http://yusynth.net/Modular/index_en.html">Yusynth</a> <a href="http://yusynth.net/Modular/EN/ADSR/index_new.html">ADSR envelope generator</a>, which is in turn based on an 1980 <a href="http://yusynth.net/archives/Electronics/J-Jacky-ADSR-1980.pdf">article</a> by Jonathan Jacky and similar to the design published by <a href="http://www.schmitzbits.de/adsr.html">René Schmitz</a>. The design is based around a 7555 timer (a CMOS version of the classic 555) to provide the logic, and three diodes to guide the charging (attack) and discharging (decay, release) currents of the timing capacitor through different potentiometers.<br />
<br />
<a name='more'></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPx3qUhPRfzicQXrNCsAZJsgBR_TkNS_s7phsCLZfm6tkKFNyBz9-Yg651qvH2p4Q1MSn0SVcmufxyK_5nHNYziDiDeikdSaAMCIiyx6h4DYsyrb4snHpo4WCXEp5IvbVb10RIlTpt3_c/s1600/IMG_0633.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPx3qUhPRfzicQXrNCsAZJsgBR_TkNS_s7phsCLZfm6tkKFNyBz9-Yg651qvH2p4Q1MSn0SVcmufxyK_5nHNYziDiDeikdSaAMCIiyx6h4DYsyrb4snHpo4WCXEp5IvbVb10RIlTpt3_c/s320/IMG_0633.JPG" width="239" /></a></div>
<h3>
Design modifications</h3>
<div>
(Getting technical now, read ahead first if you want to see how the circuit works).</div>
<div>
<br /></div>
I first built up Yusynths version on a breadboard, and while it worked in general I had some issues with the diode forward voltages. For example during the release phase, the output voltage decays quickly (as set by the Release potentiometer) to roughly 0.7V, the diode forward voltage ('diode drop'). Taking a simple diode model, the diode would now stop conducting and the output would stay at 0.7V, which is not ideal but would be manageable. In reality, however, the diode still conducts albeit with much lower current. The result is that the output very slowly decays, reaching 0V only after 10s of seconds. The samey issue occurs during the decay phase. All this can be quite annoying, for example when modulating the pitch of an oscillator with the ADSR.<br />
<br />
Surprisingly, I have not read about this problem elsewhere, even though it is an obvious and understandable issue with such diode based envelope circuits. Even more surprising, my Microbrute does not show this issue, although it almost certainly has the same envelope circuit (the Minibrute, at least, <a href="http://hackabrute.yusynth.net/MINIBRUTE/analog-board/schematics/MiniBrute-09-ADSR.pdf">has the exact same ADSR</a>). Well, anyway, I decided to fix it and my final solution was to use a type of <a href="http://en.wikipedia.org/wiki/Precision_rectifier">precision rectifier</a> in place of the decay and release diodes (hence the title). It's a bit of a special one, because it rectifies current in stead of voltage. The basic schematic is as follows:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidub489A_eMRYrVbtbnAqAuu7xIN6IA1oIaoITCzaUPwX7GappF-gKlsvZfAzuDgc9a12pfWCsZ3RR8uF5cDiKhqfvdPe4AcRs3qtYeiUkJdh0RdIb-aJk6S_jF2GQzr_LrJ2XfWMywUo/s1600/ADSR-current-rectifier.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidub489A_eMRYrVbtbnAqAuu7xIN6IA1oIaoITCzaUPwX7GappF-gKlsvZfAzuDgc9a12pfWCsZ3RR8uF5cDiKhqfvdPe4AcRs3qtYeiUkJdh0RdIb-aJk6S_jF2GQzr_LrJ2XfWMywUo/s200/ADSR-current-rectifier.png" width="200" /></a></div>
<div style="clear: both; text-align: left;">
The opamp's negative input is a virtual ground point. For a positive input voltage, a current flows through the resistor as defined by Ohm's law. This current flows through the diode into the opamp output. The output therefore is at a negative voltage, which compensates the diode's forward voltage drop. For a negative input voltage, however, the diode cannot conduct any current (the opamp will saturate at the positive rail). So, this circuit can sink a current, but not source any.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3 style="clear: both; text-align: left;">
Complete circuit</h3>
<div>
Here is the complete circuit of my implementation:</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD_hrHOnAC4rHEuVcojdsLZpmeVjg7e_GxqFmqW-JQkDj8fe_Y8rcGsY1TXeizNQN9BBi7riK_nDaEROkA63PBCl9zDDTc83TE8ketqkHCK2s9x8BS9gyzfz1vnx6-2Xf9SQ_Zsr0KZuU/s1600/ADSR+%252815%2529.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD_hrHOnAC4rHEuVcojdsLZpmeVjg7e_GxqFmqW-JQkDj8fe_Y8rcGsY1TXeizNQN9BBi7riK_nDaEROkA63PBCl9zDDTc83TE8ketqkHCK2s9x8BS9gyzfz1vnx6-2Xf9SQ_Zsr0KZuU/s640/ADSR+%252815%2529.png" width="640" /></a></div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<br /></div>
<div>
All transistors are BC547C (but can probably be almost any NPN), all diodes are 1N4148 (apart from L1, which is a red LED). U1 is an Intersil ICM7555, and U2 is a TL074 quad opamp (powered from +12 V and -12 V). The maximum current draw is about 10 mA from both the positive and the negative rail. C6 should be close to U2 on the board.<br />
<br /></div>
<h4>
Gate input</h4>
<div>
The first part of the circuit converts an incoming gate signal or button press into a well-defined gate signal (GATE) and a short trigger pulse (TRIG). Q1 and Q2 form a discrete <a href="http://en.wikipedia.org/wiki/Schmitt_trigger">Schmitt trigger</a>, turning any input signal into a gate with sharp edges between 0V and 12V. C1 and R6 turn the sharp edge into a short pulse of a few 10s of microseconds, which is then buffered and inverted by Q3. So the TRIG signal is normally at 12V and makes a short pulse to 0V at the start of each GATE.<br />
<br /></div>
<h4>
7555 timer core</h4>
<div>
These signals are used to start the 7555 timer via the trigger and reset pins (these are both inverting inputs - e.g. a high input on pin 4 means <b>not reset</b>). The Out pin will go high (to 12V), and the Discharge pin will be floating. The timing capacitor C3 will start charging from Out thourgh D2 and the Attack potentiometer. The voltage over C3 is buffered by U2c, giving the envelope output.</div>
<div>
<br /></div>
<div>
The buffered output is also fed back to the 7555s Threshold pin. When this pin reaches 2/3 VDD (about 8V), the timer will switch off. Out will go low, so the charging will stop. At the same time the Discharge pin is connected to ground. R14 now defines a sustain voltage between 0 and 8V, and the precision rectifier of U2b/D4 allows C3 to discharge through the Decay pot to the sustain level.</div>
<div>
<br /></div>
<div>
The output will remain at the sustain level until the gate signal ends. When GATE goes to 0V, the U2a/D3 rectifier allows discharge through the Release pot until finally reaching 0V output.<br />
<br /></div>
<h4>
Inverted output and LED driver</h4>
<div>
Yusynth uses one additional opamp to invert the output, and one as a LED current driver, but I had only one opamp left. While the inverted output is not essential, I found these functions can be combined, which is done in U2d. This is again similar to a precision rectifier. R17 converts the envelope voltage to a current, which is then (for positive input) forced to go through the LED. Again, the opamp compensates for the LED forward voltage drop. The current also goes through R19, which gives the inverting amplifier function. This voltage is tapped of as second output. D6 is there such that the opamp never goes to the positive rail, which would be too much reverse voltage for a typical LED.</div>
<div>
<br /></div>
<h3>
Built circuit</h3>
<div>
Breadboard version:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUxAgD7kJp-1bjEWR34LGWZRzHGC1iObl9jfRDRrqRj7ndnIbrQpLpsZ8tQSpExSjSqKJwskyNe9EulclSLZbUzn4Tpc3F7F3ab2G5JTuyT06lVMk_xGMPTLg6UYzNqX9No8fEu7_8VQc/s1600/IMG_0605.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUxAgD7kJp-1bjEWR34LGWZRzHGC1iObl9jfRDRrqRj7ndnIbrQpLpsZ8tQSpExSjSqKJwskyNe9EulclSLZbUzn4Tpc3F7F3ab2G5JTuyT06lVMk_xGMPTLg6UYzNqX9No8fEu7_8VQc/s320/IMG_0605.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Version built on prototype board:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDEge5xnS0nJ6sZDvuhNoJ_ADXPtuLSnu97dVKBn6wtFTJhaBvdSqxW2bAYvYzBPsiK-Ec9crgsNOaUUlF8pkAH1xodkk_tsA6BNhlYu_EUPsRPfe5axMJM4xJiXBWV_xxMkWV6fXi6zc/s1600/IMG_0637.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDEge5xnS0nJ6sZDvuhNoJ_ADXPtuLSnu97dVKBn6wtFTJhaBvdSqxW2bAYvYzBPsiK-Ec9crgsNOaUUlF8pkAH1xodkk_tsA6BNhlYu_EUPsRPfe5axMJM4xJiXBWV_xxMkWV6fXi6zc/s320/IMG_0637.JPG" width="239" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="clear: both; text-align: left;">
I used a piece of <a href="http://www.tme.eu/en/details/pp-um13a/universal-pcbs/">board designed for DIP packages</a>, which turns out to work quite well for the discrete transistor stages as well. Most resistors and diodes are on their side to make it fit, and a bunch of jumper wires and solder bridges complete the connections. This is probably not the style for everybody, as the result is always chaotic, but it gives quite compact results for a prototype board (much more than the typical veroboard layout). The board is held in place only by the connecting wires. The front panel is a prototype cut out of cardboard (4HP eurorack size). </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiUNn_ajVWPKkwM1bN5476AQLWpZtjfWoalibTe2g-KBtIrJxMaPZ0i2AHyZjxt3ynMhAWZXMtFpODdlW1uRlWhvcrE7mfQx5OKM813ZDwUL2IyUXyJNygnbOtJPk6zE_ELhT1Js0rza4/s1600/IMG_0635.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiUNn_ajVWPKkwM1bN5476AQLWpZtjfWoalibTe2g-KBtIrJxMaPZ0i2AHyZjxt3ynMhAWZXMtFpODdlW1uRlWhvcrE7mfQx5OKM813ZDwUL2IyUXyJNygnbOtJPk6zE_ELhT1Js0rza4/s320/IMG_0635.JPG" width="239" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Finally a picture of the back. Note the generous use of solder. The three small wire bridges were needed because I accidentally inverted all the power lines when planning the board...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3>
Performance</h3>
<div>
I'm quite satisfied with the result. The decay and release phases go nicely to their final level (sustain or 0 V, respectively) without any slowing down. A nice side effect is that the reverse leakage through the decay diode (which is now bigger because the opamp can create a large reverse voltage) compensates leakage of the timing capacitor and through other diodes, so the sustain phase stays accurate indefinitely. After the final release there is an output offset on the order of 10 mV (presumably the low voltage of the gate and discharge signals), but this is quite acceptable and it seems stable.<br />
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwHfFhEpvZR7oHVehMMSkWZiR3LMmJptB42sT9eb0gOrdZSRzy9mjVoq_r1VxRjZQHeMeBXND33YIRh1ySayySB0OXUVz802zkuvZXYgdBz8a0beyu5pUDoYnklaC-sYjySsmxudsGESw/s1600/adsr_typical2.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwHfFhEpvZR7oHVehMMSkWZiR3LMmJptB42sT9eb0gOrdZSRzy9mjVoq_r1VxRjZQHeMeBXND33YIRh1ySayySB0OXUVz802zkuvZXYgdBz8a0beyu5pUDoYnklaC-sYjySsmxudsGESw/s200/adsr_typical2.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">ADSR envelope</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFUHlqy5MZokJNReeSG18x9hepEBGz7-VvIt-ffyoHTClFoZrBM60ONzs4e0wthnCtsZ_6V-tMJilRvdD0ru89GegQFtAFeNAn3Y32nd6nayueP376jXcok7sKz6OJIAzShAlcYKL1NAM/s1600/adsr_shortest.png" style="margin-left: auto; margin-right: auto;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFUHlqy5MZokJNReeSG18x9hepEBGz7-VvIt-ffyoHTClFoZrBM60ONzs4e0wthnCtsZ_6V-tMJilRvdD0ru89GegQFtAFeNAn3Y32nd6nayueP376jXcok7sKz6OJIAzShAlcYKL1NAM/s200/adsr_shortest.png" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Shortest AD envelope</td></tr>
</tbody></table>
With the component values show, the shortest envelope is a bit under 1 ms (attack + decay), and the longest has about 1 second attack and decay/release with the same time constant. For longer envelopes a larger capacitor could be used for C3, or higher value A,D,R potentiometers. The shortest time is mostly limited by the (dis)charging current the 7555 and opamps are able to supply, and somewhat limited by the 100 Ohm resistors R8/R10/R12 (these can be omitted, but the difference is small).</div><div><br /></div><h3 style="text-align: left;">Further modifications</h3><div><ul style="text-align: left;"><li>Analog Output has further evolved this design by adding retrigger and loop functions. See his <a href="https://analogoutputblog.wordpress.com/2021/09/02/precision-adsr-enhanced/" target="_blank">blog post</a> and <a href="https://www.youtube.com/watch?v=HcEP0gQBN4U" target="_blank">this youtube video</a> with detailed explanations. He also shares the PCB design in Kosmo format.</li></ul></div>
Unknownnoreply@blogger.com