https://github.com/brettbuddin/grift
Stitch WAV files into a chaptered MP3 file using ffmpeg.
https://github.com/brettbuddin/grift
audio chapters ffmpeg hcl mp3 podcast wav
Last synced: about 1 month ago
JSON representation
Stitch WAV files into a chaptered MP3 file using ffmpeg.
- Host: GitHub
- URL: https://github.com/brettbuddin/grift
- Owner: brettbuddin
- License: apache-2.0
- Created: 2021-04-01T02:01:39.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2022-03-20T22:26:34.000Z (about 4 years ago)
- Last Synced: 2025-10-29T13:54:26.640Z (8 months ago)
- Topics: audio, chapters, ffmpeg, hcl, mp3, podcast, wav
- Language: Go
- Homepage: https://phonogrifter.buddin.org.
- Size: 29.3 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# grift
`grift` composites WAV files into a chaptered MP3 file.
The program is used to build episodes of my podcast: [Phonogrifter](https://phonogrifter.buddin.org).
## Installation
```
go get github.com/brettbuddin/grift
```
## Usage
Create a directory for your podcast episode and create an `episode.hcl` file
inside of it that looks like this:
```hcl
title = "Weird Sounds"
album = "Phonogrifter"
authors = ["Brett Buddin"]
// (Optional) Sample Rate for the output. Default is 44100.
samplerate = 48000
// (Optional) Bit Rate (constant) for the output. Default is 128.
bitrate = 256
// (Optional) Separator between parts of the episode. This file will be played
// each time a chapter begins. Path can be relative or absolute.
marker = "beep.wav"
// Chapter of the episode. The label is a path to the WAV file. Path can be
// relative or absolute.
chapter "ZOOM0012_TrLR.WAV" {
// Title of the chapter.
title = "Chapter 1"
}
chapter "ZOOM0013_TrLR.WAV" {
title = "Chapter 2"
// (Optional) Gain to be applied to this chapter in dB.
gain = -2
// (Optional) Start position in seconds
start = 3
// (Optional) Stop position in seconds
stop = 8
}
// (Optional) Normalization options. Search the internet for recommendations for
// these values. No normalization will be applied if this block is not
// specified. Normalization is applied using a two passes before MP3 compression
// is applied.
normalize {
// Integrated loudness target (in LUFS)
loudness_target = -24
// Loudness range target (in dB)
loudness_range = 7
// Maximum True Peak (in dB)
true_peak = -2
}
```
Move (`cd`) into this episode's directory and run `grift` to render the episode.
By default, a file called `output.mp3` will be produced in the current
directory.