Project OutFox Wiki
Project OutFox home View the OutFox Wiki source on GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

OutFox Alpha 4.15.1 Build

Release Date: 19th June 2022

“Pump or Dump?”

(Incorporates Internal Builds 4.15.1-rc0 to 4.15.1-rc1)

Please read the change log!

Hotfix release!

Release Date: 19th June 2022

“Don’t matter if you tough or gruff”


  • ❕✅ Fixed crash on beginnerhelper when loading next song on courses - Closes #560
  • ❕✅ Fixed mal-aligned column positions on para, ez2, be-mu, techno layouts - Closes #563
  • ❕✅ Fixed crash on board being set outside of gh - closes #559

If you see a message that says The board texture has not been set. Good job. it means that the metric ShowBoard=true has been set. You can undo this to set it to false in modes that are not gh. It may show a message at the top of the screen if you have errors enabled, this will be here just as a temporary measure to see how often that metric was being set.

  • ❕✅ Fixed crash on playback when revert from disk was used in the editor
  • ❕✅ Fixed bpm > 100000000 to be warps again
  • ❕✅ Fixed minefields flashing on the receptor - Closes #558
  • ❕✅ Fixed quirk with autoplay not ignoring release
  • ❕✅ Fixed check with type != group - Closes #557

pump mode updates.

This month has has a plethora of updates and fixes added to the pump mode; we have been working a lot in the background for this mode, but it required a lot of other things to be implemented beforehand, so it has taken a bit longer than planned to get these stuff off the ground.

This release has fixed a lot of the music length issues, charts ending early, charts not ending at all, charts having missing notes due to the song finishing at the incorrect time, and charts ending after 2 seconds (single) / 7 seconds (double). The reason for a lot of all these quirks was due to the charting methods used in stepf2 and stepp1 being based off an older version of StepMania which then had some custom code added by xMAx for those versions targeting pump only. We would like to thank xMAx for the insight and assistance with implementing some of those features into Project OutFox, but due to the fact we are a multi-modal simulator we had to heavily rewrite and redesign a lot of the functions and systems behind the original ideas they had.

We have written a custom parser for the stepf2 charts which internally is called NotesLoaderPIU. This focuses on only parsing charts using the old editor and targets pump mode, including the custom note types, and the effects and systems the mode needs. The parser uses the SSC header #VERSION: 0.81 to initialise this pathway for those charts.

This can lead to a few issues if you have any dance charts using version 0.81, if you get any quirks, you can just change this version number to 0.83 and it’ll use the normal SSC parser.

New for this alpha, we have also added the feature for charts not set to 0.81, where you can create a blank file with the title ForcePIU in the group folder, and the game will use the PIU loader automatically. This is case sensitive, so use it as written here for it to work.

This alpha also begins to add support for notes within braces { 0 | h | 1 | v }. At the moment only h notes are implemented, with s and v planned for the next main alpha.

pumpholds have also had a major rewrite this release as well, with the stepping and judgement logic being more appropriate to the game system, with ticks and head logic being fixed as well. There are still likely to be a few quirks with it, as it’s new code, and do let us know if there are things you notice that are incorrect.

Warps and how they are hit were also reworked, along with some notes and rows overflowing which caused a lot of the issues on how the game calcuated some of the file/song lengths in the musicwheel and evaluation screens. The values sometimes recorded in the #LASTSECONDHINT and #MUSICLENGTH in the cache file may not actually marry up - the game has several options internally for ensuring that songs do not go crazy on time. Again, this logic is new, so there may be edge cases that need to be ironed out. If you find a chart that is not behaving, let the team know so we can see what is happening.

There was also a lot of older code removed from the ScreenGamePlay branches of code that we inherited from older builds (3.x era) that we have removed as it was not really doing anything, and in some cases actually caused the new pump code to not function correctly. A few tweaks were also done for older .sm and .ksf charts and we fixed a lot of the math overflows due to the way the charts were implemented into the older SM build.

You can have a better experience than the ‘default theme’ by downloading the new pump theme that is being developed called Infinitesimal from here; it will be incorporated into Project OutFox as a default theme for pump coming in Alpha V. The theme is created to give you a faithful experience, using original assets and textures.

