VOID Shared Memory — Infrastructure de communication temps réel

(Live, Max, TouchDesigner et autres environnements)

EN FR

VOID Shared Memory permet l’échange de données en temps réel entre Ableton Live, Max / Max for Live et TouchDesigner via une mémoire partagée locale ultra-légère et à très faible latence. Les données circulent dans les deux sens, sans MIDI, sans OSC et sans pile réseau, grâce à un accès direct à la mémoire.

Release    Downloads


DESCRIPTION

VOID Shared Memory est une infrastructure locale de communication temps réel conçue pour relier Ableton Live, Max / Max for Live et TouchDesigner à travers une mémoire partagée ultra-légère et à très faible latence.

Le système repose sur une architecture mémoire unifiée (V2) définissant un contrat strict partagé par toutes les implémentations (audio-rate, message-rate, Jitter et TouchDesigner). Ce contrat garantit un layout mémoire déterministe, un mécanisme d’invalidation sécurisé (epoch), un heartbeat temps réel (frame counter) et une communication robuste entre processus exécutés sur la même machine.

Les données sont écrites et lues directement en mémoire locale, sans OSC, sans pile réseau, sans MIDI et sans couche de transport intermédiaire. Cette approche élimine les surcouches de transport et assure une transmission stable, directe et performante, adaptée aux contextes de live, de performance audiovisuelle, d’installation ou de prototypage expérimental.

Le projet prend la forme d’un ensemble cohérent de briques techniques issues de la recherche et développement menés en interne par Structure Void, et conçues et développées par Julien Bayle, au plus près du bas niveau.

Le package inclut des devices Max for Live prêts à l’emploiVOID envFollower, VOID freqAnalysis, VOID 8params, VOID 8notes, VOID sync et VOID receiver — ainsi que des externals Max (writer / reader en audio et message rate), des objets Jitter et des opérateurs CHOP TouchDesigner, tous développés en C++ et respectant strictement le même contrat mémoire.

VOID Shared Memory n’est pas un outil fermé ou monolithique, mais un socle technique complet et modulaire, pensé comme une infrastructure directe entre systèmes — reflet d’un travail de R&D structuré et intégralement développé en interne.

ARCHITECTURE & POSITIONNEMENT

VOID Shared Memory n’est pas une simple passerelle entre applications, mais une infrastructure mémoire locale déterministe pensée pour les systèmes temps réel exigeants. Contrairement aux approches basées sur OSC, MIDI ou des protocoles réseau (UDP / TCP), le système repose sur un contrat mémoire strict partagé entre processus exécutés sur la même machine, sans couche de transport intermédiaire.

L’architecture V2 définit un header commun (magic, version, channels, length), un mécanisme d’invalidation explicite (epoch) permettant la gestion propre des changements structurels, ainsi qu’un compteur de synchronisation temps réel (frame) servant de heartbeat. Toute implémentation — Max audio-rate, message-rate, Jitter ou TouchDesigner — respecte strictement ce contrat, garantissant une cohérence totale entre lecture et écriture.

Le modèle est volontairement contraint : mémoire linéaire, layout déterministe, absence de sérialisation, absence de négociation dynamique. Ce choix privilégie la robustesse, la prédictibilité et la latence minimale plutôt que la flexibilité générique. L’objectif n’est pas de remplacer les pipelines réseau existants, mais d’offrir une alternative locale directe lorsque la stabilité, la cohérence temporelle et la maîtrise du comportement temps réel sont prioritaires.

VOID Shared Memory constitue ainsi un socle technique extensible, capable d’être intégré à d’autres environnements temps réel (VCV Rack, openFrameworks, Processing, moteurs custom, etc.) via le même contrat mémoire. L’architecture est conçue pour rester simple, explicite et reproductible, afin de garantir un comportement identique quel que soit le contexte d’intégration.

CONNECTORS

VOID SHM is protocol-first.
Les connecteurs implémentent le même contrat mémoire (Header V2) dans différents environnements.
Chaque implémentation respecte strictement la structure du header, le mécanisme d’epoch et la logique de synchronisation par frame.

Max Package (V2.x)

Inclut les externals natifs (.mxo / .mxe64) :

  • void.sm.writer (message-rate writer)
  • void.sm.writer~ (audio-rate writer)
  • void.sm.reader (message-rate reader)
  • void.sm.reader~ (audio-rate reader)
  • jit.void.sm.writer (Jitter writer)
  • jit.void.sm.reader (Jitter reader)
  • void.sm.info (inspection du header / métadonnées)
  • void.sm.state (monitoring état / connexion / epoch)

Implémentation en C / C++ natif basée sur mmap / shared memory POSIX (macOS) et équivalent Windows.
Layout mémoire déterministe, gestion explicite des changements structurels (epoch++) et invalidation contrôlée.

Plateformes :
macOS (Intel / Apple Silicon)
Windows (x64)

Distribué sous forme de Max Package.

TouchDesigner Connector (V2.x)

Inclut :

  • Custom CHOP reader
  • Compatibilité stricte Header V2
  • Reconnexion automatique sensible à l’epoch
  • Mapping de canaux déterministe
  • Lecture frame-synchronisée

Plugin C++ utilisant la même structure mémoire que le package Max, garantissant cohérence inter-applications.

Plateformes :
macOS (Intel / Apple Silicon)
Windows (x64)

Distribué sous forme de plugin TouchDesigner.

Future / Experimental Connectors
  • openFrameworks
  • VCV Rack
  • Standalone C++ applications
  • Autres environnements temps réel

