• Stars
    star
    137
  • Rank 265,342 (Top 6 %)
  • Language
    C
  • License
    MIT License
  • Created over 2 years ago
  • Updated about 2 months ago

Reviews

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

Repository Details

🎡 🎹 Firmware boilerplate for the RP2040 powered PicoADK Audio Development Board. Build your own stand alone synthesizers! Includes all nuts and bolts (FreeRTOS, USB MIDI, Vult DSP, Hardware Plumbing, DMA, ..). https://github.com/DatanoiseTV/PicoADK-Hardware

PicoADK - Audio Development Kit Firmware

PicoADK_Top

Photos courtesy of Paul D. Pape - derwellenreiter for schneidersladen, Berlin, Germany.

This boilerplate template allows you to create standalone synthesizers, noise boxes, sample players, ..

Template example code notes

The example code is a simple monophonic synthesizer which can be controlled via USB MIDI or can play a randomly generated melody. It requires you to solder 4 Potentiometers to the ADC0-ADC3 pins, which control wavefolding, envelope amount, filter frequency and resonance.

Repository structure

  • C code is located in the src folder and contains all the low-level funtionality for the firmware incl. USB MIDI handling and dealing with the Audio DAC.
  • Includes for the C code are located in the include folder.
  • The Vult DSP code is located in the vultsrc folder.
  • The includes for Vult are located in lib/vult/examples. These provide some oscillator, filter and envelope implementation along others.

Compiling using PicoADK Docker Image (easy)

Using the script

Just execute ./build-firmware-docker.sh in the project folder.

Manually

  1. git clone --recursive https://github.com/DatanoiseTV/PicoADK-Firmware-Template.git
  2. cd PicoADK-Firmware-Template
  3. Enter the following command in your project directory:
docker run --rm -u $(id -u):$(id -g)  -v $PWD:/project -w /project datanoisetv/picoadk-dev:latest build-firmware.sh

Prerequisites (manual)

  1. Install the Pico-SDK. You can find a guide at https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf
  2. Install the Vult compiler: sudo npm install vult -g
  3. (Optional) Install Ninja - apt install ninja

Compiling the firmware (manual)

git clone --recursive https://github.com/DatanoiseTV/PicoADK-FreeRTOS-Template picoadk-template
cd picoadk-template
export PICO_SDK_FETCH_FROM_GIT=1
mkdir build && cd build
cmake .. (optionally add -GNinja)
make (or ninja when you have used -GNinja)

Now you can find a main.uf2 in the build folder, which is your firmware.

Copying the Firmware to the PicoADK

Plug in the PicoADK USB Type-C while holding the BOOT button or hold BOOT and press the reset button quickly. After that, a RPI-RP2 disk volume will appear. Simply drag and drop the UF2 file to this drive and the PicoADK will reboot after a moment, the drive will disappear and your firmware will be running.

More information

Please check the Pico Getting Started Guide on how to install the toolchain and required libraries for your OS.

Development

The pipeline will trigger a full build on Push or Pull Request.

Releasing

The pipeline will trigger a new release build on following tagging scheme:

git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0

Hardware

The way-to-go hardware option is the PicoADK

Getting RAM and flash usage statistics

image

Your statically allocated memory and flash usage will be reported upon linking.

Community

You can find the PicoADK at Discord right here and a community discussion board on GitHub Discussions

More Repositories

1

PicoADK-Hardware

A RP2040 based Audio Development Kit with 32 Bit Audio Output. Build your own standalone synthesizers!
188
star
2

esp-find3-client

