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

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.5
File Size Uploaded
riffpi-0.2.5.tar.gz 922.9 kB Details

Built distribution (wheel)

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

Total release size: 946.6 kB

Release files / riffpi-0.2.5.tar.gz

Download URL riffpi-0.2.5.tar.gz
Size 922.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d9ec0cd6f33eb34d024137ead1d74e92b0c36a94f10494096e0e80ee6c351c59
BLAKE2b-256 checksum
How to use checksums
d475a0798a17bbfbaa733f94f6a0043633cde99d55b0597ab4c79fa4fefd340e
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.5-py3-none-any.whl

Download URL riffpi-0.2.5-py3-none-any.whl
Size 23.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f036f35f3b85bcb354674f245e10ab9bb5a67309e00f06825fa4255a229bdd3e
BLAKE2b-256 checksum
How to use checksums
86009448c3ba3ac85a77f0e1369b782386c32cc8a5a9acdbb2fef9a2e3407ac6
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

0.2.6

2 release files

This release

0.2.5 This release

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