everything related to duct tape audio suite (dtas)
 help / color / mirror / Atom feed
8e37523b1fb764110f523686d7c25efedb2a65be blob 6223 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
 
% dtas-splitfx(1) dtas user manual

# NAME

dtas-splitfx - split audio and apply effects to all tracks

# SYNOPSIS

dtas-splitfx SPLITFX_FILE.yml [OPTIONS] [TARGETS] [ARGS...]

# DESCRIPTION

dtas-splitfx reads as YAML 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
CD audio and the make(1) build tool.

dtas-splitfx primarily uses sox(1), but it is possible to define targets
to use ecasound(1), too.

# OPTIONS

-j, \--jobs [JOBS]
:    Number of jobs to run in parallel.  If no number is specified, all
     jobs are run in parallel.

-n, \--dry-run
:    Print, but do not run the commands to be executed

-s, \--quiet, \--silent
:    Silent operation, commands are not printed as executed

-D, \--no-dither
:    Disable automatic setting of the DITHERFX env.  This also passes
    the option to sox(1) via SOX_OPTS.

# FILE FORMAT

* infile - string, the pathname of the original audio file
* env - ordered hash of environment variables to set for all commands
    env: !omap
      FX: vol +3dB stats
* comments - hash of common tags for all audio (e.g. ARTIST, ALBUM, YEAR)
    comments:
      ARTIST: John Smith
      ALBUM: Hello World
      YEAR: 2013
* track_start - integer, number to start the track count at (default: 1)
* cdda_align - boolean, enforce sector alignment for audio CDs (default: false)
* track_zpad - boolean or integer.  Zero-pad the TRACKNUMBER 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)
* tracks - array, see "TRACKS" section
* targets - hash, see "TARGETS" section
* command - used only by dtas-player(1)

# 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.

* t TIME TITLE [fade_in/fade_out=FADE_ARGS] - the start of a new track
  at TIME with TITLE.  An optional fade_in and fade_out may be specified
  for the first/last tracks.
* skip TIME - skip a segment starting at TIME.  "skip" segments are
  useful for skipping long gaps between tracks (such as flipping vinyl
  or intermission at concerts)
* stop TIME - stop the last track  This should be the last directive in
  the "tracks" array.

An example of the tracks array for a 4 track EP follows:

    tracks:
      - t  0:21    "This is the first track of an EP" fade_in='t 1'
      - 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='t 1'
      - stop 18:11

# FADES

dtas-splitfx automatically sets up fade-in/fade-out effects for sox(1)
based on track times.  These are to be used in "t" (track) directives in
the "tracks" array:

* fade_in="[TYPE] LENGTH"
* fade_out="[TYPE] LENGTH"

TYPE is optional, but LENGTH is required.  See sox(1) for a description
of the fade type.

# ENVIRONMENT

dtas-splitfx sets several default environment variables for commands to
use in targets:

* INFILE - this matches the "infile" directive in the YAML file
* INDIR - the directory INFILE belongs to, without trailing slash
* INBASE - the basename of INFILE
* TBEG - the integer sample offset where the sox(1) trim effect starts
* TLEN - the integer sample count representing the length of the trim
* TRIMFX - essential, this supplys the necessary sox(1) trim effect to
  each track. In other words, this is: "trim ${TBEG}s ${TLEN}s"
* COMMENTS - expands to --comment-file=PATH for sox(1)
* OUTFMT - sox(1) arguments for the output format (e.g. "-ts32 -c2 * -r44100")
* SUFFIX - the suffix of the output format without "." (e.g. "flac", "ogg")
* TRACKNUMBER - the track number, useful for comments and filenames
* RATEFX - rate effect and arguments for sox(1) resampling
* DITHERFX - dither effect and arguments for sox(1) dithering
* FX - any user-specified sox effects which encompases the entire file.
  (e.g. "highpass 35 vol +3dB stats")

# TARGETS

The default targets will split audio and avoid applying any effects.
They are named after common audio formats supported by sox(1):

* flac
* ogg
* mp3
* sox

If not specified, "flac" is the default target.

Additional targets supported by default.

* flac-cdda - this encodes the audio to "flac" format while being
  easily decompressible to a format suitable for being burned to audio CD.

* opusenc - encodes to 16-bit, 48000 Hz Opus format using opusenc(1).
  This uses sox(1) to dither/resample/apply effects as necessary.
  This target exists as sox (as of v14.4.1) does not currently have
  native opus encoding support.

Custom targets may easily be defined to apply effects and gain.  For
example, the following "flac24" 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:

    targets:
      flac24:
        command: sox -M
          "|sox $INFILE -c1 -p $TRIMFX remix 1v1 vol +9.5dB"
          "|sox $INFILE -c1 -p $TRIMFX remix 2v1 vol +8.5dB"
          $COMMENTS $OUTFMT
          bandYYYY-MM-DD.FOO.t0"$TRACKNUMBER.$SUFFIX"
          $RATEFX $DITHERFX stats
        format:
          type: flac
          bits: 24
          rate: 48000

For reference, the "opusenc" default target is implemented as follows:

    targets:
      opusenc:
        command: sox "$INFILE" $COMMENTS $OUTFMT -
           $TRIMFX $RATEFX $DITHERFX | opusenc --music
           --raw-bits $BITS_PER_SAMPLE
           $OPUSENC_BITRATE --raw-rate $RATE --raw-chan $CHANNELS
           --raw-endianness $ENDIAN_OPUSENC
           $OPUSENC_COMMENTS - $TRACKNUMBER.opus
        format:
          bits: 16
          rate: 48000
          type: s16
          channels: 2

# COPYRIGHT

Copyright 2013-2015 all contributors <dtas-all@nongnu.org>.\
License: GPLv3 or later <http://www.gnu.org/licenses/gpl-3.0.txt>

# SEE ALSO

sox(1), ecasound(1), flac(1), opusenc(1), dtas-player(1)
debug log:

solving 8e37523 ...
found 8e37523 in https://80x24.org/dtas.git

everything related to duct tape audio suite (dtas)

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://80x24.org/dtas-all
	git clone --mirror http://ou63pmih66umazou.onion/dtas-all

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 dtas-all dtas-all/ https://80x24.org/dtas-all \
		dtas-all@nongnu.org
	public-inbox-index dtas-all

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.audio.dtas
	nntp://ou63pmih66umazou.onion/inbox.comp.audio.dtas
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for the project(s) associated with this inbox:

	dtas.git

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git