dtas 0.16.1 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Documentation/GNUmakefile +1 -1
- data/Documentation/dtas-archive.pod +1 -1
- data/Documentation/dtas-console.pod +1 -1
- data/Documentation/dtas-ctl.pod +1 -1
- data/Documentation/dtas-cueedit.pod +1 -1
- data/Documentation/dtas-enq.pod +1 -1
- data/Documentation/dtas-env.pod +2 -2
- data/Documentation/dtas-msinkctl.pod +1 -1
- data/Documentation/dtas-player.pod +1 -1
- data/Documentation/dtas-player_effects.pod +1 -1
- data/Documentation/dtas-player_protocol.pod +3 -3
- data/Documentation/dtas-player_sink_examples.pod +1 -1
- data/Documentation/dtas-sinkedit.pod +2 -2
- data/Documentation/dtas-sourceedit.pod +2 -2
- data/Documentation/dtas-tl.pod +3 -3
- data/Documentation/dtas-xdelay.pod +1 -1
- data/Documentation/update-footer.rb +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/HACKING +1 -1
- data/INSTALL +3 -3
- data/README +1 -1
- data/TODO +3 -1
- data/bin/dtas-console +3 -8
- data/bin/dtas-readahead +2 -2
- data/dtas-linux.gemspec +1 -1
- data/dtas-mpris.gemspec +1 -1
- data/dtas.gemspec +1 -1
- data/examples/zsh-completion/README +3 -0
- data/examples/zsh-completion/_dtas-archive +16 -0
- data/examples/zsh-completion/_dtas-ctl +114 -0
- data/examples/zsh-completion/_dtas-cueedit +7 -0
- data/examples/zsh-completion/_dtas-enq +7 -0
- data/examples/zsh-completion/_dtas-mlib +29 -0
- data/examples/zsh-completion/_dtas-msinkctl +8 -0
- data/examples/zsh-completion/_dtas-partstats +7 -0
- data/examples/zsh-completion/_dtas-sinkedit +11 -0
- data/examples/zsh-completion/_dtas-sourceedit +11 -0
- data/examples/zsh-completion/_dtas-splitfx +17 -0
- data/examples/zsh-completion/_dtas-tl +52 -0
- data/examples/zsh-completion/_dtas-xdelay +17 -0
- data/lib/dtas.rb +1 -1
- data/lib/dtas/buffer/splice.rb +6 -4
- data/lib/dtas/player.rb +2 -2
- data/perl/dtas-graph +7 -2
- metadata +17 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: db19072a9f74af0a63fe5d9d2656b06643acba7e3a64d99de59548583bf535c1
|
|
4
|
+
data.tar.gz: 751bdfe20a0ac951a32587a68d1adb860255be610644fd8605f3010c82cc6196
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4cd403005637338693031ef441170a7fe1e7da77e86e826b3650e7d70344bafe9b3546c2873003f742da583457de7a544b24007dfecf017f7edd364edd05ce83
|
|
7
|
+
data.tar.gz: 282169bd243e103b3fea0398a31671e89c0c9ebba972d7924c4eb9542471410c9dcfa1f1b1c9fa2d0872145cd576aca528e96ec9d746bb889ac7eb5c96e4e286
|
data/Documentation/GNUmakefile
CHANGED
|
@@ -65,7 +65,7 @@ License: GPL-3.0+ L<https://www.gnu.org/licenses/gpl-3.0.txt>
|
|
|
65
65
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
66
66
|
|
|
67
67
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
68
|
-
and L<
|
|
68
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
69
69
|
|
|
70
70
|
No subscription is necessary to post to the mailing list.
|
|
71
71
|
|
|
@@ -78,7 +78,7 @@ a problem.
|
|
|
78
78
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
79
79
|
|
|
80
80
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
81
|
-
and L<
|
|
81
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
82
82
|
|
|
83
83
|
No subscription is necessary to post to the mailing list.
|
|
84
84
|
|
data/Documentation/dtas-ctl.pod
CHANGED
|
@@ -62,7 +62,7 @@ This defaults to ~/.dtas/player.sock
|
|
|
62
62
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
63
63
|
|
|
64
64
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
65
|
-
and L<
|
|
65
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
66
66
|
|
|
67
67
|
No subscription is necessary to post to the mailing list.
|
|
68
68
|
|
|
@@ -23,7 +23,7 @@ VISUAL / EDITOR - your favorite *nix text editor, defaults to 'vi' if unset.
|
|
|
23
23
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
24
24
|
|
|
25
25
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
26
|
-
and L<
|
|
26
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
27
27
|
|
|
28
28
|
No subscription is necessary to post to the mailing list.
|
|
29
29
|
|
data/Documentation/dtas-enq.pod
CHANGED
|
@@ -28,7 +28,7 @@ This defaults to ~/.dtas/player.sock
|
|
|
28
28
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
29
29
|
|
|
30
30
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
31
|
-
and L<
|
|
31
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
32
32
|
|
|
33
33
|
No subscription is necessary to post to the mailing list.
|
|
34
34
|
|
data/Documentation/dtas-env.pod
CHANGED
|
@@ -10,7 +10,7 @@ As dtas uses Bourne shell and exposes it to users, dtas should have
|
|
|
10
10
|
a cohesive set of common environment variables across its audio
|
|
11
11
|
production and playback environments. This attempts to document
|
|
12
12
|
them. Most of these environments are set and managed by dtas
|
|
13
|
-
itself, but users editing commands (e.g. via L<dtas-sourcedit(1)>
|
|
13
|
+
itself, but users editing commands (e.g. via L<dtas-sourcedit(1)>)
|
|
14
14
|
should be aware of them.
|
|
15
15
|
|
|
16
16
|
=head1 ENVIRONMENT
|
|
@@ -64,7 +64,7 @@ temporary files are placed for most programs.
|
|
|
64
64
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
65
65
|
|
|
66
66
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
67
|
-
and L<
|
|
67
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
68
68
|
|
|
69
69
|
No subscription is necessary to post to the mailing list.
|
|
70
70
|
|
|
@@ -45,7 +45,7 @@ This defaults to ~/.dtas/player.sock
|
|
|
45
45
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
46
46
|
|
|
47
47
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
48
|
-
and L<
|
|
48
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
49
49
|
|
|
50
50
|
No subscription is necessary to post to the mailing list.
|
|
51
51
|
|
|
@@ -109,7 +109,7 @@ state across restarts of dtas-player.
|
|
|
109
109
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
110
110
|
|
|
111
111
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
112
|
-
and L<
|
|
112
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
113
113
|
|
|
114
114
|
No subscription is necessary to post to the mailing list.
|
|
115
115
|
|
|
@@ -92,7 +92,7 @@ playback hardware are applied at the sink:
|
|
|
92
92
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
93
93
|
|
|
94
94
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
95
|
-
and L<
|
|
95
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
96
96
|
|
|
97
97
|
No subscription is necessary to post to the mailing list.
|
|
98
98
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
=head1 NAME
|
|
4
4
|
|
|
5
|
-
dtas-player_protocol - protocol for
|
|
5
|
+
dtas-player_protocol - protocol for controlling dtas-player
|
|
6
6
|
|
|
7
7
|
=head1 DESCRIPTION
|
|
8
8
|
|
|
@@ -382,7 +382,7 @@ Clear current tracklist
|
|
|
382
382
|
|
|
383
383
|
Show/or change consume status of the tracklist. Enabling this causes
|
|
384
384
|
tracks to be deleted from the tracklist after they are played or skipped.
|
|
385
|
-
With no args, this will show "true" or "false
|
|
385
|
+
With no args, this will show "true" or "false"
|
|
386
386
|
|
|
387
387
|
=item tl current
|
|
388
388
|
|
|
@@ -464,7 +464,7 @@ another client socket to issue non-watch commands.
|
|
|
464
464
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
465
465
|
|
|
466
466
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
467
|
-
and L<
|
|
467
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
468
468
|
|
|
469
469
|
No subscription is necessary to post to the mailing list.
|
|
470
470
|
|
|
@@ -71,7 +71,7 @@ See L<dtas-xdelay(1)>.
|
|
|
71
71
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
72
72
|
|
|
73
73
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
74
|
-
and L<
|
|
74
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
75
75
|
|
|
76
76
|
No subscription is necessary to post to the mailing list.
|
|
77
77
|
|
|
@@ -14,7 +14,7 @@ dtas-sinkedit spawns an editor to allow editing of a sink as a YAML file.
|
|
|
14
14
|
See L<dtas-player_protocol(7)> for details on SINKARGS.
|
|
15
15
|
|
|
16
16
|
On Linux machines with the sleepy_penguin RubyGem installed, L<inotify(7)>
|
|
17
|
-
is used to monitor the file for changes while the text
|
|
17
|
+
is used to monitor the file for changes while the text editor is running.
|
|
18
18
|
Each time a user finishes saving a file, changes are committed immediately.
|
|
19
19
|
This behavior may be disabled by using the -N or --no-watch command-line
|
|
20
20
|
switch.
|
|
@@ -64,7 +64,7 @@ This defaults to ~/.dtas/player.sock
|
|
|
64
64
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
65
65
|
|
|
66
66
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
67
|
-
and L<
|
|
67
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
68
68
|
|
|
69
69
|
No subscription is necessary to post to the mailing list.
|
|
70
70
|
|
|
@@ -17,7 +17,7 @@ non-interactively. This is useful for loading various profiles from the
|
|
|
17
17
|
filesystem.
|
|
18
18
|
|
|
19
19
|
On Linux machines with the sleepy_penguin RubyGem installed, L<inotify(7)>
|
|
20
|
-
is used to monitor the file for changes while the text
|
|
20
|
+
is used to monitor the file for changes while the text editor is running.
|
|
21
21
|
Each time a user finishes saving a file, changes are committed immediately.
|
|
22
22
|
This behavior may be disabled by using the -N or --no-watch command-line
|
|
23
23
|
switch.
|
|
@@ -71,7 +71,7 @@ This defaults to ~/.dtas/player.sock
|
|
|
71
71
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
72
72
|
|
|
73
73
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
74
|
-
and L<
|
|
74
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
75
75
|
|
|
76
76
|
No subscription is necessary to post to the mailing list.
|
|
77
77
|
|
data/Documentation/dtas-tl.pod
CHANGED
|
@@ -29,7 +29,7 @@ client).
|
|
|
29
29
|
=item consume [BOOLEAN] - show, enable, or disable consume mode
|
|
30
30
|
|
|
31
31
|
Enabling "consume" mode causes tracks to be removed when they are
|
|
32
|
-
done playing (or skipped.
|
|
32
|
+
done playing (or skipped).
|
|
33
33
|
|
|
34
34
|
=item current - display the current track, "NONE" if not playing
|
|
35
35
|
|
|
@@ -78,7 +78,7 @@ display the current tracklist
|
|
|
78
78
|
|
|
79
79
|
$ dtas-tl cat
|
|
80
80
|
|
|
81
|
-
to add an
|
|
81
|
+
to add an entire directory of FLAC files
|
|
82
82
|
|
|
83
83
|
$ dtas-tl addtail /path/to/directory/*.flac
|
|
84
84
|
|
|
@@ -114,7 +114,7 @@ This defaults to ~/.dtas/player.sock
|
|
|
114
114
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
115
115
|
|
|
116
116
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
117
|
-
and L<
|
|
117
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
118
118
|
|
|
119
119
|
No subscription is necessary to post to the mailing list.
|
|
120
120
|
|
|
@@ -80,7 +80,7 @@ are greatly appreciated.
|
|
|
80
80
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
81
81
|
|
|
82
82
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
83
|
-
and L<
|
|
83
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
84
84
|
|
|
85
85
|
No subscription is necessary to post to the mailing list.
|
|
86
86
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
All feedback welcome via plain-text mail to: L<mailto:dtas-all@nongnu.org>
|
|
7
7
|
|
|
8
8
|
Mailing list archives available at L<https://80x24.org/dtas-all/>
|
|
9
|
-
and L<
|
|
9
|
+
and L<https://lists.gnu.org/archive/html/dtas-all/>
|
|
10
10
|
|
|
11
11
|
No subscription is necessary to post to the mailing list.
|
|
12
12
|
}
|
data/GIT-VERSION-GEN
CHANGED
data/HACKING
CHANGED
|
@@ -18,7 +18,7 @@ developers do. Please send patches via git-send-email(1) to the public
|
|
|
18
18
|
mailing list at <dtas-all@nongnu.org>. Pull requests should be
|
|
19
19
|
formatted using git-request-pull(1).\
|
|
20
20
|
Mailing list archives available at <https://80x24.org/dtas-all/> and
|
|
21
|
-
<
|
|
21
|
+
<https://lists.gnu.org/archive/html/dtas-all/>\
|
|
22
22
|
No subscription is necessary to post to the mailing list.
|
|
23
23
|
|
|
24
24
|
# COPYRIGHT
|
data/INSTALL
CHANGED
|
@@ -39,10 +39,10 @@ For future upgrades of dtas (upgrades to dtas-linux will be infrequent)
|
|
|
39
39
|
|
|
40
40
|
Grab the latest tarball from our HTTPS site:
|
|
41
41
|
|
|
42
|
-
https://80x24.org/dtas/2019/dtas-0.
|
|
42
|
+
https://80x24.org/dtas/2019/dtas-0.17.0.tar.gz
|
|
43
43
|
|
|
44
|
-
$ tar zxvf dtas-0.
|
|
45
|
-
$ cd dtas-0.
|
|
44
|
+
$ tar zxvf dtas-0.17.0.tar.gz
|
|
45
|
+
$ cd dtas-0.17.0
|
|
46
46
|
$ sudo ruby setup.rb
|
|
47
47
|
|
|
48
48
|
GNU/Linux users may optionally install the "sleepy_penguin" package:
|
data/README
CHANGED
|
@@ -25,7 +25,7 @@ for audio. dtas-player supports:
|
|
|
25
25
|
* ReplayGain (including fallback gain and peak normalization)
|
|
26
26
|
|
|
27
27
|
dtas-player is a *nix pipeline and process manager. It may be used
|
|
28
|
-
spawn and pipe to
|
|
28
|
+
spawn and pipe to arbitrary Unix commands, not just audio-related
|
|
29
29
|
commands. It can interactively restart/replace the source (audio
|
|
30
30
|
decoder) component of a pipeline while keeping the sink (playback
|
|
31
31
|
endpoint) running.
|
data/TODO
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
* tests for bin/*
|
|
5
5
|
|
|
6
|
+
* consider rewriting piecemeal in a more stable glue language than Ruby
|
|
7
|
+
|
|
6
8
|
# COPYRIGHT
|
|
7
9
|
|
|
8
|
-
Copyright 2013-
|
|
10
|
+
Copyright 2013-2019 all contributors <dtas-all@nongnu.org>
|
|
9
11
|
License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
|
data/bin/dtas-console
CHANGED
|
@@ -53,8 +53,6 @@ def update_tfmt(prec, tsec)
|
|
|
53
53
|
events = []
|
|
54
54
|
interval = 1.0 / 10 ** prec_nr
|
|
55
55
|
|
|
56
|
-
pause = nil
|
|
57
|
-
|
|
58
56
|
def show_events(lineno, screen, events)
|
|
59
57
|
Curses.setpos(lineno += 1, 0)
|
|
60
58
|
Curses.clrtoeol
|
|
@@ -121,7 +119,6 @@ def may_fail(res, events)
|
|
|
121
119
|
pre_mute_vol = 1.0
|
|
122
120
|
enc_locale = Encoding.find("locale")
|
|
123
121
|
$stdout.set_encoding(enc_locale)
|
|
124
|
-
enc_opts = { undef: :replace, invalid: :replace, replace: '?' }
|
|
125
122
|
begin
|
|
126
123
|
Curses.init_screen
|
|
127
124
|
Curses.nonl
|
|
@@ -135,7 +132,6 @@ def may_fail(res, events)
|
|
|
135
132
|
pfmt = cur['format']
|
|
136
133
|
elapsed = samples = 0
|
|
137
134
|
fmt = total = ''
|
|
138
|
-
paused = false
|
|
139
135
|
if current = cur['current']
|
|
140
136
|
infile = current['infile'] || current['command']
|
|
141
137
|
elapsed = DTAS.now - current['spawn_at']
|
|
@@ -150,7 +146,6 @@ def may_fail(res, events)
|
|
|
150
146
|
end
|
|
151
147
|
elsif cur['paused'] && infile = cur['current_paused']
|
|
152
148
|
fmt = "[paused] (#{fmt_to_s(pfmt)})"
|
|
153
|
-
paused = true
|
|
154
149
|
infile = infile['command'] if Hash === infile
|
|
155
150
|
if Array === infile
|
|
156
151
|
infile, elapsed = infile
|
|
@@ -169,7 +164,8 @@ def may_fail(res, events)
|
|
|
169
164
|
# FS encoding != locale encoding, but we need to display an FS path
|
|
170
165
|
# name to whatever locale the terminal is encoded to, so force it
|
|
171
166
|
# and risk mojibake...
|
|
172
|
-
infile.encode(enc_locale,
|
|
167
|
+
infile.encode(enc_locale,
|
|
168
|
+
undef: :replace, invalid: :replace, replace: '?')
|
|
173
169
|
Curses.setpos(lineno += 1, 0)
|
|
174
170
|
Curses.clrtoeol
|
|
175
171
|
Curses.addstr(infile)
|
|
@@ -220,10 +216,9 @@ def may_fail(res, events)
|
|
|
220
216
|
case event
|
|
221
217
|
when "pause"
|
|
222
218
|
if current
|
|
223
|
-
|
|
219
|
+
current['infile'] || current['command']
|
|
224
220
|
end
|
|
225
221
|
when %r{\Afile }
|
|
226
|
-
pause = nil
|
|
227
222
|
end
|
|
228
223
|
events << "#{Time.now.strftime(tfmt)} #{event}"
|
|
229
224
|
# something happened, refresh current
|
data/bin/dtas-readahead
CHANGED
|
@@ -57,7 +57,7 @@ def seek_to_cur_pos(cur_pid, fp)
|
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
rescue Errno::ENOENT => e # race, process is dead
|
|
60
|
-
return
|
|
60
|
+
return nil
|
|
61
61
|
rescue => e
|
|
62
62
|
warn "error reading FDs from for PID:#{cur_pid}: #{e.message}"
|
|
63
63
|
end
|
|
@@ -71,7 +71,7 @@ def seek_to_cur_pos(cur_pid, fp)
|
|
|
71
71
|
end
|
|
72
72
|
pos
|
|
73
73
|
rescue Errno::ENOENT => e # race, process is dead
|
|
74
|
-
return
|
|
74
|
+
return nil
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def children_of(ppid)
|
data/dtas-linux.gemspec
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"via tee(), splice() and eventfd() on Linux"
|
|
13
13
|
s.email = %q{e@80x24.org}
|
|
14
14
|
s.files = []
|
|
15
|
-
s.homepage = 'https://80x24.org/dtas/'
|
|
15
|
+
s.homepage = 'https://80x24.org/dtas.git/about/'
|
|
16
16
|
s.add_dependency(%q<dtas>, '~> 0.16')
|
|
17
17
|
s.add_dependency(%q<sleepy_penguin>, '~> 3.5')
|
|
18
18
|
s.licenses = 'GPL-3.0+'
|
data/dtas-mpris.gemspec
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"This is currently a dummy package as dtas-mpris is not implemented"
|
|
12
12
|
s.email = %q{e@80x24.org}
|
|
13
13
|
s.files = []
|
|
14
|
-
s.homepage = 'https://80x24.org/dtas/'
|
|
14
|
+
s.homepage = 'https://80x24.org/dtas.git/about/'
|
|
15
15
|
s.add_dependency(%q<dtas>)
|
|
16
16
|
s.add_dependency(%q<ruby-dbus>)
|
|
17
17
|
s.licenses = 'GPL-2.0+'
|
data/dtas.gemspec
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
s.email = %q{e@80x24.org}
|
|
11
11
|
s.executables = manifest.grep(%r{\Abin/}).map { |s| s.sub(%r{\Abin/}, "") }
|
|
12
12
|
s.files = manifest
|
|
13
|
-
s.homepage = 'https://80x24.org/dtas/'
|
|
13
|
+
s.homepage = 'https://80x24.org/dtas.git/about/'
|
|
14
14
|
s.licenses = "GPL-3.0+"
|
|
15
15
|
s.required_ruby_version = '>= 1.9.3'
|
|
16
16
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#compdef dtas-archive
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
|
|
6
|
+
_arguments -S \
|
|
7
|
+
"--type=[file type]" \
|
|
8
|
+
"--compression=[compression factor for sox]:select compression:({0..8})" \
|
|
9
|
+
"--jobs=[number of jobs]: :_guard '[0-9]#' value" \
|
|
10
|
+
"--stats[save stats on the file]" \
|
|
11
|
+
"--keep-going[continue after error]" \
|
|
12
|
+
"--dry-run[only print commands, do not run them]" \
|
|
13
|
+
"--repeat=[number of times to check]: :_guard '[0-9]#' value" \
|
|
14
|
+
"--help[display help message]" \
|
|
15
|
+
":select source:_files" \
|
|
16
|
+
":select destination:_files"
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#compdef dtas-ctl
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
|
|
6
|
+
_arguments \
|
|
7
|
+
':dtas-ctl command:((
|
|
8
|
+
cd\:"change the current working directory of the player"
|
|
9
|
+
clear\:"clear current queue"
|
|
10
|
+
cue\:"display the index/offsets of the embedded CUE sheet"
|
|
11
|
+
current\:"output information about the current track/command in YAML"
|
|
12
|
+
enq\:"enqueue the given FILENAME for playback"
|
|
13
|
+
enq-cmd\:"run the following command for playback"
|
|
14
|
+
env\:"set/unset environment variables"
|
|
15
|
+
format\:"configure the format between source and sink"
|
|
16
|
+
pause\:"pause playback"
|
|
17
|
+
play\:"restart playback from pause"
|
|
18
|
+
play_pause\:"toggle the play/pause state"
|
|
19
|
+
queue\ cat\:"dump the contents of the queue as YAML"
|
|
20
|
+
restart\:"restarts all processes in the current pipeline"
|
|
21
|
+
rg\:"configure ReplayGain support"
|
|
22
|
+
seek\:"seek the current track to a specified time"
|
|
23
|
+
skip\:"abort current track/command"
|
|
24
|
+
sink\:"control sinks"
|
|
25
|
+
source\:"control sources"
|
|
26
|
+
state\ dump\:"immediately dump the state of the player"
|
|
27
|
+
tl\:"control tracklist"
|
|
28
|
+
trim\:"limits playback of all tracks in the tracklist"
|
|
29
|
+
watch\:"adds the client to the passive watch list for notifications"
|
|
30
|
+
))' \
|
|
31
|
+
"*::subcmd:->subcmd" && return 0
|
|
32
|
+
|
|
33
|
+
case "$words[1]" in
|
|
34
|
+
(cd)
|
|
35
|
+
_arguments \
|
|
36
|
+
":select dir:_path_files -/"
|
|
37
|
+
;;
|
|
38
|
+
(cue)
|
|
39
|
+
_arguments \
|
|
40
|
+
':dtas-ctl command:((
|
|
41
|
+
next\:"skip to the next cue sheet offset"
|
|
42
|
+
prev\:"skip to the previous cue sheet offset"
|
|
43
|
+
goto\:"go to the cue index"
|
|
44
|
+
seek\:"seek within the current cue index"
|
|
45
|
+
))'
|
|
46
|
+
;;
|
|
47
|
+
(enq)
|
|
48
|
+
_arguments \
|
|
49
|
+
"*:select file:_files"
|
|
50
|
+
;;
|
|
51
|
+
(format)
|
|
52
|
+
_arguments \
|
|
53
|
+
'*:dtas-ctl format command:((
|
|
54
|
+
channels\:"number of channels to use internally"
|
|
55
|
+
endian\:"change endianess"
|
|
56
|
+
bits\:"sample precision"
|
|
57
|
+
rate\:"sample rate of audio"
|
|
58
|
+
type\:"change the raw PCM format"
|
|
59
|
+
))'
|
|
60
|
+
;;
|
|
61
|
+
(seek)
|
|
62
|
+
_arguments \
|
|
63
|
+
":select track:_guard '[0-9]#' 'track number'"
|
|
64
|
+
;;
|
|
65
|
+
(sink)
|
|
66
|
+
_arguments \
|
|
67
|
+
':sink subcommand:((
|
|
68
|
+
ls\:"list names of current sinks"
|
|
69
|
+
cat\:"dump SINKNAME config in YAML"
|
|
70
|
+
rm\:"remove SINKNAME"
|
|
71
|
+
ed\:"create/edit SINKNAME"
|
|
72
|
+
))'
|
|
73
|
+
;;
|
|
74
|
+
(source)
|
|
75
|
+
_arguments \
|
|
76
|
+
':source subcommand:((
|
|
77
|
+
cat\:"dump the current source command and env in YAML"
|
|
78
|
+
ed\:"edit the source parameters"
|
|
79
|
+
ls\:"dump the names of sources sorted by tryorder"
|
|
80
|
+
restart\:"restart the current source command"
|
|
81
|
+
))'
|
|
82
|
+
;;
|
|
83
|
+
(state dump)
|
|
84
|
+
_arguments \
|
|
85
|
+
":select file:_files"
|
|
86
|
+
;;
|
|
87
|
+
(tl)
|
|
88
|
+
_arguments \
|
|
89
|
+
':tl subcommand:((
|
|
90
|
+
add\:"add files to the tracklist"
|
|
91
|
+
clear\:"clear current tracklist"
|
|
92
|
+
consume\:"show/or change consume status of the tracklist"
|
|
93
|
+
current\:"display the pathname to the currently playing track"
|
|
94
|
+
current-id\:"display the TRACKID of the currently playing track"
|
|
95
|
+
remove\:"remove the track with the given TRACKID from the track list"
|
|
96
|
+
get\:"returns a list of TRACKIDS mapped to shell-escaped filenames"
|
|
97
|
+
goto\:"plays the given TRACKID"
|
|
98
|
+
max\:"sets or gets the maximum number of tracks allowed in the tracklist"
|
|
99
|
+
next\:"jump to the next track in the tracklist"
|
|
100
|
+
prev\:"jump to the previous track in the tracklist"
|
|
101
|
+
repeat\:"show/or change repeat status of the tracklist"
|
|
102
|
+
shuffle\:"show/or change the current shuffle status of the tracklist"
|
|
103
|
+
swap\:"swaps the positions of two tracks"
|
|
104
|
+
tracks\:"returns a list of all TRACKIDS in the tracklist"
|
|
105
|
+
))'
|
|
106
|
+
;;
|
|
107
|
+
(trim)
|
|
108
|
+
_arguments \
|
|
109
|
+
":select beginning" \
|
|
110
|
+
":select end"
|
|
111
|
+
;;
|
|
112
|
+
(*)
|
|
113
|
+
;;
|
|
114
|
+
esac
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#compdef dtas-mlib
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
#
|
|
6
|
+
_arguments \
|
|
7
|
+
"--database=[database]:select file:_files" \
|
|
8
|
+
"--force[force updates]" \
|
|
9
|
+
"--help[display help message]" \
|
|
10
|
+
':dtas-mlib action:((
|
|
11
|
+
dump\:"dump database"
|
|
12
|
+
search\:"search database"
|
|
13
|
+
stats\:"display statistics"
|
|
14
|
+
update\:"migrate database"
|
|
15
|
+
))' \
|
|
16
|
+
"*::subcmd:->subcmd" && return 0
|
|
17
|
+
|
|
18
|
+
case "$words[1]" in
|
|
19
|
+
(dump|update)
|
|
20
|
+
_arguments -S \
|
|
21
|
+
":select directory:_path_files -/"
|
|
22
|
+
;;
|
|
23
|
+
(search)
|
|
24
|
+
_arguments -S \
|
|
25
|
+
"*:search term:"
|
|
26
|
+
;;
|
|
27
|
+
(*)
|
|
28
|
+
;;
|
|
29
|
+
esac
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#compdef dtas-msinkctl
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
|
|
6
|
+
_arguments \
|
|
7
|
+
"1:select action:(active{,-{set,add,sub}} nonblock)" \
|
|
8
|
+
"*:select sink:($(dtas-ctl sink ls 2> /dev/null))"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#compdef dtas-sinkedit
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
|
|
6
|
+
_arguments \
|
|
7
|
+
"--no-watch[disable inotify support]" \
|
|
8
|
+
"--dry-run[only print commands, do not run them]" \
|
|
9
|
+
"--verbose[print out commands sent to change the sink]" \
|
|
10
|
+
"--help[display help message]" \
|
|
11
|
+
":select sink:($(dtas-ctl sink ls 2> /dev/null))"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#compdef dtas-sourceedit
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
|
|
6
|
+
_arguments \
|
|
7
|
+
"--no-watch[disable inotify support]" \
|
|
8
|
+
"--dry-run[only print commands, do not run them]" \
|
|
9
|
+
"--verbose[print out commands sent to change the source]" \
|
|
10
|
+
"--help[display help message]" \
|
|
11
|
+
":select source:($(dtas-ctl source ls 2> /dev/null))"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#compdef dtas-splitfx
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
|
|
6
|
+
_arguments -S \
|
|
7
|
+
"--dry-run[only print commands, do not run them]" \
|
|
8
|
+
"--jobs=[number of jobs]: :_guard '[0-9]#' value" \
|
|
9
|
+
"--no-dither[don't apply sox dithering]" \
|
|
10
|
+
"--outdir=[select output directory]:select directory:_path_files -/" \
|
|
11
|
+
"--compression=[compression factor for sox]:select compression:({0..8})" \
|
|
12
|
+
"--rate=[sample rate of audio]:select sample rate:(22050 44100 48000)" \
|
|
13
|
+
"--bits=[sample precision]:select precision:(8 16 24)" \
|
|
14
|
+
"--trim=[sections of audio to cut]:select sections:_guard '[0-9,]#' 'value'" \
|
|
15
|
+
"--sox-pipe[use as pipeline]" \
|
|
16
|
+
'1:select splitfx file:_files -g "*.yml"' \
|
|
17
|
+
"*:select file:_files"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#compdef dtas-tl
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
|
|
6
|
+
_arguments \
|
|
7
|
+
':dtas-tl command:((
|
|
8
|
+
aac\:"add tracks after current track in the tracklist"
|
|
9
|
+
addhead\:"add tracks to the beginning of the tracklist"
|
|
10
|
+
addtail\:"add tracks to the end of the tracklist"
|
|
11
|
+
consume\:"enabling \"consume\" mode"
|
|
12
|
+
current\:"display the current track"
|
|
13
|
+
current-id\:"display the track of the current track"
|
|
14
|
+
cat\:"display a tracklist"
|
|
15
|
+
clear\:"remove all tracks from the tracklist"
|
|
16
|
+
edit\:"spawn an editor to allow editing the tracklist"
|
|
17
|
+
goto\:"play track immediately"
|
|
18
|
+
reto\:"play track matching regular expression"
|
|
19
|
+
next\:"play the next track in the tracklist"
|
|
20
|
+
prev\:"play the previous track in the tracklist"
|
|
21
|
+
repeat\:"control track repeating"
|
|
22
|
+
shuffle\:"control playback randomization"
|
|
23
|
+
))' \
|
|
24
|
+
"*::subcmd:->subcmd" && return 0
|
|
25
|
+
|
|
26
|
+
case "$words[1]" in
|
|
27
|
+
(aac|addtail)
|
|
28
|
+
_arguments \
|
|
29
|
+
":select file:_files"
|
|
30
|
+
;;
|
|
31
|
+
(addhead)
|
|
32
|
+
_arguments \
|
|
33
|
+
"*:select file:_files"
|
|
34
|
+
;;
|
|
35
|
+
(consume|repeat|shuffle)
|
|
36
|
+
_arguments \
|
|
37
|
+
":select state:(true false)"
|
|
38
|
+
;;
|
|
39
|
+
(goto)
|
|
40
|
+
_arguments \
|
|
41
|
+
":select track:($(dtas-ctl tl tracks 2> /dev/null))"
|
|
42
|
+
;;
|
|
43
|
+
(reto)
|
|
44
|
+
_arguments \
|
|
45
|
+
"-F[use fixed strings]" \
|
|
46
|
+
"-i[ignore case]" \
|
|
47
|
+
":search term" \
|
|
48
|
+
":select beginning"
|
|
49
|
+
;;
|
|
50
|
+
(*)
|
|
51
|
+
;;
|
|
52
|
+
esac
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#compdef dtas-xdelay
|
|
2
|
+
|
|
3
|
+
# To the extent possible under law, James Rowe has waived all copyright and
|
|
4
|
+
# related or neighboring rights to this example.
|
|
5
|
+
|
|
6
|
+
_arguments -S \
|
|
7
|
+
"--crossover-frequency=[frequency at which to set the crossover]: :_guard '[0-9]#' frequency" \
|
|
8
|
+
"--lowpass-delay[delay the lowpass frequency instead of the highpass one]" \
|
|
9
|
+
"--channels=[number of channels]:select channels:(1 2)" \
|
|
10
|
+
"--rate=[sample rate of audio]:select sample rate:(22050 44100 48000)" \
|
|
11
|
+
"--type=[file type]:select output type:($(sox --help 2> /dev/null | sed -n '/AUDIO FILE FORMATS/s/.*: //p'))" \
|
|
12
|
+
"--dry-run[only print commands, do not run them]" \
|
|
13
|
+
"--lowpass=[Custom format string for lowpass filter]" \
|
|
14
|
+
"--highpass=[Custom format string for highpass filter]" \
|
|
15
|
+
":select input1:_files" \
|
|
16
|
+
":select input2:_files" \
|
|
17
|
+
":select delay:_guard '[0-9]#' delay"
|
data/lib/dtas.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# frozen_string_literal: true
|
|
4
4
|
|
|
5
5
|
# DTAS currently exposes no public API for Ruby programmers.
|
|
6
|
-
# See https://80x24.org/dtas/ for more info.
|
|
6
|
+
# See https://80x24.org/dtas.git/about/ for more info.
|
|
7
7
|
module DTAS
|
|
8
8
|
|
|
9
9
|
# try to use the monotonic clock in Ruby >= 2.1, it is immune to clock
|
data/lib/dtas/buffer/splice.rb
CHANGED
|
@@ -12,7 +12,6 @@ module DTAS::Buffer::Splice # :nodoc:
|
|
|
12
12
|
MAX_AT_ONCE_1 = 65536
|
|
13
13
|
F_MOVE = SleepyPenguin::F_MOVE
|
|
14
14
|
F_NONBLOCK = SleepyPenguin::F_NONBLOCK
|
|
15
|
-
TRY = { exception: false }.freeze
|
|
16
15
|
|
|
17
16
|
def buffer_size
|
|
18
17
|
@to_io.pipe_size
|
|
@@ -32,7 +31,8 @@ def discard(bytes)
|
|
|
32
31
|
def broadcast_one(targets, limit = nil)
|
|
33
32
|
# single output is always non-blocking
|
|
34
33
|
limit ||= MAX_AT_ONCE_1
|
|
35
|
-
s = SleepyPenguin.splice(@to_io, targets[0], limit, F_MOVE|F_NONBLOCK,
|
|
34
|
+
s = SleepyPenguin.splice(@to_io, targets[0], limit, F_MOVE|F_NONBLOCK,
|
|
35
|
+
exception: false)
|
|
36
36
|
if Symbol === s
|
|
37
37
|
targets # our one and only target blocked on write
|
|
38
38
|
else
|
|
@@ -71,7 +71,8 @@ def __broadcast_tee(blocked, targets, chunk_size)
|
|
|
71
71
|
targets.delete_if do |dst|
|
|
72
72
|
begin
|
|
73
73
|
t = (dst.nonblock? || most_teed == 0) ?
|
|
74
|
-
SleepyPenguin.tee(@to_io, dst, chunk_size, F_NONBLOCK,
|
|
74
|
+
SleepyPenguin.tee(@to_io, dst, chunk_size, F_NONBLOCK,
|
|
75
|
+
exception: false) :
|
|
75
76
|
__tee_in_full(@to_io, dst, chunk_size)
|
|
76
77
|
if Integer === t
|
|
77
78
|
if t > most_teed
|
|
@@ -119,7 +120,8 @@ def broadcast_inf(targets, limit = nil)
|
|
|
119
120
|
begin
|
|
120
121
|
targets << last
|
|
121
122
|
if last.nonblock? || most_teed == 0
|
|
122
|
-
s = SleepyPenguin.splice(@to_io, last, bytes, F_MOVE|F_NONBLOCK,
|
|
123
|
+
s = SleepyPenguin.splice(@to_io, last, bytes, F_MOVE|F_NONBLOCK,
|
|
124
|
+
exception: false)
|
|
123
125
|
if Symbol === s
|
|
124
126
|
blocked << last
|
|
125
127
|
|
data/lib/dtas/player.rb
CHANGED
|
@@ -282,7 +282,7 @@ def sink_death(sink, status)
|
|
|
282
282
|
if deleted[0]
|
|
283
283
|
warn("#{sink.name} died unexpectedly: #{status.inspect}")
|
|
284
284
|
deleted.each { |t| drop_target(t) }
|
|
285
|
-
|
|
285
|
+
do_pause unless @targets[0]
|
|
286
286
|
return # sink stays dead if it died unexpectedly
|
|
287
287
|
end
|
|
288
288
|
|
|
@@ -451,7 +451,7 @@ def __current_drop(src = @current)
|
|
|
451
451
|
# pull data from sink_buf into @targets, source feeds into sink_buf
|
|
452
452
|
def sink_iter
|
|
453
453
|
wait_iter = broadcast_iter(@sink_buf, @targets)
|
|
454
|
-
|
|
454
|
+
do_pause if nil == wait_iter # sink error, stop source
|
|
455
455
|
return wait_iter if @current
|
|
456
456
|
|
|
457
457
|
# no source left to feed sink_buf, drain the remaining data
|
data/perl/dtas-graph
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/perl -w
|
|
2
|
-
# Copyright (C) 2013-2016 all contributors <dtas-all@nongnu.org>
|
|
2
|
+
# Copyright (C) 2013-2016, 2019 all contributors <dtas-all@nongnu.org>
|
|
3
3
|
# License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
|
|
4
|
+
#
|
|
5
|
+
# Process visualizer which shows pipe connections between processes with
|
|
6
|
+
# ASCII art. Useful for displaying complex interations between different
|
|
7
|
+
# processes in a non-traditional pipeline.
|
|
4
8
|
use strict;
|
|
5
9
|
use Graph::Easy; # for ASCII-art graphs
|
|
6
10
|
$^O =~ /linux/ or print STDERR "$0 probably only works on Linux...\n";
|
|
@@ -123,7 +127,8 @@ foreach my $pid (sort { $a <=> $b } keys %pids) {
|
|
|
123
127
|
print "\nPIPEID PIPE_INO\n";
|
|
124
128
|
foreach my $pipe_id (sort { $a <=> $b } keys %graphed) {
|
|
125
129
|
printf "% 6s", "|$pipe_id";
|
|
126
|
-
|
|
130
|
+
my $ino = $graphed{$pipe_id};
|
|
131
|
+
printf " %u (0x%0x)\n", $ino, $ino;
|
|
127
132
|
}
|
|
128
133
|
|
|
129
134
|
print $graph->as_ascii;
|
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.17.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: 2019-
|
|
11
|
+
date: 2019-11-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: |-
|
|
14
14
|
Free Software command-line tools for audio playback, mastering, and
|
|
@@ -89,6 +89,19 @@ files:
|
|
|
89
89
|
- examples/README
|
|
90
90
|
- examples/splitfx.sample.yml
|
|
91
91
|
- examples/tfx.sample.yml
|
|
92
|
+
- examples/zsh-completion/README
|
|
93
|
+
- examples/zsh-completion/_dtas-archive
|
|
94
|
+
- examples/zsh-completion/_dtas-ctl
|
|
95
|
+
- examples/zsh-completion/_dtas-cueedit
|
|
96
|
+
- examples/zsh-completion/_dtas-enq
|
|
97
|
+
- examples/zsh-completion/_dtas-mlib
|
|
98
|
+
- examples/zsh-completion/_dtas-msinkctl
|
|
99
|
+
- examples/zsh-completion/_dtas-partstats
|
|
100
|
+
- examples/zsh-completion/_dtas-sinkedit
|
|
101
|
+
- examples/zsh-completion/_dtas-sourceedit
|
|
102
|
+
- examples/zsh-completion/_dtas-splitfx
|
|
103
|
+
- examples/zsh-completion/_dtas-tl
|
|
104
|
+
- examples/zsh-completion/_dtas-xdelay
|
|
92
105
|
- lib/dtas.rb
|
|
93
106
|
- lib/dtas/buffer.rb
|
|
94
107
|
- lib/dtas/buffer/read_write.rb
|
|
@@ -191,7 +204,7 @@ files:
|
|
|
191
204
|
- test/test_tracklist.rb
|
|
192
205
|
- test/test_unixserver.rb
|
|
193
206
|
- test/test_util.rb
|
|
194
|
-
homepage: https://80x24.org/dtas/
|
|
207
|
+
homepage: https://80x24.org/dtas.git/about/
|
|
195
208
|
licenses:
|
|
196
209
|
- GPL-3.0+
|
|
197
210
|
metadata: {}
|
|
@@ -210,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
210
223
|
- !ruby/object:Gem::Version
|
|
211
224
|
version: '0'
|
|
212
225
|
requirements: []
|
|
213
|
-
rubygems_version: 3.0.
|
|
226
|
+
rubygems_version: 3.1.0.pre2
|
|
214
227
|
signing_key:
|
|
215
228
|
specification_version: 4
|
|
216
229
|
summary: duct tape audio suite for *nix
|