Tout connecteur doit se conformer strictement au Header V2 et au contrat mémoire défini par le protocole.

DÉMOS

VOID Sync

VOID sync Max for Live Device is part of the VOID Shared Memory suite and allows Ableton Live’s temporal synchronization data to be sent to TouchDesigner — transport, phase and global timing — enabling visual or generative systems to be tightly locked to musical time, without MIDI, OSC or network-based protocols.

VOID 8notes

VOID 8notes Max for Live Device is part of the VOID Shared Memory suite and allows eight selectable MIDI notes in Ableton Live to be converted into eight independent envelope signals, which are then sent to TouchDesigner in real time without MIDI, OSC or network-based protocols. Each note generates its own envelope, with attack and release parameters controlling the temporal shape of the signal. This makes the device suitable for rhythmic envelope-driven modulation, structured event shaping and tightly synchronized audiovisual behaviors derived directly from Live’s musical material.

VOID freqAnalysis

VOID freqAnalysis Max for Live Device is part of the VOID Shared Memory suite and allows audio frequency analysis data extracted in Ableton Live to be sent to TouchDesigner in real time, enabling frequency-driven control of visual or generative systems without MIDI, OSC or network-based protocols. The device provides band-based energy analysis derived from audio signals in Live, making it suitable for audio-reactive visuals, spectral modulation and tightly coupled audiovisual behaviors across low, mid and high frequency ranges.

VOID 8params

VOID 8params Max for Live Device is part of the VOID Shared Memory suite and allows up to eight continuous parameters generated in Ableton Live to be sent to TouchDesigner in real time, enabling precise and flexible control of visual or generative systems without MIDI, OSC or network-based protocols. The device exposes eight independent control streams designed for real-time modulation, mapping and automation, making it suitable for structured parameter control, complex audiovisual mappings and tightly coupled Live–TouchDesigner workflows.

VOID envFollower

VOID envFollower Max for Live Device is part of the VOID Shared Memory suite and allows audio amplitude data extracted in Ableton Live to be sent to TouchDesigner in real time, enabling envelope-driven control of visual or generative systems without MIDI, OSC or network-based protocols. The device provides a continuous envelope signal derived from audio sources in Live, making it suitable for dynamic modulation, audio-reactive visuals and tightly coupled audiovisual behaviors.

VOID receiver

VOID receiver Max for Live Device is part of the VOID Shared Memory suite and allows arbitrary data sent from TouchDesigner to be received directly inside Ableton Live, enabling real-time control and modulation workflows without MIDI, OSC or network-based protocols. Incoming data streams can be mapped to four real-time parameters using the Max for Live Live Object Model, allowing control either through automation or modulation, and making the data immediately usable inside Live’s native parameter system.


VOUS SOUHAITEZ APPRENDRE MAX & MAX FOR LIVE ?

De nombreux apprenants de Structure Void développent leurs propres périphériques Max for Live afin de concevoir des effets audio, des séquenceurs MIDI, des outils MIDI pour Live (générateurs, transformations), des instruments, ou encore des systèmes de contrôle et de modulation génératifs au sein d’Ableton Live. Ces approches reposent sur la maîtrise de Max, de Max for Live et de l’écosystème Ableton Live, permettant de concevoir des dispositifs sur mesure, adaptés à des contextes de création, de performance ou d’installation.

Si vous souhaitez apprendre à concevoir ce type de modules, nous proposons des parcours de formation dédiés couvrant les fondamentaux comme les usages avancés de Max et Max for Live.

Vous pouvez consulter notre page formations pour plus de détails :
https://structure-void.com/formations

Et notamment les pages dédiées à Max et à Max for Live.

Note de compatibilité

VOID Shared Memory fournit des binaires universels pour les externals Max et les connecteurs TouchDesigner (Apple Silicon + Intel, macOS et Windows x64 lorsque applicable).

Cependant, en raison de limitations actuelles liées au mécanisme de freeze de Max for Live et à la gestion des architectures par l’hôte, les devices Max for Live sont officiellement pris en charge uniquement sur les systèmes Apple Silicon, avec Ableton Live exécuté nativement.

Les externals utilisés dans Max standalone, ainsi que les plugins TouchDesigner, fonctionnent normalement sur architectures Intel et Apple Silicon (ainsi que Windows x64).

Cette contrainte est strictement liée à l’hôte et ne reflète pas une limitation de l’implémentation mémoire sous-jacente. L’architecture Header V2 demeure multiplateforme et déterministe. Le support pourra évoluer en fonction des mises à jour futures des hôtes.

Julien Bayle Ableton Certified Trainer

CARACTÉRISTIQUES TECHNIQUES

  • Communication inter-applications locale entre Live, Max, TouchDesigner et autres environnements compatibles
  • Transmission bidirectionnelle de paramètres continus, enveloppes, triggers et données arbitraires
  • Accès direct à la mémoire sans OSC, sans MIDI, sans pile réseau ni sérialisation
  • Latence minimale grâce à un layout mémoire déterministe
  • Architecture unifiée (V2) avec header commun, gestion d’epoch et heartbeat temps réel
  • Implémentations C++ natives (audio-rate, message-rate, Jitter, TouchDesigner)
  • Intégration adaptée aux systèmes performatifs, installations et architectures multi-applications

CRÉDITS

Programmé par Structure Void / Julien Bayle

VOUS SOUHAITEZ APPRENDRE MAX OU MAX FOR LIVE ?