dhall-ffmpeg
Dhall prelude for ffmpeg command line arguments.
Example
let Ffmpeg = https://gitlab.homotopic.tech/dhall/ffmpeg/-/raw/master/package.dhall
let Prelude = https://prelude.dhall-lang.org/package.dhall
let Filter = Ffmpeg.Filter
let myCompressor = Filter.ACompressor::{=}
let mySubcut = Filter.ASubcut::{cutoff=50.0}
let myMacro = [Filter.Type.acompressor myCompressor, Filter.Type.asubcut mySubcut]
let xs = Prelude.Natural.enumerate 29
let myFiles = Prelude.List.map Natural Text (\(x : Natural) -> "MyFile ${Prelude.Natural.show x}.mp3") xs
let myBatch = Prelude.List.map Text Ffmpeg.Top.Type (\(x : Text) -> { input = x, output = "tmp/${x}", audiofilter = myMacro }) myFiles
in Prelude.Text.concatSep "\n" (Prelude.List.map Ffmpeg.Top.Type Text Ffmpeg.Top.toText myBatch)
will produce
ffmpeg -i MyFile 0.mp3 -filter:a acompressor=attack=1.0:detection=peak:knee=2.82843:level_in=1.0:link=average:makeup=1.0:mix=1.0:mode=downward:ratio=2.0:release=250.0:threshold=0.125,asubcut=cutoff=50.0:level=1.0:order=10.0 tmp/MyFile 0.mp3
ffmpeg -i MyFile 1.mp3 -filter:a acompressor=attack=1.0:detection=peak:knee=2.82843:level_in=1.0:link=average:makeup=1.0:mix=1.0:mode=downward:ratio=2.0:release=250.0:threshold=0.125,asubcut=cutoff=50.0:level=1.0:order=10.0 tmp/MyFile 1.mp3
ffmpeg -i MyFile 2.mp3 -filter:a acompressor=attack=1.0:detection=peak:knee=2.82843:level_in=1.0:link=average:makeup=1.0:mix=1.0:mode=downward:ratio=2.0:release=250.0:threshold=0.125,asubcut=cutoff=50.0:level=1.0:order=10.0 tmp/MyFile 2.mp3
...