DSP-G1

It’s time to show a real synth.

It has 12 DCO, 1 LFO, a 24dB DCF with resonance and 2 ENV.
The audio is 44.1KHz, 16-bit resolution.

The sound is not done by an ATmega, it only scans the pots and keyboard.
It’s done by a DSP, a 48-MHz 32-bit ARM.

hostboard.jpg

So where's the demo video? I'm ready.

It's coming.

All It plays's at the moment is a C4 3-key chord with a filter sweep at power on.

That's why I'm building the front panel board :slight_smile:

The board is just a 4067 analog MUX to scan the frontpanel pots for synth parameters and send them over to the DSP by TTL-MIDI..

It can also scan a keyboard, pitch-bend and trig/CV inputs for the synth.
Keeping track of presets in it's EEPROM, run Arpeggios etc.

The DSP runs an analog model of a synth, reading the parameters over TTL-MIDI on one pin and outputs the audio on another pin.

Hmmm, 48 mHZ ARM- sounds like a teeny. If it is, just realize the cortex-M4 does not support double precision in its hardware registers, and you will either have to sacrifice the slow speed of doing double calculations in software for precision, or trade-off massive amounts of round off error with single precision numbers in order to keep the speed up.

There are a lot of good tips on architecture, optimization, and some basics of the ARM CMSIS-DSP library in Yui's definitive guide to the M3 and M4 :

Whatever you're using, it's still probably not the quality of something like the Sharc or Blackfin, so careful with your "real Synth" claims until you have sounds to back it up. :smiley:

You are right.

It runs on an NXP LPC using 32-bit integer arithmetic's

I use 16-bits fixed point with a 16-bit radix.
That is very fast on the Cortex M0+ with it's single cycle 32-bit multiply.

And yes, it sounds very good with it's 16-bit audio resolution at 44KHz.

Remember, the first Nord Lead used the 56002 DSP and sounded very good.
That had nowhere near that performance.

Building the scanboard with a Nano I couldn’t resist porting my DSP code to the Arduino.
So I added a MCP4921 12-bit DAC and after some optimizing it runs with a sample frequency of 8372hz.

So how does it sound?
I would say pretty good at 8KHz 12-bit PCM, It beats the heck out of all the Arduino Bleeps.
There is some aliasing due to my poor passive LP filter but overall its great.

Specs:

Arduino Nano at 8KHz and 12-bit PCM.
16-DCO with morph oscillators (arbitrary waveform)
16-bit 3 pole 18dB LP DCF with resonance (Yes, It rings)
1 LFO for filter.
1 ADSR ENV for DCA.
1 ADSR ENV for DCF.

All with 16-bit resolution.

So I decided to call it the dsp-G0.
Runs perfect on ATmega328 @ 16MHz.

So the Nord used a DSP - case in point, it used a DSP which has hardware registers / accumulator, etc...designed for double floating point precision operations. That DSP had "Double precision 48 x 48-bit multiply with 96-bit result in 6 instruction cycles " - among other hardware support that even things like the M0, M3, and M4 just can't compete with. Don't just judge performance by MIPs.

Still excited to hear it though - any videos?

bosleymusic:
So the Nord used a DSP - case in point, it used a DSP which has hardware registers / accumulator, etc...designed for double floating point precision operations. That DSP had "Double precision 48 x 48-bit multiply with 96-bit result in 6 instruction cycles " - among other hardware support that even things like the M0, M3, and M4 just can't compete with. Don't just judge performance by MIPs.

Still excited to hear it though - any videos?

I'd say that 48million 32x32bit multiplies per second go a long way.

At the moment I ported the sound engine to the Nano so that I can develop the scanboard and MIDI reception.
Not as good as the dsp-G1 having only 12-bit 10500Hz samplerate but very good for an ATmega328@16MHz.

It's the same dsp code.

https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/144326541&auto_play=false&hide_related=false&visual=true

It is realizing :slight_smile: :slight_smile:

dspG1front.JPG

This is what it sounds like. No blipblop machine but a real synthesizer.