Date | Commit message (Collapse) |
|
Brown paper bag release to fix hanging at the end of a
track/playlist when using a single audio output with
Linux splice.
|
|
This fixes hanging when using a single audio output for
Linux users using splice.
|
|
This bumps version requirements for sleepy_penguin and
dtas to eliminate the "io_splice" dependency for Linux
users.
|
|
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
|
|
|
|
Sometimes files become unreadable.
|
|
It happens with some video files, apparently.
|
|
The SQLite busy waiting scheme isn't great for usability
and the busy timeout is done by sleep+backoff. I prefer
to say we only support filesystems with flock() for our
little DB.
|
|
Redundant since ("player: support guessing encodings for comments")
|
|
Apparently some degree of thread-safety is being enforced;
not sure I agree, but oh well...
|
|
Oops, a Perlism crept in :x
|
|
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.
|
|
I forgot to update this path when our website changed from
http://dtas.80x24.org/ to https://80x24.org/dtas/ to reduce
TLS renewal and negotiation overhead.
Thanks to Rene Maurer for noticing.
cf. https://80x24.org/dtas-all/20180111114546.77906b35@cumparsita.ch/
|
|
We must do this if the user does not use UTC in their time zone,
otherwise things could get a bit wacky in the display.
|
|
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
|
|
There's a couple of minor bugfixes and features that's been
sitting around for a while in git. Internally there's some
garbage reductions so player processes might be a bit smaller.
21 changes since dtas 0.14.2 (2016-03-18):
player: "cue prev" reliably hits previous cue breakpoint
README: add link to gmane NNTP server
player: extra "cue" seeking functionality
archive: fix suffix replacement for stats
dtas-readahead: cleanup open files on pause
readahead: handle queued commands properly
mlib: use transaction for removing stale entries
splitfx: more consistently generate fade_in effects
format.from_file: reduce soxi invocations
introduce mcache class for caching audio metadata
source/sox: integrate mcache support to reduce soxi calls
test/test_rb_state: quiet deprecation warning
http -> https, and relocate homepage to https://80x24.org/dtas/
player: freeze sink name to avoid needless dup
source/sox: simplify conditional, slightly
buffer/splice: remove MAX_SIZE constant
rg_state: fix no-op gain detection
source/sox: relax comment NAME restriction
readahead: handle queued commands properly (again)
readahead: fix running commands with non-files
deduplicate strings using String#-@ (uminus) in Ruby 2.5+
|
|
This is faster than relying on eval() for older Rubies.
https://bugs.ruby-lang.org/issues/13077
Ruby 2.5 is targetted for release in December 2017.
|
|
|
|
We may have hashes in the queue, too.
Followup-to: af91a075c10c ("readahead: handle queued commands properly")
|
|
This is needed for the "ALBUM ARTIST" tag which has a space in
the name. This is looser than
<http://www.xiph.org/vorbis/doc/v-comment.html>, but probably
good enough for practical purposes.
|
|
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
|
|
One normal method dispatch is probably preferable to two
optimized instructions + immediate.
|
|
Ruby Hashes will automatically create frozen copies of unfrozen
strings used as hash keys to avoid accidental mutation.
Pre-freeze keys explicitly so the Ruby VM will not need to
create the frozen copy.
|
|
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.
|
|
Spawning processes under Ruby on Linux is relatively cheap,
but may not be for other OSes and it's still cheaper to
spawn fewer processes.
|
|
No reason to generate the command in a different place than
fade_out.
|
|
This ought to avoid busy DB errors.
|
|
We can't do much for readahead when it comes to dtas-player
running arbitrary commands.
|
|
We must not leave open files lingering when the player pauses,
as it could prevent remote filesystems from unmounting.
|
|
We should generate "XYZ_0001.stats" files,
not "XYZ_0001.flac.stats".
|
|
These commands allow easier jumping within a track marked by
embedded CUE sheets. I've found them helpful for tracking out
large recordings of multiple tracks (e.g. vinyl transfers or
live concert recordings).
|
|
In case the news.public-inbox.org server goes down,
gmane is also available and is fed directly by the nongnu.org
Mailman instance.
|
|
Seeking around a track should not be done relative to
a previous seek, but should rather be analogous to the
"tl prev" command to skip around the tracklist.
I'm not sure what drugs I was on when I originally wrote
this original version, but I'm fairly certain this is a
bugfix and not intentional behavior.
|
|
This release contains several fixes needed to run dtas-player
under Debian jessie systems where libav-tools no longer provides
ffprobe. dtas-player should now fall back more smoothly
to its splitfx YAML format if neither libav-tools nor ffmpeg
are installed, as they are optional dependencies.
Note: mp3gain is missing under Debian jessie, so you
will not be able to use ReplayGain with MP3 files.
This will be worked around in another release.
Finally, this also fixes a bug in 0.12.0 for non-sleepy_penguin
RubyGem users which relied on pipes for notification.
3 changes since 0.14.0:
av_ff_common: fixes for libav-tools under Debian Jessie
dtas-readahead: do not barf on missing ffprobe/avprobe
sigevent/pipe: require file for DTAS::Nonblock properly
Note: ignore the 0.14.1 tag, it was broken and missed INSTALL
changes
|
|
This release contains several fixes needed to run dtas-player
under Debian jessie systems where libav-tools no longer provides
ffprobe. dtas-player should now fall back more smoothly
to its splitfx YAML format if neither libav-tools nor ffmpeg
are installed, as they are optional dependencies.
Note: mp3gain is missing under Debian jessie, so you
will not be able to use ReplayGain with MP3 files.
This will be worked around in another release.
Finally, this also fixes a bug in 0.12.0 for non-sleepy_penguin
RubyGem users which relied on pipes for notification.
3 changes since 0.14.0:
av_ff_common: fixes for libav-tools under Debian Jessie
dtas-readahead: do not barf on missing ffprobe/avprobe
sigevent/pipe: require file for DTAS::Nonblock properly
|
|
This fixes a bug introduced in 0.12.0 which only affects
non-sleepy_penguin users.
Fixes: d3cf61b05d95 ("switch to exception-free non-blocking I/O")
|
|
Both of these are optional, so stop trying them if we
do not detect them.
|
|
Newer avprobe outputs a new format, fix our parser to workaround
this while remaining compatible with the old one in Debian wheezy.
Additionally, ffprobe is no longer available as a link to
avprobe.
|
|
The player tracklist now has a "consume" mode similar to
what exists mpd. The advantage of using "tl consume"
over the plain queue is the tracklist is more easily
editable. You may enable or disable it in a running
player using:
dtas-tl consume <true|false>
This also fixes an output formatting bug in "dtas-tl cat"
introduced in 0.13.1.
Documentation is converted to Perl POD documentation format.
It should be easier to build the documentation as pod2man
is nearly universal nowadays, unlike pandoc.
14 changes since 0.13.1:
doc: update-footer.rb: fix for frozen_string_literal
doc: convert to perlpod(1) from Markdown
doc: preserve times in website
dtas-tl: fix "cat" output
player: avoid allocation on sort
String#split with a single-byte instead of regexp
source/sox: explicitly freeze comment keys
source/sox: try_to_fail_harder is a normal method
mlib: support all formats of player
mlib: support --force option
build: install-gem forced to "--local" domain
mlib: use more appropriate methods
player: support "consume" mode for tracklist
doc: update documentation for tl consume and shuffle
Many more releases on the horizon!
|
|
shuffle was never documented in dtas-tl(1) when it was introduced,
and consume is a new feature.
|
|
When activated, this boolean deletes a song from the tracklist
after it is played.
|
|
.each on a Sequel dataset is more appropriate for the way we
emit comments.
And using Array#map! is more efficient when we do not
need the original array.
|
|
This avoids needless network traffic when installing the
locally-built gem.
|
|
We will allow forcing updates since upgrading dependent software
(e.g. sox, avprobe, ffprobe) may allow previously-ignored files
to become support
|
|
Almost, we will need to get a list of all suffixes supported
by ffprobe or avprobe. This could prove tricky..
|