We hope you guys have fun with the fixes, and we have more planned in time!

be-mu (and po-mu) fixes

We had reports of the game being very unhappy with a lot of the earlier community charts from the BMS of Fighters series, and charts mainly created before 2009, so we have fixed a few of these not being parsed correctly.

We also have restored the 4k “DDR in BMS” chart support that Squirrel accidentally broke when adjusting the channel support. This has now been fixed and those simfile are recognised as dance charts once again.

There were also several crashes with the vs modes of po-mu and be-mu as well and these have been fixed as well, so 2 player works as intended.

rtMIDI and portMIDI driver updates

We have had a few requests to reimagine the midi drivers for those with DJ controllers or systems which use channels but send the same notes. The MIDI standard states a controller should be able to do this with the client application supporting the note/channel sent data, so we have changed the way this is done to ensure we are compliant. Crossfaders and rotary controls, as well as some pitch bend triggers do have some weird quirks at the moment, but as we don’t have any modes that support these at the moment do not try to map them as a control.

We added up/down jog wheel support for those who play be-mu on MIDI, so this works as designed now for everyone using midi for their jogs.

(Incorporates Internal Builds 4.14.2-rc0 to 4.14.2-rc7)

(Incorporates Internal Builds 4.15.0-rc0 to 4.15.0-rc15)

The news sections will be completed shortly, the full changelog follows below: (Squirrel)

KNOWN ISSUES: Alpha 4.14.0

  • ❕❌ ISSUE Playing be-mu/po-mu songs on Endless Mode may have a crash on song loading. Please be aware that course mode for these modes are a bit temperamental at the moment!
  • ❕❌ ISSUE gh mode: Some charts may cause a crash when loaded into the game
  • ❕❌ ISSUE gddm/gdgf mode: We do not support the XA codec at this time, it’ll play those keysounds silently.


