# Audio-Element

## 1. Struktur

```ts
interface AudioClip extends BaseClip {
  type: "audio";
  src: string | { $ref: string };
  source?: MediaSource;
  volume?: number;
  loop?: boolean;
  playbackRate?: number;
  fadeIn?: number;
  fadeOut?: number;
}
```

## 2. Unterstützte Felder

### `src`
- Typ: `string | { $ref: string }`
- Erforderlich: ja

### `source.start`
- Typ: `number`
- Erforderlich: nein
- Einheit: Sekunden

### `source.end`
- Typ: `number`
- Erforderlich: nein
- Einheit: Sekunden

### `volume`
- Typ: `number`
- Erforderlich: nein
- Standard: `1`

### `loop`
- Typ: `boolean`
- Erforderlich: nein
- Standard: `false`

### `playbackRate`
- Typ: `number`
- Erforderlich: nein
- Standard: `1`

### `fadeIn`
- Typ: `number`
- Erforderlich: nein
- Einheit: Sekunden

### `fadeOut`
- Typ: `number`
- Erforderlich: nein
- Einheit: Sekunden

## 3. Aktuelles Runtime-Verhalten

- `source.start` funktioniert
- `source.end` funktioniert
- `fadeIn` und `fadeOut` funktionieren
- `loop` funktioniert
- Visuelle `transition` gilt nicht für Audioclips

## 4. Beispiel

```json
{
  "type": "audio",
  "start": 0,
  "duration": 10,
  "src": { "$ref": "bgm-main" },
  "volume": 0.6,
  "fadeIn": 1.2,
  "fadeOut": 1.5,
  "loop": true
}
```