dtas 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/Documentation/.gitignore +1 -1
- data/Documentation/GNUmakefile +1 -1
- data/Documentation/dtas-console.txt +1 -1
- data/Documentation/dtas-ctl.txt +1 -1
- data/Documentation/dtas-cueedit.txt +1 -1
- data/Documentation/dtas-enq.txt +1 -1
- data/Documentation/dtas-msinkctl.txt +1 -1
- data/Documentation/dtas-player.txt +1 -1
- data/Documentation/dtas-player_effects.txt +1 -1
- data/Documentation/dtas-player_protocol.txt +3 -3
- data/Documentation/dtas-player_sink_examples.txt +1 -1
- data/Documentation/dtas-sinkedit.txt +1 -1
- data/Documentation/dtas-sourceedit.txt +1 -1
- data/Documentation/dtas-splitfx.txt +1 -1
- data/Documentation/dtas-tl.txt +2 -1
- data/Documentation/dtas-xdelay.txt +1 -1
- data/GIT-VERSION-GEN +2 -2
- data/GNUmakefile +1 -1
- data/HACKING +1 -1
- data/INSTALL +5 -5
- data/README +1 -1
- data/Rakefile +2 -2
- data/TODO +1 -1
- data/bin/dtas-console +18 -3
- data/bin/dtas-ctl +1 -1
- data/bin/dtas-cueedit +1 -3
- data/bin/dtas-enq +2 -3
- data/bin/dtas-msinkctl +1 -1
- data/bin/dtas-partstats +1 -1
- data/bin/dtas-player +3 -4
- data/bin/dtas-sinkedit +1 -1
- data/bin/dtas-sourceedit +1 -1
- data/bin/dtas-splitfx +1 -1
- data/bin/dtas-tl +3 -3
- data/bin/dtas-xdelay +1 -1
- data/dtas-linux.gemspec +1 -1
- data/dtas-mpris.gemspec +1 -1
- data/dtas.gemspec +1 -1
- data/examples/trimfx.sample.yml +2 -5
- data/lib/dtas.rb +1 -1
- data/lib/dtas/buffer.rb +1 -1
- data/lib/dtas/buffer/read_write.rb +1 -1
- data/lib/dtas/buffer/splice.rb +1 -1
- data/lib/dtas/command.rb +1 -1
- data/lib/dtas/compat_onenine.rb +1 -1
- data/lib/dtas/compat_rbx.rb +1 -1
- data/lib/dtas/cue_index.rb +1 -1
- data/lib/dtas/disclaimer.rb +1 -1
- data/lib/dtas/edit_client.rb +1 -1
- data/lib/dtas/format.rb +1 -1
- data/lib/dtas/parse_time.rb +1 -1
- data/lib/dtas/partstats.rb +1 -1
- data/lib/dtas/pipe.rb +1 -1
- data/lib/dtas/player.rb +2 -2
- data/lib/dtas/player/client_handler.rb +5 -5
- data/lib/dtas/process.rb +1 -1
- data/lib/dtas/replaygain.rb +1 -1
- data/lib/dtas/rg_state.rb +1 -1
- data/lib/dtas/serialize.rb +1 -1
- data/lib/dtas/sigevent.rb +1 -1
- data/lib/dtas/sigevent/efd.rb +1 -1
- data/lib/dtas/sigevent/pipe.rb +1 -1
- data/lib/dtas/sink.rb +2 -2
- data/lib/dtas/source.rb +1 -1
- data/lib/dtas/source/av.rb +1 -1
- data/lib/dtas/source/av_ff_common.rb +1 -1
- data/lib/dtas/source/cmd.rb +1 -1
- data/lib/dtas/source/common.rb +1 -1
- data/lib/dtas/source/ff.rb +1 -1
- data/lib/dtas/source/file.rb +1 -1
- data/lib/dtas/source/mp3gain.rb +1 -1
- data/lib/dtas/source/sox.rb +1 -1
- data/lib/dtas/splitfx.rb +1 -1
- data/lib/dtas/state_file.rb +1 -1
- data/lib/dtas/tracklist.rb +1 -1
- data/lib/dtas/trimfx.rb +64 -3
- data/lib/dtas/unix_accepted.rb +3 -1
- data/lib/dtas/unix_client.rb +2 -2
- data/lib/dtas/unix_server.rb +8 -2
- data/lib/dtas/util.rb +1 -1
- data/lib/dtas/writable_iter.rb +1 -1
- data/lib/dtas/xs.rb +2 -2
- data/perl/dtas-graph +1 -1
- data/test/covshow.rb +1 -1
- data/test/helper.rb +24 -3
- data/test/player_integration.rb +1 -1
- data/test/test_buffer.rb +1 -1
- data/test/test_env.rb +1 -1
- data/test/test_format.rb +1 -1
- data/test/test_format_change.rb +1 -1
- data/test/test_player.rb +1 -1
- data/test/test_player_client_handler.rb +1 -1
- data/test/test_player_integration.rb +1 -1
- data/test/test_process.rb +1 -1
- data/test/test_rg_integration.rb +1 -1
- data/test/test_rg_state.rb +1 -1
- data/test/test_sink.rb +1 -1
- data/test/test_sink_pipe_size.rb +1 -1
- data/test/test_sink_tee_integration.rb +1 -1
- data/test/test_source_av.rb +1 -1
- data/test/test_source_sox.rb +1 -1
- data/test/test_splitfx.rb +8 -12
- data/test/test_tracklist.rb +1 -1
- data/test/test_trimfx.rb +33 -2
- data/test/test_unixserver.rb +1 -1
- data/test/test_util.rb +1 -1
- metadata +3 -5
- data/lib/dtas/fadefx.rb +0 -32
- data/test/test_fadefx.rb +0 -18
data/lib/dtas/unix_server.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require 'socket'
|
4
4
|
require_relative '../dtas'
|
@@ -99,7 +99,13 @@ class DTAS::UNIXServer # :nodoc:
|
|
99
99
|
|
100
100
|
def run_once
|
101
101
|
# give IO.select one-shot behavior, snapshot and replace the watchlist
|
102
|
-
|
102
|
+
begin
|
103
|
+
r = IO.select(@readers.keys, @writers.keys) or return
|
104
|
+
rescue IOError
|
105
|
+
# this only happens when sinks error out
|
106
|
+
@writers.delete_if { |io| io.to_io.closed? }
|
107
|
+
retry
|
108
|
+
end
|
103
109
|
@hot_read = r[0]
|
104
110
|
r[1].each do |io|
|
105
111
|
@writers.delete(io)
|
data/lib/dtas/util.rb
CHANGED
data/lib/dtas/writable_iter.rb
CHANGED
data/lib/dtas/xs.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative '../dtas'
|
4
4
|
require 'shellwords'
|
@@ -9,6 +9,6 @@ require 'shellwords'
|
|
9
9
|
# again, filesystems can use any byte value in names except '\0'.
|
10
10
|
module DTAS::XS # :nodoc:
|
11
11
|
def xs(ary)
|
12
|
-
Shellwords.join(ary.map
|
12
|
+
Shellwords.join(ary.map(&:b))
|
13
13
|
end
|
14
14
|
end
|
data/perl/dtas-graph
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/perl -w
|
2
|
-
# Copyright (C) 2013, Eric Wong <
|
2
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
3
3
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
4
|
use strict;
|
5
5
|
use Graph::Easy; # for ASCII-art graphs
|
data/test/covshow.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
#
|
4
4
|
# this works with the __covmerge method in test/helper.rb
|
data/test/helper.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
$stdout.sync = $stderr.sync = Thread.abort_on_exception = true
|
4
4
|
require 'thread'
|
@@ -25,6 +25,12 @@ if ENV["COVERAGE"]
|
|
25
25
|
# filter out stuff that's not in our project
|
26
26
|
COVMATCH =~ filename or next
|
27
27
|
|
28
|
+
# For compatibility with https://bugs.ruby-lang.org/issues/9508
|
29
|
+
# TODO: support those features if that gets merged into mainline
|
30
|
+
unless Array === counts
|
31
|
+
counts = counts[:lines]
|
32
|
+
end
|
33
|
+
|
28
34
|
merge = prev[filename] || []
|
29
35
|
merge = merge
|
30
36
|
counts.each_with_index do |count, i|
|
@@ -44,14 +50,21 @@ if ENV["COVERAGE"]
|
|
44
50
|
at_exit { __covmerge }
|
45
51
|
end
|
46
52
|
|
47
|
-
|
53
|
+
begin
|
54
|
+
gem 'minitest'
|
55
|
+
rescue LoadError
|
56
|
+
end
|
48
57
|
require 'minitest/autorun'
|
49
58
|
require "tempfile"
|
50
59
|
|
51
60
|
Testcase = begin
|
52
61
|
Minitest::Test
|
53
62
|
rescue NameError
|
54
|
-
|
63
|
+
begin
|
64
|
+
Minitest::Unit::TestCase # minitest 4
|
65
|
+
rescue
|
66
|
+
MiniTest::Unit::TestCase # minitest 3
|
67
|
+
end
|
55
68
|
end
|
56
69
|
|
57
70
|
FIFOS = []
|
@@ -86,3 +99,11 @@ class Dir
|
|
86
99
|
end
|
87
100
|
end
|
88
101
|
end unless Dir.respond_to?(:mktmpdir)
|
102
|
+
|
103
|
+
def guitar_pluck(outfile)
|
104
|
+
outfile =~ %r{\A[\w\./-]+\z} or raise ArgumentError, "bad chars"
|
105
|
+
cmd = '(for n in E2 A2 D3 G3 B3 E4; do '\
|
106
|
+
'sox -n -ts32 -c2 -r44100 - synth 4 pluck $n; done ) | ' \
|
107
|
+
"sox -ts32 -c2 -r44100 - #{outfile}"
|
108
|
+
assert_equal(true, system(cmd), cmd)
|
109
|
+
end
|
data/test/player_integration.rb
CHANGED
data/test/test_buffer.rb
CHANGED
data/test/test_env.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative 'helper'
|
4
4
|
require 'dtas/process'
|
data/test/test_format.rb
CHANGED
data/test/test_format_change.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/player_integration'
|
4
4
|
require 'tmpdir'
|
data/test/test_player.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/player_integration'
|
4
4
|
class TestPlayerIntegration < Testcase
|
data/test/test_process.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/helper'
|
4
4
|
require 'dtas/process'
|
data/test/test_rg_integration.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/player_integration'
|
4
4
|
class TestRgIntegration < Testcase
|
data/test/test_rg_state.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/helper'
|
4
4
|
require 'dtas/rg_state'
|
data/test/test_sink.rb
CHANGED
data/test/test_sink_pipe_size.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/player_integration'
|
4
4
|
class TestSinkTeeIntegration < Testcase
|
data/test/test_source_av.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/helper'
|
4
4
|
require 'dtas/source/av'
|
data/test/test_source_sox.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/helper'
|
4
4
|
require 'dtas/source/sox'
|
data/test/test_splitfx.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require 'yaml'
|
4
4
|
require 'dtas/splitfx'
|
@@ -20,11 +20,7 @@ class TestSplitfx < Testcase
|
|
20
20
|
sfx = DTAS::SplitFX.new
|
21
21
|
Dir.mktmpdir do |dir|
|
22
22
|
Dir.chdir(dir) do
|
23
|
-
|
24
|
-
cmd = '(for n in E2 A2 D3 G3 B3 E4; do '\
|
25
|
-
'sox -n -ts32 -c2 -r44100 - synth 4 pluck $n; done ) | ' \
|
26
|
-
'sox -ts32 -c2 -r44100 - foo.flac'
|
27
|
-
assert system(cmd), cmd.inspect
|
23
|
+
guitar_pluck("foo.flac")
|
28
24
|
sfx.import(hash, {})
|
29
25
|
opts = { jobs: nil, silent: true }
|
30
26
|
|
@@ -65,13 +61,13 @@ class TestSplitfx < Testcase
|
|
65
61
|
assert system(cmd), cmd
|
66
62
|
assert_equal `soxi -D #{nr}.flac`, `soxi -D #{nr}.wav`
|
67
63
|
end
|
68
|
-
end
|
69
64
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
65
|
+
# ensure 16/44.1kHz FLAC works (CDDA-like)
|
66
|
+
File.unlink('1.flac', '2.flac')
|
67
|
+
WAIT_ALL_MTX.synchronize { sfx.run("flac-cdda", opts) }
|
68
|
+
%w(1 2).each do |nr|
|
69
|
+
assert_equal `soxi -D #{nr}.flac`, `soxi -D #{nr}.wav`
|
70
|
+
end
|
75
71
|
end
|
76
72
|
end
|
77
73
|
end
|
data/test/test_tracklist.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require_relative 'helper'
|
4
4
|
require 'dtas/tracklist'
|
data/test/test_trimfx.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <
|
1
|
+
# Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
|
2
2
|
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
3
|
require './test/helper'
|
4
4
|
require 'dtas/trimfx'
|
@@ -45,6 +45,37 @@ class TestTrimFX < Testcase
|
|
45
45
|
|
46
46
|
def test_tfx_effects
|
47
47
|
tfx = DTAS::TrimFX.new(%w(trim 1 sox vol -1dB))
|
48
|
-
assert_equal %w(sox $SOXIN $SOXOUT $TRIMFX vol -1dB
|
48
|
+
assert_equal %w(sox $SOXIN $SOXOUT $TRIMFX vol -1dB), tfx.cmd
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_schedule_simple
|
52
|
+
fx = [
|
53
|
+
DTAS::TrimFX.new(%w(trim 1 0.3)),
|
54
|
+
DTAS::TrimFX.new(%w(trim 2 0.2)),
|
55
|
+
DTAS::TrimFX.new(%w(trim 0.5 0.5)),
|
56
|
+
].shuffle
|
57
|
+
ary = DTAS::TrimFX.schedule(fx)
|
58
|
+
assert_operator 1, :==, ary.size
|
59
|
+
assert_equal [ 0.5, 1, 2 ], ary[0].map(&:tbeg)
|
60
|
+
assert_equal [ 0.5, 0.3, 0.2 ], ary[0].map(&:tlen)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_schedule_overlaps
|
64
|
+
fx = [
|
65
|
+
DTAS::TrimFX.new(%w(trim 1 0.3 sox)),
|
66
|
+
DTAS::TrimFX.new(%w(trim 1.1 0.2 sox)),
|
67
|
+
DTAS::TrimFX.new(%w(trim 0.5 0.5 sox)),
|
68
|
+
]
|
69
|
+
ary = DTAS::TrimFX.schedule(fx)
|
70
|
+
assert_equal 2, ary.size
|
71
|
+
assert_equal [ 0.5, 1 ], ary[0].map(&:tbeg)
|
72
|
+
assert_equal [ 1.1 ], ary[1].map(&:tbeg)
|
73
|
+
|
74
|
+
ex = DTAS::TrimFX.expand(fx, 10)
|
75
|
+
assert_equal 2, ex.size
|
76
|
+
assert_equal 0, ex[0][0].tbeg
|
77
|
+
assert_equal 3, ex[0].size
|
78
|
+
assert_equal 0, ex[1][0].tbeg
|
79
|
+
assert_equal 3, ex[1].size
|
49
80
|
end
|
50
81
|
end
|
data/test/test_unixserver.rb
CHANGED
data/test/test_util.rb
CHANGED
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.8.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:
|
11
|
+
date: 2014-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |-
|
14
14
|
Free Software command-line tools for audio playback, mastering, and
|
@@ -89,7 +89,6 @@ files:
|
|
89
89
|
- lib/dtas/cue_index.rb
|
90
90
|
- lib/dtas/disclaimer.rb
|
91
91
|
- lib/dtas/edit_client.rb
|
92
|
-
- lib/dtas/fadefx.rb
|
93
92
|
- lib/dtas/format.rb
|
94
93
|
- lib/dtas/parse_time.rb
|
95
94
|
- lib/dtas/partstats.rb
|
@@ -143,7 +142,6 @@ files:
|
|
143
142
|
- test/player_integration.rb
|
144
143
|
- test/test_buffer.rb
|
145
144
|
- test/test_env.rb
|
146
|
-
- test/test_fadefx.rb
|
147
145
|
- test/test_format.rb
|
148
146
|
- test/test_format_change.rb
|
149
147
|
- test/test_player.rb
|
@@ -182,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
180
|
version: '0'
|
183
181
|
requirements: []
|
184
182
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.2
|
183
|
+
rubygems_version: 2.4.2
|
186
184
|
signing_key:
|
187
185
|
specification_version: 4
|
188
186
|
summary: duct tape audio suite for *nix
|
data/lib/dtas/fadefx.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
|
2
|
-
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
|
-
require_relative '../dtas'
|
4
|
-
require_relative 'parse_time'
|
5
|
-
|
6
|
-
class DTAS::FadeFX
|
7
|
-
include DTAS::ParseTime
|
8
|
-
attr_reader :out_prev, :in_main, :out_main, :in_next
|
9
|
-
F = Struct.new(:type, :len)
|
10
|
-
|
11
|
-
def initialize(args)
|
12
|
-
args =~ /\Afade=([^,]*),([^,]*);([^,]*),([^,]*)\z/ or
|
13
|
-
raise ArgumentError, "bad fade format"
|
14
|
-
fades = [ $1, $2, $3, $4 ]
|
15
|
-
%w(out_prev in_main out_main in_next).each do |iv|
|
16
|
-
instance_variable_set("@#{iv}", parse!(fades.shift))
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# q - quarter of a sine wave
|
21
|
-
# h - half a sine wave
|
22
|
-
# t - linear (`triangular') slope
|
23
|
-
# l - logarithmic
|
24
|
-
# p - inverted parabola
|
25
|
-
# default is 't' (sox defaults to 'l', but triangular makes more sense
|
26
|
-
# when concatenating
|
27
|
-
def parse!(str)
|
28
|
-
type = "t"
|
29
|
-
str.sub!(/\A([a-z])/, "") and type = $1
|
30
|
-
F[type, parse_time(str)]
|
31
|
-
end
|
32
|
-
end
|
data/test/test_fadefx.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
|
2
|
-
# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
|
3
|
-
require_relative 'helper'
|
4
|
-
require 'dtas/fadefx'
|
5
|
-
|
6
|
-
class TestFadeFX < Testcase
|
7
|
-
def test_fadefx
|
8
|
-
ffx = DTAS::FadeFX.new("fade=t1,t3.1;l4,t1")
|
9
|
-
assert_equal 't', ffx.out_prev.type
|
10
|
-
assert_equal 1, ffx.out_prev.len
|
11
|
-
assert_equal 't', ffx.in_main.type
|
12
|
-
assert_equal 3.1, ffx.in_main.len
|
13
|
-
assert_equal 'l', ffx.out_main.type
|
14
|
-
assert_equal 4, ffx.out_main.len
|
15
|
-
assert_equal 't', ffx.in_next.type
|
16
|
-
assert_equal 1, ffx.in_next.len
|
17
|
-
end
|
18
|
-
end
|