Skip to main content

RiffPi

docs lint-and-build PyPI License: CERN-OHL-W-2.0

RiffPi is the control daemon for Kleag's MFX, a DIY guitar multi-effect pedalboard built around a Raspberry Pi, a Pisound sound card, and Guitarix as the effects engine. It reads the pedalboard's foot switches, rotary encoders, keypad, joystick, and expression pedal, and turns them into MIDI sent to Guitarix.

Full documentation: https://kleag.github.io/riffpi/

The Kleag's MFX pedal

Features

  • 4 foot switches with LEDs toggle Guitarix effects, and stay in sync if Guitarix changes state on its own (e.g. loading a preset).
  • 4 rotary encoders send relative MIDI CC changes; the last one's button cycles preset banks A-D.
  • A 4x4 keypad selects presets directly and doubles as mouse left/right click.
  • A joystick moves the mouse pointer, for fine-tuning Guitarix's on-screen knobs, and its push acts as a middle click.
  • An expression pedal sends a smoothed, continuous MIDI CC.
  • Hardware design (KiCad) for the controller PCB, in kicad_board/.

Quick start

pip install riffpi
riffpi install-service   # writes, enables, and starts a systemd --user service

See Installation for the full Raspberry Pi setup (I2C, uinput permissions, headless/no-login boot, WiFi power management), and Usage for what each control does and the full MIDI CC mapping.

Hardware

Wiring, MCP23017/ADS1115 pin maps, a block diagram, and the schematic/PCB renders are in Architecture. Hardware design source (KiCad 9) is in kicad_board/.

Development

uv build                       # or: python -m build
uvx ruff check src/            # lint
uvx twine check dist/*         # validate package metadata
.venv/bin/mkdocs serve         # preview the docs site locally
uvx bumpver update --minor     # bump the version (patch/minor/major)

CI (.github/workflows/) lints and builds the package on every push/PR, deploys the docs site on changes to docs/, and publishes to PyPI on GitHub Release.

License

Copyright Gaël de Chalendar, 2025-2026.

This project describes Open Hardware and is licensed under the CERN-OHL-W v2. You may redistribute and modify it and make products using it under the terms of the CERN-OHL-W v2 — see LICENSE.md. It is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE.

Source location: https://github.com/kleag/riffpi. As per CERN-OHL-W v2 section 4.1, should you produce hardware based on these sources, you must keep the source location visible on the external case of the pedal or other product you make using this documentation.

Metadata

Release files for riffpi 0.2.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for riffpi 0.2.6
File Size Uploaded
riffpi-0.2.6.tar.gz 923.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for riffpi 0.2.6
File Interpreter ABI Platform
riffpi-0.2.6-py3-none-any.whl Python 3 none any Details

Total release size: 947.4 kB

Release files / riffpi-0.2.6.tar.gz

Download URL riffpi-0.2.6.tar.gz
Size 923.1 kB
Tags Source
SHA-256 checksum
How to use checksums
662b752fea1d332e6052f199a7dcea82da4d9b4a25ebc57531360161d264b0fd
BLAKE2b-256 checksum
How to use checksums
72bd37f81e386677a5b0ea3e2a487e66eefa9a6961b6e02e97f63ad45635a55d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / riffpi-0.2.6-py3-none-any.whl

Download URL riffpi-0.2.6-py3-none-any.whl
Size 24.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
127c7acff4f4a9f988d7c7441c2c14c9684e27ae6106281a143cf30cce595fc4
BLAKE2b-256 checksum
How to use checksums
27fbefcbe0133e23c9b66e9a7b8946c87cf7a9411159e3d1eeefe2e5e8bf04a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

This release

0.2.6 This release

2 release files

0.2.5

2 release files

0.2.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page