about summary refs log tree commit homepage
DateCommit message (Collapse)
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
Oops.
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.
2013-09-02dtas 0.3.0 - small improvements and tweaks v0.3.0
There is now a mailing list hosted by Savannah: dtas-all@nongnu.org No subscription is necessary to post (please Cc: all on replies). This release should be compatible with Ruby 1.9.3 built with Syck, as this seems to be the case with Debian wheezy systems. Hopefully dtas is easier for Debian GNU/Linux users not familiar with Ruby. Probing via avprobe/ffprobe for audio in large containers (e.g. VOBs) should have a higher probability of success, but seeking with large containers is still broken. My suggestion is to use avconv/ffmpeg to extract the raw audio (without transcoding) from VOBs/DVDs and just play that. dtas-sourceedit learned to load YAML from stdin (same format as "dtas-ctl source cat $SOURCENAME"). player protocol changes: - "state dump [FILENAME]" allows dumping the current state (in case an unexpected shutdown happens and at_exit does not run) - "env" (no args) returns the environment note: I'm still considering revamping the protocol completely Eric Wong (23): dtas-console: support terminal resize README: add explicit copyright for this file remove "encoding: binary" header use rg: avoid adding gain if fallback_gain + preamp is near zero av_ff_common: fix undefined var in astream fallback disclaimer: disambiguate between dtas/$PROGNAME GNUmakefile: combine with pkg.mk Rakefile: additional pointer to git-set-file-times Rakefile: wrap long line dtas-sourcedit: allow loading YAML from stdin test_source_av: fix test to actually run source/{av,ff}: probe harder for audio in weird containers doc: reorganize sections around dtas-player doc: sink_examples: reference dtas-xdelay and friends doc: add contact info to all documentation INSTALL: update installation instructions player: add "state dump" command to serialize state doc/dtas-xdelay: reference sox/play env, update email address dtas-xdelay: pass -q flag to play(1) by default player/client_handler: cleanup to avoid redundant code player: explicitly stop+wait for sink death at_exit player/client_handler: support for dumping individual env test/test_player_client_handler: rename shadowed method
2013-09-02test/test_player_client_handler: rename shadowed method
Oops.
2013-09-01player/client_handler: support for dumping individual env
This allows users to display the current env value for introspection
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-01player/client_handler: cleanup to avoid redundant code
stop_sinks is already defined, so avoid repeating this loop
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-09-01doc/dtas-xdelay: reference sox/play env, update email address
Since dtas-xdelay uses play/sox, we need to document AUDIODEV, AUDIODRIVER, and SOX_OPTS environment variables. Also point comments to the mailing list while we're at it.
2013-09-01player: add "state dump" command to serialize state
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.
2013-09-01INSTALL: update installation instructions
dtas 0.3.0 will be compatible with Syck in the Debian Ruby 1.9.3 install.
2013-09-01doc: add contact info to all documentation
Users need to be able to communicate with us.
2013-09-01doc: sink_examples: reference dtas-xdelay and friends
dtas-xdelay could use some more exposure, especially considering megabuck speakers have some of the same features :P
2013-09-01doc: reorganize sections around dtas-player
Move all sink examples to the dtas-player_sink_examples manpage. Remove redundant troubleshooting.txt, that now resides in dtas-player(1).
2013-09-01source/{av,ff}: probe harder for audio in weird containers
Some containers (e.g. large VOBs) are not easily probed and require additional options for avprobe/ffprobe to find audio streams. We do this by looping and increasing the duration/size of the probe to find new audio streams. This seems to work reasonably well for some DVD rips I have until seeking is required. This breaks if the seek point (including seeks for source effects) exceeds the avprobe/ffprobe -analyzeduration. Anyways, I recommend extracting the audio stream (without transcoding) out of the VOB container as the best way to go. Something like: avconv -analyzeduration 2G -probesize 2G \ -i input.vob -vn -sn -c:a copy -map 0:$STREAM_NR output.ext
2013-08-31test_source_av: fix test to actually run
Oops, at least it still works.
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-31Rakefile: wrap long line
This was a blind copy+paste.
2013-08-31Rakefile: additional pointer to git-set-file-times
In case we have non-Debian users
2013-08-31GNUmakefile: combine with pkg.mk
We hardly use GNU make right now.
2013-08-31disclaimer: disambiguate between dtas/$PROGNAME
The whole dtas project is committed to giving as much rope as users need!
2013-08-30av_ff_common: fix undefined var in astream fallback
This is reproducible on a video file with a mono audio stream when attempting playback in stereo.
2013-08-29rg: avoid adding gain if fallback_gain + preamp is near zero
No need to add the vol effect if it's going to be a noop.
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-29README: add explicit copyright for this file
While we're at it, remove a repeated paragraph. It was a copy+paste error of the paragraph above it. dtas-linux.gemspec: likewise for copyright.
2013-08-28dtas-console: support terminal resize
Lightly-tested, but this seems to work.
2013-08-28dtas 0.2.0 - minor bugfixes and packaging cleanups v0.2.0
Most notable is the addition of the dtas-player_sink_examples manpage. Minor bugfixes and documentation updates. Note: I'm considering a major revamp of the protocol now that things function reasonably well. Eric Wong (10): Rakefile: fix NEWS generation player: fix sink auto-restart on "sink ed" changes doc: dtas-player_sink_examples manpage av_ff_common: zero samples on streams of unknown length doc: add more examples to dtas-player_sink_examples doc: dtas-player_protocol: note proposed revamp Rakefile: use git set-file-times for consistent mtimes doc: cleanup makefile formatting/naming doc: protocol: question source ed tryorder, minor edits add license/copyright headers/footers to all files
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.
2013-08-28doc: protocol: question source ed tryorder, minor edits
Minor notes for future development.
2013-08-28doc: cleanup makefile formatting/naming
Hopefully slightly easier-to-read/parse for humans (especially non-English speakers).
2013-08-27Rakefile: use git set-file-times for consistent mtimes
Preserving mtimes will cut down on unnecessary rsync and HTTP traffic, saving bandwidth and making the Internet a better place :>
2013-08-27doc: dtas-player_protocol: note proposed revamp
Better to break compatibility while the project is very young.
2013-08-27doc: add more examples to dtas-player_sink_examples
This adds examples for using ssh(1) with play(1)
2013-08-27av_ff_common: zero samples on streams of unknown length
It's possible to get zero samples when playing streams of unknown length (e.g. over Icecast over HTTP)
2013-08-27doc: dtas-player_sink_examples manpage
This should hopefully make it easier to introduce users to sink usage.