about summary refs log tree commit homepage
DateCommit message (Collapse)
2013-09-22splitfx: nodoc the Skip class
This is an internal class, and we don't have a public Ruby API anyways.
2013-09-22doc: add manpage for dtas-splitfx
We should document it so we remember how to use it.
2013-09-22splitfx: rename "opus" target to "opusenc"
sox(1) may gain the ability to natively encode to Opus one day without using opusenc(1), so make it more explicit we are relying on opusenc(1).
2013-09-22dtas-tl: add "reto" command
This behaves like "goto", but takes a regular expression instead of a track_id
2013-09-19player: stop sinks whenever we're out-of-tracks to play
We should not leave sinks running when nothing is playing, since that blocks the sound device from being used by others.
2013-09-11splitfx: preserve original rate/channels/bits for generic targets
We do not explicitly resample/dither/downmix without users permission.
2013-09-11splitfx: add "skip" directive
This allows skipping periods of silence/noise in between music tracks. This should be useful if the recorder is left running during intermission or during equipment swaps.
2013-09-11player (tl add): do not repeat first track when idle
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.
2013-09-10splitfx: add opus and flac-cdda outputs
These are common output targets, at least for my workflow.
2013-09-10document dtas-tl(1) and the "tl" commands in the protocol
Everything should be documented, even if it's a work-in-progress. I reserve the right to change them...
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-10test_player_integration: avoid premature sink death
Sinks should always continue running until EOF. Otherwise, the sink exiting prematurely could cause the player to stop prematurely. So just let it wait for EOF by running cat(1).
2013-09-10player: do not reset tracklist if paused
We should only reset the tracklist if the user has completely iterated through the list of tracks to be played.
2013-09-09doc: nodoc new classes
We have no public Ruby API, only socket protocols and data formats.
2013-09-09Rakefile: add fix_perms dep when building gem
I have restrictive permissions sometimes, do not propagate them to the gem/tarballs.
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-09player/client_handler: return count for list-style responses
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.
2013-09-09player: s/echo/wall/ for broadcasting to all watchers
"wall" is analogous to the wall(1) command, so we shall use that instead of echo.
2013-09-09tracklist: implement single-track repeat
Because sometimes a song is just stuck in our head. Or MPRIS 2.0 wants us to implement it this way...
2013-09-09tracklist: previous! only wraps around when repeat is enabled
Non-repeating tracklists should stop playing when there's nothing to go back to.
2013-09-09player: "tl goto" takes optional offset arg in HHMMSS.SUBSEC
This should make implementing SetPosition in the MPRIS 2.0 spec possible.
2013-09-09player: implement previous/next commands
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.
2013-09-09tracklist: next_track -> advance_track
This is a more accurate depiction of what happens, and we'll implement "next" and "previous" commands in the future.
2013-09-09player: reset tracklist when idle stat is detected
We should return to the starting position of the tracklist if we are idle.
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-09player/client_handler: prevent seek from excessive requeue
Otherwise we end up constantly pushing tracks to the top of the queue and getting surprising behavior if seek is called repeatedly.
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-09player: do not repeat first track on start if using playlist
We already flush the currently playing track into the head of the queue upon player exit (even if it was in the @tl), so we should use @tl.next_track as usual instead of @tl.cur_track in case the queue is empty.
2013-09-09tracklist: fix go_to functionality
We need to preserve the go_to-specified position for next_track, doing otherwise would cause us to always be off-by-one.
2013-09-09dtas-tl: add add-tail command
This adds a bunch of tracks sequentially to the end of the tracklist
2013-09-09player/client_handler: "tl add" returns track_id of added track
This allows easier scripting if we want to add a bunch of tracks
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-09tracklist: preliminary tracklist class
This should allow us to eventually implement a MPRIS 2.0-compliant tracklist.
2013-09-09splitfx: minor bugfixes, use strings for commands/targets
Minor bugfixes, this allows users to setup targets easily without introducing them to the ":" Rubyism for symbols. Also, use "track_start" instead of "track_first" to match the existing published examples for numbering the first track. While we're at it, detect the decoded sample precision correctly for dither use.
2013-09-08test_splitfx: remove parallelize_me!
Thread-safety is hard with signals flying in from process reaping.
2013-09-08pipe: remove pipe_size call for non-Linux platforms
Having it return nil in a noop function seems wrong. We can't silently discard the value (unlike pipe_size=)
2013-09-08sink: remove unnecessary writable_iter
We do not need it anymore since we only write to the targets returned by Sink#spawn.
2013-09-08test/helper: rescue on NameError instead of checking defined?
const_defined?(:Test) behaves differently when $DEBUG is true. I'm not sure if this is a bug or not.
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-07implement environment variable expansion
This will allow users to more-easily edit configs and feel like a real shell. We no longer mistakenly expand nil env variables to "" anymore, either.
2013-09-07GNUmakefile: enable warnings by default for tests
This is a new code base and we should avoid introducing warnings.
2013-09-07splitfx: round instead of truncate for CDDA
Rounding should be more accurate, even though my original awk snippet truncated the output.
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-07test/helper: fix var shadowing
2013-09-06dtas-console: show paused track when paused
Lightly tested, but this seems to work.
2013-09-06test/helper: delay at_exit registration for tmpfifo
at_exit ordering is funky because minitest/autorun also runs at_exit, so we need to delay registering the at_exit until we call tmpfifo.
2013-09-06test/*: compatibility class for both minitest 4 and 5
This is to avoid annoying deprecation warnings in minitest 5, while still preserving compatibility with minitest 4 (which is distributed in Ruby 2.0.0 and part of the standard library).
2013-09-06test/player_integration: thread-safety fix
Process.waitall prevents test cases from using multiple threads (we're already using multiple processes). We may use parallelize_me! from minitest in the future.
2013-09-06test/*.rb: test/unit compatibility
assert() in test/unit does not automatically stringify the failure message, unlike minitest. I don't have a strong opinion regarding minitest and test/unit, but the deprecation notices in minitest 5 are annoying, so perhaps using Test::Unit via minitest shim is a better way to go.
2013-09-06source/sox: correctly extend xs for try_to_fail_harder
Singleton methods tend to be bad like this. TODO: write tests for this.