From 8ebf63afe8c9af13868376e7618c840517618076 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 7 Sep 2013 12:18:45 +0000 Subject: add dtas-splitfx - .cuesheets + make(1) This is lacking tests and documentation, but it works from a old trivial sample I had from a recording I previously split using plain POSIX shell splitfx is like make(1) for splitting and minor audio editing. It also allows any number of effects. --- bin/dtas-splitfx | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 bin/dtas-splitfx (limited to 'bin/dtas-splitfx') diff --git a/bin/dtas-splitfx b/bin/dtas-splitfx new file mode 100755 index 0000000..2d66c0d --- /dev/null +++ b/bin/dtas-splitfx @@ -0,0 +1,39 @@ +#!/usr/bin/env ruby +# Copyright (C) 2013, Eric Wong and all contributors +# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) +require 'yaml' +require 'optparse' +require 'dtas/splitfx' +usage = "#$0 [-n|--dry-run][-j [JOBS]] SPLITFX_FILE.yml [TARGET]" +overrides = {} # FIXME: not tested +dryrun = false +jobs = 1 +op = OptionParser.new('', 24, ' ') do |opts| + opts.banner = usage + opts.on('-n', '--dry-run') { dryrun = true } + opts.on('-j', '--jobs [JOBS]', Integer) { |val| jobs = val } + opts.parse!(ARGV) +end + +args = [] +ARGV.each do |arg| + case arg + when %r{\A(\w+)=(.*)\z} + key, val = $1, $2 + # only one that makes sense is infile=another_file + overrides[key] = YAML.load(val) + when %r{\A(\w+)\.(\w+)=(.*)\z} + # comments.ARTIST='blah' + top, key, val = $1, $2, $3 + hsh = overrides[top] ||= {} + hsh[key] = val + else + args << arg + end +end + +file = args.shift or abort usage +target = args.shift || "flac" +splitfx = DTAS::SplitFX.new +splitfx.import(YAML.load(File.read(file)), overrides) +splitfx.run(target, jobs, dryrun) -- cgit v1.2.3-24-ge0c7