.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "DTAS-SPLITFX 1" .TH DTAS-SPLITFX 1 "1994-10-02" "dtas 0.14.2.13.g9152" "dtas user manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" dtas\-splitfx \- split audio and apply effects to all tracks .SH "SYNOPSIS" .IX Header "SYNOPSIS" dtas-splitfx \s-1SPLITFX_FILE\s0.yml [\s-1OPTIONS\s0] [\s-1TARGETS\s0] [\s-1ARGS...\s0] .SH "DESCRIPTION" .IX Header "DESCRIPTION" dtas-splitfx reads as \s-1YAML\s0 file and can apply effects (including resampling/dither), split, tag, and encode files in parallel. dtas-splitfx is intended for splitting recordings from vinyl and live concerts into separate files. dtas-splitfx is inspired by cuesheets for \&\s-1CD\s0 audio and the \fImake\fR\|(1) build tool. .PP dtas-splitfx primarily uses \fIsox\fR\|(1), but it is possible to define targets to use \fIecasound\fR\|(1), too. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\-j, \-\-jobs [\s-1JOBS\s0]" 4 .IX Item "-j, --jobs [JOBS]" Number of jobs to run in parallel. If no number is specified, all jobs are run in parallel. .IP "\-n, \-\-dry\-run" 4 .IX Item "-n, --dry-run" Print, but do not run the commands to be executed .IP "\-s, \-\-quiet, \-\-silent" 4 .IX Item "-s, --quiet, --silent" Silent operation, commands are not printed as executed .IP "\-D, \-\-no\-dither" 4 .IX Item "-D, --no-dither" Disable automatic setting of the \s-1DITHERFX\s0 env. This also passes the option to \fIsox\fR\|(1) via \s-1SOX_OPTS.\s0 .IP "\-O, \-\-outdir \s-1OUTDIR\s0" 4 .IX Item "-O, --outdir OUTDIR" Set output directory instead of current directory. User-created targets must allow a placeholder for the (by default, an empty string) \f(CW$OUTDIR\fR environment variable in the output command. .IP "\-C, \-\-compression \s-1FACTOR\s0" 4 .IX Item "-C, --compression FACTOR" Set the compression factor passed to \fIsox\fR\|(1). See \fIsoxformat\fR\|(7) for more information on how it works across different formats. .IP "\-r, \-\-rate \s-1RATE\s0" 4 .IX Item "-r, --rate RATE" Override the output sample rate in the specified \s-1TARGET\s0 .IP "\-b, \-\-bits \s-1BITS\s0" 4 .IX Item "-b, --bits BITS" Override the output bit depth in the specified \s-1TARGET\s0 .IP "\-t, \-\-trim \s-1POSITION\s0" 4 .IX Item "-t, --trim POSITION" Passes a \s-1POSITION\s0 argument to the sox \*(L"trim\*(R" effect to allow limiting output to only process a portion of the original. This bypasses the \*(L"tracks\*(R" section and of the \s-1YAML\s0 file and outputs the result as a single file with the \s-1TRACKNUMBER\s0 of \*(L"000\*(R". For ease-of-typing, commas in this command-line argument are automatically expanded to spaces when passed to sox. .IP "\-p, \-\-sox\-pipe" 4 .IX Item "-p, --sox-pipe" Used in place of an output target to specify outputting audio data in the native \*(L"sox\*(R" format to another \fIsox\fR\|(1) or \fIplay\fR\|(1) command. This moves printing of output to stderr and disables parallel job invocation. .SH "FILE FORMAT" .IX Header "FILE FORMAT" .IP "infile \- string, the pathname of the original audio file" 4 .IX Item "infile - string, the pathname of the original audio file" .PD 0 .IP "env \- ordered hash of environment variables to set for all commands" 4 .IX Item "env - ordered hash of environment variables to set for all commands" .PD .Vb 2 \& env: !omap \& FX: gain 3 stats .Ve .IP "comments \- hash of common tags for all audio (e.g. \s-1ARTIST, ALBUM, YEAR\s0)" 4 .IX Item "comments - hash of common tags for all audio (e.g. ARTIST, ALBUM, YEAR)" .Vb 4 \& comments: \& ARTIST: John Smith \& ALBUM: Hello World \& YEAR: 2013 .Ve .IP "track_start \- integer, number to start the track count at" 4 .IX Item "track_start - integer, number to start the track count at" default: 1 .IP "cdda_align \- boolean, enforce sector alignment for audio CDs" 4 .IX Item "cdda_align - boolean, enforce sector alignment for audio CDs" default: false .IP "track_zpad \- boolean or integer" 4 .IX Item "track_zpad - boolean or integer" Zero-pad the \s-1TRACKNUMBER\s0 in metadata and filenames. If an integer, this creates a fixed padding even if the padding is not necessary. If true, this only pads as needed for the highest-numbered track. Default: true .ie n .IP "tracks \- array, see ""\s-1TRACKS""\s0 section" 4 .el .IP "tracks \- array, see ``\s-1TRACKS''\s0 section" 4 .IX Item "tracks - array, see TRACKS section" .PD 0 .ie n .IP "targets \- hash, see ""\s-1TARGETS""\s0 section" 4 .el .IP "targets \- hash, see ``\s-1TARGETS''\s0 section" 4 .IX Item "targets - hash, see TARGETS section" .IP "command \- used only by \fIdtas\-player\fR\|(1)" 4 .IX Item "command - used only by dtas-player" .PD .SH "TRACKS" .IX Header "TRACKS" Tracks may be defined by a start time, with the stop time defined automatically by the start of the next track, stop time, or a skip segment. .IP "t \s-1TIME TITLE\s0 [fade_in/fade_out=FADE_ARGS]" 4 .IX Item "t TIME TITLE [fade_in/fade_out=FADE_ARGS]" The start of a new track at \s-1TIME\s0 with \s-1TITLE. \s0 An optional fade_in and fade_out may be specified for the first/last tracks. .IP "skip \s-1TIME \-\s0 skip a segment starting at \s-1TIME\s0" 4 .IX Item "skip TIME - skip a segment starting at TIME" \&\*(L"skip\*(R" segments are useful for skipping long gaps between tracks (such as flipping vinyl or intermission at concerts) .IP "stop \s-1TIME \-\s0 stop the last track" 4 .IX Item "stop TIME - stop the last track" This should be the last directive in the \*(L"tracks\*(R" array. .PP An example of the tracks array for a 4 track \s-1EP\s0 follows: .PP .Vb 7 \& tracks: \& \- t 0:21 "This is the first track of an EP" fade_in=\*(Aqt 1\*(Aq \& \- t 7:11.6 "Second track of side A of an EP" \& \- skip 9:18 # this is where I flip the record, comments are allowed \& \- t 9:41 "3rd track of an EP" \& \- t 13:36.5 "Final track of the EP" fade_out=\*(Aqt 1\*(Aq \& \- stop 18:11 .Ve .SH "FADES" .IX Header "FADES" dtas-splitfx automatically sets up fade\-in/fade\-out effects for \fIsox\fR\|(1) based on track times. These are to be used in \*(L"t\*(R" (track) directives in the \*(L"tracks\*(R" array: .ie n .IP "fade_in=""[\s-1TYPE\s0] \s-1LENGTH""\s0" 4 .el .IP "fade_in=``[\s-1TYPE\s0] \s-1LENGTH''\s0" 4 .IX Item "fade_in=[TYPE] LENGTH" .PD 0 .ie n .IP "fade_out=""[\s-1TYPE\s0] \s-1LENGTH""\s0" 4 .el .IP "fade_out=``[\s-1TYPE\s0] \s-1LENGTH''\s0" 4 .IX Item "fade_out=[TYPE] LENGTH" .PD .PP \&\s-1TYPE\s0 is optional, but \s-1LENGTH\s0 is required. See \fIsox\fR\|(1) for a description of the fade type. .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" dtas-splitfx sets several default environment variables for commands to use in targets: .ie n .IP "\s-1INFILE \-\s0 this matches the ""infile"" directive in the \s-1YAML\s0 file" 4 .el .IP "\s-1INFILE \-\s0 this matches the ``infile'' directive in the \s-1YAML\s0 file" 4 .IX Item "INFILE - this matches the infile directive in the YAML file" .PD 0 .IP "\s-1INDIR \-\s0 the directory \s-1INFILE\s0 belongs to, without trailing slash" 4 .IX Item "INDIR - the directory INFILE belongs to, without trailing slash" .IP "\s-1INBASE \-\s0 the basename of \s-1INFILE\s0" 4 .IX Item "INBASE - the basename of INFILE" .IP "\s-1TBEG \-\s0 the integer sample offset where the \fIsox\fR\|(1) trim effect starts" 4 .IX Item "TBEG - the integer sample offset where the sox trim effect starts" .IP "\s-1TLEN \-\s0 the integer sample count representing the length of the trim" 4 .IX Item "TLEN - the integer sample count representing the length of the trim" .IP "\s-1TRIMFX \-\s0 essential" 4 .IX Item "TRIMFX - essential" .PD Supplies the necessary \fIsox\fR\|(1) trim effect to each track. In other words, this is: \*(L"trim ${\s-1TBEG\s0}s ${\s-1TLEN\s0}s\*(R" .IP "\s-1COMMENTS \-\s0 expands to \-\-comment\-file=PATH for \fIsox\fR\|(1)" 4 .IX Item "COMMENTS - expands to --comment-file=PATH for sox" .PD 0 .IP "\s-1OUTDIR \-\s0 placeholder for \-\-outdir, defaults to an empty string" 4 .IX Item "OUTDIR - placeholder for --outdir, defaults to an empty string" .ie n .IP "\s-1SUFFIX \-\s0 the suffix of the output format without ""."" (e.g. ""flac"", ""ogg"")" 4 .el .IP "\s-1SUFFIX \-\s0 the suffix of the output format without ``.'' (e.g. ``flac'', ``ogg'')" 4 .IX Item "SUFFIX - the suffix of the output format without . (e.g. flac, ogg)" .IP "\s-1TRACKNUMBER \-\s0 the track number, useful for comments and filenames" 4 .IX Item "TRACKNUMBER - the track number, useful for comments and filenames" .IP "\s-1RATEFX \-\s0 rate effect and arguments for \fIsox\fR\|(1) resampling" 4 .IX Item "RATEFX - rate effect and arguments for sox resampling" .IP "\s-1DITHERFX \-\s0 dither effect and arguments for \fIsox\fR\|(1) dithering" 4 .IX Item "DITHERFX - dither effect and arguments for sox dithering" .IP "\s-1FX \-\s0 any user-specified sox effects which encompases the entire file." 4 .IX Item "FX - any user-specified sox effects which encompases the entire file." .PD (e.g. \*(L"highpass 35 gain 3 stats\*(R") .SH "TARGETS" .IX Header "TARGETS" The default targets will split audio and avoid applying any effects. They are named after common audio formats supported by \fIsox\fR\|(1): .IP "flac" 4 .IX Item "flac" .PD 0 .IP "ogg" 4 .IX Item "ogg" .IP "mp3" 4 .IX Item "mp3" .IP "sox" 4 .IX Item "sox" .PD .PP If not specified, \*(L"flac\*(R" is the default target. .PP Additional targets supported by default. .IP "flac-cdda" 4 .IX Item "flac-cdda" This encodes the audio to \*(L"flac\*(R" format while being easily decompressible to a format suitable for being burned to audio \s-1CD.\s0 .PP Custom targets may easily be defined to apply effects and gain. For example, the following \*(L"flac24\*(R" target raises the volume of the left channel by 9.5dB and the right one by 8.5dB to compensate for channel imbalance in a live concert recording from the audience: .PP .Vb 12 \& targets: \& flac24: \& command: sox \-M \& "|sox $INFILE \-c1 \-p $TRIMFX remix 1v1 gain 9.5" \& "|sox $INFILE \-c1 \-p $TRIMFX remix 2v1 gain 8.5" \& $COMMENTS $OUTFMT \& ${OUTDIR}bandYYYY\-MM\-DD.FOO.t0"$TRACKNUMBER.$SUFFIX" \& $RATEFX $DITHERFX stats \& format: \& type: flac \& bits: 24 \& rate: 48000 .Ve .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2013\-2016 all contributors .PP License: \s-1GPL\-3.0+ \s0 .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIsox\fR\|(1), \fIecasound\fR\|(1), \fIflac\fR\|(1), \fIdtas\-player\fR\|(1)