Metadata-Version: 2.4
Name: mixxx-analyzer
Version: 0.1.2
Summary: Audio track analyzer (BPM, Key, Gain, Intro/Outro) using Mixxx-identical algorithms
License: GPL-2.0-or-later
Keywords: audio,bpm,key,music,analysis,mixxx,dj
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Multimedia :: Sound/Audio :: Analysis
Classifier: Intended Audience :: Developers
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# mixxx-analyzer Python package

Python bindings for [mixxx-analyzer](https://github.com/Radexito/mixxx-analyzer) — a standalone
audio track analyser that uses the same BPM, key, gain and silence-detection algorithms as
[Mixxx DJ software](https://mixxx.org).

## Installation

Install the pre-built wheel for your platform from the
[GitHub Releases](https://github.com/Radexito/mixxx-analyzer/releases) page:

```bash
pip install mixxx_analyzer-*-<platform>.whl
```

The wheel is self-contained — all native dependencies (FFmpeg, libebur128, …) are bundled inside.
No system packages are required.

## Usage

```python
import mixxx_analyzer

# Analyze a single file
result = mixxx_analyzer.analyze("track.mp3")
print(result.bpm)        # 138.0
print(result.camelot)    # "7A"
print(result.lufs)       # -9.3
print(result.intro_secs) # 4.2

# Analyze many files efficiently
results = mixxx_analyzer.analyze_many(["a.mp3", "b.mp3", "c.mp3"])
for r in results:
    print(f"{r.file}: {r.bpm} BPM  {r.camelot}")
```

## AnalysisResult fields

| Field          | Type            | Description                        |
| -------------- | --------------- | ---------------------------------- |
| `file`         | `str`           | Input file path                    |
| `bpm`          | `float \| None` | Detected BPM (None if undetected)  |
| `key`          | `str`           | Musical key (e.g. `"A minor"`)     |
| `camelot`      | `str`           | Camelot wheel notation (e.g. `"7A"`) |
| `lufs`         | `float`         | Integrated loudness (LUFS)         |
| `replay_gain`  | `float`         | ReplayGain adjustment (dB)         |
| `intro_secs`   | `float`         | Intro end timestamp (seconds)      |
| `outro_secs`   | `float`         | Outro start timestamp (seconds)    |

## Supported platforms

| Platform         | Wheel tag                     |
| ---------------- | ----------------------------- |
| Linux x86\_64    | `linux_x86_64`                |
| macOS arm64      | `macosx_*_arm64`              |
| macOS x86\_64    | `macosx_*_x86_64`             |
| Windows x86\_64  | `win_amd64` *(coming soon)*   |
