The white phoenix - project log for a hybrid synthesizer

Hello!

I started a new project and would like to share my progress here, get in touch with others and discuss. I followed the WAVE-synth thread with great interest and found a lot of nice ideas there, so I thought I’d do the same with my project and hopefully its interesting to read for others.
Here is the first few chapters!

TheSlowGrowth

PS: By the way - please comment also on writing style and whatever you think when you read it. I’d be very happy to get in touch with other synth designers.

=
Chapter 1 – The why and how

Todays market is flooded with synthesizers of all kinds – expensive ones, cheap ones, digital ones, analog ones, hybrid ones. Some of them are ridiculously cheap – it hardly makes sense to design and build your own. Nevertheless I have set myself the challenge to design a mono-hybrid synth. Why?
I’m a student of electrical engineering, and like to design my own stuff as a hobby. I like what I do, because I have full control over what my devices will be like and I can learn so much on the way. I’m also a synth freak who likes complex sounds and ambient music. So the idea of making a synth was there a long, long time but I always felt like its a little to hard for me.
Now that I discovered the Mutable Instruments Shruthi-1 with its open source soft- and hardware I learned a lot and found a base to build my synth of dreams upon. Especially the filter designs had caused me headaches but with the Shruthi I have a bunch of very good sounding filter circuits at hand that I can use as a starting point.
My workshop has continuously grown in the past years – as has my knowledge in electronics, signal processing and programming. I finally have a decent oscilloscope, my studies have brought me the powerfull math of the „frequency-domain“ and I generally feel like the time has come to start this project and see how far I get.

I decided to make a build log and post it somewhere on the internet. Not just to keep myself motivated when it gets more and more complicated. Writing my progress down also forces me to justify every small decision I make. It forces me to take my time and rethink every aspect of the project. And hopefully some people can find inspiration to build their own stuff. Or contribute their good ideas to help me out when I’m stuck.

Ah and one more thing: THANK YOU OLIVIER for making your hard work public! I really love your Shruthi! You are the one who actually made me start this whole thing!

So this is it. This is the start of a long journey. I’m so excited!

Chapter 2 – The what

Overview

So what am I trying to create? Well, a synthesizer. Now that’s a rather wide term that covers all sorts of devices so I’ll try to get my vision and thoughts a little more concrete.
First of all: My former projects tended to become the “one and only” type of thing that has every little feature and avoids any compromises. Those type of projects get incredibly expensive and never get finished because they are way too complex. Everytime you finish something small, you realize it could be a little better if you just added some more stuff here and there and suddenly you have something huge that collapses.
This time I’ll try to be a little smarter and I’ll try to allow the thought that my “super-device” won’t be super in every aspect – that it will have flaws in some areas and be strong in others. Basically I’ll try to make compromises in the right way so that it works for the purpose I’m aiming for without getting too big.
The first of theses compromises is: I’ll make a monophonic synthesizer. Yes, polyphony is something great, but for the type of sound generation complexity that I have in mind, its just not feasible without breaking my bank account.

My synthesizer will be able to produce the standard sweepy filter + sawtooth sounds but that’s something you can get from any synth out there, because they all seem to have the same type of architecture underneath. I want to do something more advanced. For me it’s really important to have some decent modulation sources that can create rich ambiences and complex soundscapes. So this will probably be my target-area: A complex architecture with all sorts of weird retriggering, modulating and routing.

Filter

When I build the Shruthi (which was my first synth with analog filters) I didn’t believe in the whole analog-hype. I thought, there’s nothing in a filter circuit that clever math can’t emulate and the filters in my Nord synthesizer do sound really good which kind of supported my point of view. Then came the Shruthi and it changed my mind. Its 4pole lowpass filter is relatively simple – but it just sounds so fat and juicy (especially in the base range) even without using super high quality audio parts. So my decision was clear: My own synth will have at least one analog filter in it.

Oscillators

