On The Inside

On The Inside

Sunday, August 30, 2015

SmartCans at Intel IDF




Along with several of the other Intel Innovators I was invited to Intel's IDF conference in San Francisco to show off the SmartCans project.  I had a great time talking about the project and received a lot of interesting and valuable feedback.

SmartCans Takes First Prize

I've been meaning to post more on the Intel Incubator program at the Sacramento HackerLab that prompted the SmartCans project. The program lasted about eight weeks, give or take, and culminated in a demo night where we were able to show off our projects.

The competition was stiff and there were many great projects.  Consequently, I was somewhat surprised, and of course delighted, when SmartCans was announced as the first prize winner. After the awards, Bob Duffy of Intel interviewed me and I discussed the motivation behind the SmartCans project.


Although there haven't been very many updates regarding the build progress lately, SmartCans is an ongoing project. I'll have more to report soon regarding progress with software as well as some new hardware development with the second revision of the SmartCans prototype. 




Juno VCF/VCA Module

Here's a filter module based on the Juno-106 filter chip. It came from an MKS-30 which had lost a voice. The MKS-30 is being fitted with different filters and will be the subject of a future entry. The Roland IR3109 filter, which is what the 80017 module contains, is a really good sounding filter. It's the same filter that's in the SH-101 and the MC-202. When you put it in a module form it sounds even better.

The 80017 module also contains a BA-662 VCA which is considered to be one of the best sounding chip VCAs ever put into synths. Combine the VCA and the VCF and you get a great sounding module.

This module allows you to use the VCF and the VCA together or separately. The VCF is normaled to the VCA but plugging anything into the VCA input disables the normalization. You can tap the VCF output without removing it from the VCA input in cause you want to further process the sound.

But what about the original MKS-30 sound?

An MKS-30 with 80017s sounds like every other MKS-30 on the planet. It's about as unique as Coca-Cola. Polysynths are a fantastic source of parts and the overwhelming majority of them are mediocre copycats of whatever else was available at the time. So go ahead and cut a few up and do something interesting with them, they won't be missed.

I think that it's useful to think of existing synths as a breadboard with all the hard and boring work like voice assignment, control voltage multiplexing, and patch storage already done. One can then remove some or all of the voice circuits and re-purpose the synthesizer into something unique

Some synths are so bad, cheap, or a fantastic source of parts that I don't even bat an eye about turning functional units into a nice collection of synth parts. There is one caveat, however, you do have to know how to scavenge parts. It's easy to destroy chips trying to remove them.

Circuit Description

If you look at the Juno schematics you can see that the Juno voice circuit is meant to work with CMOS levels and the CMOS is powered off of 5 volts. So for the most part, if you just duplicate the Roland voice circuit you should be able to get the bare chip to play with other gear.

There are some things to be careful about though. The filter CV is inverted and has a very restricted range. I use an op-amp to invert the signal and then scale it down to about +- 0.4 volts or so. Even at that level, turning the resonance up full the VCF oscillates from a few hz to 60khz. There is a pot on board to adjust the swing and it's set at about +-0.25 volts or so. This allows it to tune between a few more hz than a few hz and about 25khz or so.

For the res and vca CV inputs I just duplicate the Juno voice circuit using 2n3906 transistors. You don't need the 0.1 mf caps as they are there to smooth out the multiplexed CV. Just a resistor and the transistor is all that you need.

That's really all there is too it. Put the right resistors on the inputs and outputs and away you go.

The important part of the project was getting the smooth juno sound, not making a super accurate filter. If your goals are different you might have a lot more work to do. If you just want the juno filter sound in your modular, very few external parts are necessary.

Getting Started with High Level Plugin Design: Synthmaker/Flowstone, Synthedit, Max for Live, or Reaktor?


A lot of people are interested in getting started with synthesizer programming but are unsure about how to get started. I'm a computer scientist by training and have no problems using low level languages like C or C++. However, even for the experienced, that can be time consuming. For the initial high level prototyping, I tend to still prototype in Reaktor.  I don't think that there's a better choice for this kind of work. If you want to consider some basic idea for a plugin, you can probably find the pieces of that idea already in the library. You can also integrate various testing tools into the prototype environment itself. If you choose to start with Reaktor, then I think that the most direct comparison and simplest transition is to Synthedit. You will find the environments similar on a basic level. An advantage of Synthedit is that building externals is fairly straightforward.  This combination gives you a fairly nice path as follows:

1) Develop ideas using high level prototyping in Reaktor
2) Build prototype of fixed idea in Synthedit
3) Build externals for each of the components in your synthedit prototype.
4) Merge previous externals into a single synthedit "synth/effect" external.
5) Transition to SDK using your synthedit synth/effect external as a starting point.

You could skip right to step 2, but, I find Reaktor so much more immediate and complete, that I find early stage prototyping less annoying in Reaktor. You will also find that Reaktor is fantastic just to have as an effect and synth plugin. Really, for anyone that creates music and wants to go down this path, I think Reaktor is THE starting point. The reason that you don't skip right to step 4 from 2 is that the existing modules in Synthedit allow you to add your C/C++ code one module at a time. For example, if you're building a synth, after you get it working fairly close to your goal, maybe you want to build a specific filter. You can develop this module while keeping all of the standard Synthedit modules in place. You can release this at any time, of course, choosing to incrementally develop more and more of your synth in C/C++. When you have the core developed, you can then transition to a cross platform version of your synth.

