My foobar2000 components

2SF Decoder

Version 0.26, updated on December 1, 2020; requires foobar2000 version 1.4.

This component decodes game music for the Nintendo DS console, as ripped in the .2SF or .MINI2SF formats.

https://git.lopez-snowhill.net/chris/foo_input_vio2sf/-/commits/master
https://bitbucket.org/losnoco/2sf2wav/commits

7-ZIP Reader

Version 1.12, updated on February 4, 2017; requires foobar2000 version 1.3.

This component is made obsolete by foobar2000 version 1.6, which includes 7-zip support in its bundled Archive Support component.

This component unpacks 7-Zip archives (.7z) for use with any format supported by the player. It is not advised for use with large solid archives of equally large sound files, as they probably won't compress well, and will likely take ages to unpack, every single time you play the file.

https://git.lopez-snowhill.net/chris/foo_unpack_7z/-/commits/master
https://git.lopez-snowhill.net/chris/file_extractor/-/commits/master

AC3 decoder

Version 0.9.13, updated on February 1, 2019; requires foobar2000 version 1.3.

This component decodes .AC3 audio files, and streams containing .AC3 format audio in other container formats supported by the player or other components.

https://git.lopez-snowhill.net/chris/foobar2000/-/blob/master/plugins/foobar/foobar2000/foo_ac3/ac3.cpp

AdPlug

Version 1.55, updated on August 9, 2020; requires foobar2000 version 1.3.

This component decodes several old MSDOS and game formats specific to the AdLib / OPL2 sound chip. This includes .HSC, .SNG, .IMF/.WLF/.ADLIB, .A2M, .AMD, .BAM, .CMF, .D00, .DFM, .HSP, .KSM, .MAD, .LAA, .MKJ, .CFF, .DMO, .S3M, .DTM, .MTK, .RAD, .RAW, .SAT, .XAD, .LDS, .M, .ROL, .XSM, .DRO, .MSC, and .RIX.

https://git.lopez-snowhill.net/chris/foo_input_adplug/-/commits/master
https://git.lopez-snowhill.net/chris/foobar2000/-/tree/master/plugins/adplug

AVS input

Version 0.6, updated on January 16, 2018; requires foobar2000 version 1.0.

AVISynth Input, requires the AVISynth runtime (32-bit), decodes .avs scripts, audio only.

DTS decoder

Version 0.6.8, updated on February 20, 2019; requires foobar2000 version 1.4.

This component decodes .DTS and .DTSWAV files, and also decodes DTS and DTS-derived bitstreams in other raw PCM stream containers, including .WAV, .FLAC, .WV, and .TAK. It also decodes DTS packets in several stream container formats, including .MP4 and .MKA.

https://git.lopez-snowhill.net/chris/foo_input_dts/-/commits/master
https://git.lopez-snowhill.net/chris/foo_input_dts/-/blob/master/dts.cpp

EBU R128 Normalizer

Version 1.12, updated on February 4, 2017; requires foobar2000 version 1.3.

This component provides a simple DSP for normalizing audio tracks using a running windowed calculation of the EBU R-128 standard, targeting the same average volume level as the player's stock ReplayGain component. This is not the same as proper ReplayGain, however, as it is shifting over time, rather than applying a constant level across an entire track.

https://git.lopez-snowhill.net/chris/foobar2000/-/blob/master/plugins/foobar/foobar2000/foo_r128norm/foo_r128norm.cpp

fdk-aac packet decoder

Version 1.14, updated on November 10, 2020; requires foobar2000 version 1.4.

This component replaces the stock input component's AAC decoder with the one from FDK-AAC v2.0.1, to support AAC formats not supported by FFmpeg, such as xHE-AAC / USAC.

https://git.lopez-snowhill.net/chris/foo_pd_aac/-/commits/master
https://git.lopez-snowhill.net/chris/fdk-aac/-/commits/master

Game Emu Player

Version 1.218, updated on August 14, 2020; requires foobar2000 version 1.3.

This component plays emulated console music formats and logged console music formats. It supports .AY, .GBS, .GYM, .HES, .KSS, .NSF/.NSFE, .SAP, .SGC, .SPC, .SFM, and .VGM. It also supports the compressed formats .RSN (renamed RAR), .VGZ (gzipped .VGM), and .VGM7Z (renamed 7-Zip), without any extra archive components.

https://git.lopez-snowhill.net/chris/foo_gep/-/commits/vgmplay
https://git.lopez-snowhill.net/chris/game_music_emu/-/commits/vgmplay
https://git.lopez-snowhill.net/chris/vgmplay/-/commits/master
https://git.lopez-snowhill.net/chris/file_extractor/-/commits/master

GSF Decoder

Version 3.0.19, updated on February 28, 2020; requires foobar2000 version 1.4.

This component decodes Gameboy Advance music in the .GSF or .MINIGSF format. The .MINIGSF format requires its accompanying .GSFLIB files to be present in the same form as they were packaged by the ripper, usually the same directory.

https://git.lopez-snowhill.net/chris/foo_input_gsf/-/commits/master
https://git.lopez-snowhill.net/chris/mgba/-/commits/gsfplayer
https://git.lopez-snowhill.net/chris/psflib/-/commits/master

HDCD decoder

Version 1.19, updated on February 4, 2017; requires foobar2000 version 1.3.

This component automatically decodes HDCD streams contained in several supported lossless containers, including .WAV, .FLAC, .WV, and .TAK. It also supports scanning files for HDCD features in use to report in a list.

https://git.lopez-snowhill.net/chris/foo_hdcd/-/commits/master

Hively Tracker decoder

Version 1.19, updated on January 14, 2018; requires foobar2000 version 1.3.

This component decodes .AHX format files, and the advanced derivative format, .HVL. It also came to my attention that this player library was derived from leaked source code without permission. It is not my intention to stir up trouble, just to support these relatively obscure file formats. This library just happens to be the cleanest way to support .AHX files on any platform that can support compiled C/C++ code, and is way less of a mess than the old AHX replayer, and its mix of assembly code.

https://git.lopez-snowhill.net/chris/foo_input_hvl/-/commits/master

KDM Decoder

Version 1.3, updated on January 14, 2018; requires foobar2000 version 1.3.

Decodes Ken Silverman's .KDM music files.

LHA reader

Version 1.13, updated on February 4, 2017; requires foobar2000 version 1.3.

This component unpacks archives in the LHARC/LHA .LHA format, using source code from an old Unix utility, somewhat cleaned up to prevent crashing on malformed files.

https://git.lopez-snowhill.net/chris/foo_unpack_lha/-/commits/master

Lunar 2 PCM decoder

Version 0.9, updated on January 30, 2018; requires foobar2000 version 1.3.

Decodes the RP*.PCM files from the Lunar: Eternal Blue disc for the Sega CD console. Includes bundled metadata for both US and Japanese releases.

https://git.lopez-snowhill.net/chris/foo_lunar2/-/commits/master

MIDI Player

Version 2.4.1, updated on October 18, 2020; requires foobar2000 version 1.4.

This component decodes General MIDI files (.MID, .MIDI, .RMI, .KAR) and several MIDI based formats. (.MIDS, .MDS, .HMI, .HMP, .MUS, .XMI, .LDS)

It supports several synthesizers, several of which do not require any additional files to play back music. The bundled synthesizers which do not require additional files may sound rather basic, though.

It also supports Ian Luck's wonderful BASSMIDI SoundFont (.sf2) based synthesizer, including bundled support for his .sf2pack format, which is nearly identical to the basic .sf2 format, except the file identifier is "sfpk" instead of "sfbk", and the audio section of the file is a compressed format supported by BASS that also supports seeking, as it decodes the samples as they are referenced by the MIDI files. The compressed format is identified only by its bitstream properties. BASS includes support for MP3 and Ogg Vorbis samples, while plugins are bundled to support FLAC, WavPack, Musepack, and Opus format samples.

FLAC is the suggested format for saving space and fast decoding, while Opus is suggested for "preview" type downloads, as it provides a relatively stable waveform for loops in this format, while compressing quite a bit. However, I cannot recommend using lossy compression of SoundFonts as a final distribution format, as loops could still show errors.

SoundFonts may be loaded in a simple, or even complex setup, using either basic .sflist text files encoded in UTF-8 format, or .sflist.json files, also encoded in UTF-8 format. A description for the SFLIST JSON format, as well as a parser capable of handling both the original and JSON formats, may be found here:

https://gist.github.com/kode54/a7bb01a0db3f2e996145b77f0ca510d5

Please note that the VST instrument and Secret Sauce support executables are bundled, and are invoked using named pipes for communication with standard input and output devices on the executable end. The full source code is also published, in case anyone wants to replicate them, or use them for another purpose. They are built with the same compiler as this component, but since they are not themselves components, they require the Microsoft Visual Studio 2015 C++ runtimes. Both 32 and 64 bit versions, to be precise.

https://git.lopez-snowhill.net/chris/foo_midi/-/commits/master
https://git.lopez-snowhill.net/chris/midi_processing/-/commits/master
https://git.lopez-snowhill.net/chris/libadlmidi/-/commits/master
https://git.lopez-snowhill.net/chris/midisynth/-/commits/master
https://git.lopez-snowhill.net/chris/scc/-/commits/master
https://git.lopez-snowhill.net/chris/munt/-/commits/master
https://git.lopez-snowhill.net/chris/foobar2000/-/tree/master/plugins/SCPipe

MultiResampler

Version 1.1.2, updated on June 1, 2017; requires foobar2000 version 1.0.

This component contains multiple low latency resamplers, designed for experimental purposes, but may prove useful for some users. Included are:

* Zero Order Hold: No interpolation, no anti-aliasing.
* Band-Limited Synthesis: No interpolation, anti-aliased using bandwidth limiting.
* Linear Interpolation: Simple linear interpolation filter, no anti-aliasing.
* BLAM - Band-Limited Linear Interpolation: Linear interpolation, with a bandwidth limiting filter applied.
* Cubic interpolation: Quadratic/Cubic interpolation filter, no bandwidth limiting.
* Sinc Interpolation: High quality windowed sinc interpolation, with basic bandwidth limiting for downsampling modes. Not as high quality as the resamplers provided by the core, but guaranteed lower latency, and mostly indistinguishable quality at 16 bits per sample or less.

NCSF Decoder

Version 1.17, updated on August 5, 2020; requires foobar2000 version 1.4.

Decodes .NCSF and .MININCSF files, containing Nintendo DS music based on the SDAT/SSEQ format.

https://git.lopez-snowhill.net/chris/foo_input_ncsf/-/commits/master
https://git.lopez-snowhill.net/chris/sseqplayer/-/commits/master
https://git.lopez-snowhill.net/chris/psflib/-/commits/master

On-Screen Display

Version 1.74, updated on February 4, 2017; requires foobar2000 version 1.3.

This component provides configurable screen overlays which may be opened with hotkeys, or appear on specific events. Each overlay is configured separately, and has its own set of events.

https://git.lopez-snowhill.net/chris/foo_osd/-/commits/master

OpenMPT component (kode54 fork)

Version 0.5.4, updated on December 2, 2020; requires foobar2000 version 1.4.

This component decodes modules, or music files combining both samples and sequence data and effects, using libopenmpt. Its version number is usually derived from the associated libopenmpt version, with a plus sign and trailing number if I add any extra commits following a library update. It supports files in the following formats: .MPTM, .MOD, .S3M, .XM, .IT, .669, .AMF, .AMS, .C67, .DBM, .DIGI, .DMF, .DSM, .DTM, .FAR, .IMF, .ICE, .J2B, .M15, .MDL, .MED, .MMS, .MT2, .MTM, .NST, .OKT, .PLM, .PSM, .PT36, .PTM, .SFX, .SFX2, .ST26, .STK, .STM, .STP, .ULT, .WOW, and .GDM. It also supports Ian Luck's .MO3 compressed format with MP3, Ogg Vorbis, or ADPCM samples, and it also supports arbitrary archive formats with the extensions of .MDZ, .MDR, .S3Z, .S3R, .XMZ, .ITZ, or .MPTMZ, assuming foobar2000's Archive Support plugin is installed, or any other archive plugin.

https://git.lopez-snowhill.net/chris/foo_openmpt/-/commits/master
https://lib.openmpt.org/doc/changelog.html

Note: The included "sinc" resampler is equivalent to the OpenMPT software's "sinc + lowpass", aka sinc plus anti-aliasing filter. The option to disable this filter is not currently exposed in the libOpenMPT API, and even if it were, it would be an implementation detail only relevant to the "sinc" resampling filter size.

Pause on Lock

Version 0.8, updated on February 28, 2020; requires foobar2000 version 1.4.

This component adds the ability to optionally pause or stop on display lock, and also optionally unpause or restart playback upon unlock if an action was taken on lock.

To use this component, you must first enable it in the Playback menu. Then you must open Preferences, locate Advanced, and navigate through the Playback category to Lock Actions, and configure it to do something.

https://git.lopez-snowhill.net/chris/foobar2000/-/blob/master/plugins/foobar/foobar2000/foo_lock/foo_lock.cpp

Programmable reverb DSP

Version 1.3, updated on February 3, 2017; requires foobar2000 version 1.0.

This component is loosely based on the Sony PlayStation 1 and 2 reverb engine, based on code from the P.E.Op.S. SPU emulator software. It includes presets from the PlayStation SDK, and is fully configurable to an insane degree. Probably more than adequate for most reverb needs.

Its reverb system is roughly monaural, pushing both input samples from stereo into different offsets of the same ring buffer, and sampling the left and right outputs from different offsets again. Mono input will be promoted to stereo.

Quad front/rear inputs will apply the reverb on the average of the front and rear inputs, and re-apply the difference between the two to the output, so it's also usable with the included upmix DSP which promotes the input from stereo to quad, while filling the rear channels with silence. Just add this upmix DSP before the reverb DSP, and it should produce a handy upmix effect.

Two flavors of the DSP are provided. One attempts to scale the buffer sizes and coefficient sampling and writing offsets relative to the given sample rate, since the original offsets were tuned for a reverb engine running at 22050Hz. The other reverb DSP resamples the input audio down to 22050Hz, processes it, then upsamples it again before mixing it into the output.

