• Stars
    star
    122
  • Rank 292,031 (Top 6 %)
  • Language
    C
  • Created over 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Polyphonic Digitally Controlled Oscillator (DCO) controlled by Raspberry Pi Pico PIO

Raspberry Pi Pico Polyphonic DCO

This repository contains source code, schematics and PCB for a digitally controlled oscillator (DCO) with up to 6 voices which are driven by a Raspberry Pi Pico. It uses PIO to generate a highly accurate frequency which is controlled by USB or serial MIDI. The analog oscillator part is based on the Juno 106 and generates sawtooth and square wave signal with a 10Vpp amplitude. Amplitude compensation is done by a smoothed PWM signal coming from the Pico.

Key features

  • Digitally controlled analog oscillator using a Raspberry Pi Pico
  • Up to six voices
  • Voice stacking
  • Detuning of voices
  • Frequency modulation (FM)
  • Separate gate signal
  • DIN MIDI serial input
  • USB MIDI input
  • MIDI pitch bend
  • Portamento with adjustable speed

This is how it sounds: Ramp sample Pulse sample Polyphonic sample

I use the DCO in my Polykit-6 polyphonic synthesizer, see https://www.youtube.com/watch?v=vj-DSh6yfM0 and https://www.youtube.com/watch?v=go1mErOdtsU

Schematics and PCB

Raspberry Pi Pico DCO Soldered

Raspberry Pi Pico DCO

Raspberry Pi Pico DCO PCB

Gerber files for the PCB can be found here.

Installation (simple)

Press BOOTSEL button on the Pico while powering it with USB. Copy file build/pico-dco.uf2 onto the USB mass storage device.

Usage

After installing the Pico should register as USB MIDI device. Alternatively serial MIDI input is available. The DCO listens to note on/note off messages on MIDI channel 1. Pitch bend is also supported. Portamento can be enabled by MIDI CC message #65, portamento time can be adjusted by CC message #5.

Detuning, stacking and FM

The build-in analog-to-digital converter can be used to modulate these parameters. You can add an external control voltage (0-3.3V) to that input pins. These features can be disabled by commenting (//) the following lines:

#define USE_ADC_STACK_VOICES // gpio 28 (adc 2)
#define USE_ADC_DETUNE       // gpio 27 (adc 1)
#define USE_ADC_FM           // gpio 26 (adc 0)

References

https://blog.thea.codes/the-design-of-the-juno-dco/

https://electricdruid.net/roland-juno-dcos/

https://www.youtube.com/watch?v=yYnQYF_Xa8g

https://github.com/raspberrypi/pico-examples/tree/master/pio/pwm

https://github.com/raspberrypi/pico-examples/tree/master/pio/pio_blink

https://github.com/raspberrypi/pico-examples/tree/master/pwm/hello_pwm

https://qiita.com/jamjam/items/f2fdd5c072ff348fd809

https://github.com/infovore/pico-example-midi

https://learn.sparkfun.com/tutorials/midi-tutorial/all

http://www.music-software-development.com/midi-tutorial.html

http://midi.teragonaudio.com/tech/midispec/run.htm

More Repositories

1

polykit-x-monosynth

The Polykit X1 is a DIY semi-modular, analog, patchable synthesizer
63
star
2

polykit-x-voice-card

Schematics and PCB layout for a voice card with multimode filter for a polyphonic synthesizer
43
star
3

kosmo-spring-reverb-driver

Schematics and PCB layout for a spring reverb driver in Kosmo modular format
25
star
4

dco

Arduino based DCO
C++
24
star
5

kosmo-multitool

Arduino Nano Every based development platform for DIY synthesizer enthusiasts.
C++
21
star
6

eurorack-psu

Eurorack Power Supply +12V -12V +5V
19
star
7

polykit-x-mainboard

Schematics and PCB layout for a mainboard for an 8 voice polyphonic synthesizer
18
star
8

vco-1

PCB and schematics for a voltage controlled oscillator (VCO) based on the Jupiter 8.
15
star
9

vco-8

Analog Octo Voltage Controlled Oscillator VCO Kicad PCB and schematics
14
star
10

adsr-3310-8

Kicad schematics and PCB layout for an 8 channel ADSR based on CEM3310/AS3310
13
star
11

vcf-3350-8

CEM3350/AS3350 based 8 channel VCF
13
star
12

kosmo-sample-and-hold

Schematics and PCB layout for a sample&hold / noise module in Kosmo format
11
star
13

microphone-preamp

Schematics and PCB for a microphone preamp with phantom power
9
star
14

vca-adsr

VCA and ADSR schematics and PCB layout
9
star
15

kosmo-sidechain

Kicad PCB and schematics for sidechain/ducking module in Kosmo modular synthesizer format
7
star
16

polykit-panel

PCB front panel for the Polykit-6 polyphonic synthesizer
6
star
17

kicad

Kicad symbols and footprints
6
star
18

lfo

Low Frequency Oscillator LFO
6
star
19

inverter-8

4
star
20

vic20-sequencer

Simple 16-step MIDI sequencer in BASIC for the Commodore VIC-20
BASIC
4
star
21

multiplexer-8

16 to 8 channel multiplexer to select waveforms in a polysynth
4
star
22

vca-8

Schematics and layout for 8 VCAs on one PCB
4
star
23

polykit-samples

This repository contains various samples which can be used freely.
4
star
24

dual-mixer

Simple dual mixer schematics and PCB
3
star
25

polykit-x-controlboard

Control board schematics and PCB for my polyphonic synthesizer
3
star
26

stackable-resistor-box

Stackable box for resistor belts that can be printed
3
star
27

valve-adapter-noval

Noval valve adapter PCB for breadboards
2
star
28

panel-blank-5cm

Blank modular panel in KOSMO format, 5 cm width
1
star
29

panel-blank-10cm

Blank modular panel in KOSMO format, 10 cm width
1
star
30

peertube-autoscale-runners

A simple program to scale Peertube runners for video transcoding
Go
1
star
31

3d-printed-microphone

3d printed dynamic microphone
OpenSCAD
1
star