init commit

This commit is contained in:
2026-01-25 17:13:15 -06:00
commit 1bbfc332d8
27 changed files with 2462 additions and 0 deletions

61
IDEA.MD Normal file
View File

@@ -0,0 +1,61 @@
# 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)