Go Down

Topic: Teaser: polyphonic DCO synth with analog filters for about 100$ (Read 9298 times) previous topic - next topic

madias

Jul 27, 2014, 11:29 pm Last Edit: Aug 07, 2014, 05:43 pm by madias Reason: 1
New: Update 4: Some building pics :)

Hello!
My new "baby" is a polyphonic wavetable synth with analog filters. Costs for the project: about 100USD!
It´s an early phase of invention, so no code snippets (mostly of copyright and cleaning up reasons) and schematics so far. But when the project is finished, I promise you to feed you with all informations!

Key facts:
Polyphonic "true" 8-bit synth with analog filters each voice. I'll start the project with 4 voices.
Cheap hardware with only two kind of "special IC": V2164 and TLC7528. (the first you get from smallbear and the DAC from ebay/aliexpress)

The synthesizer is splitted into several modules:

Master module: (my choice is a Texas instruments  Tiva™ C Series TM4C123G LaunchPad)
responsable for:
Hardware and user interface:
Display (TFT or/and 20x4 LED), Midi, physical Inputs (Potis, tact switches, encoder), LED's
Software:
patch organization, generating ADSR (2-3 each voice) and LFO's (2-5), communication with voice modules (via I2C), digital/analog conversation with ssm2164 VCA/VCF chips (via PWM).

Voice modules (driven by ATmegas328)
Hardware:
Pro mini (hey, 2$ a piece!)
8bit DAC TLC7528 (2 channels are hardware mixed into filter section!)
V2164 4-channel VCA IC (3 channels used for the analog multimode (LP,BP,HP) filter and one channel for VCA)
CD4053 for digital choosing type of filter
TL074 as standard OP.
Software (...until now: early beta!):
2 independent oscillators with 256 step wavetables (sin,tri,saw-up,saw-down,pulse, PWM)
1 LFO (for tone modulation and/or PWM)
unique protocol for communication with master module (commands implemented o far: pitch, tune and type for both OSC's, LFO type and speed, LFO->OSC1+2 modulation)

state of affairs:
one voice module tested with filter and driven by the TIVA launchpad. Works like a charme!
the first thing was choosing the right protocol for all modules:
Serial: not possible: need the whole port for the DAC
SPI: pin conflicts, didn't managed a error-free communication (the ATmega is on top of CPU load with sample rate of 62,8kHz, 2 OSC's and 1 LFO!)
so I tried I2C and I was amazed, because it worked without any problems. One benefit is, that you can add easily more voice modules without additional hardware (pins) and maybe I will implement a I2C eeprom with additional wavetables.

adapted software (libraries):
Core routine for wavetabes: http://www.arduinoos.com/2010/05/direct-digital-synthesizer-dds/
Ideas how to manage the DAC: http://www.instructables.com/id/Stereo-Audio-with-Arduino/step2/TLC7528-Overview/
V2164 as multimode filter: various sources, especially the shruti-synth schematics and "unusual synthesizer circuits" http://www5b.biglobe.ne.jp/~houshu/synth/

Findings:
Software:

progmem (reading wavetables direct from flash) is MUCH to slow, so I've to use the RAM and each time a the type of wave is changing I need to load it again into RAM. So 768kB (2 OSC + LFO) are permanently needed with all other variables the RAM is about 70% (safe limit) and the CPU load (within the interrupt) is HARD on limit. So don't thing about adding more voices each module.

The nasty thing with the negative voltage supply:
For all "converter IC`s": Better take a 9V line and use a negative voltage regulator (7905), much more headroom!
There are many ways you can generate it:
IC's:
ICL7660S (remember the "S"!!): easy circuit, cheap, downside: you need on IC/module, because you can only get a few milliamperes out of it. Not really "clean" sounding.
555 timer: easy circuit, ultra cheap, more components, maybe conflict with the frequency, little more power than 7660
LT1054: better facts than 7660, but expensive (didn't tried one out)

AC wallwart conversation: http://www.musicfromouterspace.com/analogsynth_new/WALLWARTSUPPLY/WALLWARTSUPPLY.php
One of the best and cleanest solutions! (tested with my oscilloscope). downside: much components, maybe "oversized"

the trick with the 5/9V DC/DC converter:
you can get these boxes nearly for free: look at an old network card or router with "BNC" connector you own for sure such a "black magic box". with this you can get -9V from +5V. downside: I measured about 50-60mA at idle.
some pics: (only german, scroll a little bit down): http://www.sprut.de/electronic/switch/smallup/smallup.html



madias

#1
Jul 28, 2014, 02:31 pm Last Edit: Aug 04, 2014, 02:08 pm by madias Reason: 1
OBSOLET! see next posting!
Update #1: first schematic as attachement (4-Voice module without filters and VCA)

madias

#2
Aug 04, 2014, 02:25 pm Last Edit: Aug 04, 2014, 02:42 pm by madias Reason: 1
Update #2:
final schematic 8-Bit Dual Voice Board with additional notes
this board is "all in one":
-)  2x2 digital oscillators (made with arduino pro mini)
-) 2 analog filters (6dB HP/BP/LP)
-) analog VCA
-) switching matrix (the two CD4053 switches are driven by a 595 shift register)
-) easy 10-pin control input pin header

