dtas.git  about / heads / tags
duct tape audio suite for *nix
blob 7e0e65f3dd85c4b66ca0839829e930cca1481590 971 bytes (raw)
$ git show v0.6.0:lib/dtas/fadefx.rb	# shows this blob on the CLI

 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
 
# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
require_relative '../dtas'
require_relative 'parse_time'

class DTAS::FadeFX
  include DTAS::ParseTime
  attr_reader :out_prev, :in_main, :out_main, :in_next
  F = Struct.new(:type, :len)

  def initialize(args)
    args =~ /\Afade=([^,]*),([^,]*);([^,]*),([^,]*)\z/ or
      raise ArgumentError, "bad fade format"
    fades = [ $1, $2, $3, $4 ]
    %w(out_prev in_main out_main in_next).each do |iv|
      instance_variable_set("@#{iv}", parse!(fades.shift))
    end
  end

  # q - quarter of a sine wave
  # h - half a sine wave
  # t - linear (`triangular') slope
  # l - logarithmic
  # p - inverted parabola
  # default is 't' (sox defaults to 'l', but triangular makes more sense
  # when concatenating
  def parse!(str)
    type = "t"
    str.sub!(/\A([a-z])/, "") and type = $1
    F[type, parse_time(str)]
  end
end

git clone git://80x24.org/dtas.git
git clone https://80x24.org/dtas.git