File NEWS artifact d261d2ad45 part of check-in 6df00049c0


;;;; -*- coding: utf-8; fill-column: 78 -*-

changes in Benben v0.7.1 relative to Benben 0.7.0:
  * Library updates:
    * SatouSynth minimum is now v0.1.4.  This fixes a bug in the NES emulation
      core where some NES VGM files aborted playback when they attempted to
      load data into the emulated chip's RAM.
    * CL-RemiAudio minimum is now v0.1.3.
    * CL-RemiMarshal minimum is now v0.4.3.
    * CL-SDM minimum is now v0.99.38.
  * Minor breaking change: The zero-order hold resampler option has been
    removed.  Given how low of a quality this resampler was, and with very
    little performance improvement compared to Linear, this has been deemed a
    minor breaking change.
  * Fixed: The total elapsed time no longer starts updating at 7 seconds when
    resampling.  It instead starts updating immediately, as it should.
  * Fixed: Song config reloading now works.
  * New: Added support for RIFF Wave (.wav) files that use IMA ADPCM encoding.
  * Changed: The Sinc-Best and Sinc-Medium resampler modes are no longer
    included in the binary by default when building using build.sh or the
    AppImage build script.  These options were VERY overkill, and this also
    saves at least five megabytes in binary size.  To include them, use:
    ./build.sh --all-resamp
  * Changed: Better info line for RIFF Wave files.
  * Changed: The default stereo enhancement value is now 1.1 (old default was
    1.0, which was the same as 'no change'; this can still be changed in the
    config file).
  * Changed: The DC filter is no longer enabled by default (it isn't needed
    most of the time).

changes in Benben v0.7.0 relative to Benben 0.6.2:
  * Rewritten in Common Lisp.
  * Breaking change: The TCP driver format names have changed.
  * Breaking change: Format-specific command line arguments are now prepended
    with their name (e.g., --vgm-* for all VGM-related arguments).
  * Breaking change: The reverb preset names have changed.
  * Breaking change: The resampler names have changed slightly.
  * Breaking change: "schroeder" is no longer selectable as a reverb type for
    midi playback.
  * Breaking change: The PulseAudio and PortAudio drivers have been removed.
    You can use the libao or out123 drivers as a substitute for these.
  * New: Added the ALSA driver.
  * New: Added the out123 driver.
  * New: Added the --basedir argument.
  * New: A DC offset filter is now available.  This can be enabled with the
    --dc-filter option, or in the config with the "dc-filter" key.  It is
    enabled by default.  The --no-dc-filter option has also been added.
  * New: The --ui argument has been added.
  * New: The --fadeout-seconds argument has been added.
  * New: The --midi-soundfont argument has been added.
  * New: The --midi-reverb-type argument has been added.
  * New: An alternative UI, the "Minimal UI", has been added.  This is bare
    bones: it just prints information as the tracks change, and you have to
    control Benben with the remote-benben program.  This UI also works
    perfectly in Emacs with Slime ^_^  The Original UI still exists, of
    course, and is still the default.
  * New: ListenBrainz support added.
  * New: Added the --no-listenbrainz command line options.
  * New: Added the --vgm-strict-gd3-loading command line option.
  * New: Support for the Extended QOA Format (XQAF/XQA, .xqa) has been added.
  * New: You can now set the banner animation in your config file.
  * New: Added the 'max-file-size' config option to the 'vgm' configuration
    section of the config file.
  * New: Added the post-track-seconds config option to the "modules" config
    section.
  * New: Added the --no-song-configs command line option.
  * New: Added the --start-paused command line option.
  * New: Added the "display-loop-times-separate" key to the "ui" section of
    the config to display the time-per-loop in the song queue area as well as
    the total time.
  * New: Pressing the upper-case U key now toggles "pause after current" in
    the Original UI.
  * New: Added the "recurse-directories" config option and associated
    --recurse/--no-recurse CLI options for recursively adding files in
    subdirectories.
  * New: Added the --vgm-dmg-boost-wave-chan, --vgm-no-dmg-boost-wave-chan,
    --vgm-ym2612-pseudo-stereo, and --vgm-no-ym2612-pseudo-stereo arguments.
  * New: Added the --sid-mono and --sid-def-length arguments.
  * Enhancement: SoundFont paths are now checked earlier at startup, and
    regardless of if MIDI files are being played.
  * Enhancement: The remote control socket is now removed properly when
    ctrl-c is used.
  * Enhancement: VGMs with GD3 tag size mismatches are now more thoroghly
    handled.
  * Enhancement: ReplayGain, when present in the metadata, is now applied to
    WavPack, MPEG-1, Vorbis, XQA, Opus, and FLAC.
  * Enhancement: The progress bar will now print 'fading' when the song is
    being faded out.
  * Enhancement: On platforms that support it, SIMD processing is now performed
    to speed up a few sections of code.
  * Enhancement: Initial file checking is now done in parallel and is
    sometimes much faster.
  * Enhancement: Much faster response times to remote-benben requests.
  * Enhancement: The internal design has been streamlined, and a lot of
    duplicated code has been removed.
  * Enhancement: When the driver is "any", and the default fails, then Benben
    will continue to try other drivers.
  * Enhancement: A running total of the total elapsed time is now shown at the
    bottom of the screen.
  * Enhancement: The state of Repeat List/Stop After Current/Pause After
    Current is now shown at the bottom of the screen next to the CPU usage.
  * Enhancement: VGMs now support seeking.
  * Changed: The default resampling mode is now "linear".
  * Changed: When the driver is set to "any", it now defaults to out123 first,
    then ALSA, then AO.
  * Removed: Benben can no longer render to QOA or WavPack.  Use XQATool (for
    QOA/XQAF) or the wavpack command to convert WAV/Au to these formats
    instead.  Removed to better fit within a Unix-style philosophy.

