Date | Commit message (Collapse) |
|
One bugfix on top of dtas 0.12.1
dtas-tl edit: fix ordering of newly-added songs
Everything else in the v0.12.0 release stil applies:
http://80x24.org/dtas-all/20151214-dtas-0.12.0-unle@shed/t/
Have fun!
|
|
Notable additions for dtas-player music listeners.
dtas-ctl queue cat - display the internal queue
dtas-tl shuffle [true|false] - toggle tracklist shuffle
dtas-tl edit - open tracklist in an editor
see dtas-tl(1) manpage for more details on this:
http://dtas.80x24.org/dtas-tl.txt
The player tracklist now uses sequential track IDs instead of Ruby
object IDs, so it should be easier to use existing commands such as
"dtas-tl goto" and "dtas-tl remove"
For people using dtas-player for applying real-time effects to
splitfx YAML files, dtas-player can now watch for changes in scripts
specified in the "command" field of the splitfx YAML file.
Previously, dtas-player could only read the splitfx YAML file
itself. This requires GNU/Linux and the sleepy_penguin RubyGem
installed.
dtas-splitfx also learned some switches to allow easier
interoperability with other processing tools:
-p/--sox-pipe - identical to the sox(1) option
-t/--trim - only expose part of the track, useful when
combined with the above -p switch
See http://dtas.80x24.org/dtas-splitfx.txt for more details.
There's also some work-in-progress stuff that's not well documented
at the moment. As with anything pre-1.0, expect the possibility
of incompatible changes.
Since I'm not good at designing protocols, I've also started working
on mpd compatibility layer to allow using the normal music playback
stuff with more clients (some of the clients I actually like, unlike
the seemingly GUI-only landscape of MPRIS :P).
Of course, dtas-player itself has most the capabilities of a
Unix shell; and those capabilities will certainly not be available
to mpd or MPRIS clients.
64 changes since dtas 0.11.0
INSTALL: update documentation for 0.11.0 release
splitfx: fix lossy output with player command is in use
splitfx: fix non-generic, user-specified targets
use monotonic clock on Ruby 2.1+
dtas-splitfx: no arguments for quiet and --no-dither
dtas-splitfx: support --trim argument
process: implement array expansion to preserve spaces
splitfx: show correct command for output
splitfx: remove support for encoding opus
dtas-console: bind "o" to display time in absolute seconds
splitfx: avoid double-truncation with user command
source/splitfx: allow watching extra external scripts
splitfx: drop unnecessary variable
splitfx: documentation for subclasses
splitfx: simplify output display
dtas-splitfx: comment describing -j (nothing) as infinite
dtas-*edit: fix inotify watch invocations
splitfx: allow -p/--sox-pipe option
splitfx: ensure rate is an integer
splitfx: set OUTFMT correctly for subenv if command is set
favor recv and recv_nonblock over recvmsg variants
parse_time: pass through numeric types
parse_freq: trivial new module for parsing frequencies
use a common /dev/null
player: add "queue cat" command
dtas-readahead: new script for -player users on Linux
dtas-readahead: avoid polling on pause
dtas-cueedit: escape path to temporary file
dtas-readahead: make executable
gemspec: use SPDX-compatible license
README: add link to NNTP and Atom feeds
player: cleanup command dispatch
dtas-archive: allow specifying SoX compression factor
gemspec: duplicate frozen string for older Rubygems
allow building the gem without pandoc
introduce dtas-mlib for music library functions
dtas-mlib: add dump support for debugging
tracklist: use lower number unique track IDs
tracklist: do not mutate @list when serializing
tracklist: avoid needlessly building a hash for track IDs
tracklist: shuffle support
tracklist: support limiting maximum tracklist size
player: refactor and document tracklist interface
player: tl (repeat|shuffle|max) and trim swap values
tracklist: fixup idempotent "tl shuffle false"
switch to exception-free non-blocking I/O
add .gitattributes for Ruby method detection
mlib: remove non-existent entries
mlib: add stats support
mlib: no kwargs for 1.9.3 compatibility
mlib: add find/search functionality based on mpd
mlib: split out the output format from the library
mlib: remove kwargs harder
player: reduce I/O priority of connected clients
mlib: SYSTEM_DEFAULT handlers for SIGINT and SIGPIPE
player: support "tl clear" internally
test_unixserver: remove test for element limit
player: dump state file asynchronously when requested
parse_time: enable frozen_string_literal
unix_accepted: enable checking for readability after emit
tracklist: swap functionality
player: show "tracklist" hash with summary info with "current"
dtas-tl: learn an "edit" sub command
doc: document additions to tracklist handling
|
|
dtas-player:
There is one dtas-player bugfix to fix an infinite loop on missing
files when repeating a single track.
commit b6515b3a8abab6dcc56166da825e01e2c083bfc9
ReplayGain also uses the "gain" effect instead of "vol", allowing
compatibility with "gain -h" to provide extra headroom in user
effects.
commit 403ed90e2e7bed3e017938d76e17037b0d5059b6
dtas-splitfx:
Dither is no longer applied when outputting bit-depths above 16-bit.
The --bits/-b/--rate/-r/-C/--compression command-line flags are
passed to sox(1) for output and allow overriding any targets
specified in the output.
commit e6a2ff2a3984320b1b83f5051709880a8b9d3708
commit 03b1303b1c7511fdd1a6b2f63d7c509e822a6a38)
The -O/--outdir switch allows specifying a different output
directory, useful for splitting from read-only checkouts or
to a faster tmpfs filesystem to avoid SSD wear.
commit 619b08c9d4e43d94bac39cd395c1def6fa796f06
dtas-splitfx is still a work-in-progress and rapidly improving :)
|
|
Bug fixes:
* Exported INFILE environment variable is always shell-escaped
This prevent screw-ups when users are using funky filenames.
* dtas-player: enqueued commands cannot use audio format bypass
(the audio format cannot be known ahead-of-time from raw commands)
* YAML omap (ordered map) is explicitly used for all env hashes for
user editing. Normal (unordered hashes) are still allowed if loading
existing files. This does not affect Ruby 1.9+ users, but allows
easier processing for users of other languages.
New features (all platforms):
* dtas-player now plays dtas-splitfx YAML files support cue sheet
emulation based on the track list. Under Linux[1], changes to
the YAML file are reflected in real-time as the file is edited
and saved in an $EDITOR. This feature is useful for dialing
in EQ, compressor, and limiter effects on tracks.
* dtas-player supports the "source restart" command for restarting
playback on modified files for systems without inotify support.
* dtas-splitfx now exports the INDIR and INBASE environment variables
which are intended to act like `$(@D)' and `$(@F)' in GNU make(1).
It should ease managing temporary files for some effects
(e.g. noiseprof + noisered in sox)
* dtas-console supports '!' and '@' hotkeys keys for moving within
files with embedded cue sheets.
* dtas-player supports the "trim" command to focus on a particular
portion of a track. It may be useful when combined with the existing
"tl repeat" command for dialing in audio editing parameters
(via a splitfx YAML file):
To continuously repeat a 5 second part of the current track starting
at 1 minute into the track:
dtas-ctl tl repeat 1 && dtas-ctl trim 1:00 5
Passing "off" as the parameter disables trim:
dtas-ctl trim off
* dtas-env(7) manpage added for common environment variables across
the suite
* dtas-sinkedit shows default parameters in addition to user-changed
parameters
New features (Linux-only)
* dtas-sourceedit and dtas-sinkedit support inotify[1] when editing
the YAML text file. This allows real-time updates on $EDITOR
file save as the user edits the parameters of the commands used
for decoding and playback.
* dtas-archive - paranoid archival script for copying and (re-reading)
files. This is useful when transferring files from removable devices
to computers without ECC memory (or any other bit errors in transport
before main memory is accessed). This requires Ruby 1.9.3 or later
(no 3rd-party RubyGems) on Linux for IO#advise support.
There are also many internal cleanups and more work-in-progress
for dtas-splitfx features.
[1] feature requires the sleepy_penguin RubyGem to be installed.
|
|
The documentation part is managed by the new
Documentation/update-copyright script. For the future, the rest may
be managed by the update-copyright tool in gnulib
|
|
The major new feature is '>' and '<' keys are now supported
in the dtas-console interface for dtas-player.
"dtas-tl cat" also received a minor speedup for big tracklists
via syscall reductions
shortlog of changes since 0.8.0:
process: update comment for bug workaround
process: update comment for bug workaround #2
compat_onenine: simplify pipe wrapper
tracklist: favor &:sym_to_proc style
dtas-console: '>' and '<' keys for tracklist next/prev
dtas-tl: halve write() syscalls when emitting tracklists
reduce syscalls in recvmsg invocations
doc: flesh out "tl" subcommand docs
The best is yet to come!
|
|
Several bugfixes for the dtas-player and playback-related
components. Audio-editing support is still being worked on.
See git repository for full details:
git clone git://80x24.org/dtas
Terminal-browser-friendly HTML mail archives are also up at:
http://80x24.org/dtas-all/
The mailing list for anything related to dtas remains at:
dtas-all@nongnu.org
The list is open to all without subscription (no HTML email).
dtas is for and by users who never want to deal with GUIs.
shortlog of changes since 0.7.0:
dtas-console: add note to install "curses" gem if missing
test/helper: compat w/ coverage in Feature #9508
player: style cleanup to favor &:methods
update copyrights and email address for 2014
trimfx: initial cut of scheduling + gap filling
test/helper: ancient minitest compatibility
test_splitfx: fix tests without opus{enc,dec}
remove builtin-$FADEFX support
fadefx: remove module
tests: hoist out pluck generation
xs: favor &: block style for simple cases
rely on filesystem encoding
client_handler: minor cleanup (favor &:proc)
doc: document "tl get"/"dtas-tl cat" escaping gotcha
dtas-console: force encoding for current locale
unix_server: fix for infinite loop
sink: favor &:proc form instead of blocks
favor &:proc form instead of blocks in more places
unix_accepted: wait for readability on EAGAIN
|
|
I'm still normal, and still trolling, but 80x24.org will be epic :)
|
|
dtas-splitfx gained support --no-dither/-D option.
dtas-player should work now for non-Linux users without splice().
There are minor optimizations for users of multiple sinks with
dtas-player.
|
|
* dtas-player - many fixes to tracklist handling
Also minor syscall reduction and a fix for non-Linux-splice users.
* the "dtas-tl reto" subcommand also works somewhat sanely, now.
There's also a bunch of work-in-progress code that's definitely not
ready for prime time and will change a lot. I'm just making this
release because the work-in-progress stuff is completely orthogonal
to the mostly-working stuff, and dtas has users other than myself
now(!)
dtas is going in several different directions related to audio, not just
playback. My immediate focus will probably be on audio editing and
hopefully 0.7.0 will have more of that[1]. Of course, critical fixes to
components people actually use will take priority (but I think
dtas-player is solid, by now.
* dtas-partstats - initial partitioning wrapper to the sox stats effect
See commit 4f1a73ed584f0f74d6b32241f02ae871f3415f4a for details.
This works, but could use some documentation...
There's also some stuff which is completely not wired up outside
of internal unit tests, but will hopefully be ready in 0.7.0
Eric Wong (21):
splitfx: default to default DTAS::Format if unspecified
player: add factor out redundant condition check
buffer/read_write: fix undefined local variable
player: delay tracklist reset until asked to play
buffer: remove ioctl syscall in common paths
pipe: use memoized IO#nonblock? in blocking case
player: "tl add" may trigger player start
tracklist: remove_track updates tracklist position
player: "tl remove" drops the track from the queue
dtas-partstats: initial implementation
tracklist: update position when track is added
format: common detection code (based on sox)
tracklist: fix off-by-one when adding track
player: "tl remove" properly stops current track
dtas-tl: "reto" command does not scan track IDs
IO#nread compatibility for Rubinius (Linux-only)
use shorter socket constants for sockets
|
|
* dtas-*edit
- account for editors which rename over files
* dtas-player
- support optional bypass mode for rate, bits, channel
This allows users to avoid any internal resampling at the
cost of losing gapless playback when files have different
decoded formats
- "tl goto" starts playback if idle (and not paused)
- support seeking based on embedded cuesheet (FLAC)
- rename "tl previous" to "tl prev"
See dtas-player_protocol(7) for the protocol extensions
* dtas-console
- allow exit via 'q' key
|
|
Currently, this allows us to use different manpage paths for the
tarball and gem; as gem-man and setup.rb expect different paths
for manpages.
Additionally, Hoe is designed for Ruby projects. dtas may include
Perl/shell/Python/whatever in the future. So use GNU make as it
is more suited for language agnosticism.
|
|
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 Wong (51):
source/sox: correctly extend xs for try_to_fail_harder
test/*.rb: test/unit compatibility
test/player_integration: thread-safety fix
test/*: 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
|
|
I have restrictive permissions sometimes, do not propagate them
to the gem/tarballs.
|
|
There is now a mailing list hosted by Savannah: dtas-all@nongnu.org
No subscription is necessary to post (please Cc: all on replies).
This release should be compatible with Ruby 1.9.3 built with Syck,
as this seems to be the case with Debian wheezy systems. Hopefully
dtas is easier for Debian GNU/Linux users not familiar with Ruby.
Probing via avprobe/ffprobe for audio in large containers (e.g.
VOBs) should have a higher probability of success, but seeking with
large containers is still broken. My suggestion is to use
avconv/ffmpeg to extract the raw audio (without transcoding) from
VOBs/DVDs and just play that.
dtas-sourceedit learned to load YAML from stdin (same format
as "dtas-ctl source cat $SOURCENAME").
player protocol changes:
- "state dump [FILENAME]" allows dumping the current state (in case
an unexpected shutdown happens and at_exit does not run)
- "env" (no args) returns the environment
note: I'm still considering revamping the protocol completely
Eric Wong (23):
dtas-console: support terminal resize
README: add explicit copyright for this file
remove "encoding: binary" header use
rg: avoid adding gain if fallback_gain + preamp is near zero
av_ff_common: fix undefined var in astream fallback
disclaimer: disambiguate between dtas/$PROGNAME
GNUmakefile: combine with pkg.mk
Rakefile: additional pointer to git-set-file-times
Rakefile: wrap long line
dtas-sourcedit: allow loading YAML from stdin
test_source_av: fix test to actually run
source/{av,ff}: probe harder for audio in weird containers
doc: reorganize sections around dtas-player
doc: sink_examples: reference dtas-xdelay and friends
doc: add contact info to all documentation
INSTALL: update installation instructions
player: add "state dump" command to serialize state
doc/dtas-xdelay: reference sox/play env, update email address
dtas-xdelay: pass -q flag to play(1) by default
player/client_handler: cleanup to avoid redundant code
player: explicitly stop+wait for sink death at_exit
player/client_handler: support for dumping individual env
test/test_player_client_handler: rename shadowed method
|
|
Most notable is the addition of the dtas-player_sink_examples
manpage. Minor bugfixes and documentation updates.
Note: I'm considering a major revamp of the protocol now that
things function reasonably well.
Eric Wong (10):
Rakefile: fix NEWS generation
player: fix sink auto-restart on "sink ed" changes
doc: dtas-player_sink_examples manpage
av_ff_common: zero samples on streams of unknown length
doc: add more examples to dtas-player_sink_examples
doc: dtas-player_protocol: note proposed revamp
Rakefile: use git set-file-times for consistent mtimes
doc: cleanup makefile formatting/naming
doc: protocol: question source ed tryorder, minor edits
add license/copyright headers/footers to all files
|
|
All files we distribute in the tarball need to have a
copyright/license specified for Savannah.
We don't need the example state file anymore.
|
|
This release refactors dtas-player internals and adds lightly-tested
avconv (from libav) and ffmpeg support. It should also be much easier
for us to add direct support for other non-SoX decoders in the future.
The "source ed" and "source cat" protocol commands now both require a
SOURCENAME argument, one of "sox", "av" (avconv), or "ff" (ffmpeg).
"source ed" also supports a new "tryorder" integer parameter to control
the order in which sox, av, and ff are tried.
dtas-console now displays ReplayGain status and allows controlling
ReplayGain mode, fallback_gain, and preamp values via hotkeys.
There are also many corner-case bugfixes and small minor features, see
"git log" for details.
Eric Wong (40):
README: include a pointer to the plain-text docs
set REPLAYGAIN_* vars for source command as documented
dtas-*edit: properly fall back to 'vi' as documented
use require_relative for loading 1.9 compatibility
dtas-console: implement better ReplayGain and format support
dtas-console: swap 'j' / 'k' bindings to match docs
doc: document new dtas-console key bindings
Rakefile: rsync task uploads gzipped files, too
test_rg_integration: avoid unused variable warning
unix_client: remove non-SOCK_SEQPACKET support
tests: use unix_client in tests to kill some redundant code
command: remove kill, we no longer rely on it
player: remove unreachable branch
split out source handling to prepare for avconv/ffmpeg support
format: decouple from soxi
preliminary support for avconv/avprobe from libav
source/av: handle multiple audio streams w/ proper sample rate
dtas-console: always show ReplayGain line
format: fix switching to floating point samples
player: fix logic around sink death/respawns
doc: add note about increased wakeups with dtas-console
process: allow passing env to qx
process: remove redundant "xs" method
process (qx): disambiguate err/err_str, add no_raise
cleanup multi-source handling between sox and av
player: flesh out multi-source in protocol/sourceedit
dtas-{sink,source}edit: reduce redundant code
player: sink ed pipe_size= disallows nils
player: restart sinks on "sink ed" modification
player: break out gracefully if a file is totally unplayable
source/sox: bail out if zero samples are detected
test_source_av: disable if avprobe/avconv are not available
add lightly-tested ffmpeg support
README: remove avconv/ffmpeg item
source/sox: cleanup error handling, quiet redundant warnings
player: do not assign @current until successful spawn
client_handler: remove redundant checks for @current.pid
av_ff_common: :nodoc: this constant and add TODO item
GIT-VERSION-GEN: :nodoc: the version constant
:nodoc: core classes in 1.9 compat layer
|
|
This is not part of any public API.
|
|
Rename COPYRIGHT -> COPYING, as that seems to be the more common
name for the GPLv3 license file. Kill all rdoc, since I don't
agree with HTML documentation and we do not expose any Ruby APIs.
|
|
|