A simple synth TUI
A terminal-based FM synthesizer written in Go, featuring MIDI input support and real-time waveform visualization.
- Frequency Modulation (FM) synthesis
- MIDI input support
- Real-time waveform visualization with color gradients
- Interactive TUI controls for:
- Carrier frequency
- Modulator frequency range
- Modulation sweep time
- Modulation index
- Volume control
- Real-time display toggle
- Go 1.21 or later
- PortAudio development libraries
- RtMidi development libraries
brew install portaudio rtmidi
sudo apt-get install libasound2-dev libportaudio2 libportmididev
sudo apt-get install librtmidi-dev
Install MinGW and the required development libraries:
pacman -S mingw-w64-x86_64-portaudio mingw-w64-x86_64-rtmidi
- Clone the repository:
git clone https://github.com/arroyo/gosynth.git
cd gosynth
- Install Go dependencies:
go mod download
- Build the project:
go build
-
Connect a MIDI device (optional)
-
Run the synthesizer:
./gosynth
- Controls:
- Use ↑/↓ arrows to select parameters
- Use ←/→ arrows to adjust values
- Press 'q' to quit
main.go
: Application entry point and initializationpkg/synth/
: Synthesizer core functionality- Audio processing
- MIDI handling
- Parameter management
pkg/ui/
: Terminal user interface- Interactive controls
- Waveform visualization
- Color rendering
Apache License - see LICENSE file for details