# 🦆 DuckyMIDI

**DuckyMIDI** is a simple, compact USB-C MIDI drumpad with **17 keys**, designed for music production, live performance, and drumming workflows.  
It's powered by the **Orpheus Pico** and shows up as a standard USB MIDI device — no drivers needed.

Duck themed. Simple. Hackable.

---

## Features

- **17 programmable MIDI  pads** 
- **USB-C powered & data** - Simple, clean and efficient
- **USB MIDI (class-compliant)** - Works instantly on macOS, Windows, Linux
- **Powered by the Orpheus Pico** – Made by [Adam](https://admk.dev/) from [Hack Club](https://hackclub.com)!
- Low-latency, fast response for drumming
- 🦆 Duck-themed PCB & design

---

## 🧩 Hardware

- **MCU:** Orpheus Pico (RP2040-based)
- **Keys:** 17 mechanical switches
- **Interface:** USB-C
- **MIDI:** USB MIDI (no DIN, no adapters)
- **Power:** USB-C powered

---

## 💻 Software

- The firmware was written using **TinyUSB MIDI**
- Appears as "DuckyMIDI" on your system
- Works with all DAWs such as:
  - Logic Pro
  - Ableton Live
  - FL Studio
  - Reaper

Each key sends a MIDI **Note On / Note Off** message for the daw to proccess and then record/output.

---

## Default MIDI Mapping

DuckyMIDI uses General MIDI drum mapping on **Channel 10**:

| Key | MIDI Note | Drum Sound |
|-----|-----------|------------|
| 1   | 36 (C1)   | Kick Drum |
| 2   | 38 (D1)   | Snare |
| 3   | 42 (F#1)  | Closed Hi-Hat |
| 4   | 46 (A#1)  | Open Hi-Hat |
| 5   | 48 (C2)   | Tom 1 |
| 6   | 50 (D2)   | Tom 2 |
| 7   | 45 (A1)   | Low Tom |
| 8   | 47 (B1)   | Mid Tom |
| 9   | 49 (C#2)  | Crash Cymbal |
| 10  | 51 (D#2)  | Ride Cymbal |
| 11  | 52 (E2)   | Crash 2 |
| 12  | 53 (F2)   | Ride Bell |
| 13  | 54 (F#2)  | Tambourine |
| 14  | 55 (G2)   | Splash Cymbal |
| 15  | 56 (G#2)  | Cowbell |
| 16  | 57 (A2)   | Crash 3 |
| 17  | 58 (A#2)  | Vibraslap |

**Want to customize?** Just edit the `MIDI_NOTES` array in the firmware!

Also a quick note that you don't have to use DuckyMidi as a drumpad only! It can be configured to be used with instruments like the piano and synths as well!

---

## Getting Started
Note DuckyMidi doesn't only have to be a drumkit! I've configured it such as thats what I mainly play but you could totally use it as a synth!

### For Logic Pro:
1. Plug DuckyMIDI into your computer via **USB-C**
2. Open Logic Pro
3. Create a new **Drummer** or **Software Instrument** track
4. In the track inspector, set MIDI input to **DuckyMIDI**
5. Load your favorite drum kit (Drum Kit Designer, Battery, etc.)
6. Start jamming! 🦆

### For Other DAWs:
1. Plug in DuckyMIDI
2. Open your DAW preferences/settings
3. Enable **DuckyMIDI** as a MIDI input device
4. Assign it to a drum instrument or sampler
5. Tada!!
---

## Flashing Firmware

1. Hold **BOOTSEL** button on the Orpheus Pico
2. Plug it into USB (while holding BOOTSEL)
3. The Pico appears as a USB drive
4. Copy the `DuckyMIDI.uf2` firmware file onto the drive
5. It will auto-reboot and you're done 🦆

---

## Customization

Want different notes or velocity? Easy!

Open the firmware and edit these lines:

```cpp
// Change MIDI notes (line ~20)
const byte MIDI_NOTES[17] = {
  36, 38, 42, 46, 48, 50, 45, 47, 49,
  51, 52, 53, 54, 55, 56, 57, 58
};

// Change velocity (line ~29)
byte velocity = 100;  // 0-127

// Change MIDI channel (line ~30)
byte midiChannel = 10;  // 1-16
```

Then reflash and you're golden!

---

## 🦆 Why DuckyMIDI?

I started building this project after noticing a lack of MIDI Macropads in the market, Most of them that acomplish the same purpose often cost 100 AUD + while DuckyMidi Does it in only 15 AUD!!!

Don't believe me on that one?  
Heres the cost breakdown:

1 - PCB - 12 AUD including shipping from JLC PCB for 5! = 2.40 per board  
2 - Switches - 17 switches is around $3 from aliexpress  
3 - 3D printed case uses around 73 grams of filament and at a price of around 20 aud for 1000g thats only $1.7  
3 - As for the Pico - It's not widley available for sale but you can use any sort of USB C or even a normal pico from AliExpress around $3

---

## 📜 License

MIT License

---

Made with ❤️ by The-UnknownHacker

*Quack on! 🦆*
