about summary refs log tree commit homepage
path: root/INSTALL
DateCommit message (Collapse)
2020-02-03dtas 0.18.0 v0.18.0
fiddle is now supported for Linux users without a C compiler or Ruby headers installed to take advantage of inotify(7) functionality and efficiency improvements with splice(2) and eventfd(7). For non-RubyGems users, there's some setup.rb fixes thanks to James Rowe. Eric Wong (8): doc: fixup leftover ftp://lists.gnu.org links pipe: avoid loading sleepy_penguin provide fiddle-based eventfd implementation buffer: replace sleepy_penguin with fiddle watchable: use fiddle for inotify support doc: remove most recommendations for sleepy_penguin INSTALL: s/bogomips.org/yhbt.net/ doc: update copyrights for 2020 James Rowe (2): setup: update to use RbConfig setup: fix duplicate variable warning
2020-02-03doc: update copyrights for 2020
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] https://git.savannah.gnu.org/git/gnulib.git
2020-02-03INSTALL: s/bogomips.org/yhbt.net/
bogomips.org is expiring soon and I won't be able to afford higher prices when renewing .orgs will become more expensive.
2020-01-06doc: remove most recommendations for sleepy_penguin
sleepy_penguin is still a hair faster than libffi+fiddle, but most users probably won't notice. So stop documenting it, but just don't introduce performance regressions for existing users.
2019-11-14doc: fixup leftover ftp://lists.gnu.org links
Some of these URLs were missing a slash and were missed by initial search-and-replace regexp :x. Drop some trailing "\" from the Markdown days while we're at it, plain-text is the only stable document format.
2019-11-14dtas 0.17.0 v0.17.0
dtas-player automatically pauses on sink death (e.g. when an external DAC is unplugged), thanks to Rene Maurer for the feature suggestion. zsh completions are also bundled in the examples/ directory thanks to James Rowe. There's also a couple of minor bugfixes and documentation updates. There's also kwarg warning fixes for Ruby 2.7.0dev. Future components will probably use a more stable glue language than Ruby, and we already have dtas-graph which is Perl5. Eric Wong (11): doc: remove inaccurate comment about "GNU-ism" doc: update homepage to point to cgit /about/ dtas-graph: show inode number in hex, too dtas-graph: add a short blurb about what it does dtas-console: remove unused variables dtas-console: pass kwargs as-is to String#encode buffer/splice: pass kwargs as-is to tee/splice player: automatically pause if last sink dies readahead: avoid Array#compact and Array#max on `false' doc: use new HTTPS address at lists.gnu.org TODO: add a note about using a more stable glue language James Rowe (2): doc: trivial typo fixes Add zsh completion support
2019-01-02dtas 0.16.1 v0.16.1
Brown paper bag release to fix hanging at the end of a track/playlist when using a single audio output with Linux splice.
2019-01-02dtas 0.16.0 v0.16.0
A bunch of minor fixes and cleanups accumulating for the past two years since the last release. It's tough to remember to make releases when I'm always running the latest version from git :x Most notably, "io_splice" is no longer used for dtas-linux users since "sleepy_penguin" includes all the functionality we use. This is to reduce memory overhead from extra DSOs(*) There's also some deprecation warning fixes for the still-undocumented "dtas-mlib" command. 12 changes since v0.15.0 (2017-04-07): pipeline: new module for running process pipelines console: ensure time calculations are done in UTC Rakefile: update path for uploads player: support guessing encodings for comments get rid of Windows-31J regexps mlib: compatibility with Sequel 5.x mlib: remove redundant tag massaging and encoding mlib: use flock to get around SQLite busy errors mlib: ignore files with nil times dtas/watchable: check SystemCallError mlib: fix unused variable warning use sleepy_penguin 3.5+ for splice and tee support (*) https://udrepper.livejournal.com/8790.html
2019-01-02use sleepy_penguin 3.5+ for splice and tee support
Eliminate loading of the io_splice RubyGem to reduce memory overhead. Extra DSOs are wasteful and io_splice is being phased oiut for sleepy_penguin, which encapsulates more Linux-specific functionality anyways. cf. https://udrepper.livejournal.com/8790.html
2017-04-07dtas 0.15.0 v0.15.0
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+
2016-12-27http -> https, and relocate homepage to https://80x24.org/dtas/
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).
2016-03-18dtas 0.14.2 - several bugfixes v0.14.2
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
2016-01-31dtas 0.14.0 - tracklist fixes and improvements v0.14.0
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!
2016-01-17dtas 0.13.1 - dtas-tl encoding bugfixes v0.13.1
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
2016-01-07dtas 0.13.0 - -player-related fixes and improvements v0.13.0
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
2016-01-02copyright updates for 2016
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
2015-12-25doc: various wording fixes and doc enhancements
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).
2015-12-25enable "frozen_string_literal: true"
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
2015-12-14dtas 0.12.1 - one bugfix! :x v0.12.1
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!
2015-12-14dtas 0.12.0 - many player updates v0.12.0
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
2015-05-10INSTALL: update documentation for 0.11.0 release
2015-04-13dtas 0.10.0 - major features and small fixes v0.10.0
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.
2015-01-19update copyright years and links to mailing list archives
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
2014-12-22dtas 0.9.0 - minor features and speedups v0.9.0
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!
2014-10-21dtas 0.8.0 - player bugfixes v0.8.0
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
2014-06-06update copyrights and email address for 2014
I'm still normal, and still trolling, but 80x24.org will be epic :)
2013-12-30dtas 0.7.0 - minor feature and teeny optimizations v0.7.0
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.
2013-10-19INSTALL: update for 0.6.0 release
Oops, perhaps I should just stick $VERSION in the text...
2013-09-30dtas 0.5.0 v0.5.0
* 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
2013-09-22INSTALL: update URL for 0.4.0 tarballs
Oops :x
2013-09-01INSTALL: update installation instructions
dtas 0.3.0 will be compatible with Syck in the Debian Ruby 1.9.3 install.
2013-09-01doc: add contact info to all documentation
Users need to be able to communicate with us.
2013-08-28add 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.
2013-08-26dtas 0.1.I - zero-one-infinity v0.1.I
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
2013-08-25more cleanups for packaging and documentation v0.0.0
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.
2013-08-24initial commit