139 lines
6.7 KiB
Markdown
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
|