8BitBeats is a terminal-based 8-bit music generator that allows you to create, customize, and replay chiptune-style music. Generate unique, reproducible tracks using a deterministic algorithm based on your inputs. Easily manage and replay tracks via track IDs.
- Random Music Generation: Generate unique 8-bit tracks with adjustable parameters.
- TUI Interface: Intuitive terminal UI for an engaging experience.
- Customizable Inputs:
- Scale (C, C#, D, ... B)
- Style (Pop, Rock, Jazz, etc.)
- BPM (Beats Per Minute)
- Length (duration in minutes)
- Optional seed for controlled randomness
- Reproducible Tracks:
- Each track is assigned a deterministic track ID
- Regenerate the same track by providing the same inputs or track ID
- Playback Controls:
- Play, Pause, Rewind, Skip, and Fast Forward
- Load tracks by ID and resume playback
- Keyboard Shortcuts:
- Navigate UI elements with arrow keys
- [p] Play/Pause, [r] Rewind, [s] Skip, [g] Generate, [q] Quit, [?] Toggle Help
- Clone the repository:
git clone https://github.com/DerekCorniello/8BitBeats.git cd 8BitBeats - Build the project:
cargo build --release
- Run the application:
cargo run --release
- Use the arrow keys to navigate between UI elements.
- Press [g] to generate a new track, [r] to rewind, [s] to skip, [p] to play/pause.
- Enter a track ID to replay a specific song.
- Press [?] to toggle the help menu.
- All controls are visible in the TUI help panel.
- Every generated track is assigned a unique, deterministic ID based on your inputs (scale, style, bpm, length, seed).
- To replay a song, enter its track ID in the loader field and press Enter.
See Cargo.toml for a full list. Major dependencies include:
rodio(audio playback)rand(randomness)ratatui,crossterm(terminal UI)rust-music-theory(music theory)crossbeam-channel(threading)
This project is licensed under the MIT License. See LICENSE for details.
Pull requests, bug reports, and feature suggestions are welcome! Please open an issue or submit a PR on GitHub.