Turn your Wii Motion Plus controllers into an electronic drum kit.
WiiDrum is a macOS app that uses Wii Remote controllers with Motion Plus for drumstick-based air drumming, and a Wii Balance Board for kick drum and hi-hat pedal control. It detects strike motions and stick angles to trigger the right drum sounds with velocity sensitivity.
- Motion-based drumming -- Strike detection from accelerometer peaks, not just button presses
- Angle-based drum zones -- Tilt the Wiimote to aim at different drums (snare, toms, cymbals, hi-hat)
- Balance Board integration -- Right foot for kick drum, left foot for hi-hat open/close
- Synthesized drum sounds -- Built-in audio engine with no external samples needed
- MIDI output -- Send drum hits as MIDI notes to any DAW or plugin (virtual MIDI source)
- Keybind output -- Map drum hits to keyboard keys for use in any game
- Low latency -- Native macOS audio and Bluetooth for responsive play
| Device | Purpose | Minimum |
|---|---|---|
| Wii Remote + Motion Plus | Drumstick (right hand) | 1 required |
| Wii Remote + Motion Plus | Drumstick (left hand) | Optional |
| Wii Balance Board | Kick drum + hi-hat pedal | Optional |
Note: Wii Remotes with built-in Motion Plus (model RVL-CNT-01-TR) work great. Original Wii Remotes need the external Motion Plus adapter plugged in.
- macOS 14.0 (Sonoma) or later
- Bluetooth (built into all modern Macs)
- Xcode 15+ (for building)
- Swift 5.9+
- Open
Package.swiftin Xcode (File > Open, select the file) - Select the
WiiDrumscheme and your Mac as the run destination - Click Run (Cmd+R)
swift build
swift run WiiDrumNote: Building from command line creates an executable but may not have the proper app bundle for Bluetooth permissions. Xcode is recommended for the best experience.
- Launch WiiDrum
- Go to the Connect tab
- Press the red Sync button on the back of your Wiimote (under the battery cover)
- Click Search in the app
- When your device appears, click Connect
- Repeat for additional controllers
Once connected:
- Hold the Wiimote like a drumstick and make striking motions
- Tilt the Wiimote to aim at different drums:
- Down center = Snare
- Left = Hi-hat
- Slightly right = Toms
- Up-left = Crash
- Up-right = Ride
- Step on the Balance Board right side for kick, left side to close the hi-hat
- Hit strength controls volume (velocity)
Switch between modes in the top bar:
| Mode | Description |
|---|---|
| Audio | Play built-in synthesized drum sounds |
| MIDI | Send MIDI notes to other apps (appears as "WiiDrum Output") |
| Keybinds | Send keyboard key presses (for games) |
| Audio + MIDI | Play sounds and send MIDI simultaneously |
- Bluetooth: macOS will ask to allow Bluetooth access on first launch. Grant it.
- Accessibility (keybind mode only): System Settings > Privacy & Security > Accessibility > enable WiiDrum.
The Settings tab lets you tune:
- Strike threshold -- How hard you need to hit (lower = more sensitive)
- Cooldown -- Minimum time between hits (prevents double triggers)
- Kick threshold -- How hard to stomp for a kick drum
- Zone layout -- Standard (7 drums) or Simple (3 zones)
- MIDI channel -- Default is Ch 10 (GM Percussion)
Input: Wiimote (Motion Plus) ──┐
Wiimote (Motion Plus) ──┤── Bluetooth/IOBluetooth
Balance Board ──────────┘
│
Core: Strike Detector ────────┤
Angle Mapper ───────────┤── DrumKit engine
Balance Board Logic ────┘
│
Output: Audio Engine ───────────┤── AVAudioEngine
MIDI Output ────────────┤── CoreMIDI virtual source
Keybind Output ─────────┘── CGEvent key simulation
- Wiimote not found: Make sure you press the red Sync button (not 1+2) and search quickly -- discovery times out after 15 seconds.
- No Motion Plus data: The app initializes Motion Plus automatically. If it fails, disconnect and reconnect the Wiimote.
- High latency: Close other Bluetooth devices. Make sure you're in Audio mode (lowest latency). MIDI adds a small amount of latency from the receiving app.
- Keybinds not working: Grant Accessibility permission in System Settings.
MIT