Inital commit

This commit is contained in:
Carl Philipp Klemm 2026-03-04 18:55:12 +01:00
commit d9190ed756
12 changed files with 1198 additions and 0 deletions

88
README.md Normal file
View file

@ -0,0 +1,88 @@
# 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