Sie sind auf Seite 1von 21

Synthesizers with the

Arduino Due platform

Marcelo Johann
Lucas Folle
Rodolfo Pirotti
In Context
• BSc, MsC, PhD in Computer Science
• Microeletronics, EDA, Audio, Music

• Recording Classical Music


• Other computer music projects
• Synths with the Arduino Due
Organ, FM, Subtractive
ARDUINO
• What is?
www.arduino.cc

• Why?
V Ubimus - 2014 - Vitória - ES
29 de Outubro a 1 de Novembro

By Marcelo Johann
DIY Audio Circuits
Workshop
The Arduino Due Board
• Introduced late in 2012
• ARM-Cortex M3
• RISC 32-bit
• 84MHz, 96KB RAM, 512 KB Flash
• Nested interrupt controller
• 14bit DACs
• No Floting-point unit in HW
• I2S interface implemented in HW
HW Platforms in Perspective

Platform / Processor Source


Intel Core i7 ~3,5 GFLOPs/core http://www.roylongbottom.org.uk/
linpack%20results.htm

Qualcomm Snapdragon 810 ~1,45 GFLOPs/core http://www.roylongbottom.org.uk/


linpack%20results.htm
(Sony Xperia Z5)
Raspberry Pi 3 ~180 MFLOPs/core http://www.roylongbottom.org.uk/
linpack%20results.htm

Arduino Due 1,11 MFLOPs (float) https://forum.arduino.cc/index.php?


topic=431169.0

Arduino Uno 0,089 MFLOPs (float) https://projectgus.com/2014/06/


arduino-vs-raspberry-pi/
Our Proposal
• Music synthesizers implemented
on a cheap platform*, nevertheless
with "pro" audio quality**.
* USD$15 from China
** pro audio quality = 16bits/48KHz
*** open-source, extensible
**** Many possibilities in Context
A Set of Synths
• Additive Synthesis : the organ
Johann, Ubimus 2015
• FM Synthesis
Folle, Graduation project, 2015
• Subtractive Synthesis
Pirotti, SBCM 2016 and 2017
• Next works ongoing…
The Organ
• Hammond-inspired organ with
full polyphony, 9 drawbars and
effects with external 16-bit DAC.
Shows it is possible to make
A real, serious instrument
Demo
Concepts
16-bit, 24KHz sampling rate, fixed-point
Oscillator is Phase Accumulator and Table

phase = phase + s;
output = waveTable[(t>>d) & tableSize-1];

Time-critical, time-accurate, housekeeping*


FM Synthesis
John Chowning (Stanford), Yamaha DX7

Simple Oscillator is
output = sin(frequency1 * time);

FM Synthesis is:
modulation = sin(freq2 * time) * hardness;
output = sin(frequency1 * time + modulation);
SÍNTESE FM

http://www.mathsisfun.com/data/function-grapher.php
The 6-op FM Synth
• Lucas Folle, 2015, replicated most
functions of the famous DX7.
Inspiring to hear, but
Nightmare to program, as expected
Limited to 12-notes using
24KHz sampling (6 at 48KHz).
Demo
The Subtractive Synthesizer
pAmplifierEnvelopeGenerator = new EnvelopeGenerator();

pOscillator01 = new Oscillator();

pOscillator02 = new Oscillator();

pDelayWithFeedback = new DelayWithFeedback();

pLowPassFilter = new LowPassFilter();

output = pVCO1->process() + pVCO2->process();



output = pFilter->process( output ); 

output = output*pVcaEg->getOutput()>>FRACT_WIDTH; 

output = pDelay->process( output );
Demo
Hardware
Conclusions and Future
• Serious instruments were shown
• Challenge: HARDWARE
• A lot more is still possible, real time
• Promote, teach, allow others to do it
• Configure, adapt
• New instruments, New techniques
And News
• We have a competent competitor!

• Linked at: 

https://store.arduino.cc/usa/arduino-due

https://create.arduino.cc/projecthub/chnry/ocs-2-a-
digital-semi-modular-synthesizer-733ba9


Synthesizers with the
Arduino Due platform

Marcelo Johann
Lucas Folle
Rodolfo Pirotti

johann@inf.ufrgs.br

https://www.facebook.com/arduinoduesynth/

Das könnte Ihnen auch gefallen