Version 1.5.1
Playback Notes Sync is an Android tablet app for capturing handwritten playback notes with an S Pen. It combines a running MM:SS timer, optional MIDI Time Code (MTC) synchronization, on-device handwriting recognition, and CSV/PTX export for post-production workflows.
The interface is in English; handwritten notes and project names remain entirely user-controlled.
- Project-based note sessions stored locally on the device.
- MM:SS transport with Start, Pause, Resume, and direct time-code adjustment.
- Handwritten note cards designed for S Pen use, including stylus-button erasing.
- Department buttons on every note:
MIX,DIAL,SFX,STP,FOL,ADR, andCONC. - Notes are automatically sorted by time code.
CLONE TCcreates an adjacent empty note at the same time code. - OCR through Google ML Kit Digital Ink Recognition. The French recognition model is downloaded once (about 20 MB) and then works offline.
- Combined CSV and PTX export: a Swissknife-compatible CSV, a clipboard-ready text version, and a Pro Tools session built from the included template.
- RTP-MIDI / Apple MIDI MTC link over a standard IP network.
- Optional Android screen pinning through
SCREEN LOCK, to reduce accidental trips to the home screen during a session.
- Android 9 (API 28) or later.
- Android Studio with JDK 17 for development.
- Python 3.14 and Git available on the build machine. Android Studio uses them
once to package the
pt_apiPython dependency. - An S Pen-compatible Android tablet is recommended.
- Network access is required only for the first OCR model download and for MTC networking.
- Clone the repository and open the repository root in Android Studio.
- Let Gradle sync and install any missing Android SDK components.
- Ensure
JAVA_HOMEpoints to JDK 17. - Connect an Android device with USB debugging enabled, or select an emulator.
To produce an installable debug APK, run the Gradle Wrapper from Android Studio's terminal or any terminal opened at the repository root:
.\\gradlew.bat :app:assembleDebugThe output is app/build/outputs/apk/debug/app-debug.apk.
- Create or open a project.
- Start the timer, then tap
+ NOTEat each relevant moment. - Write with the S Pen and assign a department directly from the note card.
- Pause to adjust the master timer or an individual note time code when needed.
- Run
OCRonce the session is complete, correct any text if necessary, then use the share button from the project list.
Only unresolved notes are exported. Each unresolved note must have a department, completed OCR, and non-empty text before export is enabled.
The share action creates and shares two files with the same base name:
<project>.csv<project>.ptx
The PTX is generated from the packaged pb_notes_sync_template.ptx asset using
pt_api. Each outstanding note becomes a 2-second empty Clip Group on the
matching template track. The Clip Group name is the note text. If two notes have
the identical text, a minimal (2), (3), and so on suffix is added because
Pro Tools Clip Group names must be unique.
| App department | Template track |
|---|---|
MIX |
MIX |
DIAL |
DIAL |
SFX |
SFX |
STP |
STEPS |
FOL |
FOLEY |
ADR |
ADR |
CONC |
CONCEP |
Only tracks with exported notes remain visible. The other template department
tracks are hidden. Note positions are converted to exact SMPTE HH:MM:SS:00
boundaries with the template's own frame rate: the export does not approximate
the position by multiplying seconds by the sample rate. App times are elapsed
MM:SS; PTX positions apply the template's 10:00:00:00 start, so an app note
at 02:23 becomes a Clip Group at 10:02:23:00. The CSV retains the original
elapsed time.
Enable LINK in a project before connecting from the Mac. On macOS, create or
enable a network MIDI session in Audio MIDI Setup, then connect it to the
tablet IP address shown by the app on UDP port 5004.
LINK uses RTP-MIDI / Apple MIDI on a normal IP network. Some console Ethernet
networks are dedicated or do not pass RTP-MIDI, multicast, or UDP traffic. In
that case, connect the Mac and tablet through a separate router, switch, or
Wi-Fi network.
SCREEN LOCK ON requests Android screen pinning immediately. After Android has
accepted it, the lock stays active while playback is running or paused, so the
system does not show a confirmation on every Play/Resume action. Use the app's
back arrow to return to the project list and choose SCREEN LOCK OFF to end it.
Screen pinning is controlled by Android; its availability and exact prompt vary by device policy and Android version.
Projects are JSON files in the app's private storage. Android backup and device transfer are disabled for this app. No project content is uploaded by Playback Notes Sync.
The first OCR run downloads Google's French Digital Ink model. After the model is present, recognition runs locally on the device.
Exports are UTF-8 CSV files with CRLF line endings. The time code is emitted as
a numeric MMSS value without colons. Department mappings used by the export
are:
| App department | CSV column |
|---|---|
SFX |
FX |
CONC |
CON |
MIX, DIAL, STP, FOL, ADR |
same name |
app/src/main/
java/com/sebbedard/playbacknotes/
data/ Project persistence and models
export/ CSV/PTX generation and Android sharing
ocr/ ML Kit Digital Ink wrapper
sync/ RTP-MIDI / MTC implementation
ui/ Compose screens, note cards, drawing canvas, and theme
res/ App resources, FileProvider, and backup rules
python/ PTX export bridge executed by the embedded Python runtime
assets/ Native Pro Tools PTX template used for exports
- There is no undo/redo history yet.
- There is no pinch-to-zoom on the drawing canvas.
- Large numbers of detailed handwritten notes may be less fluid on older tablets.
- The OCR model is French-only at present.
- Kotlin 2.2.21
- Gradle 8.7 / Android Gradle Plugin 8.5.2
- Jetpack Compose / Material 3
- Android Navigation Compose
- Kotlin serialization and coroutines
- Google ML Kit Digital Ink Recognition
- Chaquopy / Python 3.14 with
pt_api1.5.1 for offline PTX generation - Minimum SDK: 28 (Android 9)
- Target SDK: 34 (Android 14)