Date | Commit message (Collapse) |
|
There's a couple of minor bugfixes and features that's been
sitting around for a while in git. Internally there's some
garbage reductions so player processes might be a bit smaller.
21 changes since dtas 0.14.2 (2016-03-18):
player: "cue prev" reliably hits previous cue breakpoint
README: add link to gmane NNTP server
player: extra "cue" seeking functionality
archive: fix suffix replacement for stats
dtas-readahead: cleanup open files on pause
readahead: handle queued commands properly
mlib: use transaction for removing stale entries
splitfx: more consistently generate fade_in effects
format.from_file: reduce soxi invocations
introduce mcache class for caching audio metadata
source/sox: integrate mcache support to reduce soxi calls
test/test_rb_state: quiet deprecation warning
http -> https, and relocate homepage to https://80x24.org/dtas/
player: freeze sink name to avoid needless dup
source/sox: simplify conditional, slightly
buffer/splice: remove MAX_SIZE constant
rg_state: fix no-op gain detection
source/sox: relax comment NAME restriction
readahead: handle queued commands properly (again)
readahead: fix running commands with non-files
deduplicate strings using String#-@ (uminus) in Ruby 2.5+
|
|
HTTPS allows some level of security(*) and we've actually
supported it on 80x24.org for many months, now. So, point new
readers to it.
Moving away from hostname-based homepages will allow us to save
on subjectAltName space (and bandwith) when negotiating an HTTPS
connection. We'll also have an .onion mirror for Tor users,
soon, too; in case we can't afford to pay ICANN in the future.
(assuming TLS libraries don't have any more Heartblead-level
bugs in them, CAs aren't compromised, MITM HTTPS stripping
proxies don't get in your way, and your certificate bundle isn't
compromised).
|
|
This release contains several fixes needed to run dtas-player
under Debian jessie systems where libav-tools no longer provides
ffprobe. dtas-player should now fall back more smoothly
to its splitfx YAML format if neither libav-tools nor ffmpeg
are installed, as they are optional dependencies.
Note: mp3gain is missing under Debian jessie, so you
will not be able to use ReplayGain with MP3 files.
This will be worked around in another release.
Finally, this also fixes a bug in 0.12.0 for non-sleepy_penguin
RubyGem users which relied on pipes for notification.
3 changes since 0.14.0:
av_ff_common: fixes for libav-tools under Debian Jessie
dtas-readahead: do not barf on missing ffprobe/avprobe
sigevent/pipe: require file for DTAS::Nonblock properly
Note: ignore the 0.14.1 tag, it was broken and missed INSTALL
changes
|
|
The player tracklist now has a "consume" mode similar to
what exists mpd. The advantage of using "tl consume"
over the plain queue is the tracklist is more easily
editable. You may enable or disable it in a running
player using:
dtas-tl consume <true|false>
This also fixes an output formatting bug in "dtas-tl cat"
introduced in 0.13.1.
Documentation is converted to Perl POD documentation format.
It should be easier to build the documentation as pod2man
is nearly universal nowadays, unlike pandoc.
14 changes since 0.13.1:
doc: update-footer.rb: fix for frozen_string_literal
doc: convert to perlpod(1) from Markdown
doc: preserve times in website
dtas-tl: fix "cat" output
player: avoid allocation on sort
String#split with a single-byte instead of regexp
source/sox: explicitly freeze comment keys
source/sox: try_to_fail_harder is a normal method
mlib: support all formats of player
mlib: support --force option
build: install-gem forced to "--local" domain
mlib: use more appropriate methods
player: support "consume" mode for tracklist
doc: update documentation for tl consume and shuffle
Many more releases on the horizon!
|
|
This release addresses encoding and escaping-related bugs affecting
the use of "dtas-tl edit" (and to a lesser extent, "dtas-tl cat").
Filenames with characters requiring shell-escaping were not
round-tripped correctly, causing movement/addition of such files
(which may not be properly encoded to any encoding) to be handled
incorrectly.
There are also some mlib bug fixes, but the mlib API and CLI are
currently unstable and undocumented...
4 changes since 0.13.0:
dtas-tl: hopefully fix up encoding issues
dtas-tl: shell-unescape cat output
mlib: fix foreign-key ordering issues with delete
dtas-mlib: avoid redundant '/' in dumped pathname
|
|
Not much since 0.12.0:
* "dtas-tl aac" implemented for adding tracks after the current
track in dtas-player(1).
* dtas-player now implements software volume control to
simultaneously control the volume of all sinks.
dtas-console remaps '0'/'9' keys for software volume control
to match mplayer(1) behavior. '7'/'8' now adjusts the ReplayGain
preamp volume. I'm still considering changing the 'r'/'R' keys
for repeat cycling and moving ReplayGain cycling to 'g'/'G':
http://80x24.org/dtas-all/20160105090453.GA30328@dcvr.yhbt.net/
* dtas-console shows the paused player track, and trim/shuffle/repeat
statuses.
* all comments loaded from YAML files intended for dtas-splitfx(1)
are stringified.
Other than that, I enjoy using the "dtas-tl edit" feature from
0.12.0+ to modify the tracklist very much :)
There's a couple of changes to the experimental stuff hasn't been
documented at all and even more subject to change than the rest
of dtas...
30 changes since dtas 0.12.1:
dtas-tl: simplify existing addtail/addhead while we're at it
dtas-tl: fixup addtail again
player: implement software volume control
Rakefile: add Atom feed to website
rg_state: fixup replaygain normalization
Revert "dtas-tl: simplify existing addtail/addhead while we're at it"
nodoc internal classes
dtas-tl: "edit" gives sequential track IDs on new tracks
gemspec: require Ruby 1.9.3 at minimum
dtas-tl: add "aac" (add-after-current) command
mlib: wire up search/find/stats to the UI
mlib: fix update
dtas-readahead: use our spawn fix properly
enable "frozen_string_literal: true"
doc: various wording fixes and doc enhancements
remove vestigial mentions of opusenc
splitfx: fixup frozen_string_literal for spawn
player: frozen_string_literal fixup for "tl tracks"
dtas-console: show paused track and time offset
dtas-console: show trim and "tl repeat" status
mlib: warn about non-SQLite databases becoming unsupported
console: display paused commands properly
source/splitfx: stringify comments
copyright updates for 2016
player: replaygain: avoid unnecessary ignoring
console: try harder to show rate
console: show tracklist shuffle status, too
tracklist: fix off-by-one error on track removal
tracklist: reshuffle tracklist when exhausted
dtas-tl: document "aac" addition
|
|
Using the 'update-copyright' script from gnulib[1]:
git ls-files | UPDATE_COPYRIGHT_HOLDER='all contributors' \
UPDATE_COPYRIGHT_USE_INTERVALS=2 \
xargs /path/to/gnulib/build-aux/update-copyright
[1] git://git.savannah.gnu.org/gnulib.git
|
|
English grammar is not easy :x
While we're at it, dtas-archive.txt is expanded to document things
like: http://80x24.org/dtas-all/20150918085401.GA8610@dcvr.yhbt.net/
(bus failure).
|
|
While we're in the area, make a wording change from "GPLv3 or later"
to "GPL-3.0+", as the latter is favored by SPDX.org
|
|
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
|
|
Oops
|
|
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.
|
|
Oops, perhaps I should just stick $VERSION in the text...
|
|
* 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
|
|
Oops :x
|
|
dtas 0.3.0 will be compatible with Syck in the Debian Ruby 1.9.3
install.
|
|
Users need to be able to communicate with us.
|
|
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
|
|
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.
|
|
|