Date | Commit message (Collapse) |
|
A bunch of minor fixes and cleanups accumulating for the past
two years since the last release. It's tough to remember to
make releases when I'm always running the latest version from
git :x
Most notably, "io_splice" is no longer used for dtas-linux
users since "sleepy_penguin" includes all the functionality
we use. This is to reduce memory overhead from extra DSOs(*)
There's also some deprecation warning fixes for the
still-undocumented "dtas-mlib" command.
12 changes since v0.15.0 (2017-04-07):
pipeline: new module for running process pipelines
console: ensure time calculations are done in UTC
Rakefile: update path for uploads
player: support guessing encodings for comments
get rid of Windows-31J regexps
mlib: compatibility with Sequel 5.x
mlib: remove redundant tag massaging and encoding
mlib: use flock to get around SQLite busy errors
mlib: ignore files with nil times
dtas/watchable: check SystemCallError
mlib: fix unused variable warning
use sleepy_penguin 3.5+ for splice and tee support
(*) https://udrepper.livejournal.com/8790.html
|
|
Eliminate loading of the io_splice RubyGem to reduce memory overhead.
Extra DSOs are wasteful and io_splice is being phased oiut for
sleepy_penguin, which encapsulates more Linux-specific functionality
anyways.
cf. https://udrepper.livejournal.com/8790.html
|
|
Apparently some degree of thread-safety is being enforced;
not sure I agree, but oh well...
|
|
This can be helpful for end users and is close to what other
players use. We can fallback to Encoding.default_external by
default (typically UTF-8) and then again using `charlock_holmes'
if installed.
Note: path names remain binary, because that's how proper
filesystems operate.
|
|
This should allow us easily to manipulate process pipelines
as an array of arrays.
Originally posted at
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/435624
|
|
Seeing tiny (or zero) values for the "gain" effect is an eyesore
in process table output, and a waste of CPU cycles in sox. So
stop using the "gain" effect for imperceptible changes in volume.
While we're at it, remove the pointless knobs for setting this,
too. They were never documented and I doubt anybody would want
to tweak them at runtime.
|
|
We do not need it at runtime, only for testing on Linux-like
systems
|
|
HTTPS allows some level of security(*) and we've actually
supported it on 80x24.org for many months, now. So, point new
readers to it.
Moving away from hostname-based homepages will allow us to save
on subjectAltName space (and bandwith) when negotiating an HTTPS
connection. We'll also have an .onion mirror for Tor users,
soon, too; in case we can't afford to pay ICANN in the future.
(assuming TLS libraries don't have any more Heartblead-level
bugs in them, CAs aren't compromised, MITM HTTPS stripping
proxies don't get in your way, and your certificate bundle isn't
compromised).
|
|
MT6 won't support assert_equal(nil, ...), apparently
|
|
This should improve performance with slow filesystems
or systems with slow spawn performance.
|
|
We often waste cycles rerunning commands we don't need
to run frequently. Introduce a short term cache for
these.
|
|
It is possible for a file to only have one of the ReplayGain
tags we need and not the previous-required REPLAYGAIN_TRACK_GAIN
tag. So do not reject the entire series of tags if a file has
the one we want.
|
|
Using the 'update-copyright' script from gnulib[1]:
git ls-files | UPDATE_COPYRIGHT_HOLDER='all contributors' \
UPDATE_COPYRIGHT_USE_INTERVALS=2 \
xargs /path/to/gnulib/build-aux/update-copyright
[1] git://git.savannah.gnu.org/gnulib.git
|
|
Oops :x
|
|
While we're in the area, make a wording change from "GPLv3 or later"
to "GPL-3.0+", as the latter is favored by SPDX.org
|
|
This (from the point of the client) will atomically swap
two tracks. This should allow easily implementing of a
tracklist editor.
|
|
Fixes: commit d628e9bd3c5ef42e44c8e14f8eaf9a85dd541a4c
("player: reduce I/O priority of connected clients")
Oops :x
|
|
Disabling shuffle should be idempotent.
|
|
This defaults to 16384? This is what mpd uses by default as well.
Of course folks interacting with dtas-player directly can override
this:
dtas-tl max INTEGER
dtas-tl max
This is NOT meant to be a hard security measure for local users
talking to dtas-player directly. It is only to prevent
accidentally stupid things like flooding the playlist with
a broken script and to prevent remote users from DoS-ing
us via the to-be-written mpd proxy/emulation layer.
Remember: dtas-player itself will ALWAYS remain capable of
executing arbitrary code :)
|
|
This is in the MPRIS 2.0 TrackList spec and also in mpd (as "repeat"
mode), so we can probably support it directly in player to ease
implementations of future wrappers.
|
|
This is easier for users to read and type; and _might_ help with
race conditions due to fast object recycling from GC. We'll also be
implementing playist versioning on top of this in the next commits
for MPD protocol compatibility.
Unfortunately this adds an additional 40 bytes of per-track overhead
(on 64-bit systems, its only 20 bytes on 32-bit). However, we may
be able to save memory in the future by supporting dtas-mlib node
IDs if we integrate dtas-player with DTAS::Mlib.
While we're at it, include a minor speedup for
DTAS::Tracklist#remove_track by using Array#delete_at instead of
relying on Array#compact! after assignment
This should improve "dtas-tl cat" output readability dramatically.
The state file (~/.dtas/player_state.yml) remains compatible
between dtas-player before and after this change.
|
|
Eventually this will support searching and be the basis
of an mpd-compatible proxy in front of dtas-player
|
|
We can generate many command calls easily and dynamically, so
avoid the code and cognitive overhead for the majority of commands.
|
|
Seems a bit stupid, but oh well.
|
|
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.
|
|
This can make it easier to specify mcompand parameters in
socks, as those require separate levels of parameter parsing
and require quoting in shell.
|
|
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
|
|
We need to generate a coherent command set for wrapping
portions together, this sets us up for that.
|
|
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.
|
|
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 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.
|
|
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 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).
|
|
While we're at it, document the splitfx manpage and
make the example suitable for tests.
|
|
This allows splitfx users to test CUE breakpoints and run
file-specific effects without interrupting their normal flow.
|
|
Process.spawn allows vfork() + execve() usage in Ruby 2.2.0 to
improve performance over normal fork() + execve().
|
|
This allows the same sound to be reused in tests.
|
|
This will not be needed after all.
|
|
This is more generically supported via variables.
|
|
Just skip the test for now since systems without opusenc and opusdec
are becoming rarer.
|
|
RubyGems is not available on some LTS distros (Ubuntu precise with
Ruby 1.9.3-p0)
|
|
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)
|
|
I'm still normal, and still trolling, but 80x24.org will be epic :)
|
|
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.
|
|
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.
|
|
This allows parsing and will eventually interact with trimfx.
|
|
Only lightly tested, but this should give us some idea of where
we'll be going...
|
|
This will be dependent upon sox for the trim effect,
at least. Other bits will be exposed as needed.
|
|
This will allow editing individual portions of audio of
a larger file while creating cross fade effects to join
them.
|