88 lines
2.9 KiB
Markdown
88 lines
2.9 KiB
Markdown
# Music Generator GUI
|
|
|
|
A Qt-based graphical user interface for generating music using acestep.cpp.
|
|
|
|
## Features
|
|
|
|
- **Song List Management**: Add, edit, and remove songs with captions and optional lyrics
|
|
- **Playback Controls**: Play, skip, and shuffle functionality
|
|
- **Settings Tab**: Customize the JSON template for AceStep generation parameters
|
|
- **Progress Tracking**: Visual progress bar during music generation
|
|
- **Seamless Playback**: Automatically generates and plays the next song when current one finishes
|
|
|
|
## Requirements
|
|
|
|
- Qt 5 or Qt 6 (with Core, Gui, Widgets, and Multimedia modules)
|
|
- CMake 3.14+
|
|
- acestep.cpp properly built with models downloaded
|
|
|
|
## Building
|
|
|
|
### Build acestep.cpp first:
|
|
|
|
```bash
|
|
cd acestep.cpp
|
|
git submodule update --init
|
|
mkdir build && cd build
|
|
cmake .. -DGGML_BLAS=ON # or other backend options
|
|
cmake --build . --config Release -j$(nproc)
|
|
./models.sh # Download models (requires ~7.7 GB free space)
|
|
```
|
|
|
|
### Build the GUI application:
|
|
|
|
```bash
|
|
cd ..
|
|
mkdir build && cd build
|
|
cmake ..
|
|
cmake --build . --config Release -j$(nproc)
|
|
```
|
|
|
|
## Usage
|
|
|
|
1. **Add Songs**: Click "Add Song" to create new song entries with captions and optional lyrics
|
|
2. **Edit Songs**: Select a song and click "Edit Song" to modify it
|
|
3. **Remove Songs**: Select a song and click "Remove Song" to delete it
|
|
4. **Play Music**: Click "Play" to start generating and playing music from the selected song or first song in the list
|
|
5. **Skip Songs**: Click "Skip" to move to the next song immediately
|
|
6. **Shuffle Mode**: Toggle "Shuffle" to play songs in random order
|
|
7. **Settings**: Click "Settings" in the menu bar to edit the JSON template for generation parameters
|
|
|
|
## Settings (JSON Template)
|
|
|
|
The JSON template allows you to customize AceStep generation parameters:
|
|
|
|
```json
|
|
{
|
|
"inference_steps": 8,
|
|
"shift": 3.0,
|
|
"vocal_language": "en",
|
|
"lm_temperature": 0.85,
|
|
"lm_cfg_scale": 2.0,
|
|
"lm_top_p": 0.9
|
|
}
|
|
```
|
|
|
|
Available fields:
|
|
- `caption` (required, will be overridden by song entry)
|
|
- `lyrics` (optional, can be empty to let LLM generate)
|
|
- `instrumental` (boolean)
|
|
- `bpm` (integer)
|
|
- `duration` (float in seconds)
|
|
- `keyscale` (string like "C major")
|
|
- `timesignature` (string like "4/4")
|
|
- `vocal_language` (string like "en", "fr", etc.)
|
|
- `seed` (integer for reproducibility)
|
|
- `lm_temperature`, `lm_cfg_scale`, `lm_top_p`, `lm_top_k` (LM generation parameters)
|
|
- `lm_negative_prompt` (string)
|
|
- `audio_codes` (string, for advanced users)
|
|
- `inference_steps` (integer)
|
|
- `guidance_scale` (float)
|
|
- `shift` (float)
|
|
|
|
## Notes
|
|
|
|
- The first time you generate a song, it may take several minutes as the models load into memory
|
|
- Generated WAV files are created in your system's temporary directory and played immediately
|
|
- Shuffle mode uses simple random selection without replacement within a playback session
|
|
- Skip button works even during generation - it will wait for current generation to finish then play next song
|