http://www.technoblogy.com/show?4MGW Logo Technoblogy Electronics and microcontroller projects [ ] [Search] Most popular posts * Sound Lab - a Simple Analogue Synthesiser * Tiny Time 2 Watch * Sound Lab - Example Sounds * Programming the ATtiny10 [Updated] * Tiny Graphics Library Recent posts V 2024 * Scrolling Text Display * Sound Lab - Example Sounds * Sound Lab - a Simple Analogue Synthesiser * Logic Lab 1G * Secret Maze 2 * Building Gates with the AVR Event System * RA4M1 Nano Board * Silver Dollar Game: How to Win > 2023 * Silver Dollar Game * Lisp Badge LE * CAN Bus Monitor * Logic Lab Problem Answers * Logic Lab * I2S Speaker for QT Py * Adjustable Load * Harder Number Maze Game * Power Deliverer with Current Monitor * Tiny UPDI-HV Programmer > 2022 * Number Maze Game * Minimal GIF Decoder * Lisp Star * Graphical Analogue Clock * The ATtiny 2-Series * Power Deliverer * Drawing Filled Quadrilaterals and Triangles * Reading from a TFT Display * I2C SD-Card Module PCB * I2C SD-Card Module * Monochrome Low-Power Display Library * Three-Channel Chart Plotter * Adding File Storage to an Arduino * Universal TFT Display Backpack * Tiny TFT Graphics Library 2 * On Bytes and Pins * Tiny I2C Routines for all AVR Microcontrollers * Minimal RP2040 Board * Printing to a Serial LED Display * 16 LEDs Kishi Puzzle Solution * Twinkling Pendant * Morse Code Message Pendant * Controlling RGB LED Strips with a Single Function * 16 LEDs Solution and a New Puzzle > 2021 * Using a Timer on the Arduino Uno or Arduino Zero * AM Morse-Code Transmitter * 16 LEDs Puzzle * Low-Power LCD Clock * Measuring Your Own Supply Voltage * 100MHz Frequency Meter * Pocket Op Amp Lab PCB * Frequency Divider Using CCL * Pocket Op Amp Lab Cookbook * I2C Detective * Pocket Op Amp Lab * Five LEDs Puzzle Solution * Five LEDs Puzzle PCB > 2020 * Compact TFT Graphics Library * Five LEDs Puzzle * Frequency Probe * Combination Lock Using CCL * Diffusion Clock * Smooth Big Text * Simple Sprite Routines for the Wio Terminal * Saving Screenshots from a TFT Display * Simple Sprite Routines for the PyGamer/PyBadge * Reading the PyBadge Display * Minimal ATmega4809 on a Breadboard * Big Time * Four Sample Player * Mega Tiny Time Watch [Updated] > 2019 * Eight-Character Alphanumeric Display * Festive Lights Programming Challenge * UPDI Programmer Stick * New ATtiny Low Power * Nano Current Meter * ATtiny Running Lisp * Minimal I2C for the New AVR Microcontrollers * Getting Started with the New ATtiny Chips * Visible Lisp Computer * Simple DataFlash Board * Magic 3D Clock * Tiny TFT Graphics Library * Illuminated Button Matrix * Two-Digit Thermometer * Minimal ATSAMD21 Computer 2 * Minimal ATSAMD21 Computer * Tiny Thermocouple Thermometer * Twelve PWM Outputs from an ATtiny85 * Tiny Function Generator PCB * ATtiny10 Thermometer PCB * ATtiny10 Thermometer * Lisp Badge [Updated] > 2018 * ATtiny85 Weather Station [Updated] * Widget Dashboard * Tiny MIDI Player * Colour Graphics Library * I2C GPS Module PCB * Tiny Terminal 2 * Tiny Function Plotter * I2C GPS Module * Simple LCD Character Display * Alcohol Unit Counter * Tiny Machine-Code Monitor * One Input 20-key Keypad Interface * Programmable Signal Generator * Minimal Tiny I2C Routines * ATtiny85 20MHz Internal Clock * ATtiny10 POV Pendant * IR Remote Wand * IR Remote Control Detective [Updated] * Harmonic Function Generator * Tiny Graphics Library * Secret Maze PCB * Tiny Function Generator Sine Wave * Tiny Function Generator * Secret Maze * Playing Notes on the ATtiny85 * Tiny Colour Watch > 2017 * Continuity Tester * Programming the ATtiny10 [Updated] * Proto Power Supply * Using an ATmega328 without a crystal * Bounce-Free Rotary Encoder * Four-Channel Thermometer * Flexible GPS Parser * Tiny Face Watch * Driving Four RGB LEDs from an ATtiny85 * Big Text for Little Display * ATtiny85 Graphics Display * Tiny Time 2 Watch * 10 or 12-bit DAC from the ATtiny85 * Simple 1-Wire Interface * Audio Pitch Shifter * Tiny Lisp Computer 2 PCB * GameBone Simple Electronic Game > 2016 * Tiny Time Watch * Tiny Lisp Computer 2 * Tiny Lisp Computer * Text Display for the Arduino Uno * Simple PS/2 Keyboard Interface * Making Your Own I2C Peripherals * Using the ATmega1284 with the Arduino IDE * Digital Clock Using Lisp * Making millis() tell the time * A Lightweight Alternative to tone * Adjustable Load * Programming ATtinys with Arduino 1.6.8 [Updated] * Digital Music Box [Updated] * Using the Arduino IDE Without Cores * Flashing Thermometer * Portable Lab Power Supply * ATtiny85 Sound Level Meter > 2015 * ATtiny85 Bargraph Voltmeter * TinyNav Simple GPS Navigator [Updated] * Dot Matrix Clock * Simple Rotary Encoder Interface [Updated] * Driving LED Displays with Fewer I/O Lines * Infrared Controlled Buggy * Powering Projects from a 1.5V Battery * IR Remote Control Switch * Odometer/Speedometer Pendant [Updated] * Push-Button On/Off Switches * Simple ATtiny USI UART 2 * Sony NEX/Alpha Remote Control * IR Remote Control Receiver * Bulls & Cows Game 2 * IR Remote Control Tool (NEC) * IR Remote Control Tool * Bulls & Cows Game * Tiny Terminal * Choosing a Friendly AVR Chip > 2014 * Simple GPS Odometer * Simple Compass Display * Tiny GPS Speedometer [Updated] * Minimal GPS Parser [Updated] * Simple ATtiny USI UART * Timescale Clock * Tiny Synth * Waveform Generation using an ATtiny85 * Audio Sample Player * ATtiny85 Analogue Clock * Radio Time Code Clock * Four PWM Outputs from the ATtiny85 * ATtiny-Based Beginner's Kit * MINIL Machine-Code Monitor * One Input Keypad Interface * Conundrometer Game * Getting Extra Pins on ATtiny * Simple Tones for ATtiny * ATtiny Low Power Topics > Games * Conundrometer Game * Bulls & Cows Game * Bulls & Cows Game 2 * GameBone Simple Electronic Game * Secret Maze * Secret Maze PCB * Five LEDs Puzzle * Five LEDs Puzzle PCB * 16 LEDs Puzzle * 16 LEDs Solution and a New Puzzle * 16 LEDs Kishi Puzzle Solution * Number Maze Game * Harder Number Maze Game * Silver Dollar Game * Secret Maze 2 > Sound & Music * Audio Sample Player * Simple Tones for ATtiny * Waveform Generation using an ATtiny85 * Tiny Synth * ATtiny85 Sound Level Meter * Digital Music Box [Updated] * A Lightweight Alternative to tone * Audio Pitch Shifter * Playing Notes on the ATtiny85 * Tiny Function Generator * Tiny Function Generator Sine Wave * Harmonic Function Generator * Tiny MIDI Player * Tiny Function Generator PCB * Four Sample Player * I2S Speaker for QT Py * Sound Lab - a Simple Analogue Synthesiser > Watches & Clocks * Radio Time Code Clock * ATtiny85 Analogue Clock * Timescale Clock * Dot Matrix Clock * Digital Clock Using Lisp * Tiny Time Watch * Tiny Time 2 Watch * Tiny Face Watch * Tiny Colour Watch * Magic 3D Clock * Mega Tiny Time Watch [Updated] * Big Time * Diffusion Clock * Low-Power LCD Clock * Graphical Analogue Clock > GPS * Simple ATtiny USI UART * Simple ATtiny USI UART 2 * Minimal GPS Parser [Updated] * Tiny GPS Speedometer [Updated] * Simple Compass Display * Simple GPS Odometer * Odometer/Speedometer Pendant [Updated] * TinyNav Simple GPS Navigator [Updated] * Flexible GPS Parser * I2C GPS Module * I2C GPS Module PCB > Power Supplies * Powering Projects from a 1.5V Battery * Portable Lab Power Supply * Proto Power Supply * Power Deliverer * Power Deliverer with Current Monitor > Computers * MINIL Machine-Code Monitor * Tiny Lisp Computer * Tiny Lisp Computer 2 * Tiny Lisp Computer 2 PCB * Tiny Machine-Code Monitor * Lisp Badge [Updated] * Minimal ATSAMD21 Computer * Minimal ATSAMD21 Computer 2 * Visible Lisp Computer * ATtiny Running Lisp * Minimal ATmega4809 on a Breadboard * Minimal RP2040 Board * Lisp Badge LE * RA4M1 Nano Board > Graphics * Tiny Terminal * ATtiny85 Graphics Display * Big Text for Little Display * Tiny Graphics Library * Tiny Function Plotter * Tiny Terminal 2 * Colour Graphics Library * Widget Dashboard * Tiny TFT Graphics Library * Reading the PyBadge Display * Simple Sprite Routines for the PyGamer/PyBadge * Simple Sprite Routines for the Wio Terminal * Smooth Big Text * Compact TFT Graphics Library * Tiny TFT Graphics Library 2 * Universal TFT Display Backpack * Three-Channel Chart Plotter * Monochrome Low-Power Display Library * Reading from a TFT Display * Scrolling Text Display > Thermometers * Flashing Thermometer * Simple 1-Wire Interface * Four-Channel Thermometer * Tiny Graphics Library * ATtiny85 Weather Station [Updated] * ATtiny10 Thermometer * ATtiny10 Thermometer PCB * Tiny Thermocouple Thermometer * Two-Digit Thermometer > Wearables * Odometer/Speedometer Pendant [Updated] * ATtiny10 POV Pendant * ATtiny10 Thermometer PCB * Morse Code Message Pendant * Twinkling Pendant * Lisp Star > Test Equipment * IR Remote Control Tool * IR Remote Control Tool (NEC) * IR Remote Control Receiver * Sony NEX/Alpha Remote Control * IR Remote Control Switch * ATtiny85 Bargraph Voltmeter * Adjustable Load * Continuity Tester * IR Remote Control Detective [Updated] * IR Remote Wand * Programmable Signal Generator * Alcohol Unit Counter * Illuminated Button Matrix * Simple DataFlash Board * Nano Current Meter * UPDI Programmer Stick * Frequency Probe * Pocket Op Amp Lab * I2C Detective * Pocket Op Amp Lab PCB * 100MHz Frequency Meter * Three-Channel Chart Plotter * I2C SD-Card Module * I2C SD-Card Module PCB * Tiny UPDI-HV Programmer * Adjustable Load > Tutorials * ATtiny Low Power * Getting Extra Pins on ATtiny * One Input Keypad Interface * ATtiny-Based Beginner's Kit * Four PWM Outputs from the ATtiny85 * Choosing a Friendly AVR Chip * Push-Button On/Off Switches * Powering Projects from a 1.5V Battery * Driving LED Displays with Fewer I/O Lines * Simple Rotary Encoder Interface [Updated] * Using the Arduino IDE Without Cores * Programming ATtinys with Arduino 1.6.8 [Updated] * Using the ATmega1284 with the Arduino IDE * Making Your Own I2C Peripherals * Simple 1-Wire Interface * 10 or 12-bit DAC from the ATtiny85 * Driving Four RGB LEDs from an ATtiny85 * Bounce-Free Rotary Encoder * Using an ATmega328 without a crystal * Programming the ATtiny10 [Updated] * ATtiny85 20MHz Internal Clock * Minimal Tiny I2C Routines * One Input 20-key Keypad Interface * Simple LCD Character Display * Twelve PWM Outputs from an ATtiny85 * Minimal I2C for the New AVR Microcontrollers * New ATtiny Low Power * Saving Screenshots from a TFT Display * Smooth Big Text * Pocket Op Amp Lab Cookbook * Frequency Divider Using CCL * Measuring Your Own Supply Voltage * Using a Timer on the Arduino Uno or Arduino Zero * Printing to a Serial LED Display * Tiny I2C Routines for all AVR Microcontrollers * On Bytes and Pins * Building Gates with the AVR Event System > Libraries * Tiny Graphics Library * Minimal Tiny I2C Routines * Colour Graphics Library * Minimal I2C for the New AVR Microcontrollers * Compact TFT Graphics Library * Tiny I2C Routines for all AVR Microcontrollers * Tiny TFT Graphics Library 2 * Monochrome Low-Power Display Library * Minimal GIF Decoder > PCB-Based Projects * Tiny Time Watch * GameBone Simple Electronic Game * Tiny Time 2 Watch * Tiny Face Watch * Proto Power Supply * Continuity Tester * Tiny Colour Watch * Secret Maze PCB * Tiny Machine-Code Monitor * ATtiny10 POV Pendant * I2C GPS Module PCB * Lisp Badge [Updated] * ATtiny10 Thermometer PCB * Tiny Function Generator PCB * Two-Digit Thermometer * Illuminated Button Matrix * Simple DataFlash Board * UPDI Programmer Stick * Eight-Character Alphanumeric Display * Mega Tiny Time Watch [Updated] * Big Time * Frequency Probe * Five LEDs Puzzle PCB * Pocket Op Amp Lab PCB * Low-Power LCD Clock * 16 LEDs Puzzle * Morse Code Message Pendant * Twinkling Pendant * Minimal RP2040 Board * Universal TFT Display Backpack * I2C SD-Card Module PCB * Power Deliverer * Lisp Star * Number Maze Game * Power Deliverer with Current Monitor * Harder Number Maze Game * Adjustable Load * I2S Speaker for QT Py * Logic Lab * Lisp Badge LE * Silver Dollar Game * RA4M1 Nano Board * Secret Maze 2 * Logic Lab 1G * Sound Lab - a Simple Analogue Synthesiser By processor AVR ATtiny > ATtiny10 * Programming the ATtiny10 [Updated] * ATtiny10 POV Pendant * ATtiny10 Thermometer * ATtiny10 Thermometer PCB * Morse Code Message Pendant * Twinkling Pendant > ATtiny2313 * Simple GPS Odometer * Driving LED Displays with Fewer I/O Lines * Dot Matrix Clock > ATtiny84 * Radio Time Code Clock * Timescale Clock * IR Remote Control Tool * IR Remote Control Tool (NEC) * Simple ATtiny USI UART 2 * Odometer/Speedometer Pendant [Updated] * Adjustable Load * Alcohol Unit Counter * Two-Digit Thermometer * Nano Current Meter * Frequency Probe * Adjustable Load * Silver Dollar Game > ATtiny841 * Making Your Own I2C Peripherals * I2C GPS Module * I2C GPS Module PCB > ATtiny85 * ATtiny Low Power * Simple Tones for ATtiny * MINIL Machine-Code Monitor * Four PWM Outputs from the ATtiny85 * ATtiny85 Analogue Clock * Audio Sample Player * Waveform Generation using an ATtiny85 * Tiny Synth * Simple ATtiny USI UART * Tiny GPS Speedometer [Updated] * Simple Compass Display * Tiny Terminal * IR Remote Control Receiver * Sony NEX/Alpha Remote Control * Simple ATtiny USI UART 2 * Push-Button On/Off Switches * IR Remote Control Switch * Infrared Controlled Buggy * Simple Rotary Encoder Interface [Updated] * TinyNav Simple GPS Navigator [Updated] * ATtiny85 Bargraph Voltmeter * ATtiny85 Sound Level Meter * Flashing Thermometer * Digital Music Box [Updated] * Tiny Time Watch * GameBone Simple Electronic Game * Audio Pitch Shifter * Simple 1-Wire Interface * 10 or 12-bit DAC from the ATtiny85 * Tiny Time 2 Watch * ATtiny85 Graphics Display * Big Text for Little Display * Driving Four RGB LEDs from an ATtiny85 * Tiny Face Watch * Flexible GPS Parser * Four-Channel Thermometer * Bounce-Free Rotary Encoder * Continuity Tester * Tiny Colour Watch * Playing Notes on the ATtiny85 * Secret Maze * Tiny Function Generator * Tiny Function Generator Sine Wave * Secret Maze PCB * Tiny Graphics Library * Harmonic Function Generator * IR Remote Control Detective [Updated] * IR Remote Wand * ATtiny85 20MHz Internal Clock * Programmable Signal Generator * Tiny Machine-Code Monitor * Tiny Function Plotter * Tiny Terminal 2 * Colour Graphics Library * Tiny MIDI Player * Widget Dashboard * ATtiny85 Weather Station [Updated] * Tiny Function Generator PCB * Twelve PWM Outputs from an ATtiny85 * Tiny Thermocouple Thermometer * Tiny TFT Graphics Library * Magic 3D Clock * Four Sample Player * Diffusion Clock * Five LEDs Puzzle * Five LEDs Puzzle PCB * Printing to a Serial LED Display * Tiny TFT Graphics Library 2 * Secret Maze 2 * Scrolling Text Display > ATtiny861 * Portable Lab Power Supply > ATtiny88 * Illuminated Button Matrix AVR ATmega > ATmega328 * Conundrometer Game * Bulls & Cows Game * Bulls & Cows Game 2 * A Lightweight Alternative to tone * Digital Clock Using Lisp * Simple PS/2 Keyboard Interface * Text Display for the Arduino Uno * Tiny Lisp Computer * Using an ATmega328 without a crystal * Proto Power Supply * Simple LCD Character Display * UPDI Programmer Stick * Using a Timer on the Arduino Uno or Arduino Zero > ATmega1284 * Using the ATmega1284 with the Arduino IDE * Tiny Lisp Computer 2 * Tiny Lisp Computer 2 PCB * Lisp Badge [Updated] AVR 0-series and 1-series > ATmega4809 * Minimal ATmega4809 on a Breadboard * Logic Lab > ATtiny1604 * Power Deliverer * Power Deliverer with Current Monitor > ATtiny1614 * I2C SD-Card Module * I2C SD-Card Module PCB > ATtiny3216 * ATtiny Running Lisp * Big Time > ATtiny3227 * Lisp Star > ATtiny402 * New ATtiny Low Power * Printing to a Serial LED Display * Tiny TFT Graphics Library 2 * Three-Channel Chart Plotter * Monochrome Low-Power Display Library > ATtiny404 * 16 LEDs Puzzle * 16 LEDs Solution and a New Puzzle > ATtiny414 * Mega Tiny Time Watch [Updated] * 100MHz Frequency Meter * Measuring Your Own Supply Voltage * Universal TFT Display Backpack > ATtiny814 * Graphical Analogue Clock AVR DA/DB-series > AVR128DA28 * Combination Lock Using CCL * Frequency Divider Using CCL * Measuring Your Own Supply Voltage * Minimal GIF Decoder * Building Gates with the AVR Event System > AVR128DA32 * Number Maze Game * Harder Number Maze Game > AVR128DA48 * Low-Power LCD Clock * Logic Lab > AVR128DB28 * Pocket Op Amp Lab * Pocket Op Amp Lab Cookbook * Pocket Op Amp Lab PCB * Measuring Your Own Supply Voltage * Minimal GIF Decoder > AVR128DB48 * Lisp Badge LE ARM > ATSAMD21 * Minimal ATSAMD21 Computer * Minimal ATSAMD21 Computer 2 * Visible Lisp Computer * Using a Timer on the Arduino Uno or Arduino Zero > RP2040 * Minimal RP2040 Board > RA4M1 * RA4M1 Nano Board About me * About me * * Twitter * Mastodon Feeds RSS feed Sound Lab - a Simple Analogue Synthesiser 30th May 2024 Sound Lab is an analogue synthesiser, consisting of six modules that can be combined in a variety of ways. It uses a single printed circuit board that doubles as the front panel and wiring, with surface-mount components and PCB-mounted controls to make the construction as easy as possible: SynthKnobs.jpg Sound Lab: a single-board analogue synthesiser using surface-mount components and board-mounted controls. It's capable of making a wide range of sounds, including natural sounds such as weather sounds, animal noises, speech-like sounds, and mechanical sounds such as alarms, sirens, engines, and machinery. For examples with audio samples see Sound Lab - Example Sounds. The Sound Lab measures 158 x 96 x 27mm, small enough to be comfortably held in one hand while you're using it. Introduction Sound Lab is inspired by a classic analogue synthesiser, the WP-20, which was designed in around 1980 by Ray Wilson and Ron Romeo, and marketed by their company Waveform Processing ^[1]. To make this synthesiser easy to construct we've based it on a single PCB, with the potentiometers and switches mounted to the top of the board, and all the other components mounted on the reverse. This virtually eliminates the need for any manual wiring. Unlike most of my previous projects Sound Lab is entirely analogue, and it doesn't include any microcontrollers or digital logic. It uses surface-mount resistors, capacitors, diodes, and integrated circuits, and it should be possible to solder them with a small-tipped soldering iron. However it will definitely be easier to use a hot air gun and solder paste. With careful sourcing of components it should be possible to build a Sound Lab for about PS60/$60 including the PCB. The design Sound Lab consists of six interconnected modules, as shown in the following diagram: SynthBlockDiagram.gif A block diagram of the Sound Lab modules. The modules are explained in the following sections: Oscillator The main signal source is the Oscillator. This is a voltage-controlled oscillator that generates a square wave or triangle wave whose frequency can be controlled by a voltage input. One possible input is a static voltage, to give a fixed frequency output. Alternatively, feeding a varying voltage into the Oscillator modulates it to produce a sound that varies in frequency. Tones produces by the Oscillator can be modulated by the LFO and/or Envelope Generator. Modulating a tone's frequency with the LFO can produce a vibrato effect. Modulating a tone with the Envelope Generator can give a rising and falling tone, like a siren. Range: 6Hz to 4kHz. Noise A second signal source is the white-noise generator. When filtered by the Filter and gated by the Amplifier this can produce a variety of natural and mechanical sounds, such as wind, cymbals, and gunshots. LFO (Low-Frequency Oscillator) The LFO generates a low-frequency waveform. The LFO can be used to modulate the Oscillator, Filter, and/or the Amplifier. Range: 2.4Hz to 1280Hz. Envelope Generator The Envelope Generator can create a changing voltage with an envelope that includes a rising part, called the Attack, and a falling part, called the Decay, each of which can be adjusted independently. Like the LFO, the Envelope Generator can be used to modulate the Oscillator, Filter, and/or the Amplifier. Filter The outputs from the Oscillator and Noise modules passes through the Filter. This filters the waveform with a low-pass filter whose cutoff frequency depends on the voltage input. It can also be made to resonate, like striking a bell. Amplifier Finally, the output from the Filter passes to the Amplifier. This can be used to modulate the amplitude of the sound. Using the Amplifier to modulate a sound with the LFO can produce a tremolo effect. Modulating a sound with the Envelope Generator can produce a sound that rises and falls in amplitude. Loudspeaker The output from the voltage-controlled Amplifier is fed to a loudspeaker, or the audio output. Guided tour Once you've built Sound Lab, take this guided tour to get familiar with some of its features. Start with all the potentiometers turned fully ante-clockwise, and all the switches in their left position: SoundLabPanel1.gif A pure tone * Turn the Oscillator Frequency to its mid position. * Turn the Oscillator Level to its mid position. * Turn the Amplifier Level to its mid position. SoundLabPanel2.gif You should now hear a high-pitched tone. Modulate the tone with the LFO * Turn the Oscillator LFO modulation to its mid position. * Turn the LFO Frequency to its mid position. SoundLabPanel3.gif This uses the LFO (Low Frequency Oscillator) to modulate the frequency of the tone. Modulate the tone with the Envelope Generator * Turn the Oscillator LFO modulation to zero. * Turn the Envelope modulation to its mid position. * Turn the Envelope Generator Attack to its mid position. * Turn the Envelope Generator Decay to its mid position. SoundLabPanel4.gif When you press the Gate button the frequency of the tone will be modulated by an envelope, and you can adjust the Attack and Decay of the envelope by adjusting the corresponding controls. * Turn the Repeat switch on to repeat the envelope without needing to press the Gate button. Further examples For some more complex examples, with audio samples, see Sound Lab - Example Sounds. The circuit The following sections give the full circuit of each of the modules in Sound Lab. Oscillator SynthVCO.gif Circuit of the Oscillator module. The Oscillator circuit generates a triangle or square wave whose frequency is determined by the voltage at the input. The main part of the circuit is a Voltage-Controlled Oscillator using the two op amps IC3C and IC3D from a quad LM3900 op-amp package, and is based on a circuit from the Texas Instruments LM3900 Application Note ^[2]. The LM3900 is a Norton op amp, which differs from standard op amps in that the voltage on the output is proportional to the current difference between the inputs rather than the voltage difference between the inputs. The op amp IC3C charges the timing capacitor C6 at a constant current, which depends on the voltage at the junction of R11 and R15. IC3D acts as a Schmitt trigger; when it reaches threshold the output goes low, turning on Q4 and reversing the direction of the current into C6. The output of IC3C provides a triangle wave, and the output of IC3D a square wave. The Oscillator has a linear response of approximately 550Hz per volt at the input, giving a range from 6Hz to about 4kHz for inputs from 0 to 9V. A further gate, IC3A, acts as a mixer to allow you to combine three signals at the input of the Oscillator. One input can be a static voltage, which will give a steady tone; this can then be modulated by signals from the LFO and the Envelope Generator. The Waveform switch, S9, chooses between a triangle waveform and a square waveform: VCOTriangle.png VCOSquare.png The output of the Oscillator is fed to the Filter via a level control. Noise Here's the circuit of the noise module: SynthNoise.gif Circuit of the voltage doubler and Noise module. The noise is generated by a reverse-biased transistor emitter junction, biased to 18V. The collector is intentionally left unconnected. The noise is amplified by an LM3900 op amp, and then fed to the VCF. To avoid the need for an additional battery or power supply, the 18V bias voltage is generated by a voltage doubler created from a CMOS 555 oscillator. The output of the Noise module is fed to the Filter via a level control. LFO (Low-Frequency Oscillator) SynthLFO.gif Circuit of the Low-Frequency Oscillator (LFO) module. The LFO in the original WP-20 used an oscillator based on three CD4001 gates, but we've chosen a design that gives better triangle waveforms using two conventional LM324 op amps, the quad version of the LM358, using a circuit from the Onsemi LM358 Datasheet ^[3]. A third op amp is used to amplify the triangle wave to the same amplitude as the square wave. Envelope Generator SynthENV.gif Circuit of the Envelope Generator module. The Envelope Generator is based on a CMOS LM555D Timer in monostable mode. When the Gate button S3 is pressed the Trigger input of the 555 timer is brought low, which takes the output Q high, and allows C2 to charge. Current flows through D1 through the Attack control, RV36, and charges C16. This voltage is fed through the op-amp buffer, and then through R2 to the 555 timer Threshold input. When this reaches 2 /3 of Vcc the output goes low, and C16 is discharged through D2 and the Decay control, RV37. When the Sustain switch S2 is closed, the 555 timer output will remain high as long as the Gate button S3 remains closed. When the Repeat switch S5 is closed the Envelope Generator will retrigger itself through R32 at the end of each Attack/Decay cycle. If both switches are closed the Sustain switch takes priority. Note that because the Repeat function is level sensitive it will stop working if the battery voltage is low. Filter SynthVCF.gif Circuit of the Filter module. The outputs from the Oscillator module and Noise module are fed to a voltage-controlled low-pass filter created by C13, C14, R25, and Q3 in the feedback loop of the op-amp IC2A. As the current into the base of Q3 increases, the emitter to collector resistance decreases, causing the cutoff frequency of the filter to increase. Damped oscillation in the filter circuit adds color to the sound of the waveform. Closing S4 adds C15 into the feedback loop of the op amp, adding more damping to the circuit and reducing its resonance. Amplifier SynthVCA.gif Circuit of the Amplifier module. The output from the Filter module is fed to a voltage-controlled amplifier consisting of Q2 and the op amp IC2C. When P8 is fully ante-clockwise, at +9V, Q2 is turned fully on. Turning P8 clockwise modulates the amplitude by either the LFO or the Envelope Generator, depending on the position of S8. The output is fed via the main level control, P9 to the audio output, or via an LM386 power amplifier to the loudspeaker. R36 gives the level control an approximately logarithmic characteristic. Components The most significant components that affect the price of the final unit are the potentiometers, switches, and PCB. The following sections provide some suggestions for sourcing these and the other components. Potentiometers The circuit uses 12 potentiometers with the same specification, as follows: * Size: 9mm series. This is available from several manufacturers, including Bourns. * Mounting: rear mount. * Resistance: 200kO linear, sometimes marked B204 (A is logarithmic). * Bushing: This is the threaded section to allow the potentiometer to be mounted in a panel. Since these are mounted directly on the PCB the ideal is bushingless, to allow the knob to sit as close to the PCB as possible. * Detent: No detent. * Shaft length: The ideal is 20mm if you are planning to fit knobs, or 15mm (the shortest available) if you are going to use them without knobs. You could use ones with 25mm or 30mm shafts if you are prepared to cut them down. Note that the shaft length is measured from the base of the potentiometer, where it sits on the PCB. * Shaft type: How the shaft is terminated. The options are: flatted or D (only suitable for matching knob), or knurled 18/40 teeth (suitable for use with fingers, or with a suitable knob). The following list gives some suitable potentiometers that are available at the time of writing, with comments on the suitability of each: Uxcell.jpg * Uxcell 784958561850 ^[4]: Ideal low-cost potentiometers with 20mm shaft and knurled 18 teeth (above left). * Uxcell 784958562048 ^[5]: As above but with shorter 15mm shaft (above right). * Bourns PTV09A-4030U-B204 ^[6] or CUI devices PT01-D130K2-B204 ^ [7]: The shaft is 30mm so it will extend well above the panel, unless you cut it down. The shaft style is knurled, 40 teeth, which means it's usable without a knob. Switches The circuit uses 10 SPDT toggle switches. They should be miniature PCB mount types, with a terminal spacing of 0.1" (2.5mm) to fit the PCB. Bushingless is ideal. Note that standard toggle switches with 4.7mm terminal spacing are not suitable. Here are some suitable alternatives: * Multicomp MC2MS1T2B2M2RE ^[8]. * Multicomp Pro 2MS1T2B2M2RE ^[9]. * Dailywell 2MS1T2B2M2RES ^[10]. Printed Circuit Board The cheapest source I could find for a PCB of this size was Elecrow in Shenzhen, China ^[11], and they also conveniently offer an acrylic laser cutting service, which I used for the back panel. The PCB becomes a substantially smaller part of the parts cost if you are making several units. Resistors and capacitors The resistors are all 0805 size, 5%. Apart from the electrolytic, C23, all the capacitors are 0805 size MLCC (Multilayer Ceramic Capacitors). It's generally recommended that capacitors are rated about 25% above the voltage across them, so they should all have a rating of at least 16V, apart from C35 and C36 in the voltage doubler circuit which should be at least 25V. I got most of the resistors and capacitors from a book of 0805 components that I already had ^[12], but I've given suggested part numbers in the table below if you need to buy them. LED The power indicator LED is a reverse-mount 1206 LED, but a standard 1206 LED mounted upside-down works equally well. Loudspeaker I've chosen a 32mm square loudspeaker, type ^[13]. or Visaton BF 32 ^ [14]. Knobs For the prototype shown in the above photos I used 12 knobs sourced from AliExpress ^[15], using five different colours to identify the different signal paths. An alternative colourful option is multi-colour knobs from Adafruit ^[16] or their suppliers. Power supply Sound Lab is designed to work from a single 9V power supply, and it draws on average 100mA, depending on what sounds you make. The simplest solution is to power it from a 9V PP3 battery. A non-rechargeable PP3 battery can provide 1200mAh ^[17], but it's probably more economical to use rechargeable NiMH PP3 batteries. The best I've found is the Ansmann 300mAh battery ^[18], and they also make a PP3 charger ^[19]. Sound Lab also provides a power jack to allow you to power it from an external 9V power supply; this disconnects the internal battery. The power supply should have a 5.5mm diameter cylindrical plug with a 2.1mm hole, centre positive. You can also use a USB-C power supply that supports Power Delivery at 9V with a suitable cable, such as Adafruit's one ^[20]. There's no regulator on the Sound Lab board, so it shouldn't be powered with more than 9V. Here's the full parts list (click to expand): > Parts list Qty Item Value Size Components Typical parts 1 Ceramic 470pF 0805 C15 Yageo CC0805JRX7R9BB471 capacitor 1 Ceramic 1nF 0805 C26 Yageo CC0805KRX7R9BB102 capacitor 2 Ceramic 4.7nF 0805 C2, C17 Yageo CC0805JRX7R9BB472 capacitor 2 Ceramic 10nF 0805 C6, C11 Yageo CC0805JRX7R9BB103 capacitor 4 Ceramic 22nF 0805 C3, C13, C14, C19 Yageo CC0805JRX7R9BB223 capacitor 1 Ceramic 47nF 0805 C22 Yageo CC0805JRX7R8BB473 capacitor 7 Ceramic 100nF 0805 C4, C7, C12, C18, Yageo CC0805KRX7R8BB104 capacitor C24, C25, C27 6 Ceramic 1uF 25V 0805 C5, C9, C10, C20, Murata GCM21BR71E105KA56K capacitor C28, C29 1 Ceramic 2.2uF 25V 0805 C8 Murata GCM21BR71E225KA73L capacitor 1 Ceramic 4.7uF 25V 0805 C21 Murata GRM21BR61H475KE51L capacitor 1 Ceramic 10uF 25V 0805 C16 Murata GRM21BR61E106KA73L capacitor 1 Ceramic 22uF 25V 0805 C1 Murata GRM21BR61E226ME44L capacitor 1 Electrolytic 220uF 16V 6.3mm dia. C23 220uF 16V capacitor 1 SMD resistor 0O 5% 0805 R54 Yageo RC0805JR-070RL 1 SMD resistor 10O 5% 0805 R39 Yageo RC0805JR-0710RL 1 SMD resistor 330O 5% 0805 R52 Yageo RC0805JR-07330RL 1 SMD resistor 2.0kO 5% 0805 R3 Yageo RC0805JR-072KL 2 SMD resistor 4.7kO 5% 0805 R23, R43 Yageo RC0805JR-074K7L 13 SMD resistor 10kO 5% 0805 R2, R9, R10, R14, Yageo RC0805JR-0710KL R28, R35, R38, R44, R45, R47, R48, R53 1 SMD resistor 15kO 5% 0805 R32 Yageo RC0805JR-0715KL 3 SMD resistor 20kO 5% 0805 R12, R27, R36, R41 Yageo RC0805JR-0720KL 1 SMD resistor 33kO 5% 0805 R37 Yageo RC0805JR-0733KL 2 SMD resistor 39kO 5% 0805 R24, R46 Yageo RC0805JR-0739KL 6 SMD resistor 47kO 5% 0805 R15, R21, R33, R40, Yageo RC0805JR-0747KL R49, R51 1 SMD resistor 82kO 5% 0805 R28 Yageo RC0805JR-0782KL 15 SMD resistor 100kO 5% 0805 R5, R8, R11, R13, Yageo RC0805JR-07100KL R16, R17, R18, R25, R26, R29, R34, R42, R50, R55 1 SMD resistor 330kO 5% 0805 R19 Yageo RC0805JR-07330KL 2 SMD resistor 390kO 5% 0805 R7, R22 Yageo RC0805JR-07390KL 4 SMD resistor 1MO 5% 0805 R1, R4, R6, R30, R31 Yageo RC0805JR-071ML 1 LED Reverse Green 1206 Kingbright Mount KPTL-3216CGCK-01 12 Potentiometer 200kO 9mm P1-P12 Uxcell 784958561850 Lin. 2 Quad Op Amp LM3900DR SOIC-14 IC2, IC3 LM3900DR 1 Quad Op Amp LM324 SOIC-14 IC4 LM324DT 2 Timer LM555C SOIC-14 IC1, IC5 LM555C 1 Audio LM386 SOIC-8 IC6 CD4001UBM96 Amplifier 5 NPN Bipolar MMBT3904 SOT-23-3 Q1-Q5 MMBT3904LT3G Transistor 5 Diode BAV20W SOD-123 D1-D5 Or 1N4148. 1 Push button Momentary 12x12x7.3mm S3 Keycap Tactile Push Button 10 Sub-Miniature SPDT 0.1" Pitch S1, S2, S4-S11 MC2MS1T2B2M2RE Toggle Switch 1 Power Jack SMD 5.5/2.1mm CUI Devices PJ-002AH-SMT-TR 1 Stereo Jack SMD 3.5mm CN2 CUI Devices 3.5mm SMD switched Stereo Jack Socket Switched 1 Mono/Stereo SMD 3.5mm CN3 CUI Devices 3.5mm SMD Jack Stereo Jack Socket 1 JST PH Series SMD 2mm pitch CN1 JST PH Series Right Angle 4-way Socket PCB Header 4 Contacts 1 Loudspeaker 8O 32x32mm CMS0321KLX 1 Battery 9V PP3 54x30x21mm 9V PP3 Battery Holder, holder Solder Tags 12 Knob <15mm dia. 17x14mm Bicolor Knob 4 Pillar M3x22.5mm Black Nylon Hex Threaded Pillar 1 PCB 2 layer 158 x 96mm See below Construction I created a PCB in Eagle, and ordered a set of boards from Elecrow. I recommend adding a note to your order to draw attention to the 30mm cutout for the loudspeaker. I built and tested three prototypes; in the process found a few minor mistakes on the PCB, but I've corrected these on the board provided below in Resources. All the resistors, capacitors, and the LED are 0805 size, and the other components are in SOIC packages, so it should be possible to assemble the board with a fine-tipped soldering iron, but I used a Youyue 858D+ hot air gun at 325degC with Chip Quik SMD291AX10 solder paste. I recommend soldering the SOIC packages first, followed by the passive components, and finally mount the potentiometers, switches, and connectors using a conventional soldering iron. SynthNoKnobs.jpg The front of the assembled board, before fitting the knobs. I fitted the loudspeaker to the PCB with four M2 x 8mm self-tapping screws, and fastened the 9V battery holder just to the right of the loudspeaker with double-sided foam self-adhesive pads: SynthBackBattery.jpg Back view of Sound Lab showing the loudspeaker and battery holder wiring. I fitted the acrylic back panel to the board with four M3 x 22.5mm threaded pillars and eight nylon M3 screws. Testing I recommend the following procedure for initially testing the board: * Apply +9V between Vcc and GND while monitoring the current consumption. Anything above about 30mA indicates a possible short, so disconnect quickly and check for shorts between tracks on the board. * Check for about 16.5V across C29. * The noise output, across P5, should be about 140mV RMS. * Check the Guided tour above, to ensure that each of the modules is working as expected. Frequently asked questions I've made an amazing sound. Can I save it? The simplest solution is to take a photo of the synth with your mobile phone, showing the pot and switch positions. Another option is to make a drawing of the pot and switch positions. Can I play it like a musical instrument? Yes, you can give a live performance by adjusting the controls to alter the sound. You can also trigger sounds with a contact on the Drum input, or you can control the frequency by connecting a voltage to the Control input. Are there any practical applications for Sound Lab? Here are a few: * Learning about how sounds are constructed. * Creating interesting sounds for incorporating into musical compositions. * Creating sound effects for school drama and amateur dramatics. * Play Sound Lab Simon; one player creates an interesting sound, then shuffles the controls and the other player has to try and reproduce it. Can I interface to it via Midi? No, it's not that sort of synthesiser. Resources Get the Eagle files for the PCB here: https://github.com/technoblogy/ sound-lab Here's the whole circuit diagram in a single image: Sound Lab Circuit Diagram. Acknowledgements I am very grateful to Chris Jordan, who collaborated with me on the development of this project, and without whose help it would not have been possible. Update 3rd June 2024: I've added details of the Control connector to the parts list, and given more details about the 3.5mm jack sockets. --------------------------------------------------------------------- 1. ^ Waveform Processing WP-20 on Music from Outer Space. 2. ^ The LM3900: A New Current-Differencing Quad of Plus or Minus Input Amplifiers on ti.com. 3. ^ Single Supply Dual Operational Amplifiers Datasheet on onsemi.com. 4. ^ Potentiometer 200K Ohm Variable Resistors from gadgetskingdom on eBay. 5. ^ Potentiometer 200K Ohm Variable Resistors from gadgetskingdom on eBay. 6. ^ Bourns PTV09A-4030U-B204 on Mouser. 7. ^ CUI Devices PT01-D130K2-B204 on Digikey. 8. ^ Switch, PCB SPDT Vertical - MC2MS1T2B2M2RE on CPC Farnell. 9. ^ MULTICOMP PRO 2MS1T2B2M2RE on Farnell. 10. ^ Dailywell 2MS1T2B2M2RES on Mouser. 11. ^ Elecrow. 12. ^ SMT/SMD 0805 Resistor and Capacitor Book on Adafruit. 13. ^ CUI devices MS0321KLX on Mouser. 14. ^ Visaton BF 32 on Mouser. 15. ^ 17x14mm Bicolor Knob on AliExpress. 16. ^ Multi-Color Micro Potentiometer Knob on Adafruit. 17. ^ VARTA Lithium 9V Block 6LR61 on Amazon. 18. ^ Ansmann 9V Block Battery 300mAh NiMH on Amazon. 19. ^ Ansmann Powerline 9V Charger on Amazon. 20. ^ USB Type C 3.1 PD to 5.5mm Barrel Jack Cable - 9V 5A Output on Adafruit. --------------------------------------------------------------------- Next: Sound Lab - Example Sounds Previous: Logic Lab 1G --------------------------------------------------------------------- Please enable JavaScript to view the comments powered by Disqus. blog comments powered by Disqus Copyright (c) 2014-2023