Skip to content

Conversation

@dmadisetti
Copy link

@dmadisetti dmadisetti commented Jan 12, 2026

Adds an interactive notebook that provides real-time effect
parameter control and visualization for the guitar pedal effects.

The notebook uses CFFI to call the C audio effects directly. Audio files
are processed sample-by-sample at 48kHz with the same int32/float32
precision as the hardware implementation.

image image

Features:

  • Per-file watching of C sources (convert.c, *.h) with automatic rebuild
  • Direct C function calls via CFFI shared library (libeffects.so)
  • Reactive UI updates parameter controls based on selected effect
  • Waveform and spectrogram visualization with statistics
  • Audio I/O via soundfile library

Setup:

  • uv run marimo edit effects.py # creates isolated venv, autobuilds, and launches

or

  • pip install -e .
  • make libeffects.so # previous step should have done this, but just in case
  • marimo edit effects.py

also hosted here, just for kicks: https://molab.marimo.io/notebooks/nb_XrY8GPWcHPJV9rPtmbdJvo/app
disclaimer, I work on marimo professionally- but mainly like tinkering with things

Copy link

@manishin2050 manishin2050 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice job

have you checked.?

@qasim78678
Copy link

The interactive dashboard is a really interesting idea, and the ability to tweak effect parameters in real time while visualizing waveforms and spectra is genuinely useful. The CFFI bridge to the C effects and keeping the same precision as the hardware path is especially nice.

That said, this PR introduces a fairly large, self-contained tool along with new workflow and packaging assumptions (uv, marimo, notebook-style UI). Before we can consider merging something like this, I think we need to clarify a few things:

• Whether an interactive notebook/dashboard fits the core scope of this project, or if it’s better maintained as an external companion tool.
• If it is meant to live here, we should try to minimize new tooling and keep dependencies and setup as simple and conventional as possible.
• It would help to separate any core changes from the dashboard itself so the review surface is smaller and easier to reason about.

Overall, the work is impressive and clearly useful, but I’d prefer to discuss direction and possibly narrow or restructure this before moving forward. Let me know what you think.

@dmadisetti
Copy link
Author

dmadisetti commented Jan 13, 2026

These are great organizational and scope concerns.

I agree that depending on a whole web-server is a bit heavy handed.
On the flip side, in terms of UI - the web standard is incredibly flexible and addresses your styling concerns.
For a small proof of concept, I can compile this project for web assembly (which marimo supports) and pushed to github pages with a sample style.
Adding a github action would enable interactive documentation

Some thoughts on making this less of a monolith:

  • generate ffi.h on the fly. Removes maintenance burden of manually exporting a effect
  • break out the different visualization components into scoped, separate files

The tree would look something like

  • pyproject.toml # uv is the only "installed" software needed. I run uv without python even
  • dashboard/
    • main.py # marimo app, imports from viz, builds
    • compile.py # breakout the dynamic compilation I put in the notebook, now generate ffi.h
    • viz/
      • spectrogram.py
      • ...

Self contained, but highly coupled to this project.
I'm not sure if it makes sense for a dashboard and a TUI, but marimo could work with maturin.
However, the complexity balloons to rust, python and c + emcc if doing webassembly exports.


edit: woops, hit send a little early

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants