MacRiff is a lightweight, high-performance background utility that bridges the PDP Riffmaster Wireless Guitar Dongle directly to keyboard inputs on macOS. It is designed to work seamlessly with rhythm games like Clone Hero, bypassing macOS HID driver limitations to deliver a zero-latency, plug-and-play experience.
Due to how macOS handles custom USB devices, the PDP Riffmaster wireless dongle does not register as a standard game controller out-of-the-box. MacRiff solves this using a two-part system:
- USB Driver Bridge (
bridge.js&node-usb): Runs with administrative privileges to detach the macOS default HID driver and claim the raw wireless USB interfaces directly usinglibusb. It polls the guitar state at the highest USB query rate. - C Key Injector (
injector): Receives events from the bridge and synthesizes native macOS keyboard events (CGEventPost) to route them directly into the macOS window server, enabling standard game mapping. - Menu Bar GUI App (
MacRiff.app): A Swift-based menu bar status app that makes starting, stopping, and viewing logs a single-click experience.
The guitar controls are bridged to the following keyboard and OS inputs (designed to match common rhythm game layouts):
| Guitar Control | Keyboard / OS Input | macOS Virtual Keycode | Notes |
|---|---|---|---|
| Green Fret | A |
0 |
Standard fret (Main & Solo frets work) |
| Red Fret | S |
1 |
Standard fret (Main & Solo frets work) |
| Yellow Fret | J |
38 |
Standard fret (Main & Solo frets work) |
| Blue Fret | K |
40 |
Standard fret (Main & Solo frets work) |
| Orange Fret | L |
37 |
Standard fret (Main & Solo frets work) |
| Strum Up | โ (Up Arrow) |
126 |
Menu navigation & strumming |
| Strum Down | โ (Down Arrow) |
125 |
Menu navigation & strumming |
| D-pad Left | โ (Left Arrow) |
123 |
Menu navigation |
| D-pad Right | โ (Right Arrow) |
124 |
Menu navigation |
| Start / Options | Enter |
36 |
Game pause / Start menu |
| Select / Share | Escape |
53 |
Back / Menu |
| Whammy Bar | Scroll Wheel |
Analog Delta | Bridges analog value to scroll speed for true axis mapping |
| Tilt Sensor | Spacebar |
49 |
Triggers Star Power when guitar is tilted up |
Tip
Mapping Analog Whammy & Star Power in Clone Hero:
- Whammy: In Clone Hero's controller binding screen, click to bind the Whammy axis, and then press down the guitar's whammy bar. The game will detect the scroll wheel pulses and bind it as a relative axis!
- Star Power: Bind the Star Power action to the Spacebar in Clone Hero. When you tilt your guitar up, the bridge automatically presses Spacebar to trigger Star Power.
- macOS (Supports Apple Silicon
M1/M2/M3and Intel processors natively). - Node.js (v16 or higher).
- If you don't have Node.js, you can install it easily using Homebrew:
Or download it directly from nodejs.org.
brew install node
- If you don't have Node.js, you can install it easily using Homebrew:
- Download the Release: Download and extract the latest
MacRiff.appbundle. - Grant Permissions: Copy
MacRiff.appinto your/Applicationsfolder (or run it from any folder). - Run the App: Double-click
MacRiff.app. A guitar icon๐ธ MacRiffwill appear in your menu bar. - Start the Bridge:
- Click the
๐ธ MacRiffmenu item and select Start Bridge. - You will be prompted with a native macOS password dialog. Enter your system password (or use Touch ID).
[!NOTE] Administrative privileges are required to claim the raw USB device and detach the default macOS kernel drivers.
- Once successfully connected, the menu bar icon updates to
๐ธ MacRiff (Active).
- Click the
- Toggle Special Inputs: If you want to disable the analog Whammy bar (scroll wheel) and Tilt sensor (Spacebar) inputs, select Disable Whammy & Star Power in the dropdown. The bridge will automatically restart in the background to apply the new setting.
macOS has strict security controls (TCC) to block background apps from generating keystrokes. You MUST grant Accessibility permissions to both the app and the Node.js runtime for keystrokes to work.
At startup, MacRiff.app will trigger a macOS system prompt asking for Accessibility permission.
- Click Open System Settings.
- Toggle the switch next to MacRiff to ON (blue). (If you missed the prompt, go to: System Settings > Privacy & Security > Accessibility, and add/toggle MacRiff).
Because MacRiff.app runs bridge.js using Node.js, the actual keypresses are generated by the node process. You must also grant Accessibility permissions to the node binary.
- Open System Settings > Privacy & Security > Accessibility.
- Click the
+(plus) button at the bottom of the list. - Enter your password to unlock the settings.
- Find your
nodebinary and add it.- Where is my
nodebinary?- If you installed Node.js via Homebrew (Apple Silicon):
/opt/homebrew/bin/node - If you installed Node.js via Homebrew (Intel):
/usr/local/bin/node - If you used NVM or another installer, open a Terminal and type:
This will print the exact path (e.g.,
which node
/Users/username/.nvm/versions/node/v20.x.x/bin/node).
- If you installed Node.js via Homebrew (Apple Silicon):
- How to select it in the File Dialog?
- When the file dialog opens, press
Cmd + Shift + Gto open the "Go to folder" search bar. - Paste the path to your node binary (e.g.,
/opt/homebrew/bin/node) and press Go (or Enter). - Select
nodeand click Open. - Ensure it is toggled ON in the Accessibility list.
- When the file dialog opens, press
- Where is my
โ The status says "Running" (Active), but no keypresses are registered in Clone Hero or Text Edit!
This is a 100% permission inheritance issue.
- Go to System Settings > Privacy & Security > Accessibility.
- Locate node and MacRiff in the list.
- Toggle them OFF, wait 2 seconds, and toggle them ON again. (macOS sometimes fails to register permissions for binaries that are recompiled or updated).
- Restart
MacRiff.app.
- Click View Logs... in the menu dropdown (or open the log file at
/tmp/macriff.log). - If you see:
PDP Riffmaster Dongle NOT found!: Ensure the wireless USB dongle is plugged into your Mac and the LED light is solid (paired with the guitar).Failed to claim interface: Ensure you entered your sudo password correctly. Another program might be claiming the dongle. Try unplugging and re-plugging the dongle.
If you want to compile or package MacRiff yourself:
- Clone the Repository:
git clone https://github.com/cdapayne/MacRiff.git cd MacRiff - Install Dependencies:
npm install
- Compile the Key Injector:
This compiles
npm run build
injector.cinto a native universal binary supporting both Intel and Apple Silicon. - Package the App Bundle:
This compiles the Swift menu helper
npm run package
menu.swiftas a universal binary, builds theMacRiff.appstructure under the root directory, copies dependencies, and signs it.
If MacRiff helped you get your PDP Riffmaster guitar working on macOS, consider supporting this project! Reverse-engineering USB protocols, compiling universal binaries, and maintaining driver bridges takes time and effort.
If you'd like to buy me a coffee, you can donate via:
- PayPal: paypal.me/cp3izzle (Best for international / credit card donations)
- Cash App:
$cdapayne(Best for US-based donations)
Thank you!!!
MIT License. Feel free to modify and distribute!
