REAC Exposed Audio Communications · EtherType 0x8819

Connecta una caixa d'escenari (stagebox) REAC de Roland a Linux, i ja està a punt.

REAC és el protocol propietari que fan servir les taules de mescles digitals de Roland per portar molts canals d'àudio a les seves caixes per un sol cable Ethernet. FreeREAC n'ha fet l'enginyeria inversa de debò — no una detecció parcial, sinó una implementació que funciona — i ho ha demostrat en taules i caixes reals: una M-200 fent anar REAC a 44,1 i 48 kHz, una M-5000 a 96 kHz, i caixes S-1608, S-4000S i S-0808 a l'altre extrem. Endolla una caixa a una màquina Linux i apareix al graf d'àudio: els tres ritmes de REAC (44,1/48/96 kHz), el control del preamplificador — guany, alimentació fantasma, atenuador (pad) — transmès pel cable, els papers de mestre i esclau, i segments troncals VLAN etiquetats.

La pila

Tres peces.

libreacGPL-3.0-or-later

El protocol, i el seu transport — un repositori, dues biblioteques

libreac és qui defineix què signifiquen els bytes: el còdec de trames REAC, el bloc de control de 32 bytes i les seves sumes de verificació, els registres de preamplificador (guany, alimentació fantasma, atenuador), la identitat de la caixa, i les màquines d'estats d'establiment mestre/esclau. No toca cap socket ni cap rellotge.

libreac-transport, construït des del mateix repositori, no té cap opinió sobre què significa una trama: sockets AF_PACKET, el ritmador (pacer) de temps real que marca el ritme del cable, i la gestió de subinterfícies VLAN en un port troncal.

github.com/FreeREAC/libreac
reac-pwGPL-3.0-or-later

El punt final de PipeWire

Un client natiu de PipeWire que posa una caixa d'escenari REAC directament al graf d'àudio de Linux com a nodes d'origen (source) i de destinació (sink) — sense pont, sense una segona encapsulació. Enllaça amb libreac-transport per al cable i amb libreac per sota per al significat de les trames, en lloc de reimplementar cap dels dos.

Pot funcionar com a mestre REAC, fent anar la caixa d'escenari directament, o com a esclau, incorporant-se al segment d'un altre mestre com si fos una caixa.

github.com/FreeREAC/reac-pw
reac-stageboxesGPL-3.0-or-later

L'aplicació d'escriptori per als preamplificadors

Una aplicació GTK4/libadwaita que llista cada segment REAC del graf de PipeWire i estableix l'alimentació fantasma, l'atenuador (pad) i la sensibilitat de cada entrada escrivint els paràmetres propis del node de reac-pw — no cal res més que reac-pw.

github.com/FreeREAC/reac-stageboxes

Les capçaleres públiques de libreac-transport no porten cap tipus de socket en cap signatura de crida: tot objecte de transport arriba al sistema operatiu a través d'un únic identificador opac (include/reac/transport/reac_handle.h). Cap consumidor veu AF_PACKET en la signatura d'una funció, de manera que un backend diferent — un mòdul del nucli de Linux, per exemple — es pot col·locar sota les mateixes capçaleres sense que cap client hagi de canviar. L'espai de noms ja hi és net.

Instal·lació

Un repositori dnf signat, per a Fedora 44.

sudo dnf config-manager addrepo --from-repofile=https://freereac.github.io/rpm/freereac.repo
sudo rpm --import https://freereac.github.io/rpm/RPM-GPG-KEY-freereac
sudo dnf install reac-pw

Tots els paquets i les metadades del repositori estan signats amb GPG, i `dnf` verifica totes dues coses. `libreac` i `reac-pw` s'instal·len sols per al transport REAC; el mateix repositori també porta la consola openmixer (`sudo dnf install openmixer-full` per a la consola més el transport REAC, o `openmixer` només per a la consola).

Compilació des del codi font

Cada repositori es compila de manera independent. `libreac` té un Makefile escrit a mà (`make && make test`); `reac-pw` fa servir Meson (`meson setup build && ninja -C build && meson test -C build`) i necessita `pipewire-devel`, `libreac-devel` i `libreac-transport-devel` a les versions que indica el seu `meson.build`. Cada README té les ordres exactes.

Primers passos

Una caixa d'escenari Roland REAC a Linux.

  1. 1. Instal·la `libreac` i `reac-pw` (a dalt), i connecta la caixa d'escenari a una interfície de xarxa que la màquina Linux pugui veure — un enllaç directe, o un port al mateix segment VLAN que la caixa.
  2. 2. Executa reac-pw sense arguments. Escolta totes les interfícies connectades; un segment amb una caixa i sense mestre es pren com a mestre després d'una cerca curta i la caixa queda concedida, i un segment ja governat per una taula real s'hi incorpora com a esclau. No cal configurar res perquè una caixa aparegui.
  3. 3. Els canals de la caixa d'escenari apareixen com a nodes de PipeWire — un origen `reac:capture` per a les seves entrades, una destinació `reac:playback` per a tot el que hagi de treure — connectables amb `pw-link`, `qpwgraph`, o qualsevol aplicació compatible amb PipeWire, igual que una targeta de so.
  4. 4. El binari empaquetat s'executa sense root: l'RPM estableix les capacitats de fitxer que `reac-pw` necessita (`cap_net_raw`, `cap_net_admin`, `cap_sys_nice`).

Executar-ho com a servei

El paquet `reac-pw` només instal·la el binari, no una unitat de systemd. La consola openmixer gestiona `reac-pw` per tu, engegat i configurat des de la seva pròpia pàgina Setup → Adapters, i és la manera més senzilla de mantenir un segment en servei entre reinicis. Per executar `reac-pw` tot sol sense openmixer: engega'l a mà, o instal·la packaging/reac-pw.service del repositori `reac-pw` com a unitat d'usuari (`systemctl --user enable --now reac-pw`).

Llicència

GPL-3.0-or-later, a tots els repositoris.

Tot el codi de FreeREAC és GPL-3.0-or-later. Quan un fitxer deriva de la feina d'algú altre, els fitxers derivats porten el copyright d'aquest autor, i el fitxer `NOTICE` de cada repositori té l'atribució completa fitxer per fitxer.

FreeREAC és un projecte independent d'interoperabilitat, no afiliat amb Roland, ni patrocinat ni avalat per Roland. REAC és una marca registrada de Roland Corporation, emprada aquí només per identificar el protocol. No es redistribueix cap firmware, binari, símbol ni llistat de descompilació de Roland; tot el que es publica és una reexpressió pròpia de FreeREAC del comportament observat en el seu propi equipament.

Repositoris

On viu el codi.

libreac — el protocol i el seu transport, libreac-transport, construït des del mateix repositori. reac-pw — el punt final de PipeWire. reac-stageboxes — l'aplicació d'escriptori per als preamplificadors. reac-protocol — la referència del format de trama (wire format), en prosa més una gramàtica Kaitai Struct verificable per màquina: la font de veritat amb què es verifica cada repositori anterior.

També a l'organització
reac-tools — anàlisi de captures: pèrdua, reordenació, jitter, i un analitzador de registres de preamplificador. reac-captures — un corpus CC0 de domini públic de captures amb les adreces sanejades; el corpus complet porta adreces reals de maquinari i es manté privat.

Tot el codi de FreeREAC viu a github.com/FreeREAC. Les incidències (issues) i les propostes de canvi (pull requests) estan obertes a qualsevol d'ells.

FreeREAC

Documentació i eines obertes per a REAC, el protocol d'àudio sobre Ethernet que fan servir les taules de mescles digitals de Roland i les seves caixes d'escenari.

En aquesta pàgina

Llicència

El codi és GPL-3.0-or-later. La documentació és una reexpressió pròpia de FreeREAC del comportament observat del protocol.

github.com/FreeREAC

No-afiliació

FreeREAC és un projecte independent d'interoperabilitat. No està afiliat amb Roland, ni patrocinat ni avalat per Roland. REAC és una marca registrada de Roland Corporation, emprada aquí només per identificar el protocol amb què interopera aquest projecte.

L'enginyeria inversa per a la interoperabilitat és permesa, i les interfícies de protocol no són susceptibles de copyright. FreeREAC publica les seves pròpies troballes, reexpressades amb les seves pròpies paraules i taules, derivades de les seves pròpies captures de paquets en equipament propi i de feina de codi obert amb llicència GPL. No redistribueix cap firmware, binari, símbol ni llistat de descompilació del fabricant. Això no és documentació oficial de Roland. (No és assessorament legal.)