3rd Party Indoor Location using ESP8266/ESP32 and Find3 (https://github.com/schollz/find3)
C++
128
star
3

AKWF_WaveForms

AKWF Single-Shot Waveforms as Signed 16-bit Integer C-Headers for use in Wavetable Synthesis. Resampled to 256+1 Samples.
C
33
star
4

PicoADK-Eurorack-Module

A Eurorack Module with 8x CV ins, 6 potentiometers, OLED screen, and 32-bit Audio Ouput ...
19
star
5

rp2040-vult-demo-board-template

A Vult DSP template for the RP2040 DSP Demo Board (PCM5102 32-bit Audio Codec, CV, Gate, MIDI)
C
14
star
6

wg-web

A CRUD-Application for managing WireGuard peers (e.g. for dynamic peer management) - WiP
Python
13
star
7

USB-C-Eurorack-PSU

STUSB4500 + TPS5430 based USB-C Eurorack PSU
C++
10
star
8

MT8816

Arduino Library to contol a Mitek MT8816 8x16 Analog Crosspoint Switch
C++
8
star
9

AudioOS

Buildroot based Raspberry Pi 4 OS with Real Time Kernel
Makefile
5
star
10

RP2040-Base-Template

A basic template for RP2040 based boards using PICO-SDK.
C
4
star
11

VCVRack-AbletonLink

PoC VCV Rack 2.0 module providing Ableton Link with Start/Stop Sync.
C++
3
star
12

rp2040-base-pcb-template

A template EasyEDA project with Raspberry Pi RP2040, USB-UART Bridge, 16MB Flash and 800mA LDO optimised for JLCPCB PCBA. πŸ”Œ πŸ”¨
3
star
13

AKWF_WaveForms_1024

Resampled AKWF Waveforms as C-Headers (1024+1 samples each)
C
3
star
14

JUCE-Vult-Demo

A monophonic phase-distortion synthesizer example written in Vult DSP. Standalone / AU / VST3.
C++
3
star
15

BeMicro-CV-Multicomp

Pick-and-mix to create your own custom computer on the BeMicro CV FPGA Board.
VHDL
2
star
16

NordModularPatches

Patches for Nord Micro Modular, Nord Modular G1 and Nord Modular G2
2
star
17

PicoUI

WiP User Interface Graphics + Input handling library for Arduino
C++
2
star
18

RemoteIO-gRPC

Remote I/O service for RaspberryPi using gRPC (and Protobuf)
Go
2
star
19

NorthernLights

Work in progress nRF24 DMX wireless light controller (ArtNet, DMX)
C++
2
star
20

AmbikaVoicecardControl

Arduino Library for controlling an Ambika Voice Card via SPI.
C++
2
star
21

RP2040-NRF24-Sensor-Node

A low-power Raspberry RP2040 + nRF24L01+ Sensor Node with LiPo Charger and Protection Circuitry
2
star
22

AudioOS-Buildroot

Realtime Audio optimized OS for Raspberry Pi 3/4 based on Buildroot.
Makefile
2
star
23

AudioOS-JUCE-Example

C++
1
star
24

DadaControl

JavaScript
1
star
25

BitmapFnts

C
1
star
26

OpenFrameworks-PS3Eye-FaceTracker

Just a dirty test with OF, The PS3Eye and FaceTracker @60fps.
1
star
27

debugomatic-gui

A GUI based on dear imgui for the RP2040 debug-o-matic board (swd scan, jtag scan, i2c enum, ..)
C++
1
star
28

modep-pi4-aarch64

Tweaks and config for modep-host / modep-ui for Raspberry Pi 4/400.
1
star
29

FabLabML

Fab Lab Markup Language - A markup language to describe your fablab
1
star
30

raspberry-juce

Dockerfile
1
star
31

imgui-cmake-template

C++
1
star
32

MIDIBox-FB01-Programmer

Yamaha FB-01 4-op FM Synth MIDI CC proxy / programmer
C
1
star
33

PicoADK-Firmware-Arduino

Work-in-progress Arduino version for the PicoADK Audio Development Board
C++
1
star
34

GLSL-Shaders

C
1
star
35

linux-rpi-5.4.y-rt

Raspberry Pi Kernel 5.4.y with PREEMT_RT Realtime Patches.
C
1
star
36

RaspberryPi-PL011-MIDI

C
1
star
37

Teensy_AK4558

Eagle
1
star
38

PicoADK-Eurorack-Module-VCV

VCV Rack Module for the PicoADK Eurorack Module "Aurora"
C
1
star