dtas 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/Documentation/.gitignore +1 -1
  4. data/Documentation/GNUmakefile +3 -1
  5. data/Documentation/dtas-archive.txt +61 -0
  6. data/Documentation/dtas-console.txt +4 -3
  7. data/Documentation/dtas-ctl.txt +4 -3
  8. data/Documentation/dtas-cueedit.txt +4 -3
  9. data/Documentation/dtas-enq.txt +4 -3
  10. data/Documentation/dtas-env.txt +60 -0
  11. data/Documentation/dtas-msinkctl.txt +4 -3
  12. data/Documentation/dtas-player.txt +6 -3
  13. data/Documentation/dtas-player_effects.txt +4 -3
  14. data/Documentation/dtas-player_protocol.txt +27 -4
  15. data/Documentation/dtas-player_sink_examples.txt +7 -3
  16. data/Documentation/dtas-sinkedit.txt +20 -3
  17. data/Documentation/dtas-sourceedit.txt +21 -3
  18. data/Documentation/dtas-splitfx.txt +14 -5
  19. data/Documentation/dtas-tl.txt +4 -3
  20. data/Documentation/dtas-xdelay.txt +4 -3
  21. data/Documentation/update-footer.rb +52 -0
  22. data/GIT-VERSION-GEN +2 -2
  23. data/GNUmakefile +1 -1
  24. data/HACKING +3 -2
  25. data/INSTALL +6 -6
  26. data/README +1 -1
  27. data/Rakefile +2 -3
  28. data/TODO +1 -1
  29. data/bin/dtas-archive +187 -0
  30. data/bin/dtas-console +7 -1
  31. data/bin/dtas-ctl +1 -1
  32. data/bin/dtas-cueedit +3 -3
  33. data/bin/dtas-enq +1 -1
  34. data/bin/dtas-msinkctl +1 -1
  35. data/bin/dtas-partstats +10 -4
  36. data/bin/dtas-player +1 -1
  37. data/bin/dtas-sinkedit +82 -20
  38. data/bin/dtas-sourceedit +64 -22
  39. data/bin/dtas-splitfx +1 -1
  40. data/bin/dtas-tl +1 -1
  41. data/bin/dtas-xdelay +1 -1
  42. data/dtas-linux.gemspec +1 -1
  43. data/dtas-mpris.gemspec +1 -1
  44. data/dtas.gemspec +1 -1
  45. data/examples/splitfx.sample.yml +11 -3
  46. data/examples/{trimfx.sample.yml → tfx.sample.yml} +1 -1
  47. data/lib/dtas.rb +2 -1
  48. data/lib/dtas/buffer.rb +5 -5
  49. data/lib/dtas/buffer/read_write.rb +8 -5
  50. data/lib/dtas/buffer/splice.rb +29 -8
  51. data/lib/dtas/command.rb +2 -2
  52. data/lib/dtas/compat_onenine.rb +1 -1
  53. data/lib/dtas/cue_index.rb +3 -1
  54. data/lib/dtas/disclaimer.rb +1 -1
  55. data/lib/dtas/edit_client.rb +1 -1
  56. data/lib/dtas/fadefx.rb +100 -0
  57. data/lib/dtas/format.rb +4 -2
  58. data/lib/dtas/parse_time.rb +3 -1
  59. data/lib/dtas/partstats.rb +8 -10
  60. data/lib/dtas/pipe.rb +2 -1
  61. data/lib/dtas/player.rb +33 -11
  62. data/lib/dtas/player/client_handler.rb +43 -8
  63. data/lib/dtas/process.rb +6 -14
  64. data/lib/dtas/replaygain.rb +3 -3
  65. data/lib/dtas/rg_state.rb +1 -1
  66. data/lib/dtas/serialize.rb +3 -1
  67. data/lib/dtas/sigevent.rb +1 -1
  68. data/lib/dtas/sigevent/efd.rb +5 -4
  69. data/lib/dtas/sigevent/pipe.rb +4 -1
  70. data/lib/dtas/sink.rb +4 -4
  71. data/lib/dtas/source.rb +1 -1
  72. data/lib/dtas/source/av.rb +2 -2
  73. data/lib/dtas/source/av_ff_common.rb +22 -11
  74. data/lib/dtas/source/cmd.rb +3 -3
  75. data/lib/dtas/source/common.rb +3 -2
  76. data/lib/dtas/source/ff.rb +2 -2
  77. data/lib/dtas/source/file.rb +22 -4
  78. data/lib/dtas/source/mp3gain.rb +1 -1
  79. data/lib/dtas/source/sox.rb +7 -7
  80. data/lib/dtas/source/splitfx.rb +99 -0
  81. data/lib/dtas/spawn_fix.rb +10 -0
  82. data/lib/dtas/splitfx.rb +63 -24
  83. data/lib/dtas/state_file.rb +3 -1
  84. data/lib/dtas/{trimfx.rb → tfx.rb} +50 -24
  85. data/lib/dtas/tracklist.rb +2 -1
  86. data/lib/dtas/unix_accepted.rb +2 -2
  87. data/lib/dtas/unix_client.rb +2 -2
  88. data/lib/dtas/unix_server.rb +1 -1
  89. data/lib/dtas/util.rb +1 -1
  90. data/lib/dtas/watchable.rb +54 -0
  91. data/lib/dtas/writable_iter.rb +2 -1
  92. data/lib/dtas/xs.rb +2 -2
  93. data/perl/dtas-graph +1 -1
  94. data/test/covshow.rb +1 -1
  95. data/test/helper.rb +1 -1
  96. data/test/player_integration.rb +1 -1
  97. data/test/test_buffer.rb +1 -1
  98. data/test/test_env.rb +1 -1
  99. data/test/test_fadefx.rb +45 -0
  100. data/test/test_format.rb +1 -1
  101. data/test/test_format_change.rb +1 -1
  102. data/test/test_player.rb +1 -1
  103. data/test/test_player_client_handler.rb +1 -1
  104. data/test/test_player_integration.rb +8 -8
  105. data/test/test_process.rb +1 -1
  106. data/test/test_rg_integration.rb +1 -1
  107. data/test/test_rg_state.rb +1 -1
  108. data/test/test_sink.rb +1 -1
  109. data/test/test_sink_pipe_size.rb +2 -2
  110. data/test/test_sink_tee_integration.rb +1 -1
  111. data/test/test_source_av.rb +1 -1
  112. data/test/test_source_sox.rb +1 -1
  113. data/test/test_splitfx.rb +43 -13
  114. data/test/test_tfx.rb +85 -0
  115. data/test/test_tracklist.rb +1 -1
  116. data/test/test_unixserver.rb +1 -1
  117. data/test/test_util.rb +1 -1
  118. metadata +17 -6
  119. data/lib/dtas/compat_rbx.rb +0 -12
  120. data/test/test_trimfx.rb +0 -81