Synthmaker: I like synthmaker, it has become Flowstone. Synthmaker/Flowstone will get you to a nice looking plugin much faster than synthedit. You can have something to upload and give away with a weekend's worth of work.  Underneath the hood, however, it's quite a bit more complicated and it doesn't have the nice path that synthedit does to creating a C++ plugin. That said, it has a very nice DSP language that you can use to code up blocks and I've found this helpful for algorithm experimentation. It's often much more immediate at a low level than Reaktor because you don't have to drag a bunch of blocks around in order to add two numbers. Is it worth the price of entry?  For most people, I don't think so. On the other hand, If you don't want to learn C++, you do want to create 3d modeled looking synths with a minimal of effort, and you are willing to accept the stock controls, synthmaker is the fastest way to get to a good looking windows plugin.  If you want to go beyond that, you should measure its utility by asking whether what it does well is worth it to you for some part of your process. If you want to get the basic feel of Synthmaker, then you can get SynthMakerCM from most issues of computer music magazine. It has many demo-ish limitations, but, it's cheap and you can see what it can do at a basic level. IIRC, you can generate a VST with SynthmakerCM as long as you don't mind the UI having a SynthMakerCM logo on the front.

Max: I love MFL (max for live) primarily because it allows me to build user interfaces that work in the live environment. If you already own and use live and want to upgrade to suite, then this is probably worth the investment. There are quite a few practical elements in the MFL library so it's not bad for that first prototype, but, it doesn't translate as well to synthedit as Reaktor does as there are quite a few work/thought-flow differences.  If you have full blown Max there is a feature similar to synthmaker called GEN that allows you to write modules in a terse DSP like language. I tend to prefer Max+Gen, as opposed to SynthMaker, for this kind of experimentation now, but this doesn't come with MFL and I don't know if you can buy just the Gen license to add to MFL. In any case, it's an expensive route and I think Max has quirks that are in some ways more difficult to master than Reaktor/Synthedit; granted, some things are decidedly easier.  Max does allow you to use externals so it can be a bridge to coding your own fully C/C++ plugins, although for me, it's not quite as straightforward as Synthedit.

Pd: Pd is just open source max with a lot less of some stuff and some more of other stuff. If you think that you might get on with Max or MFL, download Pd first, it's free.

tl;dr: Reaktor is the place to start, Synthedit provides the most straightforward natural path from "Reaktor idea" to "C++ plugin." SynthMaker provides the shortest path to released plugin that looks good, but it doesn't provide a natural path to C/C++. Max/MFL/Pd are cut from the same cloth, they have a different thought/work flow, some say higher learning curve, MFL is a natural fit for Live users and these tools provide some path to C++ plugin development, but it's not as straightforward as Reaktor+Synthedit.

The Mul-Ten

Huh? What's a mul-ten? Simple, it's a multiple-attenuator. Yeah, I like the name, goofy as it is and it didn't cost me an arm and a leg to make.
  1. Panel from blacet - $4
  2. Knob $0.50
  3. Jacks 5 * $0.75 = $3.75
  4. Pot $0.50
  5. Labels/Solder $1.25
  6. Grand Total $10.00
I had to put some labor into it too, of course, and, if I was selling these, I'd want to make some profit. Nonetheless, I think you should make your own multiples. There's really nothing to them and if it takes you more than fifteen minutes to make then you're doing something wrong.

The panels are rejects from Blacet and come pre-drilled for one of their modules. So there was no effort or time spent drilling the panel. I just had to decide what to do with the holes that were already there. As it turns out, this module is very useful and the combination is often used together. But the idea came from thinking "how do I use this big round hole at the bottom of my mult." Ok, it's no flash of genius, I agree. But it's as simple an example of the process that I can think of.

If I had been  paying attention to the Blacet site, however, then I could have made a pretty good guess which module these panels were for. Blacet makes a multiple attenuator that uses the same configuration that mine does. Their's is better, doh! They normal the mult to the attenuator so that you don't waste a mult jack when you want to use them together. I like my name better, but, I failed. I didn't do two things that you should always do when building modules.
  1. Look at what others are doing to incorporate the best ideas that are out there into your own work.
  2. After you think that your module is as good as it can be, ask yourself, can I do better?

The Do Over

Since my module is all about simple DIY, it won't cost much to correct my mistake. Sure my labels don't look all that hot but they're easy to change. If I had made a custom panel for this then I would have to do the entire panel over just to accommodate the change. I use a cheap Brother label printer that prints white ink onto clear tape so that it's easy to make changes when I'm forced to do a redesign. They are functional, cheap, and very ghetto! By the way, the labels and solder didn't really cost $1.25, but hey, I need to round up to ten bucks cause, well, ten bucks!

So what about that fancy normaling? There's no additional cost, just wire the input jack's normally closed connector to the mult common. In my case I also want to swap the wires going to the input and output jacks so that the panel has a better flow. That will force me to change the labels.


The Real Thing

Compared to the CMS masterpiece of a mult at $217, Blacet's module is not all that expensive. At $30 for the kit you won't break the bank. Besides, they use better pots than I did and since their module uses a pc-board you can probably assemble it in less time, mabye ten minutes instead of fifteen. On the other hand you can have three diy mul-tens for the price of one Blacet multiple-attenuator kit.