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
Activity
20Would 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.
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.
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.
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
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
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
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
@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 I think it still needs a lot of features, like a reset effect and others, but it works.
@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 I think it still needs a lot of features, like a reset effect and others, but it works.
@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 I think it still needs a lot of features, like a reset effect and others, but it works.
@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 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
@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 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
@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 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
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.
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.
@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.
@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.
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.