Close
0%
0%

SynBlox : Low Cost Modular Music Synthesizer

Modular Synths are expensive and complicated. I propose a low-cost, entry-level/educational system to make the basics available to anyone.

Similar projects worth following
Modular Musical Synthesizers are very, very cool. They are also very, very expensive and complicated. The bar to entry, both in terms of cost and understanding, preclude a lot of people from trying it out. What I envision is a simple modular synthesizer comprised of self contained modules that won't require racks or enclosures. They connect to each other with patch cords, and the circuitry is designed such that it is impossible to damage anything by making a wrong connection. Think ... if Lego designed a synthesizer. . . .

I see the user of this system being someone who wants to try synthesizers without shelling out a couple thousand dollars. Or a first synth for a teenager on a limited allowance. Or a tool in an elementary school classroom, or a rugged instrument for a high school, both of which exist with hugely constrained budgets. Low cost and totally open. I'd love to see what people can do with this.


Goals and Expectation Management

One thing needs to be explained right up front. While what I want to build will be fully functional system, this will not be an instrument you can stack up against an Arturia, a Make Noise, or a MOOG, But then those systems cost around $2,000, $4,500, and $10,000 respectively. As I said in the introduction I want a system that, while a fully functional instrument, is as low cost as possible. What this means is that, for example, while an Envelope Generator in a big modular syth is built using an assortment of op-amps, gates, transistors, pots, capacitors and more, the FUNCTION of an envelope generator can be built using one small microcontroller and a very few other parts. So while this is going to be an exercise in engineering, it is also going to be an exercise in cost containment. 

The primary way to reduce costs here is going to be by whittling down the parts count (Bill of Materials, or BOM) to as low a number as possible. And the primary way I plan on doing that is by doing as much in inexpensive microcontrollers as possible. Sub-one-dollar micros have plenty of horse power these days to manage this application and what's more, they now come in varieties that contain op-amps, DACs, ADCs, and other analog circuitry. 

Keeping the BOM line count low also means that we're keeping the printed circuit board (PCB) size low, which provides another cost savings as well as allows us to use small, inexpensive off-the-shelf enclosures. Custom costs money, so we'll have none of that. <grin>

One of the handy things about building a modular synthesizer is that by their nature they are chopped up into discrete circuits, or modules. This allows us to create a logical sequence of which to work on first. 


Step 1 : To start, we will need a foundation. That is, a power supply, a controller, and some sort of audio amplifier. 

The power supply is fairly simple. I want all of the various modules to work off of a 5 V dc power source. Doing so will let us choose common and inexpensive parts for various circuits in the system. As I envision it now, I picture the power supply module containing a rechargeable 6 volt battery pack, as well as a provision for charging the pack via a USB connection (power only, no data). We can use one of the billions of USB phone chargers littering the Earth to charge the pack, or an end user can use an available port on their computer.

The controller couldn't get much simpler. We need to provide a trigger signal, and a variable control voltage. The trigger is simply a push button, and the control voltage will come from a potentiometer connected as a variable voltage divider. 

For the audio amplifier, well, if were keeping cost low how can we consider anything other than the LM386? This ubiquitous little audio amp can drive the tiny speaker I envision using, as well as provide for a stereo headphone jack. This module should also provide for an audio output suitable for feeding PA or recording equipment.


Step 2 : Having power, control, and output, the next module we'll need is an oscillator.

The Voltage Controlled Oscillator (VCO) is really the heart of any synthesizer, and in this project probably the most complicated. Conventional VCOs are typically based on complex analog circuitry based on op-amps. These oscillators work great but there are some drawbacks. They need to be calibrated, their tuning can shift with age, and their circuits can be quite temperature sensitive. This is the first place we'll be ditching a lot of analog circuitry and going with a microcontroller.

As I type this I do not know how I'm going to build this VCO. There are several ways to generate a waveform with a microcontroller, and three lend themselves to this application. We could generate a pulse width modulated (pwm) signal directly, and filter that into an analog wave. Or we can use an external digital to analog converter...