@@ -0,0 +1,85 @@
1
+ # Copyright (C) 2013-2015 all contributors <dtas-all@nongnu.org>
2
+ # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
3
+ require './test/helper'
4
+ require 'dtas/tfx'
5
+ require 'dtas/format'
6
+ require 'yaml'
7
+
8
+ class TestTFX < Testcase
9
+ def rate
10
+ 44100
11
+ end
12
+
13
+ def test_example
14
+ ex = YAML.load(File.read("examples/tfx.sample.yml"))
15
+ effects = []
16
+ ex["effects"].each do |line|
17
+ words = Shellwords.split(line)
18
+ case words[0]
19
+ when "trim"
20
+ tfx = DTAS::TFX.new(words)
21
+ assert_equal 52 * rate, tfx.tbeg
22
+ assert_equal rate, tfx.tlen
23
+ effects << tfx
24
+ end
25
+ end
26
+ assert_equal 4, effects.size
27
+ end
28
+
29
+ def test_all
30
+ tfx = DTAS::TFX.new(%w(all))
31
+ assert_equal 0, tfx.tbeg
32
+ assert_nil tfx.tlen
33
+ assert_equal [], tfx.to_sox_arg
34
+ end
35
+
36
+ def test_time
37
+ tfx = DTAS::TFX.new(%w(trim 2:30 3.1))
38
+ assert_equal 150 * rate, tfx.tbeg
39
+ assert_equal((3.1 * rate).round, tfx.tlen)
40
+ end
41
+
42
+ def test_to_sox_arg
43
+ tfx = DTAS::TFX.new(%w(trim 1 0.5))
44
+ assert_equal %w(trim 44100s 22050s), tfx.to_sox_arg
45
+
46
+ tfx = DTAS::TFX.new(%w(trim 1 sox vol -1dB))
47
+ assert_equal %w(trim 44100s), tfx.to_sox_arg
48
+ end
49
+
50
+ def test_tfx_effects
51
+ tfx = DTAS::TFX.new(%w(trim 1 sox vol -1dB))
52
+ assert_equal %w(sox $SOXIN $SOXOUT $TRIMFX vol -1dB), tfx.cmd
53
+ end
54
+
55
+ def test_schedule_simple
56
+ fx = [
57
+ DTAS::TFX.new(%w(trim 1 0.3)),
58
+ DTAS::TFX.new(%w(trim 2 0.2)),
59
+ DTAS::TFX.new(%w(trim 0.5 0.5)),
60
+ ].shuffle
61
+ ary = DTAS::TFX.schedule(fx)
62
+ assert_operator 1, :==, ary.size
63
+ assert_equal [ 22050, 44100, 88200 ], ary[0].map(&:tbeg)
64
+ assert_equal [ 22050, 13230, 8820 ], ary[0].map(&:tlen)
65
+ end
66
+
67
+ def test_schedule_overlaps
68
+ fx = [
69
+ DTAS::TFX.new(%w(trim 1 0.3 sox)),
70
+ DTAS::TFX.new(%w(trim 1.1 0.2 sox)),
71
+ DTAS::TFX.new(%w(trim 0.5 0.5 sox)),
72
+ ]
73
+ ary = DTAS::TFX.schedule(fx)
74
+ assert_equal 2, ary.size
75
+ assert_equal [ 22050, 44100 ], ary[0].map(&:tbeg)
76
+ assert_equal [ 48510 ], ary[1].map(&:tbeg)
77
+
78
+ ex = DTAS::TFX.expand(fx, 10 * rate)
79
+ assert_equal 2, ex.size
80
+ assert_equal 0, ex[0][0].tbeg
81
+ assert_equal 3, ex[0].size
82
+ assert_equal 0, ex[1][0].tbeg
83
+ assert_equal 3, ex[1].size
84
+ end
85
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
1
+ # Copyright (C) 2013-2015 all contributors <dtas-all@nongnu.org>
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'
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
1
+ # Copyright (C) 2013-2015 all contributors <dtas-all@nongnu.org>
2
2
  # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
