Dtas 0.4.0 - duct tape audio suite for *nix

Free Software command-line tools for audio playback, mastering, and
whatever else related to audio. dtas follows the worse-is-better
philosophy and acts as duct tape to combine existing command-line tools
for flexibility and ease-of-development. dtas is currently implemented
in Ruby (and some embedded shell), but may use other languages in the

Changes since 0.3.0:

dtas 0.4.0 - dtas-splitfx, tracklist in -player

There is a new dtas-splitfx command intended for splitting up
single-track recordings into multiple tracks and applying
effects/comments to each of them. It was made for splitting recordings
of vinyl records and live concert recordings. dtas-splitfx is
independent of dtas-player (but shares some code/conventions).

The dtas-player also gains tracklist support (based on the MPRIS 2.0
spec). This is another step toward having an MPRIS 2.0-compliant
interface. There is a “dtas-tl” command helper for using/testing
tracklist functionality. This helper may be folded into a higher-level
client soon, so it is not recommended as a a stable interface.

There are also some minor bugfixes in dtas-player.

Eric W. (51):
source/sox: correctly extend xs for try_to_fail_harder
test/.rb: test/unit compatibility
test/player_integration: thread-safety fix
: compatibility class for both minitest 4 and 5
test/helper: delay at_exit registration for tmpfifo
dtas-console: show paused track when paused
test/helper: fix var shadowing
add dtas-splitfx - .cuesheets + make(1)
splitfx: round instead of truncate for CDDA
GNUmakefile: enable warnings by default for tests
implement environment variable expansion
splitfx: flesh out functionality + integration test
test/helper: rescue on NameError instead of checking defined?
sink: remove unnecessary writable_iter
pipe: remove pipe_size call for non-Linux platforms
test_splitfx: remove parallelize_me!
splitfx: minor bugfixes, use strings for commands/targets
tracklist: preliminary tracklist class
player: implement basic tracklist functionality
player/client_handler: “tl add” returns track_id of added track
dtas-tl: add add-tail command
tracklist: fix go_to functionality
player: do not repeat first track on start if using playlist
dtas-tl: expand paths before using them
player/client_handler: prevent seek from excessive requeue
dtas-console: avoid using current if it is nil
player: reset tracklist when idle stat is detected
tracklist: next_track → advance_track
player: implement previous/next commands
player: “tl goto” takes optional offset arg in HHMMSS.SUBSEC
tracklist: previous! only wraps around when repeat is enabled
tracklist: implement single-track repeat
player: s/echo/wall/ for broadcasting to all watchers
player/client_handler: return count for list-style responses
dtas-tl: add a handy “clear” command
Rakefile: add fix_perms dep when building gem
doc: nodoc new classes
player: do not reset tracklist if paused
test_player_integration: avoid premature sink death
dtas-tl: add-{tail,head} → add{tail,head}
document dtas-tl(1) and the “tl” commands in the protocol
splitfx: add opus and flac-cdda outputs
player (tl add): do not repeat first track when idle
splitfx: add “skip” directive
splitfx: preserve original rate/channels/bits for generic targets
player: stop sinks whenever we’re out-of-tracks to play
dtas-tl: add “reto” command
splitfx: rename “opus” target to “opusenc”
doc: add manpage for dtas-splitfx
splitfx: nodoc the Skip class
README: update for dtas-splitfx and tracklist in -player