So only 2 of this boards + one control board is needed for the whole synth!

Bonus:
One voice breadboard demo photo
very limited wma filter demo (bad quality recorded at office.... just to show THAT it works :) )

Grumpy_Mike


madias

unfortunately not yet!
basically I use this:
http://www.instructables.com/id/Stereo-Audio-with-Arduino/step2/TLC7528-Overview/
for the two DAC voices
and
one core from the shruti 2164 filter (little adapted and much easier, so I do not use the cutoff scaling, see attachement, but with additional schottky diode to "save" the v2164 life - the v2164 get damaged within less than  one second without negative voltage  connection )
the rest (analog switches, wiring, "OP amping") was done "on the fly" with the diy layout creator


janost

#5
Aug 04, 2014, 10:47 pm Last Edit: Aug 04, 2014, 11:01 pm by janost Reason: 1
You're way behind.

http://youtu.be/9JRRHPEwaV0

A 15 DCO Analog Modeling Synth with filter  in a single 8-pin DIP chip.

And the chip is only $1

janost

It even got it's own editor from the community.
Or one of the lucky ones that's got a chip :)


madias

#7
Aug 05, 2014, 09:38 am Last Edit: Aug 05, 2014, 09:44 am by madias Reason: 1

You're way behind.


Pardon, but you misunderstood something here, so think before offending other projects:
At first: This is an (basically) AVR/ATmega-project not about DSP programming
-) Can you modify the code of the DSP without external (expensive) hardware or is it just a pre-programmed chip?
-) where you can can get the DSP? Quantity? Availability?
-) This is a completely different concept:
----) raw 8-Bit direct output for each voice with hardware analog filter  and VCA circuit, so you have the possibility of "real" AM/FM with the filters or the VCA
----) So you need at least 3 PWM (or DAC) for each voice (1x cutoff, 1x resonance, 1x VCA), so with 16 voices on chip you'll need at least about  48 PWM channels, but sorry: you can't do it with the castrated nord modular G1 ehhh, DSP-Gplug, because you have no single hardware output each voice.

madias

#8
Aug 05, 2014, 06:04 pm Last Edit: Aug 05, 2014, 06:43 pm by madias Reason: 1
Update #3:
Main Control + Power Board is done on the drawing board:
I've chosen the AC wallwart conversation for the power supply. Simply the cleanest solution.
This board acts as a control center:
-) driving the analog section
-) communication between: voice boards, midi and the user interface (done with pinouts for 4051 (potis), Shift register (tact switches) one Encoder and a display (TFT)
I also included an eeprom (I2C, 512kb) for general propose (storing patches, maybe wavetables: remember: the whole communications works with I2C, so the voice board can also use the eeprom)
One new thing is, that the 4 voices can be switched as individual analog outputs, so with smart programming we can get 4 individual mono synths (or mixing: 3 voices for chords and one voice for bassline)

janost

Sorry.

What you are building is not the same thing. It's a hybrid.

Didn't think about that.

madias

No problem!
This is more a blog how to create a synth from the sketch and doing everything alone (hardware, software...) and using standard components, which are (still) available an (more or less) cheap. Most of all DIY synth are
a) bad documented
b) far beyond the knowledge of average people
or c) using exotic/expensive IC´s
This project should be a help for people starting a own synth project and not putting some resistors on a fixed printed board together.
I'll also try to get the code as easy as possible and comprehensible (at least for the synth engine, the control board is more complex)

madias

#11
Aug 07, 2014, 05:48 pm Last Edit: Aug 07, 2014, 05:52 pm by madias Reason: 1
Update #4: Some building pics
Main board with tiva is ready and should be ok after a quick test.
The Voice Boards are more work to do: With vero boards about 20-30 working hours for each. Maybe I should consider etching the circuit boards next time.

yglom

Hi !
Sorry to resuscitate, what happen to this project? How did it sound?

Go Up