A new hybrid synth idea

This is just an idea at the moment, but it’s something I’ve thought about for the last 2 years at least. Using the Teensy Audio library to create a DCO bank and output that to an 8 channel i2s TDM DAC such as the CS42448. I picked up a cheap eval board for about $11 from AliExpress and last week I finally connected it to a Teensy 4.1 and eventually after some searching around regarding connections it burst into life. I’m just generating a tone on each of the outputs to test functionality.

Since then I’ve broadened the scope of the project to create a 3 VCO per voice 8 voice DCO bank. It has two LFOs, one for FM and the other for PWM. Each DCO has its own envelope too with positive or negative levels and these can also be used for FM or PWM.

I’m trying to be clever and capture the LFO output with a queue and make it available to the rest of the synth. So I have 3x 8 channel DACs and these are arranged as 8x filter CVs that will contain cutoff, key track, envelope, LFO and some sort of velocity scaling. Then 8x VCA CVs again that will contain envelopes, LFO and velocity scaling. The final 8 channels will be used for common signals such as resonance, effects control etc.

All of this is untested and I’m just putting together a proto board layout for the DACs and will attach the TDM device, also I have 8x mcp23017 to read a front panel of encoders and drive LEDs, plus 24 shift register inputs for buttons.

12 Likes

Phew mate! Thats a big project. Like to see it in action when you have finished it.:+1:

3 Likes

Ambitious idea @craigyb!

It’s safe to say that if there’s anyone in the group who can pull this off it’s yourself!

Myself, I try so hard not to plan in detail for home projects. It keeps me interested for longer and gives my brain (when awake) a steady workout leading me to the famous* Scots phrase, “I love the smell of nae plan in the morning!”

So, prep your space, gather your stuff and, for that all important mood setting, can I suggest a background play list of Barry Grey’s TV themes or the A-Team theme on a loop.

Crack on!

Best of luck!

*famous, as in made up

3 Likes

You’re a genius! I wish I had your knowledge level :slight_smile:

3 Likes

Making progress…

I’m working on this hybrid synth based on a Teensy 4.1 connected to a CS42448 TDM chip that is capable of 8 outputs. I had to build the front panel to progress any further and when my encoders finally arrived I’ve put this together. It’s 8* MCP23017 i2c input expanders, these are used to read the encoders and drive the button LEDs. I’m actually using 74HC165 chips to read the button presses.

It’s 8 voice poly, 3 DCOs per voice with the usual sine, saw, square, pulse, triangle waves. Each DCO has PWM with a separate second LFO. PW can be modulated by LFO, pitch Envelope or invert pitch Envelope. These are individual controls for each DCO. Same for the pitch of each DCO, you can modulate each separately from LFO1, Pitch Envelope or invert pitch Envelope, with depth for each. I plan to add some push and hold functions to the encoders where they will sync the functions to DCO A controls for quick access. Each DCO also has interval settings for -12 to +12 semitones (effectively an octave switch up and down). DCOs B & C have there own detune and there is also a pink/white noise source.

The Shruthi style pole mixing analogue filters are already constructed and as long as I can get the envelopes working it should be making g sound soon.

Most of it is working now, but I need to work out how to get the software envelopes and LFO from the queues I’ve created to drive the filters and amps.

Also it will be poly, unison and mono with note priority for the latter two. If I can work it out then I will add polyphonic portamento as well.

7 Likes

Well, this is another level of DIY’ing. The stuff I build is nothing compared with this monster hahaha. Im curious to see the final product

2 Likes

Thanks, this is more of an experiment , but it’s going well so far.

3 Likes

Hybrid synth update. This week I’ve made some good progress, although I’ve spent a lot of time trying to configure the DAC7568C chips I’ve used for a 2.5v reference and then still giving me a 5v swing despite only having a 3.3v supply, my eventual solution was to drive them with 5v rails and they worked fine with the 3.3v Teensy.

So now each DAC can generate 8 filter CVs including the cutoff, key track, envelope and LFO for the filters, 8 amp CVs including envelope and LFO for the amps. The LFO can be varied from LFO1 and LFO2 for each. The final DAC outputs the common signals like resonance, the effects levels and final volume.

I’ve started adding encoder pushes to zero certain controls quickly like LFO depth etc and select the LFO wave for LFO 1 & 2.

I added a x-mod function from DCOB to DCOA input frequency with a level control too.

Also now on the board are a pair of 74HC595 shift registers and a 4504 level converter, these are used for the analogue filters and effects board. The filters need 5v switches to select the filter type out of the 16 variations and the effects unit needs some 3.3v lines to select the effect number, internal/external and the bank of effects.

Next stage is to introduce velocity into the envelopes and switch that on/off from two new buttons on the panel. Also I’m considering how to make the envelope inverted, normally I would use an opamp on the envelope output and select that for a negative sweep, but the envelope are now output from the DAC and I don’t have a negative sweep option. Something to ponder.

7 Likes

Got it connected to the filters today….

6 Likes

After messing with the filter calibration and finding a missing resistor on one of the filters I finally managed to get all the filters sounding pretty even for cutoff ranges and resonance. The VCAs all trigger perfectly with no bleed through.

Then I found a problem, I cannot make realtime adjustments of the filter or amplifier envelopes, they only change on the triggering of a note which is the incorrect behaviour, maybe it’s just the way the envelopes work but I would have thought that they would adjust in realtime. I need to test the pitch Envelope which is completely software to see how it responds.

The filter and amplifier envelopes are software generated in the teensy audio library and the output of each envelope is presented to a queue, you can drain the queue to effectively get the envelope position and send that to the DAC channel for each note and thus get an envelope in the form of a CV.

No matter what I do to force the queues to be re-read I cannot get them to adjust to envelope parameter changes until a new key is pressed for that envelope.

My solution is that each of my filter boards already carries 4 hardware envelopes (Envgen8c) that I simply removed from the design to keep everything in software. I will repurpose the amp DAC channels as the ADSR for each set of envelopes.