dtas 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Documentation/dtas-env.txt +1 -1
 - data/Documentation/dtas-player_effects.txt +3 -3
 - data/Documentation/dtas-splitfx.txt +23 -7
 - data/GIT-VERSION-GEN +1 -1
 - data/Rakefile +1 -1
 - data/bin/dtas-splitfx +4 -0
 - data/examples/splitfx.sample.yml +1 -1
 - data/examples/tfx.sample.yml +2 -2
 - data/lib/dtas/rg_state.rb +7 -5
 - data/lib/dtas/splitfx.rb +21 -4
 - data/lib/dtas/tracklist.rb +3 -2
 - data/test/test_rg_integration.rb +6 -4
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 469ec379619540656d9a2decafe6eea0a53d963c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 7893b222746613c3365c1ea7a2b98276708a1ad5
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 762b5e63dadda1b2c6128103a7899b6d981f52b025ebeb967139d9a6253bca433fcd8b96a3d066eb73aebcc4362ba289d2a88fa882f8fdbaefd66a231ceef59d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 278c853d6f5bb6116bf8d9c6516c2a6412d72ce2036d77fe9d6abc19b088208af78b1027f5949b1625d8d6e846235a3477c28fa9c59ad94de28437ba20032962
         
     | 
    
        data/Documentation/dtas-env.txt
    CHANGED
    
    | 
         @@ -24,7 +24,7 @@ INFILE - the primary input file for playback or processing. 
     | 
|
| 
       24 
24 
     | 
    
         
             
            (e.g. "/path/to/ex.flac")
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
            RGFX - the sox effect used for applying ReplayGain compensation.
         
     | 
| 
       27 
     | 
    
         
            -
            Only used during playback in dtas-player.  (e.g. " 
     | 
| 
      
 27 
     | 
    
         
            +
            Only used during playback in dtas-player.  (e.g. "gain -6.0").
         
     | 
| 
       28 
28 
     | 
    
         
             
            Removing this prevents ReplayGain from working and may damage
         
     | 
| 
       29 
29 
     | 
    
         
             
            playback equipment with loudly mastered music.
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
         @@ -7,9 +7,9 @@ They are applied in the order described. 
     | 
|
| 
       7 
7 
     | 
    
         
             
              rely on inter-track information.
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
              Examples include:
         
     | 
| 
       10 
     | 
    
         
            -
              - ReplayGain (simple  
     | 
| 
      
 10 
     | 
    
         
            +
              - ReplayGain (simple gain changes)
         
     | 
| 
       11 
11 
     | 
    
         
             
              - anything which does not change the length of the audio:
         
     | 
| 
       12 
     | 
    
         
            -
                 
     | 
| 
      
 12 
     | 
    
         
            +
                gain, stereo, highpass, lowpass, loudness, bass, treble, equalizer, ...
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              Modifying source effects should introduce no extra gaps in playback.
         
     | 
| 
       15 
15 
     | 
    
         
             
              Effects which modify the length of the audio is not recommended here,
         
     | 
| 
         @@ -34,7 +34,7 @@ They are applied in the order described. 
     | 
|
| 
       34 
34 
     | 
    
         
             
              - delaying a certain channel or frequency range for time-alignment
         
     | 
| 
       35 
35 
     | 
    
         
             
              - compressors/limiters
         
     | 
| 
       36 
36 
     | 
    
         
             
              - reverb
         
     | 
| 
       37 
     | 
    
         
            -
              -  
     | 
| 
      
 37 
     | 
    
         
            +
              - gain
         
     | 
| 
       38 
38 
     | 
    
         
             
              - remix (for stereo image adjustments)
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
              Additionally, effects which are necessary due to the limitation of the
         
     | 
| 
         @@ -35,12 +35,28 @@ to use ecasound(1), too. 
     | 
|
| 
       35 
35 
     | 
    
         
             
            :    Disable automatic setting of the DITHERFX env.  This also passes
         
     | 
| 
       36 
36 
     | 
    
         
             
                the option to sox(1) via SOX_OPTS.
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
      
 38 
     | 
    
         
            +
            -O, \--outdir OUTDIR
         
     | 
| 
      
 39 
     | 
    
         
            +
            :    Set output directory instead of current directory.
         
     | 
| 
      
 40 
     | 
    
         
            +
                User-created targets must allow a placeholder for the
         
     | 
| 
      
 41 
     | 
    
         
            +
                (by default, an empty string) $OUTDIR environment variable
         
     | 
| 
      
 42 
     | 
    
         
            +
                in the output command.
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            -C, \--compression FACTOR
         
     | 
| 
      
 45 
     | 
    
         
            +
            :    Set the compression factor passed to sox(1).  See soxformat(7)
         
     | 
| 
      
 46 
     | 
    
         
            +
                for more information on how it works across different formats.
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            -r, \--rate RATE
         
     | 
| 
      
 49 
     | 
    
         
            +
            :    Override the output sample rate in the specified TARGET
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            -b, \--bits BITS
         
     | 
| 
      
 52 
     | 
    
         
            +
            :    Override the output bit depth in the specified TARGET
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       38 
54 
     | 
    
         
             
            # FILE FORMAT
         
     | 
| 
       39 
55 
     | 
    
         | 
| 
       40 
56 
     | 
    
         
             
            * infile - string, the pathname of the original audio file
         
     | 
| 
       41 
57 
     | 
    
         
             
            * env - ordered hash of environment variables to set for all commands
         
     | 
| 
       42 
58 
     | 
    
         
             
                env: !omap
         
     | 
| 
       43 
     | 
    
         
            -
                  FX:  
     | 
| 
      
 59 
     | 
    
         
            +
                  FX: gain 3 stats
         
     | 
| 
       44 
60 
     | 
    
         
             
            * comments - hash of common tags for all audio (e.g. ARTIST, ALBUM, YEAR)
         
     | 
| 
       45 
61 
     | 
    
         
             
                comments:
         
     | 
| 
       46 
62 
     | 
    
         
             
                  ARTIST: John Smith
         
     | 
| 
         @@ -106,13 +122,13 @@ use in targets: 
     | 
|
| 
       106 
122 
     | 
    
         
             
            * TRIMFX - essential, this supplys the necessary sox(1) trim effect to
         
     | 
| 
       107 
123 
     | 
    
         
             
              each track. In other words, this is: "trim ${TBEG}s ${TLEN}s"
         
     | 
| 
       108 
124 
     | 
    
         
             
            * COMMENTS - expands to --comment-file=PATH for sox(1)
         
     | 
| 
       109 
     | 
    
         
            -
            *  
     | 
| 
      
 125 
     | 
    
         
            +
            * OUTDIR - placeholder for --outdir, defaults to an empty string
         
     | 
| 
       110 
126 
     | 
    
         
             
            * SUFFIX - the suffix of the output format without "." (e.g. "flac", "ogg")
         
     | 
| 
       111 
127 
     | 
    
         
             
            * TRACKNUMBER - the track number, useful for comments and filenames
         
     | 
| 
       112 
128 
     | 
    
         
             
            * RATEFX - rate effect and arguments for sox(1) resampling
         
     | 
| 
       113 
129 
     | 
    
         
             
            * DITHERFX - dither effect and arguments for sox(1) dithering
         
     | 
| 
       114 
130 
     | 
    
         
             
            * FX - any user-specified sox effects which encompases the entire file.
         
     | 
| 
       115 
     | 
    
         
            -
              (e.g. "highpass 35  
     | 
| 
      
 131 
     | 
    
         
            +
              (e.g. "highpass 35 gain 3 stats")
         
     | 
| 
       116 
132 
     | 
    
         | 
| 
       117 
133 
     | 
    
         
             
            # TARGETS
         
     | 
| 
       118 
134 
     | 
    
         | 
| 
         @@ -144,10 +160,10 @@ imbalance in a live concert recording from the audience: 
     | 
|
| 
       144 
160 
     | 
    
         
             
                targets:
         
     | 
| 
       145 
161 
     | 
    
         
             
                  flac24:
         
     | 
| 
       146 
162 
     | 
    
         
             
                    command: sox -M
         
     | 
| 
       147 
     | 
    
         
            -
                      "|sox $INFILE -c1 -p $TRIMFX remix 1v1  
     | 
| 
       148 
     | 
    
         
            -
                      "|sox $INFILE -c1 -p $TRIMFX remix 2v1  
     | 
| 
      
 163 
     | 
    
         
            +
                      "|sox $INFILE -c1 -p $TRIMFX remix 1v1 gain 9.5"
         
     | 
| 
      
 164 
     | 
    
         
            +
                      "|sox $INFILE -c1 -p $TRIMFX remix 2v1 gain 8.5"
         
     | 
| 
       149 
165 
     | 
    
         
             
                      $COMMENTS $OUTFMT
         
     | 
| 
       150 
     | 
    
         
            -
                      bandYYYY-MM-DD.FOO.t0"$TRACKNUMBER.$SUFFIX"
         
     | 
| 
      
 166 
     | 
    
         
            +
                      ${OUTDIR}bandYYYY-MM-DD.FOO.t0"$TRACKNUMBER.$SUFFIX"
         
     | 
| 
       151 
167 
     | 
    
         
             
                      $RATEFX $DITHERFX stats
         
     | 
| 
       152 
168 
     | 
    
         
             
                    format:
         
     | 
| 
       153 
169 
     | 
    
         
             
                      type: flac
         
     | 
| 
         @@ -163,7 +179,7 @@ For reference, the "opusenc" default target is implemented as follows: 
     | 
|
| 
       163 
179 
     | 
    
         
             
                       --raw-bits $BITS_PER_SAMPLE
         
     | 
| 
       164 
180 
     | 
    
         
             
                       $OPUSENC_BITRATE --raw-rate $RATE --raw-chan $CHANNELS
         
     | 
| 
       165 
181 
     | 
    
         
             
                       --raw-endianness $ENDIAN_OPUSENC
         
     | 
| 
       166 
     | 
    
         
            -
                       $OPUSENC_COMMENTS - $TRACKNUMBER.opus
         
     | 
| 
      
 182 
     | 
    
         
            +
                       $OPUSENC_COMMENTS - $OUTDIR$TRACKNUMBER.opus
         
     | 
| 
       167 
183 
     | 
    
         
             
                    format:
         
     | 
| 
       168 
184 
     | 
    
         
             
                      bits: 16
         
     | 
| 
       169 
185 
     | 
    
         
             
                      rate: 48000
         
     | 
    
        data/GIT-VERSION-GEN
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -6,7 +6,7 @@ task "NEWS" do 
     | 
|
| 
       6 
6 
     | 
    
         
             
              latest = nil
         
     | 
| 
       7 
7 
     | 
    
         
             
              fp = Tempfile.new("NEWS", ".")
         
     | 
| 
       8 
8 
     | 
    
         
             
              fp.sync = true
         
     | 
| 
       9 
     | 
    
         
            -
              `git tag -l`.split(/\n/). 
     | 
| 
      
 9 
     | 
    
         
            +
              `git tag -l --sort=-v:refname`.split(/\n/).each do |tag|
         
     | 
| 
       10 
10 
     | 
    
         
             
                %r{\Av(.+)} =~ tag or next
         
     | 
| 
       11 
11 
     | 
    
         
             
                version = $1
         
     | 
| 
       12 
12 
     | 
    
         
             
                header, subject, body = `git cat-file tag #{tag}`.split(/\n\n/, 3)
         
     | 
    
        data/bin/dtas-splitfx
    CHANGED
    
    | 
         @@ -14,6 +14,10 @@ OptionParser.new('', 24, '  ') do |op| 
     | 
|
| 
       14 
14 
     | 
    
         
             
              op.on('-j', '--jobs [JOBS]', Integer) { |val| opts[:jobs] = val }
         
     | 
| 
       15 
15 
     | 
    
         
             
              op.on('-s', '--quiet', '--silent') { |val| opts[:silent] = true }
         
     | 
| 
       16 
16 
     | 
    
         
             
              op.on('-D', '--no-dither') { |val| opts[:no_dither] = true }
         
     | 
| 
      
 17 
     | 
    
         
            +
              op.on('-O', '--outdir OUTDIR') { |val| opts[:outdir] = val }
         
     | 
| 
      
 18 
     | 
    
         
            +
              op.on('-C', '--compression FACTOR') { |val| opts[:compression] = val }
         
     | 
| 
      
 19 
     | 
    
         
            +
              op.on('-r', '--rate RATE') { |val| opts[:rate] = val }
         
     | 
| 
      
 20 
     | 
    
         
            +
              op.on('-b', '--bits RATE', Integer) { |val| opts[:bits] = val }
         
     | 
| 
       17 
21 
     | 
    
         
             
              op.parse!(ARGV)
         
     | 
| 
       18 
22 
     | 
    
         
             
            end
         
     | 
| 
       19 
23 
     | 
    
         | 
    
        data/examples/splitfx.sample.yml
    CHANGED
    
    
    
        data/examples/tfx.sample.yml
    CHANGED
    
    | 
         @@ -16,8 +16,8 @@ comments: 
     | 
|
| 
       16 
16 
     | 
    
         
             
            track_start: 1
         
     | 
| 
       17 
17 
     | 
    
         
             
            effects:
         
     | 
| 
       18 
18 
     | 
    
         
             
            # the following commands are equivalent
         
     | 
| 
       19 
     | 
    
         
            -
            - trim 52 =53 sh sox $SOXIN $SOXOUT $TRIMFX  
     | 
| 
       20 
     | 
    
         
            -
            - trim 52 1 sox  
     | 
| 
      
 19 
     | 
    
         
            +
            - trim 52 =53 sh sox $SOXIN $SOXOUT $TRIMFX gain -6
         
     | 
| 
      
 20 
     | 
    
         
            +
            - trim 52 1 sox gain -6 # shorthand
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            # as are the following (for little endian machines)
         
     | 
| 
       23 
23 
     | 
    
         
             
            - trim 52 1 eca -eadb:-6
         
     | 
    
        data/lib/dtas/rg_state.rb
    CHANGED
    
    | 
         @@ -5,8 +5,10 @@ 
     | 
|
| 
       5 
5 
     | 
    
         
             
            # MAYBE: account for non-standard reference loudness (89.0 dB is standard)
         
     | 
| 
       6 
6 
     | 
    
         
             
            require_relative '../dtas'
         
     | 
| 
       7 
7 
     | 
    
         
             
            require_relative 'serialize'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require_relative 'util'
         
     | 
| 
       8 
9 
     | 
    
         
             
            class DTAS::RGState # :nodoc:
         
     | 
| 
       9 
10 
     | 
    
         
             
              include DTAS::Serialize
         
     | 
| 
      
 11 
     | 
    
         
            +
              include DTAS::Util
         
     | 
| 
       10 
12 
     | 
    
         | 
| 
       11 
13 
     | 
    
         
             
              RG_MODE = {
         
     | 
| 
       12 
14 
     | 
    
         
             
                # attribute name => method to use
         
     | 
| 
         @@ -53,19 +55,19 @@ class DTAS::RGState # :nodoc: 
     | 
|
| 
       53 
55 
     | 
    
         
             
                to_hash.delete_if { |k,v| RG_DEFAULT[k] == v }
         
     | 
| 
       54 
56 
     | 
    
         
             
              end
         
     | 
| 
       55 
57 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
              # returns a dB argument to the " 
     | 
| 
      
 58 
     | 
    
         
            +
              # returns a dB argument to the "gain" effect, nil if nothing found
         
     | 
| 
       57 
59 
     | 
    
         
             
              def rg_vol_gain(val)
         
     | 
| 
       58 
60 
     | 
    
         
             
                val = val.to_f + @preamp
         
     | 
| 
       59 
61 
     | 
    
         
             
                return if val.abs < @gain_threshold
         
     | 
| 
       60 
     | 
    
         
            -
                sprintf(' 
     | 
| 
      
 62 
     | 
    
         
            +
                sprintf('gain %0.8g', val)
         
     | 
| 
       61 
63 
     | 
    
         
             
              end
         
     | 
| 
       62 
64 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
              # returns a  
     | 
| 
      
 65 
     | 
    
         
            +
              # returns a DB argument to the "gain" effect
         
     | 
| 
       64 
66 
     | 
    
         
             
              def rg_vol_norm(val)
         
     | 
| 
       65 
67 
     | 
    
         
             
                diff = @norm_level - val.to_f
         
     | 
| 
       66 
68 
     | 
    
         
             
                return if (@norm_level - diff).abs < @norm_threshold
         
     | 
| 
       67 
69 
     | 
    
         
             
                diff += @norm_level
         
     | 
| 
       68 
     | 
    
         
            -
                sprintf(' 
     | 
| 
      
 70 
     | 
    
         
            +
                sprintf('gain %0.8g', linear_to_db(diff))
         
     | 
| 
       69 
71 
     | 
    
         
             
              end
         
     | 
| 
       70 
72 
     | 
    
         | 
| 
       71 
73 
     | 
    
         
             
              # The ReplayGain fallback adjustment value (in dB), in case a file is
         
     | 
| 
         @@ -77,7 +79,7 @@ class DTAS::RGState # :nodoc: 
     | 
|
| 
       77 
79 
     | 
    
         
             
                val = @fallback_gain + @preamp
         
     | 
| 
       78 
80 
     | 
    
         
             
                return if val.abs < @gain_threshold
         
     | 
| 
       79 
81 
     | 
    
         
             
                warn(reason) if $DEBUG
         
     | 
| 
       80 
     | 
    
         
            -
                " 
     | 
| 
      
 82 
     | 
    
         
            +
                "gain #{val}"
         
     | 
| 
       81 
83 
     | 
    
         
             
              end
         
     | 
| 
       82 
84 
     | 
    
         | 
| 
       83 
85 
     | 
    
         
             
              # returns an array (for command-line argument) for the effect needed
         
     | 
    
        data/lib/dtas/splitfx.rb
    CHANGED
    
    | 
         @@ -10,7 +10,7 @@ require 'tempfile' 
     | 
|
| 
       10 
10 
     | 
    
         
             
            # Unlike the stuff for dtas-player, dtas-splitfx is fairly tied to sox
         
     | 
| 
       11 
11 
     | 
    
         
             
            # (but we may still pipe to ecasound or anything else)
         
     | 
| 
       12 
12 
     | 
    
         
             
            class DTAS::SplitFX # :nodoc:
         
     | 
| 
       13 
     | 
    
         
            -
              CMD = 'sox "$INFILE" $COMMENTS $OUTFMT "$TRACKNUMBER.$SUFFIX" '\
         
     | 
| 
      
 13 
     | 
    
         
            +
              CMD = 'sox "$INFILE" $COMMENTS $OUTFMT "$OUTDIR$TRACKNUMBER.$SUFFIX" '\
         
     | 
| 
       14 
14 
     | 
    
         
             
                    '$TRIMFX $FX $RATEFX $DITHERFX'
         
     | 
| 
       15 
15 
     | 
    
         
             
              include DTAS::Process
         
     | 
| 
       16 
16 
     | 
    
         
             
              include DTAS::XS
         
     | 
| 
         @@ -55,6 +55,10 @@ class DTAS::SplitFX # :nodoc: 
     | 
|
| 
       55 
55 
     | 
    
         
             
                @track_zpad = true
         
     | 
| 
       56 
56 
     | 
    
         
             
                @t2s = method(:t2s)
         
     | 
| 
       57 
57 
     | 
    
         
             
                @infile = nil
         
     | 
| 
      
 58 
     | 
    
         
            +
                @outdir = nil
         
     | 
| 
      
 59 
     | 
    
         
            +
                @compression = nil
         
     | 
| 
      
 60 
     | 
    
         
            +
                @rate = nil
         
     | 
| 
      
 61 
     | 
    
         
            +
                @bits = nil
         
     | 
| 
       58 
62 
     | 
    
         
             
                @targets = {
         
     | 
| 
       59 
63 
     | 
    
         
             
                  "flac-cdda" => {
         
     | 
| 
       60 
64 
     | 
    
         
             
                    "command" => CMD,
         
     | 
| 
         @@ -72,7 +76,7 @@ class DTAS::SplitFX # :nodoc: 
     | 
|
| 
       72 
76 
     | 
    
         
             
                       '$OPUSENC_BITRATE --raw-rate $RATE --raw-chan $CHANNELS ' \
         
     | 
| 
       73 
77 
     | 
    
         
             
                       '--raw-endianness $ENDIAN_OPUSENC ' \
         
     | 
| 
       74 
78 
     | 
    
         
             
                       '$OPUSENC_COMMENTS ' \
         
     | 
| 
       75 
     | 
    
         
            -
                       '- $TRACKNUMBER.opus',
         
     | 
| 
      
 79 
     | 
    
         
            +
                       '- $OUTDIR$TRACKNUMBER.opus',
         
     | 
| 
       76 
80 
     | 
    
         
             
                    "format" => {
         
     | 
| 
       77 
81 
     | 
    
         
             
                      "bits" => 16,
         
     | 
| 
       78 
82 
     | 
    
         
             
                      "rate" => 48000,
         
     | 
| 
         @@ -155,6 +159,8 @@ class DTAS::SplitFX # :nodoc: 
     | 
|
| 
       155 
159 
     | 
    
         
             
              def generic_target(target = "flac")
         
     | 
| 
       156 
160 
     | 
    
         
             
                outfmt = @infmt.dup
         
     | 
| 
       157 
161 
     | 
    
         
             
                outfmt.type = target
         
     | 
| 
      
 162 
     | 
    
         
            +
                outfmt.bits = @bits if @bits
         
     | 
| 
      
 163 
     | 
    
         
            +
                outfmt.rate = @rate if @rate
         
     | 
| 
       158 
164 
     | 
    
         
             
                { "command" => CMD, "format" => outfmt }
         
     | 
| 
       159 
165 
     | 
    
         
             
              end
         
     | 
| 
       160 
166 
     | 
    
         | 
| 
         @@ -184,7 +190,7 @@ class DTAS::SplitFX # :nodoc: 
     | 
|
| 
       184 
190 
     | 
    
         
             
                # add noise-shaped dither for 16-bit (sox manual seems to recommend this)
         
     | 
| 
       185 
191 
     | 
    
         
             
                if opts[:no_dither]
         
     | 
| 
       186 
192 
     | 
    
         
             
                  env["SOX_OPTS"] = "#{ENV["SOX_OPTS"]} -D"
         
     | 
| 
       187 
     | 
    
         
            -
                 
     | 
| 
      
 193 
     | 
    
         
            +
                elsif outfmt.bits && outfmt.bits <= 16
         
     | 
| 
       188 
194 
     | 
    
         
             
                  env["DITHERFX"] = "dither -s"
         
     | 
| 
       189 
195 
     | 
    
         
             
                end
         
     | 
| 
       190 
196 
     | 
    
         
             
                comments = Tempfile.new(%W(dtas-splitfx-#{t.comments["TRACKNUMBER"]} .txt))
         
     | 
| 
         @@ -195,8 +201,11 @@ class DTAS::SplitFX # :nodoc: 
     | 
|
| 
       195 
201 
     | 
    
         
             
                end
         
     | 
| 
       196 
202 
     | 
    
         
             
                env["COMMENTS"] = "--comment-file=#{comments.path}"
         
     | 
| 
       197 
203 
     | 
    
         
             
                infile_env(env, @infile)
         
     | 
| 
       198 
     | 
    
         
            -
                 
     | 
| 
      
 204 
     | 
    
         
            +
                outarg = outfmt.to_sox_arg
         
     | 
| 
      
 205 
     | 
    
         
            +
                outarg << "-C#@compression" if @compression
         
     | 
| 
      
 206 
     | 
    
         
            +
                env["OUTFMT"] = xs(outarg)
         
     | 
| 
       199 
207 
     | 
    
         
             
                env["SUFFIX"] = outfmt.type
         
     | 
| 
      
 208 
     | 
    
         
            +
                env["OUTDIR"] = @outdir ? "#@outdir/".squeeze('/') : ''
         
     | 
| 
       200 
209 
     | 
    
         
             
                env.merge!(t.env)
         
     | 
| 
       201 
210 
     | 
    
         | 
| 
       202 
211 
     | 
    
         
             
                command = target["command"]
         
     | 
| 
         @@ -323,6 +332,14 @@ class DTAS::SplitFX # :nodoc: 
     | 
|
| 
       323 
332 
     | 
    
         
             
              end
         
     | 
| 
       324 
333 
     | 
    
         | 
| 
       325 
334 
     | 
    
         
             
              def run(target, opts = {})
         
     | 
| 
      
 335 
     | 
    
         
            +
                if @outdir = opts[:outdir]
         
     | 
| 
      
 336 
     | 
    
         
            +
                  require 'fileutils'
         
     | 
| 
      
 337 
     | 
    
         
            +
                  FileUtils.mkpath(@outdir)
         
     | 
| 
      
 338 
     | 
    
         
            +
                end
         
     | 
| 
      
 339 
     | 
    
         
            +
                @compression = opts[:compression]
         
     | 
| 
      
 340 
     | 
    
         
            +
                @rate = opts[:rate]
         
     | 
| 
      
 341 
     | 
    
         
            +
                @bits = opts[:bits]
         
     | 
| 
      
 342 
     | 
    
         
            +
             
     | 
| 
       326 
343 
     | 
    
         
             
                fails = []
         
     | 
| 
       327 
344 
     | 
    
         
             
                tracks = @tracks.dup
         
     | 
| 
       328 
345 
     | 
    
         
             
                pids = {}
         
     | 
    
        data/lib/dtas/tracklist.rb
    CHANGED
    
    | 
         @@ -69,12 +69,13 @@ class DTAS::Tracklist # :nodoc: 
     | 
|
| 
       69 
69 
     | 
    
         
             
              def advance_track(repeat_ok = true)
         
     | 
| 
       70 
70 
     | 
    
         
             
                return if @list.empty?
         
     | 
| 
       71 
71 
     | 
    
         
             
                # @repeat == 1 for single track repeat
         
     | 
| 
       72 
     | 
    
         
            -
                 
     | 
| 
      
 72 
     | 
    
         
            +
                repeat = repeat_ok ? @repeat : false
         
     | 
| 
      
 73 
     | 
    
         
            +
                next_pos = @goto_pos || @pos + (repeat == 1 ? 0 : 1)
         
     | 
| 
       73 
74 
     | 
    
         
             
                next_off = @goto_off # nil by default
         
     | 
| 
       74 
75 
     | 
    
         
             
                @goto_pos = @goto_off = nil
         
     | 
| 
       75 
76 
     | 
    
         
             
                if @list[next_pos]
         
     | 
| 
       76 
77 
     | 
    
         
             
                  @pos = next_pos
         
     | 
| 
       77 
     | 
    
         
            -
                elsif  
     | 
| 
      
 78 
     | 
    
         
            +
                elsif repeat
         
     | 
| 
       78 
79 
     | 
    
         
             
                  next_pos = @pos = 0
         
     | 
| 
       79 
80 
     | 
    
         
             
                else
         
     | 
| 
       80 
81 
     | 
    
         
             
                  return
         
     | 
    
        data/test/test_rg_integration.rb
    CHANGED
    
    | 
         @@ -1,8 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Copyright (C) 2013-2015 all contributors <dtas-all@nongnu.org>
         
     | 
| 
       2 
2 
     | 
    
         
             
            # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
         
     | 
| 
       3 
3 
     | 
    
         
             
            require './test/player_integration'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'dtas/util'
         
     | 
| 
       4 
5 
     | 
    
         
             
            class TestRgIntegration < Testcase
         
     | 
| 
       5 
6 
     | 
    
         
             
              include PlayerIntegration
         
     | 
| 
      
 7 
     | 
    
         
            +
              include DTAS::Util
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
9 
     | 
    
         
             
              def tmp_pluck(len = 5)
         
     | 
| 
       8 
10 
     | 
    
         
             
                pluck = Tempfile.open(%w(pluck .flac))
         
     | 
| 
         @@ -58,10 +60,10 @@ class TestRgIntegration < Testcase 
     | 
|
| 
       58 
60 
     | 
    
         
             
                  assert_match expect, cur["current"]["env"]["RGFX"]
         
     | 
| 
       59 
61 
     | 
    
         
             
                end
         
     | 
| 
       60 
62 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                check_gain.call(%r{ 
     | 
| 
       62 
     | 
    
         
            -
                check_gain.call(%r{ 
     | 
| 
       63 
     | 
    
         
            -
                check_gain.call(%r{ 
     | 
| 
       64 
     | 
    
         
            -
                check_gain.call(%r{ 
     | 
| 
      
 63 
     | 
    
         
            +
                check_gain.call(%r{gain -3}, "album_gain")
         
     | 
| 
      
 64 
     | 
    
         
            +
                check_gain.call(%r{gain -2}, "track_gain")
         
     | 
| 
      
 65 
     | 
    
         
            +
                check_gain.call(%r{gain 0\.0}, "album_peak")
         
     | 
| 
      
 66 
     | 
    
         
            +
                check_gain.call(%r{gain 2\.5}, "track_peak")
         
     | 
| 
       65 
67 
     | 
    
         | 
| 
       66 
68 
     | 
    
         
             
                s.req_ok("rg preamp+=1")
         
     | 
| 
       67 
69 
     | 
    
         
             
                rg = YAML.load(yaml = s.req("rg"))
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: dtas
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.11.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - dtas hackers
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-05-10 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: |-
         
     | 
| 
       14 
14 
     | 
    
         
             
              Free Software command-line tools for audio playback, mastering, and
         
     |