Je ne me souviens que d'un mur immense
Mais nous étions ensemble
Ensemble, nous l'avons franchiI only remember an immense wall
But we were together
Together we surmounted itEnsemble by Jean-Jacques Goldman
Obtuse audio plugin frameworks and specious realtime constraints present an immense wall to music production in high-level languages. This project aims to surmount them.
Short term goals are to support MIDI sequencing of CLAP instruments, with both offline and realtime rendering. Longer term goals are to develop higher level languages to support intelligent playback like NotePerformer. See this vi-control post for an explanation why MIDI alone is inadequate.
- sequencer
- CLAP plugin host (via clap-hs)
- VST plugin host
- audio I/O (via portaudio)
- MIDI device routing
See ensemble.tl for a Type Language specification of the API.
To run a WebSocket server:
./ensemble --interface websocket --port 3000
The WebSocket endpoint will be available at localhost:<port>
. Note that all calls are asynchronous, so messages need to be tagged using the @extra
field in order to route them back to their senders.
Example request and response payloads:
{ "@type": "getAudioDevices", "@extra": 855818240 }
{ "@type":"AudioDevices", "@extra": 855818240, "audioDevices": [ { "name": "Microsoft Sound Mapper - Input", "index": 0}, { "name": "Speakers (Realtek (R) Audio)","index": 1 } ] }
- unix
- windows