For the oscillator part, I have to say: I don’t really like to deal with all the tuning problems of a real analog oscillator. It’s just a whole new science only to get a VCO stay in tune over a few octaves… And probably more important: You can’t have all the wavetable goodness that I fell in love with since I have my Waldorf Blofeld. Regarding the latter: The wavetables in the Blofeld sometimes sound a little dull to me, they are missing the harshness of the “analog style” waveforms which as far as I can tell is due to the small size of the wavetable itself. There is not much potential for overtones, when the wavetable has only 128 samples in it. So this is a spot where I think I can get a big improvement in sound by just using some more memory.
So as a result: My oscillators will be digital and they will have all the fancy stuff you can do: FM, wavetables, simple analog waveforms, transient generators, noise, ringmod, … The good news is: Here I can stop making compromises as long as the processor of my choice has resources left. I can add more stuff than I can imagine and it won’t increase the price at all. I can start with simple waveforms and implement more if I like to. Yes, that makes me really happy: I can tweak and add more stuff without having to redesign other parts of the synth.

So with digital oscillators and analog filters you basically have a hybrid synthesizer. Mine will most likely have two different types of filter and 3-4 oscillators which I find is a good amount for an advanced sound creation machine.

FX

I definitely want to incorporate an FX section, though I don’t think I can create a decent reverb myself. There are some FX daughter-boards available and I will probably use something like that.

Modulation

The modulation sources will include LFOs, envelopes, step sequencers and some more fancy modulation sources which I will cover later. They will all be done digitally. There’s just so much you can do… I guess deciding which kind of fancy modulation source to include an which not will probably be the first compromise to cause me headaches. Especially when I think about the user interface…

User interface

Speaking of the user interface: I have a Nord stage and a Waldorf blofeld. In terms of their synth engines and their interface, the two coudn’t be more different: The Nord has a simple architecure (it doesn’t even have Sustain in its envelopes) but everything is present on a dedicated knob. The Blofeld has a complex architecture with many, many inspiring tools but it only uses a few encoders and buttons to access the stuff. Both of them have their strengths and weaknesses and I really enjoy playing them both. But they taught me something important: An instrument is only as good as its weakest part: On the Blofeld I sometimes need a minute or two just to dial in something I had in mind but it has so many features, I could explore it for ever. On the Nord I find myself being frustrated because of its reduced feature set. At the same time I love it for its interface that has everything right there and just encourages me to tweak.
So will I do? I pretty much settled for a complex architucture but I find the one-knob-per-function interface of the Nord very inspiring because it never gets in the way when you fiddle with your sounds. However, both together result in a huge user interface with many, many knobs and buttons. And that will break my bank account and distract other people from building my synth or modding it.

So the user interface is something that will take a lot of time to get right. I have a few ideas that could work out pretty well, but more on that later.

In short

  • monophonic, hybrid sound creation with digital oscillators and modulators + analog filters
    two different flavors of filter (maybe a 4pole svf and a polivoks?)

  • oscillators will have all the juicy stuff like FM, wavetables, ringmod and algorithmic mangling, noise, transient generators, …

  • lots of modulators (LFOs, envelopes, some more fancy stuff) with an aim towards self-stimulating soundscapes and ambiences

  • extensive routing and modulation possibilities.

  • FX section using a ready-to-go daughter-board

  • User interface trimmed for easy accessibility and reasonable complexity. This will be one of the most important aspects to get right

So there it is. I said, I’ll try to make compromises to keep cost and complexity low. It doesn’t quite sound like that now that I read the lines above…

Oh, one more thing: I think it will be called “the white phoenix”

It is cool you have chosen to share your development, welcome.

One thing that would make your journey easier to share would be if you kept a photographic log too. Maybe on a site like flickr, web clamors for images!

Will your synth be open sourced? Do you plan to make it DIY in part or total?

Hi Varthdader,

thanks for your response. Yes, a photo log would be cool. And it would interrupt my blocks of text :slight_smile: I’m currently thinking about whether to upload photos here or on some external site. I never used flickr as an uploader - I might just create an account now.

Yes, my synth will be all open source. I don’t plan to make any kits or something. It wouldn’t sell well anyway - I expect the final thing to cost around 500-600€. The success of the shruthi is partly based on its relatively low price to which my thing won’t compete well.
I don’t want to compete to anything existing really. I just love to build stuff myself.

