Awesome
KELPIE - a polyphonic pocket synth
About
The KELPIE is a digital polyphonic synthesizer powered by the SGTL5000 audio DAC and an ARM Cortex M4 microcontroller. For a description of the full project, please visit the Hackaday Project Page
Repository Details
This repo houses all mechanical, electrical, and software files relating to the project, as well as graphical assets and other additional files.
- Mechanical CAD (mCAD) files can be found and viewed here via Fusion 360's online viewer. They can be downloaded directly in whatever format you need (including STLs for 3D printing). The link provided here directly reflects the most current progress and is kept up-to-date in real time.
- Electronics CAD (Autodesk Eagle) files and schematics can be found here. The parts library and full BOM can be exported from the schematic. This is the most up-to-date BOM.
- Firmware files, written in Arduino/C++ using PlatformIO can be found here
Audio Design
The synthesizer block diagram is shown below and was designed using the Teensy Audio Design Tool
About the Device / How to Use
The KELPIE is a subtractive synthesizer that follows the standard 2 oscillator model. For those who have never used a subtractive synth before, there are plenty of resources online, I would recommend this series of videos which do a great job of explaning and demonstrating the basics.
Some unique features of the KELPIE that are different and worth pointing out are:
Oscillators
- Each oscillator can only generate either a
pulse
waveform orsawtooth
(both these waveforms are harmonically rich compared to triangle/sine waves, and can easily emulate other waves through filtering) - The
Pulse Width Modulation knob
(PWM) can only be heard if one (or both) of the waveforms are switched to a pulse waveform. This knob can be thought of as a "global" PWM - The
noise
knob is more of a noise "presence". At0%
, oscillators 1 & 2 will dominate the output. Whereas at100%
, the noise will completely dominate the output. At50%
there will be an equal gain of Oscillators 1 & 2 and Noise. Coarse
refers to the relative tuning of Oscillator 2 to Oscillator 1. At0%
, Oscillator 2 is tuned 1 octave below Oscillator 1, at100%
, Oscillator 2 is tuned 1 octave above. Around50%
, the knob is less sensitive in order to achieve less dramatic detuning.
Envelopes
- The envelope knobs are responsible for both
amp
andfilter
envelopes. To switch betweenamp
andfilter
, active theshift
button. In future revisions, more features may be attached to theshift
button.
Filter
- Both filter
freq
andQ
or (resonance) behave as expected in a traditional subtractive synthesizer. However,depth
can be explained as the filter's impact or octave range. This effect is manifested in both theLFO
'sfilter
parameter, as well as thefilter enevelope
's effect on the overall sound.
LFO
- The KELPIE has a single
LFO
orlow frequency oscillator
which is mapped to both thefilter
's frequency as well as the overallmaster gain
. Therate
describes the frequency of oscillation, whereas thefilter
andamp
parameters describe theLFO
's effect on those destinations. - Currently, the
LFO rate
is also mapped to themodulation
MIDI CC message, so a player can easily adjust this parameter directly from their MIDI control interface.
GLIDE
- This feature has not yet been implemented, but will allow the user to change the overall portamento rate (sliding between notes in
mono
mode)
MIDI CC
- The KELPIE accepts
MIDI CC
messages from102 - 119
which allow adjustment of all the parameters on the device. Both the built-in knobs and external MIDI knobs can be used simultaneously.
Acknowledgements
I utilized and referenced a couple of open source libraries + repos for this project, as well as some very useful tools:
- PJRC Audio Library and Audio Design Tool
- Bounce library by Thomas Fredericks
- MIDI library by Francois Best
- thewknd's Teensy Reference Boards schematics
- Note's and Volts tutorial videos on building a Teensy synth