File NEWS from the latest check-in


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

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: 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: Added the --vgm-strict-gd3-loading command line option.
  * New: Support for the Extended QOA Format (XQAF/XQA, .xqa) has been added.
  * 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, and Opus files as well as 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.
  * Changed: The default resampling mode is now "linear".

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