# Open Tabata – Offenes Trainingsplan-Format

Ein einfaches, offenes JSON-Format für Intervalttrainings (Tabata/HIIT), das von jeder App implementiert werden kann.

## Format

```json
{
  "name": "Punchfit 101",
  "rounds": 10,
  "action_seconds": 30,
  "pause_seconds": 30,
  "sounds": [
    { "event": "preparation_start", "round": 0, "url": "https://example.com/sounds/countdown.mp3" },
    { "event": "round_start", "round": 1, "url": "https://example.com/sounds/round1-start.mp3" },
    { "event": "round_end", "round": 1, "url": "https://example.com/sounds/round1-end.mp3" },
    { "event": "pause_start", "round": 1, "url": "https://example.com/sounds/pause1-start.mp3" },
    { "event": "pause_end", "round": 1, "url": "https://example.com/sounds/pause1-end.mp3" },
    { "event": "cooldown_start", "round": 0, "url": "https://example.com/sounds/cooldown.mp3" }
  ]
}
```

### Felder

| Feld | Typ | Beschreibung |
|------|-----|-------------|
| `name` | string | Name des Trainingsplans |
| `rounds` | integer | Anzahl der Runden (≥1) |
| `action_seconds` | integer | Dauer der Arbeitsphase in Sekunden (≥1) |
| `pause_seconds` | integer | Dauer der Pause in Sekunden (≥1) |
| `sounds` | array | Optionale Sound-Events (siehe unten) |

### Sound-Events

Jeder Eintrag in `sounds` hat:

| Feld | Typ | Beschreibung |
|------|-----|-------------|
| `event` | string | one of: `preparation_start`, `round_start`, `round_end`, `pause_start`, `pause_end`, `cooldown_start` |
| `round` | integer | Runden-Nummer (0 = vor Runde 1, -1 = nach letzter Runde) |
| `url` | string | URL zu einer MP3-Datei |

**Hinweis:** Wenn für eine bestimmte Runde/Event kein Sound definiert ist, kann die App einen eigenen Default abspielen oder nichts tun.

### Timeline

```
preparation_start (round=0)
  ↓ action_seconds
round_start (round=N)
  ↓ action_seconds
round_end (round=N)
  ↓ pause_seconds
pause_start (round=N)
  ↓ pause_seconds
pause_end (round=N)
  → nächste Runde oder cooldown_start (nach letzter Runde)
```

## Beispiel: Punchfit 101

```json
{
  "name": "Punchfit 101",
  "rounds": 10,
  "action_seconds": 30,
  "pause_seconds": 30,
  "sounds": [
    { "event": "preparation_start", "round": 0, "url": "https://example.com/punchfit/countdown.mp3" },
    { "event": "round_start",      "round": 1, "url": "https://example.com/punchfit/round1-go.mp3" },
    { "event": "round_end",        "round": 1, "url": "https://example.com/punchfit/round1-nice.mp3" }
  ]
}
```

## Lizenz

Dieses Format ist offen und frei nutzbar. Implementierungen in Apps sind erwünscht.
Sponsoren können Trainingpläne bereitstellen; deren Logos können in implementierenden Apps angezeigt werden.
