Files
2026-04-05 00:03:36 +02:00

139 lines
6.7 KiB
Markdown

<p align="center">
<img src="https://raw.githubusercontent.com/andremichelle/openDAW/refs/heads/main/packages/app/studio/public/favicon.svg" height="120"/>
<h1 align="center">openDIAW.be</h1>
<p align="center"><em>Fork performance de <a href="https://github.com/andremichelle/openDAW">openDAW</a> pour le projet <strong>3615 J'ai pété — KXKM</strong></em></p>
</p>
<p align="center">
<a href="https://www.gnu.org/licenses/agpl-3.0.html" rel="nofollow"><img src="https://img.shields.io/badge/license-AGPLv3-blue.svg" alt="License: AGPLv3"></a>
<a href="https://github.com/andremichelle/opendaw" rel="nofollow"><img src="https://img.shields.io/badge/upstream-openDAW-green.svg" alt="upstream"></a>
</p>
---
## Pourquoi ce fork ?
**openDIAW.be** est un fork d'[openDAW](https://github.com/andremichelle/openDAW) créé pour le spectacle de clown **3615 J'ai pété** de la compagnie KXKM. Il ajoute des instruments et des intégrations AI spécifiques à la performance live, tout en restant compatible avec l'upstream.
### Ce que le fork ajoute
| Catégorie | Ajout |
|---|---|
| **9 instruments** | Drone, Grain, Glitch, Circus, Honk, Magenta, AceStep, KokoroTTS, Piper |
| **AI Bridge** | 17 backends audio (TTS, musique IA, synthèse, séparation de stems) |
| **Intégration serveur** | Proxy API, génération audio via ffmpeg, Ollama, ACE-Step, Kokoro |
| **Branding** | openDIAW.be (Digital Instrument Audio Workstation) |
---
## Instruments DSP temps réel
Ces instruments tournent dans le browser via AudioWorklet — pas de serveur nécessaire.
| Instrument | Description | Paramètres clés |
|---|---|---|
| **Drone** | Synthé de pads/drones | Waveform, unison (1-7), detune, LP filter, LFO rate/depth, stereo |
| **Grain** | Synthèse granulaire | Position, grain size, density, pitch/pos spread + sample drop |
| **Glitch** | Générateur de textures glitch | Buffer repeat, stutter, bit crush, downsample, reverse, pitch shift |
| **Circus** | Orgue de barbarie / calliope | 4 registres (Flute 8', Flute 4', Principal, Mixture), tremolo, wobble, air |
| **Honk** | Klaxon / sirène / corne | 3 modes (Klaxon, Siren, Horn), sweep paramétrique, harmoniques |
| **Magenta** | Local algorithmic MIDI generator | Browser-side heuristic generation modes (Melody, Drums, Improv), temperature, steps |
## Instruments AI-backed
Ces instruments génèrent de l'audio via le serveur AI Bridge (`:8301`).
| Instrument | Backend | Description |
|---|---|---|
| **AceStep** | ACE-Step / AI Bridge | Génération audio par prompt, import automatique en sample, local-first puis fallback bridge |
| **KokoroTTS** | Kokoro | Synthèse vocale rapide — 12 voix (af_heart, am_adam, bf_emma...) |
| **Piper** | Piper/Chatterbox | Synthèse vocale TTS avec personas |
## AI Bridge
Le AI Bridge (`ai-bridge.js`) est un serveur Node.js qui orchestre 17 backends :
```
POST /instrument/drone — Drone synthétique (ffmpeg)
POST /instrument/grain — Granulaire (ffmpeg)
POST /instrument/glitch — Glitch (ffmpeg, acrusher, stutter)
POST /instrument/circus — Orgue de barbarie (ffmpeg)
POST /instrument/honk — Klaxon/sirène (ffmpeg)
POST /instrument/drums — Drums (ffmpeg)
POST /instrument/bass — Basse (ffmpeg)
POST /instrument/pad — Pads (ffmpeg)
POST /instrument/choir — Choeur (TTS + pitch shift)
POST /instrument/fx — Effets (riser, drop, sweep, impact, stutter)
POST /generate/music — Musique (ACE-Step → fallback MusicGen)
POST /generate/music-ai — Musique (ACE-Step direct)
POST /generate/voice — Voix (Chatterbox/Piper)
POST /generate/voice-fast — Voix rapide (Kokoro, 12 voix)
POST /generate/noise — Bruit (white/pink/brown/sine/drone)
POST /separate — Séparation de stems (Demucs)
POST /master — Mastering IA (Matchering)
```
---
## Architecture
```
┌─────────────────────────────────────────┐
│ openDIAW.be (browser) │
│ ┌──────────┐ ┌──────────┐ │
│ │ 9 instru │ │ Magenta │ │
│ │ AudioWork│ │ .js │ │
│ └──────────┘ └──────────┘ │
└──────────────┬──────────────────────────┘
│ fetch /api/v2/ai-bridge/*
┌──────────────▼──────────────────────────┐
│ 3615-KXKM API (:3333) │
│ (proxy → AI Bridge) │
└──────────────┬──────────────────────────┘
┌──────────────▼──────────────────────────┐
│ AI Bridge (:8301) │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Kokoro │ │ACE-Step│ │ Ollama │ │
│ │ :9201 │ │ :9200 │ │ :11434 │ │
│ └────────┘ └────────┘ └────────┘ │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Piper │ │ ffmpeg │ │ Demucs │ │
│ │ :9100 │ │ (local)│ │ │ │
│ └────────┘ └────────┘ └────────┘ │
└─────────────────────────────────────────┘
```
---
## Upstream
Ce fork est basé sur [openDAW](https://github.com/andremichelle/openDAW) par André Michelle, sous licence AGPL v3.
Les contributions upstream sont les bienvenues. Les instruments et l'AI Bridge sont des ajouts qui ne modifient pas le code upstream existant — ils s'ajoutent via le système de visitor/factory.
### Différences avec upstream
- **9 instruments** ajoutés (schema + box + adapter + processor + UI)
- **AI Bridge** (`ai-bridge.js`) pour la génération audio serveur
- **serve-studio.js** pour le service HTTPS local
- Branding renommé en openDIAW.be
- Workflows CI supprimés (pas pertinents pour le fork)
---
## Installation
```bash
git clone https://github.com/electron-rare/openDIAW.be.git && cd openDIAW.be
npm install
npm run build
npm run dev:studio
```
## License
[AGPL v3 (or later)](https://www.gnu.org/licenses/agpl-3.0.txt) © 2025 André Michelle
Fork par [KXKM](https://kxkm.net) / electron-rare