about summary refs log tree commit homepage
path: root/test
DateCommit message (Collapse)
2015-07-18parse_freq: trivial new module for parsing frequencies
Seems a bit stupid, but oh well.
2015-05-18splitfx: remove support for encoding opus
Lossy file encoding has too many tunable variables and it is not a good fit for an audio production tool such as dtas-splitfx. This was becoming a maintenance burden for me and is a sign of featuritis.
2015-05-17process: implement array expansion to preserve spaces
This can make it easier to specify mcompand parameters in socks, as those require separate levels of parameter parsing and require quoting in shell.
2015-05-07replaygain uses the "gain" effect instead of "vol"
The `gain' effect seems superior as it can "see" across the effects chain to take into account extra/lost headroom. For example, this allows me to add the the "gain -h" effect at the start of my effects chain before the RGFX placeholder in my source command, so when I play a file requiring a -6dB ReplayGain adjustment, I will only need an additional -4dB of headroom to accomodate the 10dB boost at 20Hz I use (for listening through headphones): Before: RGFX='vol -6dB' sox "$INFILE" $SOXFMT - $TRIMFX $RGFX vol -10dB equalizer 20 0.7071q 10 After: RGFX='gain -6' sox "$INFILE" $SOXFMT - $TRIMFX gain -h $RGFX equalizer 20 0.7071q 10
2015-02-04fadefx: effects chain generation
We need to generate a coherent command set for wrapping portions together, this sets us up for that.
2015-01-20rename the TrimFX class to TFX
TrimFX was too ambiguous with the common environment variable we use throughout dtas. Since TFX is more limited in scope but should be more frequently-typed by users (of -splitfx) we'll use the shorter name here.
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-19Revert "fadefx: remove module"
This reverts commit 3471463325be6c990b3abd18b4d34f723440d19a. While not strictly necessary, it makes the user syntax in splitfx files much terser. Changes from the original version should make it easier-to-read and the diagram should help a lot with understanding.
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).
2014-12-29trimfx: require audio format at initialization
This makes things easier for scheduling/expansion since we won't have to deal with floating point numbers when we work directly with with sample counts (like the rest of dtas).
2014-12-28splitfx: use $FX env consistently in targets, too
While we're at it, document the splitfx manpage and make the example suitable for tests.
2014-12-27player: support playing splitfx YAML files
This allows splitfx users to test CUE breakpoints and run file-specific effects without interrupting their normal flow.
2014-12-27test: favor Process.spawn when possible
Process.spawn allows vfork() + execve() usage in Ruby 2.2.0 to improve performance over normal fork() + execve().
2014-07-06tests: hoist out pluck generation
This allows the same sound to be reused in tests.
2014-07-05fadefx: remove module
This will not be needed after all.
2014-06-30remove builtin-$FADEFX support
This is more generically supported via variables.
2014-06-30test_splitfx: fix tests without opus{enc,dec}
Just skip the test for now since systems without opusenc and opusdec are becoming rarer.
2014-06-30test/helper: ancient minitest compatibility
RubyGems is not available on some LTS distros (Ubuntu precise with Ruby 1.9.3-p0)
2014-06-23trimfx: initial cut of scheduling + gap filling
The names are subject to change, but the idea is to make multiple passes over the audio if effects overlap and combine everything afterwards. Unedited portions will be passed through sox (via trim and no other effects)
2014-06-06update copyrights and email address for 2014
I'm still normal, and still trolling, but 80x24.org will be epic :)
2014-03-13test/helper: compat w/ coverage in Feature #9508
There's a feature request for better coverage support in ruby-trunk https://bugs.ruby-lang.org/issues/9508 At minimum, we need to preserve compatibility; but we should set aside time to take advantage of the extra coverage support.
2013-12-27merge some select calls for splice users
Avoid an additional select syscall in the splice path by injecting the target checks into the main loop. We can do this because we always process writers before readers. This adds additional userspace processing, but it avoids one potentially expensive (and potentially task-switching) syscall in many cases; so it should be worth it to avoid skipping with small buffer. This should avoid buffer underuns with mixed-sized buffers when using multiple sinks. This could work for the read_write path, too, but I don't use that enough and this change may still be buggy even for splice users.
2013-10-17fadefx: initial commit
This allows parsing and will eventually interact with trimfx.
2013-10-17trimfx: flesh out parsing of commands
Only lightly tested, but this should give us some idea of where we'll be going...
2013-10-15trimfx: flesh out to_sox_arg implementation
This will be dependent upon sox for the trim effect, at least. Other bits will be exposed as needed.
2013-10-13trimfx: initial bits
This will allow editing individual portions of audio of a larger file while creating cross fade effects to join them.
2013-10-06buffer: remove ioctl syscall in common paths
We do not need this for single sink situations (the common case) at all. We also do not need to check IO#nread for splice, either; we can just do non-blocking I/O. The only common path where we might still need it is the non-splice case with multiple sinks.
2013-09-30player: support seeking based on embedded cuesheet (FLAC)
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.
2013-09-28player: support bypass for rate, bits, channel
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.
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-10splitfx: add opus and flac-cdda outputs
These are common output targets, at least for my workflow.
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-09player: "tl goto" takes optional offset arg in HHMMSS.SUBSEC
This should make implementing SetPosition in the MPRIS 2.0 spec possible.
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-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-09tracklist: preliminary tracklist class
This should allow us to eventually implement a MPRIS 2.0-compliant tracklist.
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-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-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-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-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