Mode Specific

  • ❕✅ be-mu: Fixed doubles column location
  • ❕✅ be-mu: Fixed crash with 5k versus
  • ❕✅ be-mu: Fixed crash with legacy BMS and some BML files
  • ❕✅ dance: Fixed left arrow for doubles
  • ❕✅ dance: Fixed multi-row holds not being hit correctly on new hold mechanics
  • ❕✅ dance: Fixed old .sm charts ending early
  • ❕✅ dance: Added SetRequireStepOnHoldHeads() back for modding support
  • ❕✅ dance: Fixed bug with missing 4k Dance support in BMS files
  • ❕✅ ds3ddx: New Added 5 panel support!
  • ❕✅ ds3ddx: New Added pump chart to ds3ddx smart autogen
  • ❕✅ ds3ddx: Fixed bug with ds3ddx 5 panel not working due to invalid metrics
  • ❕✅ ds3ddx: Fixed noteskin column locations and 5 panel ds3ddx layout
  • ❕✅ gh: Fixed typo in last strum logic
  • ❕✅ gh: Tweak fever in GH mode
  • ❕✅ gh: New Added support for all sound layers in .chart and .midi files
  • ❕✅ gh: Fixed crash with chart loading
  • ❕✅ gh: Fixed bug with BGAs on .chart and .midi files
  • ❕✅ gh: Fixed bug with missing loaded features on .chart and .midi files
  • ❕✅ gh: Fixed bug with end of song evaluation crashes on .chart loader
  • ❕✅ gh: Fixed ‘out of range’ ghost crashes when loading .chart files
  • ❕✅ kbx: Fixed hold mechanics
  • ❕✅ kbx: New Added arrow noteskins via global noteskins
  • ❕✅ kbx: Fixed kbx tick-hold damage values
  • ❕✅ kbx: Fixed kbx column layout for 16K / 18K - thanks hanubeki
  • ❕✅ kbx: Fixed kbx noteskin crash - thanks hanubeki
  • ❕✅ po-mu: Fixed crash with 3/5/7/9 versus
  • ❕✅ po-mu: Fixed icon for po-mu18 button style
  • ❕✅ para: Fixed old .sm charts ending early
  • ❕✅ para: New Added proper second hinting
  • ❕✅ pump: Fixed bug with row overflow causing some charts to be 2.57 years in length
  • ❕✅ pump: Fixed bug with notes at end of warp being unhittable
  • ❕✅ pump: New Added classical3d+ noteskin for pump
  • ❕✅ pump: Fixed bug with fake notes
  • ❕✅ pump: Fixed clamp and overflow on beat locations on warps
  • ❕✅ pump: Restored {} note support for pump
  • ❕✅ pump: Fixed bug with mis-parsed hidden notes for pump
  • ❕✅ pump: New Added support for ‘h’ notes
  • ❕✅ pump: New Added skeleton for ’s’ and ‘v’ notes (coming in 0.4.16)
  • ❕✅ pump: Fixed bug with checkpoint ticks
  • ❕✅ pump: Fixed overflow on bpmMax
  • ❕✅ pump: Fixed warps to behave properly once again
  • ❕✅ pump: Fixed Musiclength overflowing
  • ❕✅ pump: Fixed bug with pump #LASTSECOND
  • ❕✅ pump: Fixed issue with #LASTSECONDHINT not respecting chart length correctly
  • ❕✅ pump: New Added support for group file “ForcePIU” to force use the PIUloader
  • ❕✅ pump: Fixed bug with hold end fixes
  • ❕✅ pump: Fixed pump hold mechanics
  • ❕✅ pump: Fixed bug with 2 second restart on older charts (pre 2010)
  • ❕✅ pump: Fixed bug with 7 second restart on older .ksf charts (pre 2007)
  • ❕✅ pump: Fixed bug with some charts ending early with extremely long ’ending’ holds
  • ❕✅ pump: Fixed pump holds stepping logic to be more accurate
  • ❕✅ pump: Removed pointless 3.x era code breaking several features
  • ❕✅ pump: Fixed hold notes judge for pump
  • ❕✅ pump: Fixed pump doubles layout
  • ❕✅ pump: Fixed pump life damage on tick-holds
  • ❕✅ pump: Removed legacy ’time’ methods for calculating pump length which have been broken since 2007
  • ❕✅ pump: Fixed dead code with ‘First’ and ‘Last’ second not being used except to overwrite with wrong information
  • ❕✅ pump: Fixed bug with math in #LastSecondHint
  • ❕✅ pump: Fixed ‘centre’ overlapping for noteskins
  • ❕✅ pump: Fixed missing notes on receptors
  • ❕✅ pump: Fixed bug with Pump Holds punishing life on checkpoint misses
  • ❕✅ taiko: Added #BALLOON .tja note parsing, count logic needs to be added
  • ❕✅ taiko: Fixed bug with missing A & B notes on .tja parser
  • ❕✅ taiko: Added Note Type A B D E to .tja parser
  • ❕✅ taiko: Fixed Missing #NOTESDESIGNER tags in .TJA files
  • ❕✅ all: Fixed bug with hold ticks after a warp transition forgetting there was a hold
  • ❕✅ all: Fixed tween overflow on holds
  • ❕✅ all: Fixed bug with clamped BPM being weird on warps and bpm calculation
  • ❕✅ all: New Only load keysounds on chart load, to speed up caching for BMS/PMS/DTX/GDA/BGF
  • ❕✅ all: Fixed bug in cache being overwritten
  • ❕✅ all: Fixed bug in cache values being written to in wrong order
  • ❕✅ all: Fixed bug in the way cache is written for charts with slightly different lengths in .SSC and .SM files
  • ❕✅ all: Rewrote SSC/SM/PIU loaders to respect proper chart lengths, removing the old SM 3.x methods
  • ❕✅ all: Fixed #LASTSECOND overriding the hint and breaking musiclength values
  • ❕✅ all: Fixed order for caching last second
  • ❕✅ all: Fixed #LASTSECONDHINT not returning a value


  • ❕✅ Fixed bug with bHeld not functioning as expected on auto play
  • ❕✅ Some small general optimisations of entire math pipe
  • ❕✅ Removed legacy SSC era lua function causing errors on infinitesimal and waiei themes
  • ❕✅ Optimised lua stack to reduce odd edge case crash
  • ❕✅ Fixed bug with head/tail switch on simpleholds
  • ❕✅ Fixed bug with ScreenGameplay() overlay
  • ❕✅ Fixed bug with several edge cases of the Lua stack overflowing
  • ❕✅ Fixed bad sleep command in judgements
  • ❕✅ Fixed menu event sounds to be proper action events in the sound engine
  • ❕✅ Added proper IsAction support for PlayOnce()
  • ❕✅ Fixed Autoplay missing holds and rolls with the new mechanics
  • ❕✅ Updated ScreenSelectGame() for ds3ddx5 and po-mu18
  • ❕✅ Fixed issue with missing default drivers
  • ❕✅ Fixed crash with themes setting empty noteskins
  • ❕✅ Fixed engine crash with some themes setting infinite fadeout
  • ❕✅ Fixed engine crash with the notefield when some themes set infinity
  • ❕✅ Fixed bug with Autoplay desync on SplitTiming
  • ❕✅ Fixed file flush hang locking up the game
  • ❕✅ Fixed SextetStream message pushing so lights work again (Thanks P.S. May)
  • ❕✅ Fixed potential edge case with some SextetStream outputs not creating a suitable FIFO buffer (Thanks P.S. May)
  • ❕✅ Fixed crash with difficulty selection on the engine music wheel
  • ❕✅ Fixed buffer crash in RageSound
  • ❕✅ Fixed memory leak in RageSound
  • ❕✅ Fixed bad access in FLAC/Opus audio loaders
  • ❕✅ Removed dead code in RageSoundDriver
  • ❕✅ Fixed missing global headers
  • ❕✅ Fixed race condition causing crashes when scrolling fast on some third party themes in the music wheel
  • ❕✅ Added control channel support for rtMIDI
  • ❕✅ Cut character count in MIDI button names for readability
  • ❕✅ Fixed bug with channel mapping on LSB for rtMIDI
  • ❕✅ Optimised MIDI inputhandler code for all systems
  • ❕✅ Fixed bug with everything being portMIDI
  • ❕✅ Enabled missing Pitch bend support in PortMIDI
  • ❕✅ Added up/down jog-wheel logic to rtMIDI/portMIDI
  • ❕✅ Added MIDI channel support for duplicate buttons
  • ❕✅ Fixed bug with velocity on Event 0x09
  • ❕✅ Fixed bug with channel value overflowing on portmidi
  • ❕✅ Fixed bug with some MIDI messages being dropped on rtmidi
  • ❕✅ Fixed rotary/slider support on both midi drivers
  • ❕✅ Fixed memory leak in ffmpeg context creation
  • ❕✅ Fixed stretch check on some videos
  • ❕✅ Added support for ‘AdditionalTextureHint’ “stretch” in ffmpeg
  • ❕✅ Fixed exception on rtMIDI 5.0.0
  • ❕✅ Fixed bug with some quirky metrics, they have been Removed
  • ❕✅ Fixed bug where some messages are sent when not playing
  • ❕✅ Fixed LONG_MAX overflowing on BPM
  • ❕✅ Fixed bug with missing CustomBeatBars metric
  • ❕✅ Fixed bug with invalid song length in ScreenGameplay returning -1 and locking up the game
  • ❕✅ Removed Song being able to overwrite values with incorrect ones
  • ❕✅ Removed the need for the stencil buffer which was being set up automatically
  • ❕✅ Fixed bug with shift+F2 bringing up the debug menu
  • ❕✅ Fixed bug with head taps showing if a minefield is present, stops taps turning into hold/roll heads
  • ❕✅ Fixed bug with the Profile Score loading
  • ❕✅ Fixed rtmidi’s implementation of pthreads
  • ❕✅ Fixed crash with mutex not being unlocked causing an endless loop
  • ❕✅ Fixed hard crash when loading game with >1000 songs
  • ❕✅ Fixed bug with a buffer overflow on the sound buffer
  • ❕✅ Added GetTotalScoresWithGrade() function – This lets you get the total number of scores with the specified grade.
  • ❕✅ Added missing noteskins on installer, thanks Mikex5
  • ❕✅ Fixed note group type adding on TapNoteGroupType
  • ❕✅ Added scroll factor calculations to beat bars
  • ❕✅ Fixed bug with missing Lift and Roll explosions on the receptor
  • ❕✅ Fixed bug in GetFileSet() causing an endless loop on some theme calls
  • ❕✅ Fix crash with some mutex locks not being released
  • ❕✅ Cleaned up timing data skew on loading on some edge cases
  • ❕✅ Fixed Ago() inaccuracy on the sound position
  • ❕✅ Removed High Resolution Clock for systems that do not support it
  • ❕✅ Fixed ArchHooks() returning the wrong clock() type
  • ❕✅ Fixed GetTimeSinceStart() not being as accurate as it pretends to be
  • ❕✅ Fixed DeltaTime from rounding the wrong way and causing a stutter
  • ❕✅ Added new time aliases, for modding will expose to lua later
  • ❕✅ Fixed bug with Double -> Float -> UInt64 rounding… why
  • ❕✅ Fixed bug in Lights driver where everything was 1-3ms behind the game
  • ❕✅ Fixed bug in our ‘FuncTimer’ where it wasn’t as accurate as it could be
  • ❕✅ Fixed bug in TimingData for SSC caching and delivery
  • ❕✅ Added support for new noteskin measure bars!
  • ❕✅ Fixed bug with GIF files being automatically set as BGA
  • ❕✅ Fixed bug with random BGA being force loaded when the file had programmed BGAs
  • ❕✅ Fixed bug with styles not being correctly set with players available
  • ❕✅ Fixed bug with simfiles with many scroll/stop/bpm change effects causing a crash
  • ❕✅ Fixed crash with noteskins not honouring the datatype in lua


  • ❕✅ Begin

