about summary refs log tree commit homepage
path: root/bin
DateCommit message (Collapse)
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
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.
2014-06-06update copyrights and email address for 2014
I'm still normal, and still trolling, but 80x24.org will be epic :)
2014-02-24dtas-console: add note to install "curses" gem if missing
Ruby 2.2.0dev does not bundle the "curses" gem anymore. Note: not a hard RubyGem dependency since dtas-console is optional.
2013-12-01splitfx: support --no-dither/-D option
splitfx is incapable of knowing in 100% of cases whether dithering should be used (as it has no visibility into sox internals), so support disabling it completely via command-line. This is like the identical sox option, and passed to sox(1), too. This feature is useful for splitting already-mastered 16-bit recordings.
2013-10-10dtas-tl: "reto" command does not scan track IDs
Using a regexp to match trackIDs is probably not intended by the user.
2013-10-09dtas-partstats: initial implementation
dtas-partstats divides large audio files into small partitions (10 seconds by default) and runs the "stats" effect of sox(1) against each partition. Currently it emits space-delimited output, but configurable output options (including Sequel/SQLite) support is coming. The intended use of this tool is for quickly finding the loudest portions of a given recording without the need for a graphical viewer. This can be useful for selectively applying (and testing the results of) dynamic range compression filters. Use with sort(1) in a pipeline is recommended in this scenario (but again, Sequel support is coming).
2013-09-30dtas-console: allow exit via 'q' key
It is easier to break out of dtas-console with one key than using a 2-finger combination.
2013-09-23dtas-*edit: account for editors which rename over files
We must not assume the temporary file remains in place while $EDITOR/$VISUAL is running, as it is common for editors to rename over a file to atomically replace existing files.
2013-09-22dtas-tl: add "reto" command
This behaves like "goto", but takes a regular expression instead of a track_id
2013-09-10dtas-tl: add-{tail,head} -> add{tail,head}
Shorten these commands since they're frequently used and to make eventual tab completion easier.
2013-09-09dtas-tl: add a handy "clear" command
This is implemented in client space, as the MPRIS 2.0 spec does not say this needs to be implemented at all...
2013-09-09dtas-console: avoid using current if it is nil
We may get a pause event when we do not have a valid current hash.
2013-09-09dtas-tl: expand paths before using them
It's easier to handle the client and player to be in different directories (and we also do this for dtas-enq(1))
2013-09-09dtas-tl: add add-tail command
This adds a bunch of tracks sequentially to the end of the tracklist