95 lines
2.3 KiB
Markdown
95 lines
2.3 KiB
Markdown
# aucdtect_linux
|
|
|
|
Starter project for a Linux clone of `auCDtect` and `auCDtect Task Manager`, implemented in C++ with Qt Widgets plus a shared analysis core.
|
|
|
|
## Current scope
|
|
|
|
- Queue-based desktop UI for adding lossless audio files
|
|
- Built-in WAV analyzer with multi-feature CDDA/MPEG heuristic classification
|
|
- Optional external decoder for formats that must be converted to WAV first
|
|
- Parallel worker queue, detailed task view, live log, and report export
|
|
- Separate CLI executable `aucdtect` using the same engine as the GUI
|
|
|
|
## Command templates
|
|
|
|
The UI accepts an optional decoder command with placeholders:
|
|
|
|
- `{input}`: source audio file
|
|
- `{decoded}`: temporary WAV path
|
|
- `{report}`: report output path
|
|
|
|
Recommended setup:
|
|
|
|
```text
|
|
Decoder command: ffmpeg -loglevel error -y -i {input} -map 0:a:0 -vn -sn -dn -ar 44100 -ac 2 -c:a pcm_s16le {decoded}
|
|
```
|
|
|
|
If the input file is already WAV, the built-in analyzer runs directly and the decoder is skipped.
|
|
|
|
## Build
|
|
|
|
### CMake
|
|
|
|
```bash
|
|
cmake -S . -B build
|
|
cmake --build build
|
|
```
|
|
|
|
GUI binary: `build/aucdtect_linux`
|
|
|
|
CLI binary: `build/aucdtect <input.wav> [more.wav ...]`
|
|
|
|
Install into a staging prefix:
|
|
|
|
```bash
|
|
cmake --install build --prefix /tmp/aucdtect-linux
|
|
```
|
|
|
|
The install target includes the GUI binary, CLI binary, desktop launcher, and app icons.
|
|
|
|
Feature dump:
|
|
|
|
```bash
|
|
build/aucdtect --dump-features /path/to/file.wav
|
|
```
|
|
|
|
Dataset evaluation:
|
|
|
|
```bash
|
|
tools/eval_dataset.sh samples dataset_eval.csv
|
|
```
|
|
|
|
### Arch Linux package
|
|
|
|
The repository includes a VCS `PKGBUILD`:
|
|
|
|
```bash
|
|
makepkg -si
|
|
```
|
|
|
|
Recommended sample layout:
|
|
|
|
```text
|
|
samples/
|
|
cdda/
|
|
album1-track01.flac
|
|
album1-track02.flac
|
|
mp3_to_flac/
|
|
aac_to_flac/
|
|
uncertain/
|
|
```
|
|
|
|
### Direct Qt5 build
|
|
|
|
```bash
|
|
g++ -std=c++20 -fPIC src/main.cpp src/MainWindow.cpp src/AudioAnalyzer.cpp -o aucdtect_linux $(pkg-config --cflags --libs Qt5Widgets Qt5Concurrent)
|
|
g++ -std=c++20 -fPIC src/cli_main.cpp src/AudioAnalyzer.cpp -o aucdtect $(pkg-config --cflags --libs Qt5Core)
|
|
```
|
|
|
|
## Next steps
|
|
|
|
- Calibrate the spectral model against known genuine-CDDA and transcode samples
|
|
- Replicate the original Windows layout and task detail panes even more faithfully
|
|
- Replace the temporary decoder bridge with native format readers
|
|
- Add cancelation that can terminate active decoder subprocesses immediately
|