A TUI (Terminal User Interface) MIDI generator and sequencer built with Bubbletea.
- File Browser UI: Navigate your filesystem to manage MIDI files
- MIDI Sequencer: 16-step sequencer with 4 channels
- Visual Feedback: Real-time clock visualization and step highlighting
- Easy Editing:
- Toggle steps on/off for each channel
- Adjust BPM (tempo) in real-time
- Change MIDI notes per channel
- Create and open MIDI files
- Keyboard-driven: Fully navigable with keyboard shortcuts
go install go.icco.me/genidi@latestOr build from source:
git clone https://github.com/icco/genidi
cd genidi
go build -o genidigenidi supports multiple modes of operation through subcommands.
Start the manual MIDI sequencer with an interactive TUI:
./genidi manualTo see all available commands:
./genidi --helpNavigate and manage your MIDI files:
↑/k: Move cursor up↓/j: Move cursor downEnter: Open directory or MIDI filen: Create a new MIDI fileq: Quit application
Edit your MIDI sequence:
↑↓←→orhjkl: Navigate the sequencer gridSpace: Toggle step on/off+/-: Increase/decrease BPM (tempo)w/s: Increase/decrease MIDI note for current channelp: Play/stop (visual playback)c: Clear all steps in current channelq: Return to file browser
- main.go: Application entry point
- cmd/: Command-line interface using Cobra
- root.go: Root command definition
- manual.go: Manual mode command
- internal/tui/: TUI implementation
- model.go: Core application state and file browser implementation
- sequencer.go: MIDI sequencer logic and visualization
Generated MIDI files use:
- SMF (Standard MIDI File) format
- 16 steps per sequence
- 4 channels for different instruments/notes
- Configurable BPM (20-300)
- Note range: 0-127 (full MIDI range)
- Bubbletea - TUI framework
- Lipgloss - Style and layout
- gomidi - MIDI file handling
- Cobra - CLI framework
See LICENSE file for details.