Yes, it will be done in DIY completely. Well, i guess I’ll have PCBs made somewhere and the front panel, too. And I probably won’t make the FX unit myself. Getting into real DSPs is just too hard for me right now. And don’t try to programm a reverb without a decent amount of memory.

PS: is there any way to format text here? Its annoying not to have simple bullets and bold text.

@TheSlowGrowth: Welcome to the Shruthiverse™!

First, text formatting is very easy with no HTML involved. You put * symbols around the word or words you want to make BOLD.
When you want italics, you put the _ symbols around the words you want to italicize.
You can strike though words using the - symbol.
I do not know how to make bullet points, but that should be possible too.

And linking is pretty straight forward. Just put the " LINK TEXT " in quotes followed by a colon : and then the HTML link you want to link that text to.
If you want to embed a video or image or sound cloud link, simply make the LINK TEXT the same text as the HTML link. All formatting is done automatically. Simple, right?
You will want to use Flickr or another image sharing website because you can link to higher quality external images that you can’t post here as they will exceed the file limit.

Glad to see another cool DIY project, and I am looking forward to your progress!

You may want to focus on the digital part of your synthesizer first as well as the interface and MIDI implementation. If you are going to simply re-use one of the Shruthi filter board schematics, I would highly recommend making a great Digital oscillator with MIDI and let the user run it through an external analogue filter - like the Shruthis or any other monosynth currently on the market. There is no sense in reinventing the wheel, and that will cut back on cost. :slight_smile:
That is just my recommendation after reading through the first posts in this thread.

Also, how do you like the Shruthi interface compared to the Nord or the Blofeld? I quite like the way it is presented and used. I feel the strong point of the Shruthi is the fact that each page displays up to four parameters instead of just one or two that have to be selected by cursor buttons until they are active for editing.

Ahh great, thank you, i will immediately re-edit my posts above!

Yea, I like the shruthis interface. Its cheap! And straigth forward. For a synth that comes as a diy kit for the masses and must be cheap yet easy to use, it is perfect. It manages to present a lot of stuff in an easy fashion.

But there is one major problem: Pots instead of encoders. I often found myself editing on one page and going to another, editing there and then going back. And now my knobs don’t match the values on the page so you get a jump. I know that there is the snap-function (or whatever it is called) and its a great idea, but it made thing uneccesarily complicated. I found it confused me sometimes. I want to have instant access to stuff. So with the snap its more like: Select the page, find the right encoder, dial it to the right position and then finally make the change. For me thats too much work to get to a parameter.

On the other hand, finding decent encoders with good resolution is hard and they will be very expensive. I have a great idea how to use just one very high resolution optical encoder with a 32led ring around it to control all parameters. I will share it soon and see, what you think about that.

Also what I didn’t like was the way non-continuous parameters are edited with the pots (like modulation sources). Its a little fiddely when you have more than 8 possible values. Its clever in the constraints of the shruthi interface but in my interface I will use up-down buttons (like waveform selection on the shruthi XT) and sometimes the display in conjunction with some buttons. I will point it out later.

Making just a digital oscillator is not the thing I have in mind. I agree it makes sense from a cost point of view. But to me that feels like a crippled instrument (maybe its not) and I’d rather want to have something that can work on its own.

Comparing Shruthi vs. Nord is not fair. The Nord is like 3300€ and is not really aimed at pure synth sounds. But okay: It has everything right there. More reverb? Move your finger to the knob and turn it. Thats all. The worst that can happen is that you have to use shift and a button to change a setting (like arpeggiator sync or so). Its really a joy to jam with this thing.
Comparing the Shruthi vs. Blofeld: The interface is pretty similar actually. The both use buttons to select a page and four knobs to edit. The Blofeld however has this gorgeous display that’s just a joy to use. But despite it has encoders (which I find really good) it still suffers from the same “dial in the modulation source” problem. Its soo fiddly. I hate that. But in general: Its cheap and simple and that’s a huge plus.

An overview over the basic architecture I’m aiming for. Nothing fancy.
The filters can be switched in series. For this I think its best to put the dirty filter first and route it into the cleaner filter in case someone wants to smooth the dirty polivoks sound.