3
3
  require './test/helper'
4
4
  require 'tempfile'
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
1
+ # Copyright (C) 2013-2015 all contributors <dtas-all@nongnu.org>
2
2
  # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
3
3
  require './test/helper'
4
4
  require 'dtas/util'
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.9.0
4
+ version: 0.10.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: 2014-12-22 00:00:00.000000000 Z
11
+ date: 2015-04-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  Free Software command-line tools for audio playback, mastering, and
@@ -19,6 +19,7 @@ description: |-
19
19
  future.
20
20
  email: e@80x24.org
21
21
  executables:
22
+ - dtas-archive
22
23
  - dtas-console
23
24
  - dtas-ctl
24
25
  - dtas-cueedit
@@ -38,10 +39,12 @@ files:
38
39
  - COPYING
39
40
  - Documentation/.gitignore
40
41
  - Documentation/GNUmakefile
42
+ - Documentation/dtas-archive.txt
41
43
  - Documentation/dtas-console.txt
42
44
  - Documentation/dtas-ctl.txt
43
45
  - Documentation/dtas-cueedit.txt
44
46
  - Documentation/dtas-enq.txt
47
+ - Documentation/dtas-env.txt
45
48
  - Documentation/dtas-msinkctl.txt
46
49
  - Documentation/dtas-player.txt
47
50
  - Documentation/dtas-player_effects.txt
@@ -52,6 +55,7 @@ files:
52
55
  - Documentation/dtas-splitfx.txt
53
56
  - Documentation/dtas-tl.txt
54
57
  - Documentation/dtas-xdelay.txt
58
+ - Documentation/update-footer.rb
55
59
  - GIT-VERSION-FILE
56
60
  - GIT-VERSION-GEN
57
61
  - GNUmakefile
@@ -61,6 +65,7 @@ files:
61
65
  - README
62
66
  - Rakefile
63
67
  - TODO
68
+ - bin/dtas-archive
64
69
  - bin/dtas-console
65
70
  - bin/dtas-ctl
66
71
  - bin/dtas-cueedit
@@ -78,17 +83,17 @@ files:
78
83
  - dtas.gemspec
79
84
  - examples/README
80
85
  - examples/splitfx.sample.yml
81
- - examples/trimfx.sample.yml
86
+ - examples/tfx.sample.yml
82
87
  - lib/dtas.rb
83
88
  - lib/dtas/buffer.rb
84
89
  - lib/dtas/buffer/read_write.rb
85
90
  - lib/dtas/buffer/splice.rb
86
91
  - lib/dtas/command.rb
87
92
  - lib/dtas/compat_onenine.rb
88
- - lib/dtas/compat_rbx.rb
89
93
  - lib/dtas/cue_index.rb
90
94
  - lib/dtas/disclaimer.rb
91
95
  - lib/dtas/edit_client.rb
96
+ - lib/dtas/fadefx.rb
92
97
  - lib/dtas/format.rb
93
98
  - lib/dtas/parse_time.rb
