Skip to content

About

A swift app that makes your 2 motionplus wii controllers turn into air drums. Still in dev phase. I do not own or have any associate with Nintendo or its brands.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

WiiDrum

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.

Features

  • 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

Hardware Required

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.

Getting Started

Prerequisites

  • macOS 14.0 (Sonoma) or later
  • Bluetooth (built into all modern Macs)
  • Xcode 15+ (for building)
  • Swift 5.9+

Build and Run

Option A: Open in Xcode (recommended)

  1. Open Package.swift in Xcode (File > Open, select the file)
  2. Select the WiiDrum scheme and your Mac as the run destination
  3. Click Run (Cmd+R)

Option B: Command line

swift build
swift run WiiDrum

Note: 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.

Connecting Controllers

  1. Launch WiiDrum
  2. Go to the Connect tab
  3. Press the red Sync button on the back of your Wiimote (under the battery cover)
  4. Click Search in the app
  5. When your device appears, click Connect
  6. Repeat for additional controllers

Playing

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)

Output Modes

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

Permissions

  • Bluetooth: macOS will ask to allow Bluetooth access on first launch. Grant it.
  • Accessibility (keybind mode only): System Settings > Privacy & Security > Accessibility > enable WiiDrum.

Settings

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)

Architecture

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

Troubleshooting

  • 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.

License

MIT

About

A swift app that makes your 2 motionplus wii controllers turn into air drums. Still in dev phase. I do not own or have any associate with Nintendo or its brands.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages