rp6

module
v1.0.0-alpha.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2026 License: MIT

README

RP6

A touch-friendly controller for the Roland P-6 (AIRA Compact sampler). It also bundles a software sampler and step sequencer, so it works without the hardware too.

Runs on Linux desktop, in the browser (experimental), and on Android. Built with Fyne.

Talks to the Roland P-6 and the Adafruit Macropad over USB MIDI.

rp6 on the desktop    rp6 on Android

Note: RP6 is alpha quality. It works best on desktops and larger Android screens (tablets); the UI doesn't adapt gracefully to small resolutions yet.

Features

  • 48 pads, banks A–H — a grid paged A–D / E–H (or a dense single-page view). Tap to trigger; the last hit is highlighted.
  • Step sequencer — up to 8 tracks, each 1–4 bars and looping at its own length (polymeter), 16 steps/bar, tempo-synced, with per-track mute. Assign a pad to a track with a tap, program steps, press play. Save/load 16 sequence slots; your work autosaves and reloads on next launch. (sequencer guide)
  • Transport & tempo — illuminated Play/Stop, a TEMPO knob and a PATTERN selector, driving the P-6 over MIDI clock.
  • Effects — a per-pad effects rack (tempo-synced Roll) and global Delay / Reverb controls.
  • Built-in emulator — no P-6 needed: RP6 bundles a playable "modular-hits" sample kit. Tap the device badge to switch between the emulator and a connected P-6.
  • Shared jam sessions (experimental, desktop only) — play together over the internet. See the setup guide.
  • Activity / VU meter — a level meter on the right (real USB-audio VU on desktop builds).
  • Amber hardware-style UI — backlit rack panels, knobs and 7-segment readouts; works entirely by touch.

Running it

There are pre-built Android APK and Flatpak packages in releases.

Plug in the P-6 or an Adafruit MacroPad over USB and it connects automatically. Unplug it and RP6 falls back to the built-in emulator, reconnecting when it reappears. With no hardware at all, it just runs the emulator.

Using it with a P-6

For full control, set these on the P-6 (MENU):

  • MIDI Clock Sync (SYnC) = USB — so Play/Stop and the TEMPO knob drive it.
  • Rx Program Change = On — so the PATTERN selector switches patterns.

Pads always trigger by note, so you can play all 48 pads from the grid, a connected controller, or the sequencer regardless of the above.

Without a P-6 (emulator)

Without a P-6 connected, RP6 uses a built-in software sampler.

The bundled kit is one-shot hits from the “Modular-Hits” pack by publicsamples (https://github.com/publicsamples/Modular-Hits).

With the Adafruit Macropad

You'll need to set up your Macropad with the CircuitPython code here.

License

MIT — see LICENSE. RP6 is an independent project and is not affiliated with or endorsed by Roland.

Directories

Path Synopsis
cmd
rp6 command
Command rp6 is a touch-friendly Roland P-6 pad controller.
Command rp6 is a touch-friendly Roland P-6 pad controller.
rp6-signal command
Command rp6-signal is a tiny WebSocket signaling server for rp6 shared jam sessions.
Command rp6-signal is a tiny WebSocket signaling server for rp6 shared jam sessions.
webserve command
Command webserve is a tiny static file server for the rp6 web build.
Command webserve is a tiny static file server for the rp6 web build.
internal
androidusb
Package androidusb reads and writes USB-MIDI for devices plugged into an Android phone (a P-6, an Adafruit MacroPad, …) entirely from Go, and bridges them into the midibridge package (so the p6 + midiin backends work unchanged).
Package androidusb reads and writes USB-MIDI for devices plugged into an Android phone (a P-6, an Adafruit MacroPad, …) entirely from Go, and bridges them into the midibridge package (so the p6 + midiin backends work unchanged).
audio
Package audio provides reusable audio-capture primitives, independent of any UI or MIDI code.
Package audio provides reusable audio-capture primitives, independent of any UI or MIDI code.
audiofx
Package audiofx provides allocation-free, UI-agnostic audio processors for interleaved float32 PCM.
Package audiofx provides allocation-free, UI-agnostic audio processors for interleaved float32 PCM.
effects
Package effects implements a small, device- and UI-agnostic effects engine for a pad controller.
Package effects implements a small, device- and UI-agnostic effects engine for a pad controller.
emu
Package emu is a software emulator for the Roland P-6 that plays WAV samples through the computer's audio output, so rp6 is usable without the hardware.
Package emu is a software emulator for the Roland P-6 that plays WAV samples through the computer's audio output, so rp6 is usable without the hardware.
jam
Package jam implements the transport-agnostic core of rp6's shared jam sessions: peers broadcast their live pad hits to each other so everyone hears (and sees a brief blink for) what the others play.
Package jam implements the transport-agnostic core of rp6's shared jam sessions: peers broadcast their live pad hits to each other so everyone hears (and sees a brief blink for) what the others play.
jam/signal
Package signal implements the tiny WebSocket signaling hub for rp6 shared jam sessions.
Package signal implements the tiny WebSocket signaling hub for rp6 shared jam sessions.
midiin
Package midiin is a small, pluggable framework for MIDI *input* controllers: external hardware (a macropad, a grid controller, a keyboard, …) that drives rp6's pads, on-screen keyboard and transport host-side.
Package midiin is a small, pluggable framework for MIDI *input* controllers: external hardware (a macropad, a grid controller, a keyboard, …) that drives rp6's pads, on-screen keyboard and transport host-side.
midiin/arturia
Package arturia is the rp6 MIDI-input driver for Arturia USB keyboards — the KeyStep 37 and the MicroLab.
Package arturia is the rp6 MIDI-input driver for Arturia USB keyboards — the KeyStep 37 and the MicroLab.
midiin/macropad
Package macropad is the rp6 MIDI-input driver for the Adafruit MacroPad RP2040 (the "DigiKey macropad", product 5100) running the rp6 CircuitPython firmware from docs/hardware/macropad.
Package macropad is the rp6 MIDI-input driver for the Adafruit MacroPad RP2040 (the "DigiKey macropad", product 5100) running the rp6 CircuitPython firmware from docs/hardware/macropad.
midiin/webmidi
Package webmidi is the rp6 MIDI-input driver for external controllers (e.g.
Package webmidi is the rp6 MIDI-input driver for external controllers (e.g.
samplepak
Package samplepak reads, writes and installs .rp6sp sample paks: ZIP archives that carry a set of P-6-style pad samples (WAV or FLAC, laid out A1..H6 — see internal/emu) plus a manifest.json describing the pak.
Package samplepak reads, writes and installs .rp6sp sample paks: ZIP archives that carry a set of P-6-style pad samples (WAV or FLAC, laid out A1..H6 — see internal/emu) plus a manifest.json describing the pak.
sequencer
Package sequencer implements a small, device- and UI-agnostic step sequencer that drives a pad controller in software.
Package sequencer implements a small, device- and UI-agnostic step sequencer that drives a pad controller in software.
store
SQLite-backed store (desktop).
SQLite-backed store (desktop).
ui/components
Package components provides reusable Fyne widgets for the rp6 UI.
Package components provides reusable Fyne widgets for the rp6 UI.
ui/layoutlang
Package layoutlang parses a small, Blueprint-inspired text language that describes Fyne layouts, and compiles it to the layoutspec node tree.
Package layoutlang parses a small, Blueprint-inspired text language that describes Fyne layouts, and compiles it to the layoutspec node tree.
ui/layoutspec
Package layoutspec is a small, declarative description of a Fyne layout tree.
Package layoutspec is a small, declarative description of a Fyne layout tree.
ui/theme
Package theme provides the rp6 application's Fyne theme: the standard dark theme with its blue accent replaced by the same amber used on the LCDs.
Package theme provides the rp6 application's Fyne theme: the standard dark theme with its blue accent replaced by the same amber used on the LCDs.
Package midibridge is the platform bridge that lets a host-owned MIDI layer (initially the Android Activity, which owns android.media.midi.MidiManager) feed rp6's pure-Go MIDI backends.
Package midibridge is the platform bridge that lets a host-owned MIDI layer (initially the Android Activity, which owns android.media.midi.MidiManager) feed rp6's pure-Go MIDI backends.
Package p6 provides a small, dependency-free client for controlling a Roland P-6 (AIRA Compact sampler) over its class-compliant USB MIDI port.
Package p6 provides a small, dependency-free client for controlling a Roland P-6 (AIRA Compact sampler) over its class-compliant USB MIDI port.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL