about summary refs log tree commit homepage
path: root/bin
DateCommit message (Collapse)
2016-01-01console: display paused commands properly
Running commands can be "paused" (actually, they're stopped), so we must display them correctly when attempting to encode them in the correct format instead of barfing when we attempt to call the 'encode' method on a Hash object.
2015-12-31dtas-console: show trim and "tl repeat" status
It probably makes sense for the -console user to know if tracklist repeat and trim are enabled. Have player emit these in "current" output and let the console client track them for now.
2015-12-31dtas-console: show paused track and time offset
When invoking the "current" command, the player now returns the first track + offset in the queue. This should make it easier to show what's paused or not.
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-20dtas-readahead: use our spawn fix properly
Our spawn fix does not cover singleton dispatch from the Process class; only bareword "function" calls.
2015-12-16mlib: wire up search/find/stats to the UI
Not in any way a stable interface, yet, and still incomplete. This should emulate parts of the mpd protocol which should make it easier to debug and develop.
2015-12-15dtas-tl: add "aac" (add-after-current) command
This can be useful to avoid using the queue internally.
2015-12-15dtas-tl: "edit" gives sequential track IDs on new tracks
Having sequential track IDs can improve readability, so complicate our code a bit to ensure users get nicer looking track IDs. Followup to commit 90dcf561fd22c8a53c03d97292f86a82e74ca4a3 ('Revert "dtas-tl: simplify existing addtail/addhead while we're at it"')
2015-12-15Revert "dtas-tl: simplify existing addtail/addhead while we're at it"
This partially reverts commit 0dde5917fb5135ee3601383c29ffc0490071ea9d. This fixes "addtail" on an empty tracklist and preserves sequential ordering of track IDs, which might make sense for usability.
2015-12-14player: implement software volume control
This is on a linear scale from 0.0 (mute) to 1.0 (no change) This is in the MPRIS spec and mpd as well (scaled to 0-100) This changes dtas-console key bindings (0/9) slightly to match mplayer more closely. ReplayGain preamp adjustment has moved from '0'/'9' to '7'/'8' keys. The 'm' key also toggles mute state (the pre-mute volume is stored in the dtas-console instance, not in dtas-player itself).
2015-12-14dtas-tl: fixup addtail again
Oops :x commit 0dde5917fb5135ee3601383c29ffc0490071ea9d ("dtas-tl: simplify existing addtail/addhead while we're at it")
2015-12-14dtas-tl: simplify existing addtail/addhead while we're at it
No need to keep track of added track IDs when we can walk the array backwards to insert in the correct order. Also, fix a stupid (probably?) typo in the "addhead" implementation, too. I've known about Array#reverse_each for a while...
2015-12-14dtas-tl edit: fix ordering of newly-added songs
We need to add new songs in reverse order of what's in the file to preserve ordering when they're added after an existing ID. This way we don't have to remember the track we just added, either.
2015-12-14dtas-tl: learn an "edit" sub command
This should allow convenient rearranging and deleting of tracks from the tracklist from your favorite $EDITOR.
2015-12-13player: support "tl clear" internally
It is orders of magnitude more efficient to implement this in the player and very noticeable when using large playlists.
2015-12-13mlib: SYSTEM_DEFAULT handlers for SIGINT and SIGPIPE
This makes interrupting the potentially long output of "dtas-mlib dump" less ugly. Perhaps it makes sense for our other scripts to follow suit.
2015-12-13mlib: remove kwargs harder
We need this script to work under Ruby 1.9.3 as well, for the time being.
2015-11-28dtas-mlib: add dump support for debugging
Using an RFC-822-like format since YAML quoting rules aren't very human-friendly, and we already prevent newlines from entering our DB anyways.
2015-11-22introduce dtas-mlib for music library functions
Eventually this will support searching and be the basis of an mpd-compatible proxy in front of dtas-player
2015-10-19dtas-archive: allow specifying SoX compression factor
This can speed up archiving in some cases, as FLAC with compression-level 8 may be excessively slow.
2015-09-25dtas-readahead: make executable
Oops, files in bin/ should be executable.
2015-09-25dtas-cueedit: escape path to temporary file
Temporary files may still have spaces or weird chars in them. Just keep in mind we need to use $EDITOR/$VISUAL as-is since that may contain additional command-line arguments, so we cannot pass an array.
2015-09-24dtas-readahead: avoid polling on pause
When a player is paused with nothing player, we will not waste CPU time polling for the player to become available. It is wasteful of processing power and battery life.
2015-09-20dtas-readahead: new script for -player users on Linux
This is dependent on Linux /proc/ (the "pos: " field of /proc/$PID/fdinfo/$FD to be exact). This was written to avoid seek latencies on a remote FUSE filesystem with occasional packet loss.
2015-06-03splitfx: ensure rate is an integer
We'll be using the rate for automatically calculating CDDA alignment in the future.
2015-05-24splitfx: allow -p/--sox-pipe option
This allows splitfx YAML files to operate more seamlessly with external commands such as play(1) especially when combined with the -t/--trim option.
2015-05-21dtas-*edit: fix inotify watch invocations
Broken by commit c02f0b8182b35df1a318418bbd0036c00be93b5c ("source/splitfx: allow watching extra external scripts") Oops
2015-05-21dtas-splitfx: comment describing -j (nothing) as infinite
I nearly forgot about this myself
2015-05-19dtas-console: bind "o" to display time in absolute seconds
It can be useful to display time as absolute seconds to ease arithmetic for tracking files.
2015-05-17dtas-splitfx: support --trim argument
It can often be useful to expose only part of a track for quick inspection. This lets us do that.
2015-05-17dtas-splitfx: no arguments for quiet and --no-dither
Oops
2015-05-17use monotonic clock on Ruby 2.1+
The monotonic clock is immune to stepping adjustments so it is more suitable for tracking elapsed time differences. Process.clock_gettime also generates less garbage on 64-bit systems due to the use of Flonum.
2015-05-10splitfx: --bits and --rate for quick-n-dirty generic targets
generic targets (e.g. "wav") is useful for quickly checking if clipping is introduced by dither and resampling, so we'll support changing the sample rate and bits-per-sample from the command-line so users don't need to setup their own targets or wait on FLAC encoding.
2015-05-10splitfx: pass compression factor to sox(1)
This can be useful for speeding up splitfx during development, as sox defaults to maximum compression with FLAC and that is extremely slow.
2015-05-10splitfx: support -O/--outdir switch to control output dir
It is useful to force output to a writable directory if the YAML file is on a read-only mount point or to force the output to a large tmpfs mount point to avoid SSD/HDD wear.
2015-04-13cleanup: avoid redundant Array conversion for escapes
We already convert xs arg to be an Array, so avoid bloating our code with redundancy.
2015-04-12dtas-sinkedit: catch up to inotify/pipe changes in sourceedit
This is mainly for consistency in behavior with dtas-sourceedit. Using dtas-sourcedit is still more common and recommended as it is less likely to introduce audible gaps and pauses.
2015-04-07dtas-archive: paranoid archival script
This archives audio files (typically .wav from a portable devices) as FLAC and performs a best-effort verification the file was transferred succesfully without bit errors by dropping kernel caches and rechecking the result.
2015-01-23sourcedit: do not wait indefinitely if $EDITOR is stopped
Users may hit Ctrl-Z to stop their editor during editing and trigger SICHLD, do not waitpid2 indefinitely in that case. This prevents missed "source ed" calls for inotify users.
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
2015-01-19consolidate spawn fix for Ruby [Bug #8770]
Ensure we can apply the workaround to dtas-sourceedit and our test cases while also simplifying the existing call sites a little. This will also make for less code churn in 3-5 years down the line when we drop <= 2.1 support.
2015-01-19sinkedit: flesh out all parameters
dtas-sinkedit now shows default parameters in addition to user-changed parameters, allowing easier editing. Also, we need to be able to revert back to using the default pipe_size on Linux by setting pipe_size to nil (as an empty field in YAML).
2015-01-19dtas-sourceedit: update player as user saves in the editor
This allows changes in the source YAML file to be reflected immediately in player after the user saves the file in their favorite $EDITOR. Previously, a user would need to: 1) start dtas-sourceedit, spawning $EDITOR 2) edit the file 3) save changes 4) exit $EDITOR 5) repeat starting from 1) until happy with the results Now, the workflow allows avoiding the context switch between their $EDITOR and terminal to restart dtas-sourcedit: 1) start dtas-sourceedit, spawning $EDITOR 2) edit the file 3) save changes 4) repeat starting from 1) until happy with the results 5) exit $EDITOR In my experience, this greatly speeds up tuning of the playback change, giving all the repeatability and flexibility of editing text files while having the immediacy of an interactive UI. Keep in mind this can cause problems for those with auto-save enabled in their $EDITOR buffer at inopportune times, so a -N/--no-watch option is added.
2015-01-19dtas-console: avoid crashing on failed cue seeks
Attempting to perform operations on a file which which cannot handle it should not cause dtas-console to die with a backtrace
2015-01-19partstats: use Etc.nprocessors on Ruby 2.2+
This will likely become more available and faster than GNU nproc(1) over time.
2014-12-27dtas-console: keys for "cue next/prev"
The '!' and '@' keys are used in mplayer to skip chapters, so perhaps this is a good analogy.
2014-12-22dtas-tl: halve write() syscalls when emitting tracklists
Notably, this speeds up "dtas-tl cat" output a little bit. Hrm, Ruby really should be using writev here, we'll need to investigate at a later date.
2014-12-21dtas-console: '>' and '<' keys for tracklist next/prev
These key bindings are used in mplayer, too.
2014-09-22dtas-console: force encoding for current locale
This is the one place we display the filename for users, so it should hopefully make it displayable. Users who care about proper display should use a locale which matches their music collection (or rename their music collection to match).
2014-08-16rely on filesystem encoding
This avoids compatibility problems as File.expand_path respects the "filesystem" encoding of Ruby. I'm not 100% sure this is correct, as Ruby encoding support still confuses me, but this fixes a problem where I attempted to add UTF-8 filename with non-US-ASCII characters in it on ruby-trunk.