Do you plan to have audio inputs for sound processing?

yeah ! Looks cool !

hmm, audio inputs… never thought about that. But it should be easy I guess. Yes, why not? Its just a matter of two input jacks and a few resistors, right?

Hi Slowgrowth,
I am thinking about synths design, but I don’have the time to really do it. So I am curious how you will get forward with implementing yours. Let me add some comments:

  • I like a 4 osc design :wink:
  • right now I am missing more details in the Osc section: sync, mixer, …
  • I would think of an envelope and vca for every osc, so if you have wavetable and samples in mind, you can morph or mix mavetables.
  • I would think of DAHDSR as a scheme for envelope. Delay Attack Hold Decay Sustain Release.
  • the filter thing: I would probably add even a third one in 4PM style to get notch and similar things

I am really curious what kind of beast it will be in the end, and how you get forward with it,
Reinald

Hi Reinald,

The oscillators will probably have the following features:
Semitone detune, fine detune, sync, FM, start phase (random, fixed, … maybe?)
I plan to use a rich set of waveforms, starting with the basic ones like sine, saw, pulse, triangle; then later I will add wavetables, formant, whatever I can imagine. Each of the waveforms will have a parameter. For the wavetables, it will be the wavetable position. For pulse it will be the pulsewidth. For the other waveforms I still have to think about what the parameter could be.The good thing is, it does not require any change in the hardware. And as long as the processor has enough resources left, I can continue to add more waveforms.
The same applies for the algorithmic module.

Regarding the envelopes: I will stick to ADSR on the front panel but make more stuff accessible with the display (like DAHDSR, of ADSDSR, …). I fell in love with the looping envelopes on the blofeld, so I guess I will have all kinds of different envelopes in the end.

Regarding the third filter, you suggested: I won’t do that. I don’t think I will use the third filter much. There is a technical limitation as well: Each filter requires at least two control voltages + another VCA. I want to be able to play the filter, so those control voltages have to be high resolution (at least for the cutoff). I have an idea on how to create those high resolution CVs, but i don’t think I will have enough CV channels to add a third filter.

Chapter 3 – Choosing a processor + hardware structure

In past projects I worked a lot with Atmels ATMega series processors. They are 8bit, simple and I know them very well. I’m impressed by the way the shruthi is designed. It uses those type of processor and it manages to pack so much into it while still having well-readable code. I’m super impressed by this work of art! However, at some points you can feel that there has gone a lot of work into optimizing and squeezing. And there is stepping in the parameters. So my synth will use something much more powerful than 8 Bits and 20MHz. It’s just not much more expensive to choose a more capable controller and save all the optimizing-headaches.
However, building something from scratch and starting with a completely new processor platform is a big deal of effort. The ATMegas are simple, but looking at the datasheets of more powerful micro-controllers, I feel a little overwhelmed by all the complexity. There’s so much to know, only to make those beasts boot…

So I decided to go for the Midibox environement. The latest Midibox core module uses an STM32F4 with 168MHz clock speed, floating point unit, 1M of flash memory and much, much more. It has all the basic low level stuff (USB MIDI interface, DMA, Timers, bootloader, …) already done for me and will allow me to skip all those time consuming things.
However, I won’t use any of the MIDIbox boards. I’ll just use the processor board and do the rest myself. It’s not the “not invented here” syndrome – I just don’t see much sense in bending something to fit my needs, when I could create an elegant alternative in the same time.
The STM32F4 will handle all sound creation and modulation algorithms. In addition it will handle the user interface – though I might add another small ATMega for this task if it proves to be simpler. I have a few STM32F4 development boards flying around. They are dirt cheap and have all the basic components on them so it would be foolish not to use them. I know they might be discontinued some time in the future – but this can happen to the whole processor family so I’ll be okay with this and take the advantage of not having to design all the fundamental stuff needed to get the processor running.

Hardware structure

