Date | Commit message (Collapse) |
|
It can often be useful to expose only part of a track for quick
inspection. This lets us do that.
|
|
Oops
|
|
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.
|
|
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.
|
|
This can be useful for speeding up splitfx during development,
as sox defaults to maximum compression with FLAC and that is
extremely slow.
|
|
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.
|
|
We already convert xs arg to be an Array, so avoid bloating
our code with redundancy.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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).
|
|
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.
|
|
Attempting to perform operations on a file which which cannot
handle it should not cause dtas-console to die with a backtrace
|
|
This will likely become more available and faster than GNU nproc(1)
over time.
|
|
The '!' and '@' keys are used in mplayer to skip chapters,
so perhaps this is a good analogy.
|
|
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.
|
|
These key bindings are used in mplayer, too.
|
|
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).
|
|
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.
|
|
I'm still normal, and still trolling, but 80x24.org will be epic :)
|
|
Ruby 2.2.0dev does not bundle the "curses" gem anymore.
Note: not a hard RubyGem dependency since dtas-console is optional.
|
|
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.
|
|
Using a regexp to match trackIDs is probably not intended
by the user.
|
|
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).
|
|
It is easier to break out of dtas-console with one key than using a
2-finger combination.
|
|
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.
|
|
This behaves like "goto", but takes a regular expression
instead of a track_id
|
|
Shorten these commands since they're frequently used and
to make eventual tab completion easier.
|
|
This is implemented in client space, as the MPRIS 2.0
spec does not say this needs to be implemented at all...
|
|
We may get a pause event when we do not have a valid current
hash.
|
|
It's easier to handle the client and player to be in different
directories (and we also do this for dtas-enq(1))
|
|
This adds a bunch of tracks sequentially to the end of the tracklist
|
|
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.
|
|
This seems to be working out nicely. Having a basic integration
test should be enough to get us started for now.
|
|
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.
|
|
Lightly tested, but this seems to work.
|
|
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).
|
|
We also do this for our defaults sinks, as multiple sinks makes
the meter output of play(1) annoying
|
|
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
|
|
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.
|
|
Lightly-tested, but this seems to work.
|
|
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.
|
|
These two are similar enough that it's possible to share
some code between them and also increase user-friendliness
at the same time.
|
|
We should be fully-capable of managing any number of options
to try sources in.
|
|
It's useful to show inactive ReplayGain values, as users may
switch between the defaults and non-default values frequently.
|
|
This also matches the KEY_UP and KEY_DOWN behavior, and probably(?)
makes more sense.
|
|
Add hotkeys for the (probably) frequently changed ReplayGain mode,
preamp and fallback_gain parameters. And display the RGFX volume
change.
While we're at it, we'll display the format info to get a better
idea of what we're decoding and playing to.
|
|
Oops, not everybody has their VISUAL or EDITOR environment set.
|