From 7a43e7b2f7b483c0aee9cf01b8a15778dee69d5b Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 3 Jan 2015 01:09:02 +0000 Subject: splitfx: add INDIR and INBASE environment variables These are intended to act like `$(@D)' and `$(@F)' in GNU make(1) and to ease managing temporary files for some effects (e.g. noiseprof + noisered in sox) for splitfx users. --- Documentation/dtas-splitfx.txt | 2 ++ lib/dtas/source/splitfx.rb | 5 +++-- lib/dtas/splitfx.rb | 7 ++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Documentation/dtas-splitfx.txt b/Documentation/dtas-splitfx.txt index 5aa3086..0fd2f3a 100644 --- a/Documentation/dtas-splitfx.txt +++ b/Documentation/dtas-splitfx.txt @@ -99,6 +99,8 @@ 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 +* INBASE - the basename of INFILE * TRIMFX - essential, this supplys the necessary sox(1) trim effect to each track. * COMMENTS - expands to --comment-file=PATH for sox(1) diff --git a/lib/dtas/source/splitfx.rb b/lib/dtas/source/splitfx.rb index 5340f3d..19b2c16 100644 --- a/lib/dtas/source/splitfx.rb +++ b/lib/dtas/source/splitfx.rb @@ -7,7 +7,7 @@ require_relative 'watchable' class DTAS::Source::SplitFX < DTAS::Source::Sox # :nodoc: MAX_YAML_SIZE = 512 * 1024 - attr_writer :sox + attr_writer :sox, :sfx include DTAS::Source::Watchable if defined?(DTAS::Source::Watchable) SPLITFX_DEFAULTS = SOX_DEFAULTS.merge( @@ -45,6 +45,7 @@ class DTAS::Source::SplitFX < DTAS::Source::Sox # :nodoc: rv = source_file_dup(ymlfile, offset) rv.sox = sox rv.env = sfx.env + rv.sfx = sfx rv rescue => e warn "#{e.message} (#{e.class})" @@ -62,7 +63,7 @@ class DTAS::Source::SplitFX < DTAS::Source::Sox # :nodoc: def spawn(player_format, rg_state, opts) raise "BUG: #{self.inspect}#spawn called twice" if @to_io e = @env.merge!(player_format.to_env) - e["INFILE"] = @sox.infile + @sfx.infile_env(e, @sox.infile) # make sure these are visible to the "current" command... e["TRIMFX"] = @offset ? "trim #@offset" : nil diff --git a/lib/dtas/splitfx.rb b/lib/dtas/splitfx.rb index 36cdf9f..e31972a 100644 --- a/lib/dtas/splitfx.rb +++ b/lib/dtas/splitfx.rb @@ -187,7 +187,7 @@ class DTAS::SplitFX # :nodoc: comments.puts("#{k}=#{v}") end env["COMMENTS"] = "--comment-file=#{comments.path}" - env["INFILE"] = @infile + infile_env(env, @infile) env["OUTFMT"] = xs(outfmt.to_sox_arg) env["SUFFIX"] = outfmt.type env.merge!(t.env) @@ -342,4 +342,9 @@ class DTAS::SplitFX # :nodoc: require_relative 'cue_index' @cuebp = @tracks.map { |t| DTAS::CueIndex.new(1, "#{t.tstart}s") } end + + def infile_env(env, infile) + env["INFILE"] = infile + env["INDIR"], env["INBASE"] = File.split(File.expand_path(infile)) + end end -- cgit v1.2.3-24-ge0c7