about summary refs log tree commit homepage
path: root/bin
DateCommit message (Collapse)
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.
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
2013-09-09player: implement basic tracklist functionality
This should allow us to repeat through a list of tracks with relative ease. There is a rudimentary dtas-tl client implemented. This may be removed in the future.
2013-09-07splitfx: flesh out functionality + integration test
This seems to be working out nicely. Having a basic integration test should be enough to get us started for now.
2013-09-07add dtas-splitfx - .cuesheets + make(1)
This is lacking tests and documentation, but it works from a old trivial sample I had from a recording I previously split using plain POSIX shell splitfx is like make(1) for splitting and minor audio editing. It also allows any number of effects.
2013-09-06dtas-console: show paused track when paused
Lightly tested, but this seems to work.
2013-09-01player: explicitly stop+wait for sink death at_exit
This allows me to hit Ctrl-C on a dtas-player(1) process, wait on termination of the player, and immediately restart it without worrying about sink conflicts upon restart. Before this change, sinks would continue running for a bit (depending on buffer sizes).
2013-09-01dtas-xdelay: pass -q flag to play(1) by default
We also do this for our defaults sinks, as multiple sinks makes the meter output of play(1) annoying
2013-08-31dtas-sourcedit: allow loading YAML from stdin
This should make it easy to save/load sink profiles depending on the users mood. One could easily create different profiles depending on different listening criteria. dtas-ctl source cat sox > casual.yml dtas-sourceedit sox < critical.yml
2013-08-29remove "encoding: binary" header use
We don't need it since IO#read(bytes, buf) will convert to ASCII-8BIT anyways. Everywhere else, we ensure path names are already binary. We do this mainly at the client layer before using Shellwords to escape the paths. We also must be careful about parsing output from soxi/avprobe which can show us metadata in whatever encoding is in the file. We must still handle data from parsing command output as binary, as the encoding of file metadata tends to vary. This also should buy us Syck compatibility for Ruby 1.9.3 users on Debian systems where Ruby 1.9.3 still uses Syck.
2013-08-28dtas-console: support terminal resize
Lightly-tested, but this seems to work.
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.