This update lets Bawami write WAV files in paths containing non-ASCII characters (something long-overdue), and fixes a bunch of complicated interwoven bugs related to the handling of “bad” MIDI files and of percussive notes. There’s also a load of other fixes, including for portamento-related bugs, crashing in /translator mode, and visual fixes, and a couple of new instruments.
You can grab the latest version from here (7.81 MB), and see details of the changes below the page break:
Fixes to how MIDI messages are processed
- Fixed bug where, if portamento (CC #65) was disabled, and then “portamento for next note” (CC #84) was received, and then portamento (CC #65) got turned on, portamento (CC #65) would erroneously get turned off after the next note played.
- Fixed a bug where multiple note-ons (without note-offs, which is bad) on one MIDI channel could re-use a sound channel which is now being used to play a completely unrelated note (on a different MIDI channel), causing that unrelated note to be cut. This happened easily with notes that decay to silence (e.g. percussion) while continuing to be held on. Now, a new sound channel is chosen.
- Related to previous fix: Fixed bugs when dealing with note-offs on percussion channels that the “percmap” folder defines to play as a tone note (code was confusing original and remapped note numbers, potentially stopping the wrong note, or never stopping a note).
- Notes that are supposed to decay to silence while being held are now treated as fully-released when decayed, freeing up the associated sound channel and stopping the oscillator, instead of wasting CPU time. This will cause more “ABORT: No longer in use” messages to appear on note-offs for 0-sustain-level instruments, but this isn’t a bad thing; it’s just showing how the note-off was correctly handled.
“Update playback” button (on “MIDI Params” tab of config window)
- No longer loses the correct playback position a bit.
- Actually makes numeric options take effect.
- Doesn’t cause some parameters (e.g. banks, portamento settings) to be forgotten with some MIDI files.
Miscellaneous improvements
- WAV files can now be created in paths containing non-ASCII characters (like OGG files can), because Bawami now handles the writing of WAV files natively instead of relying on FMOD to write them.
- When using /translator, pressing ctrl+(key) to edit the associated text file works again (broken in revision 128).
- MIDI messages are re-processed to prevent previously-held notes going missing until they’re played again when re-initialising sound system during playback (by clicking “Apply” on the config window).
- Removed unused language file “chkSwapChorus” which I accidentally included in revision 122 after working on the new chorus effect.
- Moved FontReg.exe (used to install any missing fonts) to “tools” folder to reduce clutter.
- “First run.bat” now waits for a key to be pressed before exiting if an error occurs, so that the error message can be read…
- More micro-optimisations (especially regarding floating-point maths done for every playing note).
Instruments/sound
- Added Hardstyle Bass 1 (038_100_098) (non-standard, following the same numbering convention as when I added exclusive instruments last time (LSB=098))
- Added [GS] Phono Noise (124_011_003)
- Made Fat Sync Lead (084_017_003) velocity-sensitive.
- Percussive toms (notes 041, 043, 045, 047, 048, 050) are now slightly velocity-sensitive (affects their starting pitch), and are a little louder.
Visual fixes
- Fixed too-long instrument text drawing over other channels‘ instrument name areas (broken in revision 103).
- Fixed text of unnamed instruments (e.g. “(038_100_098)”) not breaking onto 3 lines on the main window (broken in revision 123).
- Corrected MIDI channel number in message displayed on “MIDI Messages” view when a note-off was attempted after that note’s sound channel had already been re-used to play a different note (the number displayed was one too low).
- Ammended some info text shown on config window (for “Use PC Speaker”, “Buffer length”, “Display refresh rate”).
- Clarified text displayed if a missing font failed to be installed at startup.
- Changed text “Mix sound in 8-bit” to “Mix sound to 8-bit”, since FMOD always mixes in 32-bit float internally; it’s just converted to 8-bit samples and passed to the sound driver in that state if the option is enabled.