BaWaMI (revision 130)

Posted on 2016-03-02 at 21:22 in Music, Programs by Robbi-985.

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).


  • 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.

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>