62 lines
3.0 KiB
Markdown
62 lines
3.0 KiB
Markdown
# Application Idea
|
|
|
|
`playback` is a fullscreen TUI for playing audio files in parallel with rendering their transcription from an SRT file.
|
|
|
|
|
|
## Features
|
|
|
|
**Waveform View**
|
|
A section that renders the "timeline" which show the waveform as well as a needle showing the current location
|
|
|
|
**Transcript View**
|
|
A scrollable view that shows the contents of the SRT. As the audio is playing (or paused) at any particular location, the
|
|
relevant text from the transcript should be highlighted showing the current location. Allow for an edit mode to fix
|
|
transcriptions. With vim style interactions. If vim can be incorperated itself then eve better.
|
|
|
|
**Keyboard Navigation**
|
|
- When the waveform view is the active view, move forward and back in the audio with `left`, `right`, `h`, and `l`.
|
|
- When the transcript view is active, use vim binding to move around. Including `i` to enter interactive/edit mode.
|
|
- Use `ctrl + j` and `ctrl + k` to move between wave form and transcript mode.
|
|
|
|
**Layout**
|
|
The two views will stack vertically on top of each other, with the waveform being on top. Not too much vertical room is
|
|
needed for the waveform. The trascript section will take up the rest of the vertical space and will be scrollable.
|
|
|
|
There will be a small section at the top with the absolute path to the audio file and to the SRT file.
|
|
|
|
## Workflow
|
|
|
|
Application launched with
|
|
|
|
```bash
|
|
playback ./audioFileName -t ./transcriptFileName.srt
|
|
```
|
|
|
|
`-t` stands for transcript and it is optional. If `-t` is not provided the system will first try to find a file in the same
|
|
directory as the audio file that is also named the same except with an `srt` extension. If that is not found them the application
|
|
will launch with no transcript.
|
|
|
|
**No Transcript Mode**
|
|
The app can function perfectly fine with no transcript. The user can play, pause, rewind, fast forward, no issue. In this mode,
|
|
the application will actually create a stand in, empty transcript with a formualted name of `sameNameOfFile.srt.tmp` in the system `/tmp`
|
|
folder. The user will be able to edit this file in the editor and save it (using the vim commands when not in edit mode). If the user
|
|
saves the file and it is one of these temp files, then it will make a new file in the dir of the audio file named `sameNameOfFile.srt`
|
|
|
|
The tmp transcript will be mostly empty, other than message about no transcript was found and a temproary file was made, which they can
|
|
edit here, and what it will be saved as. Also the file will inform them about the `transcribe` tool found at
|
|
`https://git.beitzah.net/ysandler/transcribe`. It will also inform them about how to launch with a srt file is the mistakenly didn't
|
|
include it
|
|
|
|
|
|
## Configuration
|
|
- config file is found at `~/.config/playback`
|
|
|
|
|
|
## Tech stack
|
|
|
|
I want to build as much as possible in Golang.
|
|
I want to have versioning with a file called `VERSION` that just contains the version value
|
|
I want to use `make` to build
|
|
I want an install.sh script that creates a desktop registry for app launchers (only worrying about linux right now)
|
|
|