changes in Benben v0.6.2 relative to Benben 0.6.1:
  * Fixed: Update Haematite to v0.5.4.  This adds a workaround for handling of
    SoundFonts that have unusual loop points for samples (e.g. the end
    position comes before the start position).
  * Fixed: The display of WavPack average bitrates is now correct (it was
    showing bits, not kbits).
  * Enhancement: the output directory that gets created when rendering will
    now be created with mode 0700.

changes in Benben v0.6.1 relative to Benben 0.6.0:
  * Fix a potential hang when resampling and playing a FLAC file.
  * Fix truncated FLAC files causing a crash.
  * Better debug output.
  * Minimum buffer size has been reduced to 256, and is also the new default.

changes in Benben v0.6.0 relative to Benben 0.5.0:
  * YunoSynth updated:
    ** YM2413/VRC7 added
  * New: You can now play Commodore 64 SID files.
  * New: Quite OK Audio (QOA) format support added.  You can now play
    Commodore 64 SID files, including 2SID and 3SID formats.  Support for the
    HVSC songlength's database is also included.
  * New: WavPack format support added, including support for hybrid WavPack
    files.
  * New: Benben can now render to QOA format.
  * New: Benben can now render to WavPack format, including hybrid WavPack
    files.
  * New: Benben can now be controlled remotely (see --remote).
  * New: TCP audio output driver to send audio over a TCP connection.
  * New: The --scan-only argument has been added, which tells Benben to scan
    files at startup like normal, then exit before playing anything.
  * New: You can now type a capital 'P' to toggle repeating the song queue
    during playback.
  * New: You can now type a capital 'I' to display extended information about
    the state of the effects stack and resampler.
  * Enhancement: String allocations reduced throughout for lower memory usage.
  * Enhancement: You can now specify either a single theme, or an array of
    themes, in the config file.  When it's an array, a random one out of that
    array will be chosen.
  * Enhancement: If the terminal is larger than 80x24, the play queue will
    expand to fill the empty space (it previously expanded horizontally, but
    not vertically).
  * Enhancement: Normalization now happens in parallel as jobs are being
    rendered.  This slightly improves performance.
  * Enhancement: The terminal title is now set to the title or filename of the
    currently playing song.
  * Enhancement: The colors of the bars above and below the banner can now be
    themed.
  * Enhancement: The current theme can now be reloaded while the program is
    running.  This should aid in theme development.
  * Enhancement: The soft-clipping effect can now have optional oversampling
    applied, up to an absurd 65535x (default is just 1x, as before).
  * Enhancement: Support for FLACs that are encapsulated in Ogg containers
    added.
  * Enhancement: Seeking support for Ogg Vorbis and Opus files.
  * Enhancement: Faster Ogg demuxing.
  * Enhancement: Slightly better memory usage when decoding FLAC files.
  * Removed: HTTP/HTTPS support and Gemini support has been removed.  These may
    be added back in the future, however.  This was only supported by VGM files
    anyway.
  * Fixed (partially): The progress bar when rendering is now slightly more
    accurate. The inaccuracy would almost never, ever be noticed, however.
  * Fixed: The screen now consistently redraws properly when resizing the
    window, and when Ctrl-Z/SIGTTSP is used.
  * Fixed: Module files would not be resampled correctly if the output rate
    was not 44100.
  * Fixed: MPEG-1 files that are being resampled no longer cut off early.
  * Fixed: PCM files that are being resampled no longer cut off early.
  * Fixed: Progress bar positions are now reported correctly for FLAC files
    when resampling.
  * Fixed: Progress bar positions are now reported correctly for MPEG-1 files
    when resampling.
  * Fixed: Progress bar positions are now reported correctly for PCM files
    when resampling.
  * Fixed: Progress bar positions are now reported correctly for module files
    when resampling.
  * Fixed: A possible crash when resizing the terminal window.
  * Fixed: A possible crash/deadlock with the error "Logger not yet started".

changes in Benben 0.5.0 relative to Benben 0.4.1:
  * Updated YunoSynth to v0.4.4
  * Breaking change: The config file format has changed.  You are encouraged
    to backup your current config, then let Benben create a fresh one that you
    then re-edit.
  * New: MP3, MP2, and MP1 support added.
  * New: Module file support added via RemiXMP.  The interpolation mode can be
    changed at runtime with the 'i' key.
  * New: FLAC file support added via RemiAudio.
  * New: Opus file support added.
  * New: Ogg Vorbis file support added.
  * New: MIDI file support added.
  * New: Playback of WAV and Au files added.
  * New: MPEG-1/FLAC/Opus/Ogg/PCM files are resampled using a high quality
    resampler based on libsamplerate when their sample rates do not match the
    player's output rate.
  * New: Song-specific configs can be reloaded at run time with the 'C' key.
  * New: theme support.  If truecolor ANSI support isn't working, and you know
    your terminal supports 24-bit colors, try setting the COLORTERM=truecolor
    environment variable before using Benben.
  * New: Added the --long-version argument.
  * New: More startup animations added.
  * New: Seeking support for MP3, MP2, MP1, RIFF WAV, module files, and Au
    files added.  Support for seeking in other formats will come in the
    future.
  * New: ReplayGain support for MPEG-1, Vorbis, Opus, and FLAC files.
  * New: Added the --shuffle argument.
  * Change: The maximum sample rate is now 48KHz.
  * New: The code can now be compiled with -Dstrict_multi_assign and
    -Dno_number_autocast
  * New: A Texinfo manual is now available.

changes in Benben 0.4.1 relative to Benben 0.4.0:
  * Updated to YunoSynth v0.4.1.
  * Fixed: Building using Crystal v1.5.0 now works again.
  * Fixed: Building on Dragonfly BSD now works again.
  * Fixed: Disabling certain drivers with the Rakefile now works properly and
    disables them in RemiSound as well.

changes in Benben 0.4.0 relative to Benben 0.3.1:
  * Updated YunoSynth to v0.4.0:
    ** NES APU and DMC support
    ** Famicom Disk System support
    ** Seta X1-010 support
    ** Philips SAA1099 support
    ** Sega PWM (32x) support
    ** Bandai Wonderswan support
  * Enhancement: Added the --normalize command line option for automatic peak
    normalization of rendered files.
  * Enhancement: Added the --quiet command line option.
  * Enhancement: Pressing `S` will now let you toggle a "quit after current
    song" option during playback.
  * Enhancement: Added the equalizer-disabled-during-rendering config
    option. Turning this on will allow you to normally have an EQ enabled
    during playback, but also have it automatically disabled when
    rendering. This also works in per-song config files.
  * Enhancement: CUE files can now be generated when rendering.
  * Enhancement: The CPU usage is now shown during playback and rendering.
  * Enhancement: You can pass a directory to Benben directly and it will play
    all files it finds in that directory.
  * Enhancement: Errors that get printed on stderr are now redirected to a
    file (e.g. ~/.local/share/benben/stderr.log) by default. This is to
    prevent things such as PortAudio or YunoSynth from printing errors to the
    screen that can mess up the UI. This can be disabled in the config.
  * Fixed: JSPF playlist loading works again.
  * Fixed: You can now go to the next/previous song, or quit, while a song is
    fading out.
  * Fixed: The EQ setting now properly "sticks" between songs when it's
    toggled during playback.

changes in Benben 0.3.1 relative to Benben 0.3.0:
  * Updated RemiAudio to a newer commit.  This should fix a very subtle EQ
    bug (probably inaudible to most people).
  * Enhancement: The post-gain option in the equalizer section of the config
    file can be used to set a post-EQ adjustment gain.  This value is in
    decibels.
  * Fixed: the default EQ bands were being processed even when they did
    were supposed to be overridden.
  * Fixed: The 'rounded' banner can now be correctly selected with the
    BENBEN_BANNER environment variable.
  * Enhancement: Removed a few unused class fields to save a few bytes of memory.
  * Fixed: Fix a potential bug in the UI regarding the loops.  This would only
    have been visible for one frame.
  * Small cleanups.

changes in Benben 0.3.0 relative to Benben 0.2.0:
  * Update YunoSynth to v0.3.0:
    ** Y8950 support
    ** YM3526 support
  * Enhancement: libao is now supported as an audio backend.
  * Enhancement: Entirely new UI based on S-Lang.  It closely resembles the
    old UI, but is faster, less prone to glitching, and has a few extra
    features.
  * Enhancement: Playback now takes advantage of multiple cores.
  * Enhancement: The audio buffer size can now be adjusted.
  * "Enhancement": Benben will now ensure the Crystal runtime spawns enough
    worker threads.
  * Enhancement: When a channel clips, even if it's just for one sample, it
    will now be shown on the VU meter by highlighting the channel name in
    red.
  * Deprecation: The refresh-rate config option is now deprecated and ignored.
  * Fixed: Changing the volume now properly carries over between tracks.

changes in Benben 0.2.0 relative to Benben 0.1.0:
  * Update YunoSynth to v0.2.0:
    ** BZip2 compressed VGMs
    ** YM2612 support
    ** SN764xx support
    ** YM3812 support
    ** YMF262 support
    ** RF5C164 support
    ** VSU-VUE support
    ** ES5503 support
    ** Fixed an infinite loop in the uPD7759
    ** The Nuked core for the YM2151 now works (MAME is still the default)
  * Updated RemiAudio to v0.3.1:
    ** Optimization: Improved rendering speed and resource usage.
  * Added: The --chip-info command line argument will display a list of all
    supported chips.
  * Added: The output path when rendering can now contain optional template
    strings, which will be filled out with GD3 tag information.
  * Added: The display of the GD3 tag information can now be set to
    "toggle_prefer_english" or "toggle_prefer_japanese" in the config file.
    When this is set, then the tag information starts with the preferred
    language, then toggles between them every 15 seconds during playback.
  * Added: More banners.
  * Added: The time it takes to fade out can now be set in the config file.
  * Improvement: The fade out calculations have been improved.
  * Improvement: The song-specific config files are now checked in
    alphabetical order.
  * Improvement: Display the overall average samples per second after
    rendering.
  * Added: The --overwrite parameter is now required to overwrite existing
    files when rendering.
  * Removed: The --yes parameter has been removed (it did nothing).
  * Fixed: Too many jobs were being launched when rendering.
  * Fixed: The progress bar display was showing incorrect information when
    rendering.
  * Fixed: The annotation in Au files was incorrect.
  * Fixed: File paths in XSPF files are now decoded properly.
  * Breaking change: Song-specific config files can no longer contain these
    fields, all of which were previously unused and erroneously included:
    ** reverb-type
    ** mverb-reverb-preset
    ** zita-reverb-preset