An Android app that puts a Go.dot show in the operator's hands: GO, Doh! and PANIC with the current and next cue on every screen, and five tabs - six with Choufleur's script page.
- Cues — the cue list, its groups folded or open, and an inspector for the cue you tap: its level, sends, EQ, DCA, waits, speed, on/off switches, flag and notes, and the waveform of a sound.
- Running — everything playing now, a sound with its waveform, a wait counting down; stop, kill, advance, skip a member of a round, drag the playhead, ride a sound's trim.
- Surface — the show's control surfaces on the tablet: the faders, pads and SELECT of a D700 left in the régie or of a Mackie that did not come, the selected sound's EQ and sends on rotaries, and "This tablet", a fader for every DCA of the show.
- Mapping — the video outputs' warps and zones, adjusted while standing at the wall.
- Script — Choufleur's script page for this operator's cue list, when its address is set on the Connections tab.
- Connections — the Go.dot machines this tablet knows, which one is on screen, the main and backup of a pair, the Choufleur address and wrist buzzer, and Quit the remote.
It is a second surface, not a second screen (Go.dot PRD §3.17). It may change levels, sends, EQ, DCA trims, waits, speed, the on/off switches, flags and notes — never the shape of the cue list: no cue is created, deleted, moved, renumbered or renamed from the tablet.
The app keeps its link to each machine open in the background, with a copy of that machine's whole state, so swiping it away and back is instant, and switching between it and another app on the same tablet costs nothing.
A Go.dot that streams its state to a remote (Go.dot's namespace draft §68, "The remote"). When the machine it is pointed at is older than that, the Connections tab says so in words.
What the app and Go.dot say to each other is written down in Go.dot's repository:
docs/godot-remote-protocol-0.1.md.
On the Connections tab, Add a connection: a name, the address of the computer running Go.dot, and
its port, 5010 unless Go.dot was started with another. It is the address and port of Go.dot's
web console in a browser (http://<address>:5010/ui). The tablet and the computer must be on the
same network.
The tab also shows the tablet's own address and the name Go.dot knows it by; Go.dot lists it under Show settings > Network.
Add both machines of a pair. Both stay linked; the one on screen is the one the tabs show and GO goes to. Each machine says what it is — "Main - sending", "Backup - following" — and the Take over, Hand over and Make this the main buttons act on the machine they sit under.
From Go.dot's Show settings > Network, Find makes this tablet flash its screen and its camera's light, sound an alarm and vibrate until somebody touches it. The alarm sounds even when the tablet's alarm volume is at zero: it is turned up for the alarm and put back after. For that to work while the app is in the background:
- notifications must be on for the app;
- Android must allow the app over the lock screen, or a locked tablet only sounds and vibrates.
The Find this tablet part of the Connections tab says which of the two is missing, with a button to the Android setting, and a test that rings for three seconds.
Choufleur follows the actors through the script and
warns each operator before their cues. Its page can sit in the remote, under GO, as the Script
tab. On the Connections tab, under Script prompt (Choufleur), type the address of your cue list
as Choufleur's library screen gives it - http://<number>:8080/list/<list> - or press Scan the
code and aim at the code it draws. A host alone becomes http://<host>:8080/. If a .local
name does not load, use the number: not every network or Android setting finds those names.
The page stays loaded while you use the other tabs, so coming back to it costs nothing. The thin bar above it has Reload and Open in Chrome. The remote keeps the screen on itself, so Choufleur's warning that a plain address cannot does not apply here.
Choufleur's wrist buzzer pairs with the remote, not with the page: on the Connections tab, under Wrist buzzer, Look for buzzers (Android asks for Bluetooth the first time), then Link beside its CHF-XXXX name. The remote keeps it linked while it runs, whichever tab is on screen, sends it a heartbeat, and links it again when it comes back in range; the section says whether it is linked, looking for it or lost, its battery, and has Test and Identify. Choufleur's page in the Script tab sends its warnings through the remote - a Choufleur recent enough to know the remote; with an older one, Open in Chrome and pair it there as Choufleur explains.
The app stays linked in the background - its notification says so - until it is quit: Quit the remote at the foot of the Connections tab, or Quit on the notification. Both unlink every machine and close the app. The machines stay remembered, each with its Linked switch, so the next launch links them again.
Android Studio, or the Android SDK with platform 36. The Gradle wrapper fetches Gradle itself, and a Java 17 for its daemon when none is installed.
./gradlew test assembleDebug
runs the tests and writes the app to app/build/outputs/apk/debug/. local.properties (not in
git) names the SDK — sdk.dir=/path/to/Android/Sdk; Android Studio writes it on first open.
With the tablet in developer mode and plugged into the computer that runs Go.dot:
adb install -r app/build/outputs/apk/debug/godot-remote-0.1.3-debug.apk
adb reverse tcp:5010 tcp:5010
adb reverse makes the computer's port 5010 the tablet's own, so on the Connections tab the address
is 127.0.0.1 and the port 5010 — no network needed.
./gradlew testDebugUnitTest -Pscreenshots
draws the header and every tab — tablet and phone, upright and on its side, English and French,
locked and stale — into app/build/screenshots/, from fixtures taken from a real Go.dot. The
plain ./gradlew test leaves them out.
- Every source file starts with the GPL-3 header block and
SPDX-License-Identifier: GPL-3.0-or-later, as Go.dot's do. - Both languages in step: a key added to
app/src/main/assets/lang/en.jsonis added tofr.jsonin the same change;LanguageParityTestfails otherwise. - Numbers written to Go.dot are written in no locale's way — a decimal point, never a comma — whatever the tablet's language.
GPL-3.0-or-later; see LICENSE. Outside AndroidX and Kotlin, the app uses OkHttp and, for scanning Choufleur's code, ZXing Android Embedded (both Apache-2.0).