Read more »

  • 1 × NOTE Separate BOMs are provided in the GIT Repositories given with each build log.

  • Log 3 - The Mini Controller.

    John Schuch04/23/2018 at 07:49 0 comments

    The Mini Controller provides the two basic control signals used by the modular synth; A variable voltage that would likely be used to set the pitch of a voltage controlled oscillator, and a trigger used to initiate envelopes, sequences, or any number of things. 

    It would be very easy to presume that all we need is a potentiometer set up as a voltage divider to provide the Control Voltage (CV), and a simple push button to create the trigger.  If only things were that easy.

    The pot for a variable voltage is fine, but we have no idea what an end user is going to plug this control signal into. More importantly, the load of whatever they are going to use. This unpredictable load means that we can not predict the output of the controller. 

    As for the trigger, if all we wanted to do was gate an audio signal, or trigger an envelope generator, a simple push button would probably work fine. The issue is if the user wants to plug this trigger source into a sequencer, or some other logic based device. For a sequencer, any electrical bounce in the switch is likely to send it to some random state, rather than the next step.

    The lower half of the schematic is the control voltage circuit. You can see we have a 100K pot set up as a voltage divider as you would expect, but now we feed it into a buffer. The MCP601 op-amp is set up as a voltage follower. That is, whatever voltage level is presented to the non-inverting input will be sent to the output. But the input impedance of the op-amp is very high and will not change with changes in output load, so the voltage level generated by the pot will remain stable and predictable. 

    The upper half of the schematic is our trigger circuit. There are a LOT of ways to debounce a push button switch, and this is my favorite. A PIC10F200 is dirt cheap, and using software to debounce the switch give us all sorts of variability and control. In this circuit we're going for the simplest application; just debounce the switch and send the output on it's way.

    The code to do this is so small I'm going to include it right here ...

    /**************************************************************************
     * File:   debounce.c
     * Author: John Schuch
     * File Version : 1.0
     * Created on April 14, 2018, 3:00 PM
     * 
     * This software is released as PUBLIC DOMAIN. No rights reserved
     * 
     * ************************************************************************
     *  Target           : PIC10F200
     *  Compiler         : MPLAB X v3.45 (free mode)
     *  Additional files : NONE
     * 
     *  Description :   Provides debounce of the pushbutton on the SynBlox
     *                  mini controller, part of my submission to the 2018
     *                  Hackaday Prize contest.
     * 
     *  Pins :  PIN 1 : N/C
     *          PIN 2 : Vdd
     *          PIN 3 : GP2 - pushbutton input, 10K pull up
     *          PIN 4 : GP1 (ICSP clk) output, indicator LED
     *          PIN 5 : GP0 (ICSP data) Module trigger output
     *          PIN 6 : N/C
     *          PIN 7 : Vss
     *          PIN 8 : GP3 (ICSP Vpp)
     * 
     */
    
    # include <xc.h>
    # include <pic10f200.h>
    
    // CONFIGURATION ------------------------------------------------------------
    #pragma config WDTE  = OFF      // Watchdog Timer (WDT disabled)
    #pragma config CP    = OFF      // Code Protect (Code protection off)
    #pragma config MCLRE = OFF      // Master Clear Disabled
    
    // MAIN PROGRAM -------------------------------------------------------------
     void main(void) {
         
         // Initialization 
         TRIS = 0b1100;                 // Set GP0 & GP1 as outputs
         int Out_State = GPIObits.GP2;  //read initial button state
         GPIObits.GP0 = Out_State;      //write initial Out_State to output
         GPIObits.GP1 = Out_State;      //write initial Out_State to LED indicator
         int count = 0;                 //loop counter for bounce
         
         // Main Loop 
         for(;;) 
         {
             while (Out_State == GPIObits.GP2) {} 
                                //wait for button (GP2) to change
             
             while ((count++ <= 200) && (Out_State != GPIObits.GP2)) {}
                                //wait for button (GP2) to be stable for 200
                                //loops or button to revert to it's previous
                                //state (bounce event) 
             
             if ( count <= 199) //if we didn't get to 200 loops this was a
    ...
    Read more »

  • Log 2 - A Prototype Power Supply

    John Schuch04/23/2018 at 07:09 0 comments

    Since one of my design goals for this synth is that it be portable, it obviously needs a to operate from a battery pack. There are a lot of good designs for lipo battery packs and charging systems out there. Also quite a few breakout boards and components from the hobbyist suppliers we all know.  But since I have no idea what the final current requirements for this system are, I wanted something pretty quick and dirty (and inexpensive) to get things rolling. And I found just the thing.

    Pictured is one of those "Power Bank" battery packs that is designed to recharge your phone when you are not near your charger.  Most people probably see just that. I saw, however, a 2200mAh Lipo battery and a charge controller for $6.45 from Amazon. It would have to be reworked though. The output needs to be provided across a pair of RJ-11 connectors which is what all of my modules will be using. I guess you could hack some sort of adapter cable together to make it work, but that certainly would not be sufficiently rugged, and I wanted the battery pack to look like the rest of the modules in the set. 

    Taking the unit apart was trivial. The cover snapped off easily revealing a single battery cell, and a small circuit board that held the charge controller. The board has a full sized USB socket that provides voltage out, and a mini-USB socket for charging the battery. 

    I wired the two RJ-11 jacks in parallel, then wired the power leads to the back of the full sized USB connector on the controller board. 

    Granted, this is a terribly simple hack. I've included it for two reasons; First, I earlier published that the first module I'd build is the power supply so I thought I should mention it. But second, and more importantly, just wanted to point out that if you're building some form of portable project that needs 5 volts, there's no need to reinvent the wheel. These cell phone battery packs come in all sorts of capacities, and are really a bargain considering what you get!PARTS USED:


    PARTS USED:

  • Log 1 - The 6-8 Pin PIC Proto Board & Enclosure

    John Schuch03/20/2018 at 03:49 0 comments

    The modular nature of my HackaDay Prize entry suggests that I will be building a lot of small PIC based circuits. For quite a while I was a huge fan of the tiny PIC Proto board produced by TAUTIC Electronics. Unfortunately they are not available any more so I decided to design my own, and while I was at it, design it to fit into the enclosure I hope to be able to use for my synth modules. 

    Read more »

View all 3 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates