diff options
author | Eric Wong <normalperson@yhbt.net> | 2013-09-11 22:16:48 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2013-09-11 22:20:52 +0000 |
commit | 6d39e7719211790ff5de30ce7f5e5bf7d1f255de (patch) | |
tree | 3eb537872322443a021ceff76ca1dfceb540faf1 /lib/dtas | |
parent | 4742599c6801c25b00a2233086ae2f1091eac675 (diff) | |
download | dtas-6d39e7719211790ff5de30ce7f5e5bf7d1f255de.tar.gz |
This allows skipping periods of silence/noise in between music tracks. This should be useful if the recorder is left running during intermission or during equipment swaps.
Diffstat (limited to 'lib/dtas')
-rw-r--r-- | lib/dtas/splitfx.rb | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/lib/dtas/splitfx.rb b/lib/dtas/splitfx.rb index f7f8c39..374d7ff 100644 --- a/lib/dtas/splitfx.rb +++ b/lib/dtas/splitfx.rb @@ -13,6 +13,12 @@ class DTAS::SplitFX # :nodoc: include DTAS::Process include DTAS::XS + class Skip < Struct.new(:tstart) + def commit(_) + # noop + end + end + class T < Struct.new(:env, :comments, :tstart, :fade_in, :fade_out) # :nodoc: def commit(advance_track_samples) tlen = advance_track_samples - tstart @@ -218,9 +224,15 @@ class DTAS::SplitFX # :nodoc: fmt = "%d" end nr = @track_start - @tracks.each do |t| - t.comments["TRACKNUMBER"] = sprintf(fmt, nr) - nr += 1 + @tracks.delete_if do |t| + case t + when Skip + true + else + t.comments["TRACKNUMBER"] = sprintf(fmt, nr) + nr += 1 + false + end end end @@ -254,6 +266,16 @@ class DTAS::SplitFX # :nodoc: prev = @tracks.last and prev.commit(t.tstart) @tracks << t + when "skip" + stop_time = argv.shift + argv.empty? or raise ArgumentError, "skip does not take extra args" + s = Skip.new + s.tstart = @t2s.call(stop_time) + # s.comments = {} + # s.env = {} + prev = @tracks.last or raise ArgumentError, "no tracks to skip" + prev.commit(s.tstart) + @tracks << s when "stop" stop_time = argv.shift argv.empty? or raise ArgumentError, "stop does not take extra args" |