Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/raybellis/PicoSynth
Polyphonic wavetable synthesizer for the Raspberry Pi Pico
https://github.com/raybellis/PicoSynth
midi midi-device rp2040 rpi-pico synthesizer
Last synced: 2 months ago
JSON representation
Polyphonic wavetable synthesizer for the Raspberry Pi Pico
- Host: GitHub
- URL: https://github.com/raybellis/PicoSynth
- Owner: raybellis
- Created: 2023-03-22T11:40:56.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-05T11:25:43.000Z (12 months ago)
- Last Synced: 2024-07-31T22:42:39.864Z (5 months ago)
- Topics: midi, midi-device, rp2040, rpi-pico, synthesizer
- Language: C++
- Homepage:
- Size: 127 KB
- Stars: 15
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PicoSynth
A polyphonic wavetable synthesizer for the Raspberry Pi Pico.
(C) Ray Bellis 2023-2024
NB: this is very much a work in progress!
## Current Features
- 128 voices
- 16 channel multi-timbral
- four hard-coded presets
- 16-bit stereo I2S audio at 44.1kHz
- wavetable DCOs (2048 x 16-bit samples) using the RP2040 interpolator
- DCO modulation:
- LFO (per voice)
- ADSR pitch envelope
- pitch bend
- DCA
- ADSR envelope
- stereo pan
- USB MIDI device
- Serial MIDI (UART1, pins 4/5)The RP2040 is overclocked to 250 MHz.
The I2S interface is configured for use with the Pimoroni Audio Pack. A
PCB with MIDI DIN ports and I2S DAC is under development.The [Datanoise PicoADK](https://github.com/DatanoiseTV/PicoADK-Hardware)
board is also supported via `CONFIG_HW_PICOADK` in the `CMakeLists.txt` file.## Building
Familiarity with using the RP2040 Pico SDK is assumed.
My own development system is macOS and I use the arm-none-eabi-gcc
compiler v13.2.0 from MacPorts.Building the code requires the following repositories, as well as an
installation of NodeJS which is used to construct the various lookup
tables used by the code:- Pico SDK (https://github.com/raspberrypi/pico-sdk.git)
- Pico Extras (https://github.com/raspberrypi/pico-extras.git)
- Pimoroni Pico Lib (https://github.com/pimoroni/pimoroni-pico.git)I use the following in my `.cshrc` with the above three repositories all
checked out into `${PICO_HOME}`:```
setenv PICO_HOME "/opt/pico"
setenv PICO_SDK_PATH "${PICO_HOME}/pico-sdk"
setenv PICO_EXTRAS_PATH "${PICO_HOME}/pico-extras"
```## License
This source code is released under the GPLv3.0 License