2Reply
An Android rehearsal app for theatrical plays. Import a fully-voiced .m4b recording and its timed script — pick your characters, and their lines go silent for you to speak while the rest of the cast answers, right on cue.
The first release — everything below is new.
The play renders like a chat: other characters on the left, your lines as "me" bubbles on the right, stage directions as system notes, scene titles as headers. The active line highlights and scrolls along with the audio.
Playback volume drops to zero exactly during your characters' lines and comes back after — the play stays on schedule while you deliver the line. Works from the lock screen with the app in the background.
Pick any number of characters from the cast list (sorted by line count). All of their lines mute and flip to your side of the chat — rehearse two parts, or practice as a duo on one device.
Two toggles: hide your lines to test memorization, or hide everyone else's to train reacting to the spoken cue. Hidden bubbles keep the name and a duration-scaled gauge, like a voice message.
Every line carries a small progress bar with its spoken duration — full for what's played, filling live on the current line. During your muted lines it doubles as a pacing guide.
Previous / next scene buttons in the app and on the media notification — the meaningful jump unit when rehearsing, not an arbitrary ±30 seconds. Tap any bubble to jump straight to that line.
See the full changelog for every detail.
Two independent toggles on the training screen change what you're practicing. Hidden lines keep the speaker's name and their timing gauge — you always know who speaks and for how long.
| Your lines | Others' lines | You're practicing |
|---|---|---|
| text shown | text shown | Reading along — the default. Follow the script, speak on cue over your muted lines. |
| text shown | hidden | Ear training — no reading ahead; catch your cue from the spoken audio alone. |
| hidden | text shown | Memorization — can you recall the line with only its name tag and timing bar? |
| hidden | hidden | Off-book run — a pure audio-and-timing pass, the closest thing to being on stage. |
The mute engine ticks against the script's timing windows with deadline-aware precision — mute edges land inside the recording's natural inter-line pauses. Your device volume is never touched; only the player's own gain.
A focused, offline rehearsal player — no accounts, no network, no tracking.
2Reply plays a pair of files produced by the LN toolchain (or anything that writes the same shape):
A fully-voiced recording of the play — every character spoken, one chapter per scene. Title and cover art are read from the file's metadata; the embedded cover becomes the library artwork.
The script with timestamps: scenes, and per entry a start/end in seconds, a
type (dialogue, staging, cue), the
speaker, the text, an acting direction, and an emotion tag. The script's
timings are the source of truth for muting, highlighting, and scene skips —
they must match the recording (import rejects pairs that differ by more
than 30 seconds of total duration).
2Reply is single-device, offline software. Here's exactly what that means.
DocumentsProvider for your .m4b and play.json files.Until the Play Store release, source is the way in. One command:
JDK 21 required. From the project root:
The debug APK lands in app/build/outputs/apk/debug/.
Install it with adb install.
2Reply shares its architecture and house style with
ln-reader — same stack, same patterns,
documented in the repo's NEW_APP_SPEC.md.