*Windows 7+:

  • ❕✅ Updated portMIDI for windows 11
  • ❕✅ Updated NSI to fix unneeded files being called
  • ❕✅ Updated NSI on Windows to ensure proper cleanup - Thanks drumbs
  • ❕✅ Fixed sound artifacts due to buffer underrun
  • ❕✅ Forced legacy sampler to reduce WaveOut glitches on Windows 11
  • ❕✅ Fixed bug with evaluation screen crashes on windows 7/8/8.1
  • ❕✅ Fixed bug with BEX underflow error on windows 7
  • ❕✅ Fixed stack overflows in Vista and 7
  • ❕✅ Fixed ‘This program has closed unexpectedly’ on Windows 7
  • ❕✅ Fixed Windows sound clock reporting the incorrect value
  • ❕✅ Removed legacy Windows code that was running twice


  • ❕✅ Fixed size_t adjustments
  • ❕✅ Fixed nil push on GetCurrentSong()
  • ❕✅ Fixed sound clipping due to buffer underrun - Thanks SheepyChris
  • ❕✅ Added a bug… Underflow the sound driver to fix pulseaudio potential skipping/scratching
  • ❕✅ Fixed compile on new rtMIDI version
  • ❕✅ Fixed bug with MIDI drivers not returning a device on Arch/Fedora linux on 5.5+ kernels
  • ❕✅ Fixed segfaults on non-debian distros with kernel 5.10+
  • ❕✅ Fixed Linux thread math overflow on Timer

MacOS (Universal):

  • ❕✅ Updated portMIDI for MacOSX11+

ARM32/ARM64: (Raspberry Pi etc)

  • ❕✅ Fixed some quirks on context generation thanks to MESA
  • ❕✅ Fixed bug with evaluation screen crashes
  • ❕✅ Fixed Segfaults on ARM systems

Community content


  • ✅ Added OutFox category to the LuaDocs XML


  • ✅ New classical3d noteskin for pump
  • ✅ Add 3D rolls to paws-simpleholds


  • ❕✅ Added KBX / BMS judgments from MDR
  • ❕✅ Added Infinitesimal judgments


  • ✅ Translations updated from Moru, SHRMP0 and SheepyChris (Brazilian Portuguese)
  • ✅ Translations updated from Moneko (Polish)
  • ✅ Translations updated from Hanubeki (Japanese)
  • ✅ Translations updated from Jose_Varela (Spanish)
  • ✅ Translations updated from Daniel Rotwind (German)
  • New! Slovak translation by jose1711