PSF Decoder

Version 2.2.5, updated on February 16, 2020; requires foobar2000 version 1.4.

This component decodes music files for the Sony Playstation and Playstation 2 game consoles, as ripped in the .PSF/.MINIPSF or .PSF2/.MINIPSF2 formats.

https://git.lopez-snowhill.net/chris/foo_psf/-/commits/master
https://git.lopez-snowhill.net/chris/highly_experimental/-/commits/master
https://git.lopez-snowhill.net/chris/psflib/-/commits/master

QSF Decoder

Version 3.1.1, updated on May 2, 2019; requires foobar2000 version 1.4.

Decodes game music for arcade machines featuring the QSound sound hardware, in the .QSF or .MINIQSF formats.

https://git.lopez-snowhill.net/chris/foo_input_qsf/-/commits/master
https://git.lopez-snowhill.net/chris/highly_quixotic/-/commits/master
https://git.lopez-snowhill.net/chris/psflib/-/commits/master

SID Decoder

Version 1.50, updated on February 28, 2020; requires foobar2000 version 1.4.

This component decodes music files for the Commodore 64 or 128 computers, ripped in the .SID or .MUS or .MUS+.STR formats. It supports up to 3SID rips, and supports the latest High Voltage SID Collection song length database.

https://git.lopez-snowhill.net/chris/foo_sid/-/commits/master
https://git.lopez-snowhill.net/chris/sidplay-residfp/-/commits/master

SNESAPU input

Version 0.83, updated on January 30, 2018; requires foobar2000 version 1.3.

This component provides a faster, if slightly less faithful, SNES music format player, based on the SNESAPU.dll library. It plays SNES .SPC files. It also supports a huge level of tweaking, including the mixing sample rate, the sample depth, and effects control.

https://git.lopez-snowhill.net/chris/foo_snesapu/-/commits/master

SSF/DSF Decoder

Version 2.0.53, updated on September 2, 2020; requires foobar2000 version 1.4.

This component decodes music from the Sega Saturn or Dreamcast consoles, in the .SSF/.MINISSF or .DSF/.MINIDSF formats. It is not to be confused with the .DSF format which contains DSD audio.

https://git.lopez-snowhill.net/chris/foo_input_ht/-/commits/master
https://git.lopez-snowhill.net/chris/highly_theoretical/-/commits/master
https://git.lopez-snowhill.net/chris/psflib/-/commits/master

Telnet Daemon

Version 1.0, updated on November 15, 2016; requires foobar2000 version 1.3.

This component provides an unsecure Telnet based remote control interface for the player. It should not be possible to actually affect the player in any way more than the intended playback or playlist manipulation commands.

https://git.lopez-snowhill.net/chris/foobar2000/-/tree/master/plugins/foobar/foobar2000/foo_telnetd

TFMX decoder

Version 0.11, updated on January 30, 2018; requires foobar2000 version 1.3.

This component decodes Amiga music in the .TFMX format, optionally with .MDAT or .TFM or .TFX extensions, or Amiga style file names with MDAT.* or TFMX.* names. Original decoder by Peter Pawlowski from way too long ago, but somewhat cleaned up, and using band limited synthesis now.

https://git.lopez-snowhill.net/chris/foobar2000/-/blob/master/plugins/foobar/foobar2000/foo_input_tfmx/foo_input_tfmx.cpp

TTA Audio Decoder

Version 3.6, updated on February 28, 2020; requires foobar2000 version 1.4.

This component decodes the True Audio / .TTA lossless compression format.

https://git.lopez-snowhill.net/chris/foobar2000/-/tree/master/plugins/foobar/foobar2000/foo_input_tta
https://git.lopez-snowhill.net/chris/foobar2000/-/tree/master/plugins/libtta

Unix archive reader

Version 1.10, updated on February 4, 2017; requires foobar2000 version 1.3.

This component unpacks archives in several Unix formats, including GZIP .gz, Bzip2 .bz2, and the Tape Archive container, .TAR.

https://git.lopez-snowhill.net/chris/foo_unpack_unix/-/commits/master

USF Decoder

Version 2.3.4, updated on May 2, 2019; requires foobar2000 version 1.4.

This component decodes game music from the Nintendo 64 console, as ripped in the .USF or .MINIUSF formats.

https://git.lopez-snowhill.net/chris/foo_input_usf/-/commits/master
https://git.lopez-snowhill.net/chris/lazyusf2/-/commits/master
https://git.lopez-snowhill.net/chris/psflib/-/commits/master

vgmstream plugin

Version r1050-3448-g77cc431b, updated on November 29, 2020; requires foobar2000 version 1.3.

This component decodes streamed formats from hundreds of game console, PC, and mobile game audio formats.

https://github.com/vgmstream/vgmstream/commits/master