94
99
  - lib/dtas/partstats.rb
@@ -112,20 +117,25 @@ files:
112
117
  - lib/dtas/source/file.rb
113
118
  - lib/dtas/source/mp3gain.rb
114
119
  - lib/dtas/source/sox.rb
120
+ - lib/dtas/source/splitfx.rb
121
+ - lib/dtas/spawn_fix.rb
115
122
  - lib/dtas/splitfx.rb
116
123
  - lib/dtas/state_file.rb
124
+ - lib/dtas/tfx.rb
117
125
  - lib/dtas/tracklist.rb
118
- - lib/dtas/trimfx.rb
119
126
  - lib/dtas/unix_accepted.rb
120
127
  - lib/dtas/unix_client.rb
121
128
  - lib/dtas/unix_server.rb
122
129
  - lib/dtas/util.rb
123
130
  - lib/dtas/version.rb
131
+ - lib/dtas/watchable.rb
124
132
  - lib/dtas/writable_iter.rb
125
133
  - lib/dtas/xs.rb
134
+ - man/dtas-archive.1
126
135
  - man/dtas-console.1
127
136
  - man/dtas-ctl.1
128
137
  - man/dtas-enq.1
138
+ - man/dtas-env.7
129
139
  - man/dtas-msinkctl.1
130
140
  - man/dtas-player.1
131
141
  - man/dtas-player_protocol.7
@@ -142,6 +152,7 @@ files:
142
152
  - test/player_integration.rb
143
153
  - test/test_buffer.rb
144
154
  - test/test_env.rb
155
+ - test/test_fadefx.rb
145
156
  - test/test_format.rb
146
157
  - test/test_format_change.rb
147
158
  - test/test_player.rb
@@ -156,8 +167,8 @@ files:
156
167
  - test/test_source_av.rb
157
168
  - test/test_source_sox.rb
158
169
  - test/test_splitfx.rb
170
+ - test/test_tfx.rb
159
171
  - test/test_tracklist.rb
160
- - test/test_trimfx.rb
161
172
  - test/test_unixserver.rb
162
173
  - test/test_util.rb
163
174
  homepage: http://dtas.80x24.org/
@@ -1,12 +0,0 @@
1
- # Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
2
- # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
3
-
4
- # ref: https://github.com/rubysl/rubysl-io-wait/issues/1
5
- # this ignores buffers and is Linux-only
6
- class IO
7
- def nread
8
- buf = "\0" * 8
9
- ioctl(0x541B, buf)
10
- buf.unpack("l_")[0]
11
- end
12
- end if ! IO.method_defined?(:nread) && RUBY_PLATFORM =~ /linux/
@@ -1,81 +0,0 @@
1
- # Copyright (C) 2013-2014, Eric Wong <e@80x24.org> and all contributors
2
- # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
3
- require './test/helper'
4
- require 'dtas/trimfx'
5
- require 'dtas/format'
6
- require 'yaml'
7
-
8
- class TestTrimFX < Testcase
9
- def test_example
10
- ex = YAML.load(File.read("examples/trimfx.sample.yml"))
11
- effects = []
12
- ex["effects"].each do |line|
13
- words = Shellwords.split(line)
14
- case words[0]
15
- when "trim"
16
- tfx = DTAS::TrimFX.new(words)
17
- assert_equal 52.0, tfx.tbeg
18
- assert_equal 1.0, tfx.tlen
19
- effects << tfx
20
- end
21
- end
22
- assert_equal 4, effects.size
23
- end
24
-
25
- def test_all
26
- tfx = DTAS::TrimFX.new(%w(all))
27
- assert_equal 0, tfx.tbeg
28
- assert_nil tfx.tlen
29
- assert_equal [], tfx.to_sox_arg(DTAS::Format.new)
30
- end
31
-
32
- def test_time
33
- tfx = DTAS::TrimFX.new(%w(trim 2:30 3.1))
34
- assert_equal 150, tfx.tbeg
35
- assert_equal 3.1, tfx.tlen
36
- end
37
-
38
- def test_to_sox_arg
39
- tfx = DTAS::TrimFX.new(%w(trim 1 0.5))
40
- assert_equal %w(trim 44100s 22050s), tfx.to_sox_arg(DTAS::Format.new)
41
-
42
- tfx = DTAS::TrimFX.new(%w(trim 1 sox vol -1dB))
43
- assert_equal %w(trim 44100s), tfx.to_sox_arg(DTAS::Format.new)
44
- end
45
-
46
- def test_tfx_effects
47
- tfx = DTAS::TrimFX.new(%w(trim 1 sox 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
80
- end
81
- end