There will be one big main board that carries the user interface (buttons, knobs, leds, display). Given that this board will not be populated densely, I will probably have enough space to put the filter circuits on the back of the board. However, I’m a little afraid of getting digital noise interference from the UI into my analog filters. Especially since I want to use PWM modulated LEDs on the front… It will all boil down to component placement, I guess. Maybe I will have to put UI and sound engine onto separate boards and pay the price… Only time will tell.
The STM32 discovery-board will be piggy-backed on the main board. The same applies for the FX board. So the whole synth will be a few boards directly mounted onto each other. No free wiring of user interface components. I hate that. It looks like crap and is hard to debug.
The front panel will be relatively large I guess. I’m trying to find someone who helps me design a decent artwork but I guess there is a lot to do, before I should bother about the interface design and colors.

So far a rather conservative Design we have seen a zillion times.
Some suggestions:

  • if you have 4 Oscillators, why not incorporating a Vector Mixer a la Prophet VS?
  • make the Envelopes real Multistage, not just pimped ADSR
  • who says OSC-> MIXER > FILTER> VCA -> FX is the only possible architecture? What about an programmable audio Matrix that allows to rearrange the Filters, VCA and FX in any order you like, probably incorporating a simple routable mixer.
  • what about a Waveshaper instead or complementing a Filter ?
  • for the Oscillators: go check BRAIDS. This is what a modern Oscillator should be like.

Yea, rather conservative, you’re right. I would love to do somthing really advanced, but I’m afraid I’ll run into trouble with a too complex design…
vector mixer: it would need two vector mixers, since I have two filters. Actually that sounds really nice - I will keep it in mind and try to find a good interface for that.
Real multistage envelopes sound great, but how could I make this feature accessible with a clean UI? It would be relatively easy to program but I can’t imagine a way to edit those types of envelopes without a graphics display and lots of menu-diving. Any suggestions?
Matrix mixer: That will require a lot of hardware. Can you give a little more details on what you have in mind and how you would build something like that hardware-wise?

Yes, Braids is really cool. I looked into the sourcecode already and listened to the demos a thousand times. I know I could just copy the braids oscillator into my synth, but that feels wrong to me. I really love that Olivier makes his stuff open source - and I thinks its not respectful to steal his sourcecode. I will most likely take some ideas from braids. AFAIK braids is not all too different from what i have in mind, except that there is build in modulation and two parameters per waveform.

PS: how do you make the bullet points?

  • This is a bullet
    *# this is the start of an enumerated list within a bulleted list
    *# this is another item list of an enumerated list within a bulleted list
    ****# this is another level of an enumerated list within a bulleted list
  • This is another bullet

Found here:

Just look for “bullet” in the page.

You easily can build am Audio Switch Matrix using a bunch of 4051s
Just adapt the usual SubGroup/Bus concept from real Consoles to your needs.

Regarding Multistage Interface UI:

As for using BRAIDS Code; its not stealing, its meant to be (re)used by you and you are surely encouraged - have a look at the License.

You get Bullets when you place a * right at the beginning of a new line you started with a [CR]

hmm, okay. Maybe two traditional envelopes and two multistage envelopes? I’m afraid the panel gets very crowded with more multistage envelopes…
I really like the vector mixing, but it only works for 4 audio sources. I have many sources: 4 oscs, waveshaper, algorithmic unit, noise, transient. So what about this:

  • vector mixer with assignable inputs
    • the different soudn sources can be assigned to the corners of the vector mixer. Porblem: you can never use all sources at the same time.
  • or: cascaded mixing structure
    • mixing the 4 oscillators with a vector mixer.
    • using a traditional mixer to add noise transient generator, waveshaper, algorithmic unit to the vector-mixed oscillators

IANASD (I Am Not A Synth Designer), but in my opinion it’s better to use Shruthi-like parameter pages, a Waldorf-style parameter matrix, or even an α-Juno-like single encoder control scheme than to create a “knobby” synth that’s almost-but-not-quite one-knob-per-function.

For this reason, something like the Waldorf Micro Q:

… is actually easier to program for most people than the Waldorf Q:

One-knob-per-function is still the best interface possible, but only if there’s truly a one-to-one mapping between the current state of every element on the control surface and every parameter the synth engine offers. This is only really practical in a modular system, or in a relatively “undeep” synth such as the *Brute.