Skip to content

Conversation

@ChrisX101010
Copy link

Closes #11

Simple terminal UI as requested by @torvalds:

"Some UI for actually turning the virtual 'pots' and picking the effect would probably be interesting. But only something simple."

What it does

  • Select effects (flanger, echo, fm, am, phaser, discont)
  • Adjust the 4 virtual pots for each effect
  • Process audio and play the result

Implementation

  • Single Python file (~200 lines)
  • Uses only curses from standard library
  • No external dependencies
  • Stays with existing languages (Python already used for visualize.py)

As @ahwelp suggested, this uses Python instead of Rust/Ratatui to avoid adding a new language and heavy dependencies.

Controls

  • Up/Down: Select effect
  • Tab: Cycle pots
  • Left/Right: Adjust value
  • p: Process and play
  • r: Reset
  • q: Quit

@torvalds
Copy link
Owner

Would you mind looking at expanding this a bit for the new dynamic control functionality I added to the 'convert' binary?

See commit ea71138 ("convert: add somewhat realtime control interface") which talks about changing the pot values at runtime using a file descriptor and the "--control=" command line switch. I think it should work just fine in your python model.

@ChrisX101010
Copy link
Author

Would you mind looking at expanding this a bit for the new dynamic control functionality I added to the 'convert' binary?

See commit ea71138 ("convert: add somewhat realtime control interface") which talks about changing the pot values at runtime using a file descriptor and the "--control=" command line switch. I think it should work just fine in your python model.

Updated with --control= support from ea71138. Sends pXYY commands in real-time. Uses aplay -B 100 when available.

Ready to add effect switching once added to convert.

If anything else needs changing, please let me know. Happy to help, sir. Have a great rest of the weekend!

Kindly,
Chris

@RodrigoSKohl
Copy link

RodrigoSKohl commented Jan 21, 2026

@ChrisX101010 I changed your code to use TUI with Tkinter, but I used the SoundDevice library instead ffplay or aplay (because ffplay dont work properly with matplotlib): https://github.com/RodrigoSKohl/AudioNoise/tree/feat/tui-portaudio
image
image
I think it still needs a lot of features, like a reset effect and others, but it works.

@ChrisX101010
Copy link
Author

@ChrisX101010 I changed your code to use TUI with Tkinter, but I used the SoundDevice library instead ffplay or aplay (because ffplay dont work properly with matplotlib): https://github.com/RodrigoSKohl/AudioNoise/tree/feat/tui-portaudio image image I think it still needs a lot of features, like a reset effect and others, but it works.

Oh it looks beautiful! but I think Linus needs both ffplay and aplay so he can tune these effects in real time using a guitar pedal, this is more of a GUI and I aimed for simplicity but thank you! I actually will check it out :) Maybe a suggestion and cool idea is to make like a big knob that when different settings applied it will turn the knob, like with an animation and a pointer I guess, like a real life knob, maybe like this for example: https://www.google.com/search?client=ms-android-samsung-ss&hs=m5r9&sca_esv=88a22a1789578c76&sxsrf=ANbL-n7Xw00uRKn6CshsYC_2c9K6kUj7bw:1768991890314&udm=2&fbs=ADc_l-aYG5x8-d5ibnXMiddSQf3iPFI3XMezC0rbXzfktIPjQp1x2jIzBlATx_ViNv2Emlk-lMTphCuWvoDVaknBGbNkHZ4HMp8T1MDXT1vhG0k5ngUSomA-Iz-Joj5g2UwVdQBYT7BSljs4p3Rsq-hTex5AFnJJABXfD2oWDkbrkBWE_dPliSFReZDoXwj-f0T58AoNwLTjuCrdUTrK_OnbB320lW4KlqpFeHWIVVBQdlmHzJkyrWo&q=guitar+knob+on+pedal&sa=X&ved=2ahUKEwjJi-6puJySAxUCA9sEHRICI6cQtKgLegQIFBAB&biw=384&bih=731&dpr=3.75&aic=0

- Reads effects dynamically from Makefile
- Real-time pot control via pXYY commands
- Uses aplay -B 100 for ~100ms latency
- Includes FIR.raw for tube effect
@ChrisX101010
Copy link
Author

Updated with --control= support from ea71138. All effects working (including tube and growlingbass). Reads effects dynamically from Makefile.

Included FIR.raw for tube effect to work out-of-the-box.

@ChrisX101010
Copy link
Author

@torvalds Hey, sir! Can you please check now the updated TUI? :] I hope you like it. If any more changes or updates needed, please let me know. At your disposal. Appreciate your reviews and exposure. It really means a lot to me.

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.

Can I make a TUI for this cool project?

3 participants