BitXDisplayApp is a small JavaFX display app intended for a compact, fixed-size overlay. It renders three horizontal sections:
- Clip text and live selected-track harmony (left)
- Remote knobs (center)
- VU meters (right)
The UI is drawn using JavaFX Canvas for low-latency rendering and updated by
simple text messages sent over a local TCP socket.
download BitX (master extension for the displayapp) from https://personalaudio.lemonsqueezy.com/
Create a 'PerSonal' folder inside the Bitwig Studio Extensions folder and put the files in it.
- Java 25
- JavaFX 23.0.2 (OpenJFX)
- Maven
This project uses platform-specific JavaFX binaries in pom.xml (currently
mac-aarch64). If you are on another platform, update the JavaFX dependency
classifiers accordingly.
Build a shaded JAR:
mvn test packageRun with the JavaFX Maven plugin:
mvn javafx:runBuilt artifacts are placed under target/.
The app listens on localhost TCP port 9876. A persistent connection can send
multiple newline-delimited messages; legacy one-line clients also work concurrently.
PING keeps idle connections alive. Incomplete clients expire after five seconds.
There are at most eight clients and 38 state fields, with a 4096-character line limit.
Updates are validated, deduplicated and coalesced before reaching JavaFX. Changed
areas paint at most 25 times per second; the meter grid is drawn once. Minimized or
hidden windows pause the frame timer while retaining the latest incoming state.
Supported messages:
CLIP:<text>- set clip name (use|for line breaks)PLAYING_NOTES:<note names>- set current selected-track MIDI notesPLAYING_CHORD:<chord name>- set current selected-track chord namePAGE:<text>- set remote controls page nameKNOB_NAME:<index>:<text>- set a knob label (index 0-7)KNOB_VALUE:<index>:<0..1>- set knob value (0-1)VU:<index>:<0..127>- set VU meter value for track (index 0-7)MASTER_VU:<0..127>- set master VU meter valueCOLOR:<index>:<r>:<g>:<b>- set track color (0-255)MASTER_COLOR:<r>:<g>:<b>- set master track color (0-255)
icons/ contains app icon assets used by the launcher/bundling flow.
Run com.personal.DisplayServerCheck after mvn test for the headless protocol and
coalescing checks (classpath target/classes:target/test-classes).
com.personal.DisplayRenderCheck renders a representative 1512×70 fixture to
/tmp/bitx-display-redesign.png; include the shaded JAR and target/test-classes
on its classpath. The live preview can use -Dbitx.display.port=<port>.