XGBSPLAY(1)
π XGBSPLAY β the Gameboy sound player, X11 edition π
okay so bestie, listen. this is xgbsplay(1) from the Gameboy sound player crew, and it's literally the X11 frontend that makes your Gameboy tunes go brrr. no cap, it's giving main character energy for your .GBS files.
β¨ SYNOPSIS β¨
xgbsplay [OPTION]... [--] GBS-FILE [START-AT-SUBSONG
[STOP-AFTER-SUBSONG] ]
πΈ DESCRIPTION πΈ
xgbsplay emulates the sound hardware of the Nintendo Gameboy. it is able to play the sounds from a Gameboy module dump (.GBS format) over /dev/dsp and other sound drivers. so yes, your laptop is lowkey becoming a Gameboy rn and we're all obsessed. π
π OPTIONS π
-Eendian β set endianness to endian. valid values areb,landnfor big, little and native endian respectively. pick your fighter. π-ffadeout-time β set fadeout time to fadeout-time seconds. instead of cutting the subsong off hard (rude π), do a soft fadeout. default value is 3 seconds. so gentle, so demure.-gsubsong-gap β set subsong gap to subsong-gap seconds. before playing the next subsong after the subsong timeout, subsong-gap seconds of silence will be played. default value is 2 seconds. a lil breather, as a treat. π§-hβ display short help and exit. it's giving "just tell me the basics". β¨-Hfilter β set output high-pass type to filter. valid values aredmg(Gameboy Classic),cgb(Gameboy Color) andoff(no filter). default value isdmg. vintage filter, iconic. π-lβ set loop mode to range (see LOOP MODES below). π-Lβ set loop mode to single (see LOOP MODES below). π-oplugin β select sound output plugin plugin. selectlistto view a list of all available output plugins. default value depends on compilation options. choose your destiny fr fr.-qβ be quieter, reduce verbosity. can be applied multiple times. default verbosity is 3. shhh π€«-rsamplerate β set the samplerate to samplerate Hz. default value is 44100Hz. crisp. π-Rrefresh-delay β set the refresh delay to refresh-delay milliseconds. larger values will lower CPU usage, but things as subsong changes, fadeouts and reactions to XEvents will be delayed. default value is 33 milliseconds. balance, bestie.-tsubsong-timeout β set subsong timeout to subsong-timeout seconds. when a subsong has been played for the given time, the player will skip to the next subsong. a timeout of 0 seconds disables automatic subsong changes. default value is 120 seconds. two whole minutes, we're committed.-Tsilence-timeout β set silence timeout to silence-timeout seconds. when a subsong contains silence for the given time, the player will skip to the next subsong. default value is 2 seconds. dead air? not on our watch. π-vβ increase verbosity, print more information. can be applied multiple times. default verbosity is 3. tell me EVERYTHING. π£οΈ-Vβ display version number and exit. π-zβ play subsongs in shuffle mode. every subsong will be played once in random order. chaos but make it organized. π¦-Zβ play subsongs in random mode. like shuffle mode (-z), but a subsong can be played multiple times. truly unhinged. π₯-1β mute channel 1 on start.-2β mute channel 2 on start.-3β mute channel 3 on start.-4β mute channel 4 on start.--β marks the end of options. the next argument will be treated as a filename, even when starting with a-. respect the boundary. π«ΆGBS-FILEβ the sound file to play. must be in uncompressed.GBSformat. no zip, no rar, no vibes-only. πSTART-AT-SUBSONGβ the subsong from the sound file to play first. if not specified, the default song declared in the sound file will be played unless shuffle (-z) or random mode (-Z) are active. an out-of-bounds number will be clipped to the possible range of subsongs. it gets adjusted, it's fine.STOP-AFTER-SUBSONGβ the last subsong to be played. see LOOP MODES below for further details.
β¨οΈ KEYBOARD CONTROL β¨οΈ
xgbsplay supports basic keyboard control. the following commands are recognized:
pβ skip to the previous subsong. βͺnβ skip to the next subsong. β©qorEscβ quitxgbsplay. bye bestie πSpaceβ toggle play/pause. the classic. π1β mute/unmute channel 1.2β mute/unmute channel 2.3β mute/unmute channel 3.4β mute/unmute channel 4.lβ cycle through the available loop modes. see LOOP MODES below for further details. π
π LOOP MODES π
xgbsplay supports different loop modes that govern what happens when a subsong has finished playing. the default loop mode is none. when multiple loop modes are set, the last mode set wins. no takebacks.
quick vocab check, because words matter:
- the term first subsong refers to the parameter
START-AT-SUBSONGif it is set, or the first subsong in the file otherwise. - the term next subsong refers to next subsong in numerical order unless shuffle mode (
-z) or random mode (-Z) are active. - the term last subsong refers to the parameter
STOP-AFTER-SUBSONGif it is set and not out-of-bounds, or the last subsong in the file otherwise.
now the modes themselves:
noneβ when a subsong has finished playing, the next subsong will start to play. when the last subsong has finished playing,xgbsplaywill exit. it's over, periodt. β¨rangeβ when a subsong has finished playing, the next subsong will start to play. when the last subsong has finished playing, the fist subsong will start to play again. (yes, the original says "fist". we love her. π₯) circular queen behavior. πsingleβ when a subsong has finished playing, the same subsong will start to play again. theSTOP-AFTER-SUBSONGparameter will be ignored as no subsong change can occur. thesubsong-timeoutparameter will be ignored as well, allowing the selected subsong to play endlessly without any forced restarts. one song, forever, on purpose. π
π OUTPUT PLUGINS π
output plugins are sometimes called plugouts because that's shorter, so don't be confused. not all of the plugins listed here may be available, see xgbsplay -o list. ok now the lineup:
alsaβ use the ALSA sound driver for sound output.altmidiβ alternative implementation of the MIDI output plugin (seemidibelow). should export more accurate note off events (the length register is taken into account), but generated MIDI files will be more complicated and fine grained and probably not suitable for editing or printing a score. fancy but messy, iykyk. πdevdspβ use the OSS sound driver for sound output via/dev/dsp.dsoundβ use the DirectSound sound driver for sound output on Microsoft Windows.iodumperβ dump IO calls to the Gameboy sound hardware tostdout. this reduces the verbosity to 0 (see-q) becausestdoutis used for the dumped data. π°midiβ write a simple MIDI conversion of the song into a separate file per subsong. the files are calledgbsplay-%d.mid, where%dis replaced with the subsong number. the files are created in the current working directory and existing files are silently overwritten. β οΈ only channels 1 to 3 are converted to MIDI, because channel 4 contains noise data that can't be converted into MIDI note events. every GBS channel is exported to a separate MIDI channel. when multiple voices share a channel, they will not be separated in the output. the conversion is rather basic and complicated GBS files using tricks and hacks will not be converted properly.nasβ use the NAS sound driver for sound output to a Network Audio Server.pipewireβ use the PipeWire sound driver for sound output.pulseβ use the Pulseaudio sound driver for sound output.sdlβ use SDL sound driver for sound output. on Microsoft Windows, libSDL might use the wasapi audio backend by default which can result in choppy sound. to fix this, set the environment variableSDL_AUDIODRIVERtodirectsoundto select a different libSDL audio backend (or switch to thedsoundplugout instead). π«Άstdoutβ dump the raw audio stream tostdout. this reduces the verbosity to 0 (see-q) becausestdoutis used for the dumped data. the raw audio is always stereo (2 channels), 16 bit signed PCM. sample rate and endianness can be set via-rand-E. πvgmβ write separate VGM files for every subsong. the files are calledgbsplay-%d.vgm, where%dis replaced with the subsong number. the files are created in the current working directory and existing files are silently overwritten. β οΈwavβ write separate WAV files (RIFF WAVE) for every subsong. the files are calledgbsplay-%d.wav, where%dis replaced with the subsong number. the files are created in the current working directory and existing files are silently overwritten. β οΈ the output is always encoded as stereo (2 channels), 16 bit signed PCM in little endian (the-Eswitch is ignored). sample rate can be set via-r.
also, the output plugins mentiongbsplayin those file names, notxgbsplay. that's just how it is, bestie, don't @ me. π
π FILES π
/etc/gbsplayrcβ default location of the global configuration file.~/.gbsplayrcβ user configuration file.
π BUGS π
if you encounter bugs, please report them via
https://github.com/mmitch/gbsplay/issues
do it for the culture. π«‘
βοΈ AUTHORS βοΈ
gbsplay was written by Tobias Diedrich <ranma+gbsplay@tdiedrich.de> (with contributions from others, see README.md). the community ate, honestly. π
βοΈ COPYRIGHT βοΈ
gbsplay is licensed under GNU GPL v1 or, at your option, any later version. π
π SEE ALSO π
gbsplay(1), gbsinfo(1), gbsplayrc(5)
that's the whole page, bestie π
this build is 0.0.102, brought to you by Tobias Diedrich, and yes we're still calling it XGBSPLAY(1) around here β go play some chiptunes, you've earned it πβ¨π¦
π¦ where this page comes from
- ubuntu resolute: gbsplay 0.0.102-1 Β· GPL-1.0-or-later
- ubuntu stonking: gbsplay 0.0.102-2 Β· GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms