{"id":15012034,"url":"https://github.com/polykit/pico-dco","last_synced_at":"2025-04-12T03:31:01.199Z","repository":{"id":53254737,"uuid":"360988979","full_name":"polykit/pico-dco","owner":"polykit","description":"Polyphonic Digitally Controlled Oscillator (DCO) controlled by Raspberry Pi Pico PIO","archived":false,"fork":false,"pushed_at":"2023-03-25T18:19:55.000Z","size":4577,"stargazers_count":130,"open_issues_count":2,"forks_count":16,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-03T12:59:11.064Z","etag":null,"topics":["dco","kicad","midi","oscillator","pcb","pico-dco","pio","polyphonic","polyphony","raspberry-pi-pico","schematics","sdiy","synthesizer","vco"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polykit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-23T19:42:09.000Z","updated_at":"2025-03-26T23:58:27.000Z","dependencies_parsed_at":"2024-09-15T22:04:02.164Z","dependency_job_id":"85eb7f2d-b6c6-4bb8-a5b6-0e2b7ccf92a7","html_url":"https://github.com/polykit/pico-dco","commit_stats":{"total_commits":25,"total_committers":2,"mean_commits":12.5,"dds":"0.19999999999999996","last_synced_commit":"651f92a59db06ff38473ef18d89fe20d65e38583"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polykit%2Fpico-dco","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polykit%2Fpico-dco/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polykit%2Fpico-dco/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polykit%2Fpico-dco/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polykit","download_url":"https://codeload.github.com/polykit/pico-dco/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248512497,"owners_count":21116613,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dco","kicad","midi","oscillator","pcb","pico-dco","pio","polyphonic","polyphony","raspberry-pi-pico","schematics","sdiy","synthesizer","vco"],"created_at":"2024-09-24T19:42:01.772Z","updated_at":"2025-04-12T03:30:57.894Z","avatar_url":"https://github.com/polykit.png","language":"C","readme":"# Raspberry Pi Pico Polyphonic DCO\n\nThis 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.\n\n## Key features\n\n- Digitally controlled analog oscillator using a Raspberry Pi Pico\n- Up to six voices\n- Voice stacking\n- Detuning of voices\n- Frequency modulation (FM)\n- Separate gate signal\n- DIN MIDI serial input\n- USB MIDI input\n- MIDI pitch bend\n- Portamento with adjustable speed\n\nThis is how it sounds: [Ramp sample](https://soundcloud.com/polykit/pico-dco-ramp) [Pulse sample](https://soundcloud.com/polykit/pico-dco-pulse) [Polyphonic sample](https://soundcloud.com/polykit/pico-dco-polyphonic)\n\nI 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\n\n## Schematics and PCB\n\n![Raspberry Pi Pico DCO Soldered](pico-dco-soldered.jpg)\n\n![Raspberry Pi Pico DCO](pico-dco.png)\n\n![Raspberry Pi Pico DCO PCB](pico-dco-pcb.png)\n\nGerber files for the PCB can be found [here](kicad/plots).\n\n## Installation (simple)\n\nPress `BOOTSEL` button on the Pico while powering it with USB. Copy file `build/pico-dco.uf2` onto the USB mass storage device.\n\n## Usage\n\nAfter 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.\n\n## Detuning, stacking and FM\n\nThe 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:\n\n```\n#define USE_ADC_STACK_VOICES // gpio 28 (adc 2)\n#define USE_ADC_DETUNE       // gpio 27 (adc 1)\n#define USE_ADC_FM           // gpio 26 (adc 0)\n```\n\n## References\n\nhttps://blog.thea.codes/the-design-of-the-juno-dco/\n\nhttps://electricdruid.net/roland-juno-dcos/\n\nhttps://www.youtube.com/watch?v=yYnQYF_Xa8g\n\nhttps://github.com/raspberrypi/pico-examples/tree/master/pio/pwm\n\nhttps://github.com/raspberrypi/pico-examples/tree/master/pio/pio_blink\n\nhttps://github.com/raspberrypi/pico-examples/tree/master/pwm/hello_pwm\n\nhttps://qiita.com/jamjam/items/f2fdd5c072ff348fd809\n\nhttps://github.com/infovore/pico-example-midi\n\nhttps://learn.sparkfun.com/tutorials/midi-tutorial/all\n\nhttp://www.music-software-development.com/midi-tutorial.html\n\nhttp://midi.teragonaudio.com/tech/midispec/run.htm\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolykit%2Fpico-dco","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolykit%2Fpico-dco","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolykit%2Fpico-dco/lists"}