Date | Commit message (Collapse) |
|
We already convert xs arg to be an Array, so avoid bloating
our code with redundancy.
|
|
This feature is intended to allow users to "zoom-in" on a
particular portion of a track to tweak parameters (either
with dtas-sourceedit(1) or via playback of splitfx YAML files).
This may be combined with looping the tracklist
(via "tl repeat").
|
|
Hopefully this makes the code less daunting to newcomers
|
|
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
|
|
This makes debugging, grepping, and following code confusing
at times and also unexpected breaks usage of the global "spawn"
method.
|
|
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 becomes useful for systems without inotify when we're editing
YAML (or whatever) files frequently and want changes to be reflected
right away during playback. This is a weaker version of the plain
"restart" command, which restarts the entire playback chain.
|
|
Merely converting the `before' source information to a hash is not
enough, as the `env' sub-hash is mosified in-place and shared with
the `after' hash. So use `inspect' to serialize and snapshot the
env and rely on a string comparison.
|
|
This generates smaller bytecode and avoids unnecessary captures.
Perhaps the Ruby optimizer can be taught to handle this
automatically.
|
|
This reduces captures and is more consistent with our other code.
|
|
I'm still normal, and still trolling, but 80x24.org will be epic :)
|
|
We are Ruby 1.9+ only, so shorten our code just a little
and hopefully make things easier-to-read.
|
|
This simplifies the check for the current track and
won't attempt to compare track IDs not on the tracklist.
|
|
A paused/seeked track in the tracklist may end up in the queue.
|
|
The player should start playing the new track if the current tracklist
is exhausted and not paused.
|
|
This prevents us from resetting the tracklist when we
add new tracks and want to restart playback.
|
|
The addition of a "need_to_queue" method should reduce the amount of
cognitive overhead required to parse these conditions
|
|
Oops.
|
|
This gives us consistency with the "cue prev" command,
is easier-to-type, and is consistent in length with "tl next".
We'll just map "previous" -> "tl prev" when we implement the
MPRIS bridge.
|
|
This adds the ability to seek internally within FLAC file
based on the internal CUE sheet. Other formats may be supported
in the future, but FLAC is the only one I know of which supports
embedded cue sheets.
Note: flac 1.3.0 is recommended for users of non-CDDA-compatible
formats.
See updates to dtas-player_protocol(7) for details.
|
|
Using "tl goto" implies we start playback of the player is idle.
|
|
This may be used to avoid automatic:
* resampling (rate)
* down/upmixing (channel)
* dither/truncation (bits)
Using any bypass mode means we can no longer guarantee gapless
playback for audio collections where rate, channel, or bits vary.
This can however be useful when CPU usage is too high. This may
also be useful in audio engineering situations.
|
|
When a player is idle and a track is added to an empty tracklist,
we should not repeat the first track added to the tracklist. Avoid
that by advancing the tracklist to the current track.
|
|
This is necessary to handle the case where the tracklist is empty,
clients get confused and timeout the response if we attempt to emit
an empty string.
|
|
"wall" is analogous to the wall(1) command, so we shall use that
instead of echo.
|
|
Because sometimes a song is just stuck in our head.
Or MPRIS 2.0 wants us to implement it this way...
|
|
This should make implementing SetPosition in the MPRIS 2.0 spec
possible.
|
|
This means we can go back and forth in the tracklist like a normal
music player. This will allow an easier MPRIS 2.0 implementation.
|
|
Otherwise we end up constantly pushing tracks to the top of the
queue and getting surprising behavior if seek is called repeatedly.
|
|
This allows easier scripting if we want to add a bunch of tracks
|
|
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 allows users to display the current env value for introspection
|
|
stop_sinks is already defined, so avoid repeating this loop
|
|
This helps in case dtas-player is hit with SIGKILL or the system
crashes. This does not fsync(2) as that could introduce delays on
slow filesystems. Users should open the file manually and fsync
themselves if they need to.
|
|
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.
|
|
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.
|
|
I should really write a test case for this, maybe later.
|
|
@current is only set if is active with a pid, now, so all
of our checks for @current.pid are redundant and confusing.
|
|
This is for consistency with source handlers.
|
|
While we're at it, add a test for this functionality, too.
|
|
We should be fully-capable of managing any number of options
to try sources in.
|
|
We do not need a respawn flag, since we already infer expected vs
unexpected sink death by checking the @targets array.
Additionally, next_source must always check @current before
calling, and not clobber the existing @current because that
would cause two source processes writing into the same pipe.
|
|
We should've done this at the start, but we didn't.
|
|
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.
|
|
Some effects may be easier to save/store with relative directory
paths, so allow changing this at runtime.
|
|
|