BaWaMI Changelog

What's new in BaWaMI 0.7.134

Dec 6, 2017
  • Checkbox on "MIDI params" tab to enable/disable responding to MIDI channel coarse/fine tuning messages now actually has an effect, instead of Bawami always responding to them no matter what.

New in BaWaMI 0.6.132 (Apr 29, 2017)

  • Due to the new "multi-osc" feature, and improvements to stability and MIDI input, version number is increased to 0.7!
  • Instrument changes where bank LSB is 004 (Roland SC-8850) are now treated the same way as ones for LSBs 001~003 regarding choosing an alternative instrument file if none exists. So, instrument changes in MIDIs explicitly made for the SC-8850 will now use the correct variation instrument (if it exists). See "BANK SELECTS" in info.txt for details.
  • "ALL NOTES OFF" is now sent on MIDI output when closing MIDI input device if "Echo live MIDI input" is ticked, to avoid stuck notes.
  • Portamento is no longer wrongly-affected by pitch-bends. Portamento and pitch-bend are now applied on top of the original note as 2 completely separate stages, as they should be.
  • Pressing Ctrl+Right to skip forward by 10 seconds no longer causes loud sounds if skipping past percussive notes (it sounds the same as when seeking forward by clicking the playback position bar).
  • "midiio2k.ocx" is no longer included or used. Bawami now does all MIDI input/output itself directly, which is what allows several of the MIDI in/out improvements in this release.
  • On MIDI Messages view, unrecognised MIDI messages have any extra bytes displayed as their hex values (as happens with SysEx messages), instead of interpreting them as plain text (useless if they contain non-printable characters or 0-bytes).
  • SysEx messages to display an invalidly-long amount of text on a Sound Canvas LCD (the SC supports a maximum of 32 characters) now cause Bawami to display only the first 32 characters. Previously, Bawami would crash if the message implied that the text should be longer than about 247 characters.
  • On MIDI Messages view, useless Data 1 and Data 2 values are no longer shown for sysex/realtime/meta messages.
  • When using MIDI output and MIDI thru (live MIDI input to MIDI output), messages played from a file aren't output twice.
  • Live MIDI input:
  • Fixed bug where some SysEx messages (especially ones whose first data bytes were low values such as 00) were completely misread. Such messages aren't understood, but they now appear correctly on the MIDI Messages view.
  • Improved timing accuracy!
  • No longer interprets message value FF (system realtime reset) as a meta message (only possible in files, not live MIDI).
  • MIDI output of SysEx messages works again (broken somewhere between revision 123 and 128).
  • Quietened open hihats a little.
  • Fixed rare bug during startup where main window would become invisible or appear as a tiny glitched area of 4 corners, which happened if Bawami lost focus between appearing and rounding its window corners.
  • "SSubTmr6.dll", which has been included with Bawami for a long time, is now copied to a system folder and has its info added to the registry if not already done. I thought this wasn't necessary, but it fixed an "ActiveX component can't create object" error that someone suddenly started receiving.
  • Fixed bug where, if portamento was only turned on after a note had already started to play, the next note would slide up/down from the wrong frequency (not the previous note's).
  • Can now generate (copy to the clipboard) command line parameters for all manually overridden controls (right-click in empty space -> All overrides -> Copy parameters to clipboard). There's also a menu option to do the opposite (load parameters from the clipboard).
  • Added the ability to enable/disable all possible overrides from the main right-click menu.
  • Attempting to skip past a CC #119 (global loop end) message no longer causes Bawami to freeze (it didn't in the past - I'm not sure when this broke). However, it will skip to a location within the loop that's hard to predict (related to the number of messages after the end of the loop to which the skip was requested, and the number of messages inside the loop).
  • Variation instrument names in menus no longer have "- " displayed where the line should break mid-word on the main window.
  • Instrument names are redrawn when clicking "Reload instruments" in case a language's "instname" file has been modified (as is done when changing language). Previously, instrument-related language files were being reloaded, but the interface wasn't automatically redrawn.
  • Rewrote the code that chooses the sound channel to play a note on. Now, when the sustain pedal is on, a sustained note being retriggered will cause the old sound channel to start releasing and assign a new channel to the new note, avoiding click artifacts caused by immediately re-using the old channel.
  • Added a few missing translations and deleted unused files for Japanese language.
  • When auto-unmuting MIDI channels on loading a new MIDI file, without automatically starting playback, blue vertical bars are correctly redrawn.
  • When a MIDI channel is muted, the red cross is now drawn across the channel's entire vertical area, and you can click the entire area to re-enable it.
  • Fixed another incantation of the bug where Bawami would crash when re-initialising the sound system (when clicking "Apply" on the "Sound system" tab).
  • While using MIDI input, "MIDI IN" text doesn't disappear when "Rewind" is clicked or when playback reaches the end.
  • Fixed bug where text and position of sliders on "Override other controls" could become out-of-sync with each other (e.g. by LMB press, then RMB press+release, then LMB release).
  • Micro-optimisations throughout the code (also reduced EXE file size by 16 KB).
  • On "MIDI Messages" view, information about note-offs that were aborted because the sound channel is now used for a different MIDI note now mentions the correct MIDI channel (number shown was 1 too low before).
  • On "MIDI Messages" view, messages that are supported but ignored (e.g. due to being disabled in the config) are shown in the usual "supported" colour (e.g. bright turquoise instead of dark blue), and a more-concise "ignored" explanation is appended to the text.
  • No longer wastes time updating modulation cycle for a MIDI channel if CC #1 (Modulation) is 0 and instrument should not be using auto modulation (according to instrument and auto mod depth).
  • No longer crashes when no MIDI is loaded and the following CC messages are received on live MIDI input: 111 / 118 (GLOBAL LOOP START POINT), 116 (SECTION LOOP START POINT).
  • The "Attempt to stabilise" option (when drawing a waveform for each MIDI channel) works a bit better.
  • Slightly more efficient updating of sound channel's pitch (one less multiplication per millisecond per sound channel if using modulation/vibrato).
  • To avoid stuck notes (otherwise possible if an instrument uses "multi-osc"), playing notes are now released when instrument files are reloaded and when a MIDI channel changes from tone to percussion mode.
  • Instruments modified only in other ways:
  • Reduced resonance of Funk Pop Guitar (028_008_001).
  • Increased volume of Bright Acoustic (001) and made it slightly velocity-sensitive.
  • Updated the following instruments to take advantage of the new "multi-osc" feature:
  • Honkey Tonk (003)
  • Dulcimer (015)
  • Drawbar Organ (016)
  • Percussive Organ (017)
  • Rock Organ (018)
  • Church Organ (019)
  • Timpani (047)
  • String Ensembles (048, 049)
  • Choir Aahs (052)
  • Fifths Lead (086)
  • Polysynth (090)
  • Goblins Effect (101)
  • [GS] Rock Rhythm Guitar (030_024_002)
  • [GS] Mg Octave Basses (039_005_003, 039_006_003)
  • [GS] Stack Strings (050_002_003)
  • [GS] JUNO Rave (087_003_003)
  • Added the following instruments (* = uses the new "multi-osc" feature):
  • [GS] Detuned Electric Piano 2 (005_008_001)*
  • [GS] Coupled Harpsichords (006_008_001)*
  • [GS] Church Organ 2 (019_008_003)*
  • [GS] 12-string Guitar (025_008_001)*
  • [GS] Power Guitar (030_016_002)*
  • [GS] Power Guitar 2 (030_017_002)*
  • [GS] Rock Rhythm Guitar 2 (030_025_002)
  • [GS] Power Stack (090_008_003)*
  • Added "multi-osc" feature to instrument files which allows one MIDI note to trigger up to 3 sound channels (all playing different pitches) instead of just 1. Using "Multiple volume bars", each red bar now means 1 sound channel rather than 1 note. "MIDI messages" view only shows info about the main sound channel, not extra ones. Can be disabled on the "Sound system" tab to save CPU time. Doesn't affect PC speaker.
  • Restructured a lot of the code related to sound channels. This reduced the EXE file size by 20 KB and will make adding new instrument features easier for me in the future.
  • Removed Ctrl-Alt-F11 shortcut (for typing stats) because it apparently broke a long time ago, often just causing Bawami to crash when triggered.
  • Calculation of the "channels in use" horizontal bar at top of main window, drawing of MIDI channel waveforms and drawing of the main interface overall are all slightly more efficient.

New in BaWaMI 0.6.131 (Apr 11, 2016)

  • Fixed tabbing order of controls on "Mod Shape" tab of the config window.
  • Writing OGG files works again - I accidentally removed a file needed by the OGG encoder in revision 130. Users who extracted revision 130's folder over revision 129's would not have experienced the problem.
  • Stopped warning about buggy controls from being displayed on the "MIDI params" tab of the config window, since it's no longer true.

New in BaWaMI 0.6.130 (Mar 3, 2016)

  • "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...
  • Clarified text displayed if a missing font failed to be installed at startup.
  • Moved FontReg.exe (used to install any missing fonts) to "tools" folder to reduce clutter.
  • Removed unused language file "chkSwapChorus" which I accidentally included in revision 122 after working on the new chorus effect.
  • 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.
  • Ammended some info text shown on config window (for "Use PC Speaker", "Buffer length", "Display refresh rate").
  • Percussive toms (notes 041, 043, 045, 047, 048, 050) are now slightly velocity-sensitive (affects their starting pitch), and are a little louder.
  • 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).
  • "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.
  • 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).
  • 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.
  • Instruments:
  • Made Fat Sync Lead (084_017_003) velocity-sensitive.
  • Added [GS] Phono Noise (124_011_003)
  • Added Hardstyle Bass 1 (038_100_098) (non-standard, following the same numbering convention as when I added exclusive instruments last time (LSB=098))
  • More micro-optimisations (especially regarding floating-point maths done for every playing note).
  • 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.
  • 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.
  • 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).
  • 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.
  • 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).

New in BaWaMI 0.6.129 (Jan 18, 2016)

  • Now recognises when a filename is passed on the command line without speech marks (and without any command line parameters). This fixes the problem of Bawami not opening a path+file containing no spaces if such a file was dragged onto its icon (or if Bawami is associated with .MID files), because Windows does not automatically surround such a path+file with speech marks when passing it to the program.
  • WHEN USING CONSOLE:
  • When using "/infolevel 2", log file text is now sent to StdOut instead of (accidentally) to StdErr.
  • "Finished." is now (always) displayed when shutting down.
  • Key prompts for answers to questions are now sent to StdErr instead of StdOut (as was already being done for the question's title and message), so that they're visible on the console even if you're redirecting Bawami's StdOut to a file.
  • No longer crashes if you're redirecting Bawami's output to a file or other program.
  • Fixed bug where button to browse for a new MIDI file remained disabled after opening a MIDI by dropping it onto the main window.
  • Corrected Zorder of several controls on the config window so that the dotted border that indicates a control that has focus isn't having one of its horizontal edges cut off unnecessarily.
  • Corrected a reference to how green "settings" button appears in info.txt.
  • Green "settings" button's tooltip is now loaded in the chosen language (instead of having no tooltip) (broken in revision 128).
  • Logging (also affects text shown when using /console /infolevel >=1):
  • No longer shows "Closing MIDI input port" when shutting down, if MIDIin wasn't in use.
  • No longer shows "Decoding absolute timings" a few lines after the last track has finished being decoded.

New in BaWaMI 0.6.128 (Dec 15, 2015)

  • Button on main window to display the config window is now a spanner icon instead of an ambiguous "[S]". It can still be triggered by the altkey shortcut determined by "lang\message\051.txt" (AltS = "Settings" in English / "settei" in Japanese).
  • Made splash cymbals (percussive note 055) a little more audible.
  • Messages displayed if an OGG file can't be written now say "OGG" instead of "WAV".
  • Fixed possible memory corruption when sysex messages with less than 5 data bytes were processed.
  • Fixed bugs while using live MIDI input (and not playing a MIDI file) where interface occasionally wouldn't redraw properly when muting/unmuting a MIDI channel, or overriding a control.
  • OK/Cancel buttons of OGG quality selection dialogue are now languagespecific.
  • When starting to write OGG file, no longer crashes if oggenc (encoder) can't be run for some reason.
  • In case vcut (OGG file splitter) fails for some reason, the noise burst at the end of the file is quieter now.
  • When writing very lowquality OGG files, there was a chance of the last fraction of a second being cut off. This is fixed now.
  • Not possible to crash Bawami by using keyboard shortcuts to control playback while a MIDI file is in the process of being loaded.
  • In XG system mode, for instruments which originally had a (near) instant release, "release time" messages >64 (to add release time) now have the same amount of effect as when in GS mode (default), i.e. they have more effect than before.
  • Fixed bug where messages to set decay time to >64 (lengthened) would be ignored if a previous "decay time" message had resulted in a very short decay (the exact value required to trigger the bug depended on the instrument's usual decay speed).
  • Increased release speed of JP Pulse Leads (080_025_003, 080_026_003) to minimise note overlap on sequential notes (still without making an abrupt pop on noteoff).
  • Very small speed improvements to startup, drawing waveforms of MIDI channels, initialising sound system (when clicking "Apply" on "Sound system" tab), and possibly overall.
  • Tweaked calculation of a MIDI channel's dry sound level based on chorus/reverb levels again (chorus should muffle sound less). It's a tricky balancing act.
  • No longer possible to crash Bawami by pressing Ctrl+Left arrow key when no MIDI file is loaded (bug present since hotkey support was first added in revision 108, amazingly).
  • Morerelevant text is displayed on MIDI Messages view when SysEx tries to set pitchbend sensitivity while the checkbox to allow setting bend sensitivity is unchecked.
  • Fixed bug on MIDI Messages view where text regarding a noteon message on a monophonic MIDI channel would sometimes end with part of a previous message's text, instead of the chosen sound channel.
  • The message regarding a chosen language being made for a different version of Bawami to the one currently running is now displayed in the newlychosen language instead of the "previous" language.
  • "Message" language files are now loaded on demand (and cached), instead of all ~100 being loaded at startup, to increase startup times a bit. The exception is if a new language's files don't yet exist and have to be copied from the "English" folder first.
  • Skipping to a different position during playback (either forward or backward) is significantly easier on the ears! Bawami advances volume envelopes forward by 350 milliseconds upon seeking to avoid an explosive sound where e.g. lots of kicks play on top of each other.
  • Sound Canvas LCD emulation and the sending of noteons and noteoffs to MIDIout now always disable themselves while seeking to a new playback position, to avoid wasting time. This was supposed to happen before, but it didn't always work.
  • Toggling volume override using a rightclick menu works again (broken in revision 118, and I only just noticed).
  • Fixed bug where toggling volume or expression override using a rightclick menu did not change the colour of the appropriate bar(s), even though it did correctly prevent the MIDI from changing those controls (bug introduced in revision 122).
  • Command line options (see "COMMAND LINE PARAMETERS" in info.txt for details):
  • No longer wastes time resetting up sound system for live playback after rendering a MIDI using /writewavonly or /writeoggonly.
  • Fixed bug where passing /maxnumoscs or /8bitmix along with /invisible could cause Bawami to exit on startup without playing the MIDI file.
  • No longer possible to crash Bawami by passing "/maxnumoscs 0" (or setting MaxNumOscs to 0 in config file).
  • Removed all references of angle brackets () from info.txt and kept only square brackets ([]) (which Bawami did already allow) after a close call during testing where the command prompt interpreted ">" as "redirection", overwriting a MIDI file with Bawami's text output. Although Bawami still understands angle brackets, please only use square brackets on the command prompt!
  • When using /writewavonly or /writeoggonly with /console, current rendering position is displayed.
  • No longer crashes messily when told to load a MIDI whose filename isn't allowed under Windows (e.g. contains a colon in the middle).
  • A warning is shown about any unrecognised command line options that were given and ignored, to avoid confusion as to why Bawami is not doing what is expected.
  • Renamed a few options: /soundstereowidth is /stereowidth, /sounddetune is /maxdetune, and /soundvol is /mastervol.
  • /pitdump now works when using /invisible.
  • Added option /infolevel (0|1|2), for use with /console, to choose how much info is sent to the "standard output" handle. The 3 levels range from 0 (as minimal as possible) to 2 (shows the entire log file in realtime, which causes some slowdown). The default is 0. Full details are in info.txt.
  • Added option /stdmidi, for use with /console, to output MIDI messages as hexadecimal text to the "standard output" handle. This causes some slowdown (but looks cool on the command prompt), and requires a parameter, so please see info.txt for an explanation.
  • New option /seek, intended for use with /playnow (1|2), to start playback from a MIDI file position other than the beginning. Position can be specified in 3 different ways; see info.txt for details.
  • "/playnow 2" is now allowed, and is implied by /invisible and /console. Like "/playnow 1", it starts playback of the MIDI file also being given on the command line, but additionally skips to the first "NOTE ON" message to avoid a long period of silence (preceeding setup messages will still be processed, but as quickly as possible).
  • In order for Bawami to be able to output to the Windows console (command prompt) when using "/console" option, the EXE file is now compiled as a consolemode program. Annoyingly, this causes a console window to appear for a brief moment before Bawami's main window appears. However, this doesn't slow anything down; it's only for part of the amount of time where, previously, nothing at all was displayed.
  • All options now begin with a slash instead of a hyphen (e.g. "/new" instead of "new"), to avoid potential issues when a path/filename happens to contain a valid command line option.
  • No longer wastes time loading some language files if started with /invisible (or /console) option.
  • New option /console designed for when using Bawami from the command prompt. Similar to /invisible, but also displays no message boxes (e.g. errors); they're output to Windows's "standard error" handle (visible in console). Answers to questions can be typed on the console ("standard input"). See info.txt for details. Crashing Bawami while using /console leaks no resources.

New in BaWaMI 0.6.127 (Sep 24, 2015)

  • Fixed bug on "Mod shape" tab of config window where the shape was not updated immediately when a new shape in the "Mix with shape #2" area was selected (it was ignored until some other control was also adjusted).
  • When writing WAV/OGG files:
  • OGG quality dialogue can now be cancelled by pressing Escape.
  • OGG quality dialogue's "OK" button now always has focus by default, so that pressing Enter will start writing the file (instead of "Cancel" still having focus if it had been clicked previously).
  • Last-used OGG quality is now remembered, both between exports and between runs (saved in startup.cfg).
  • Slightly increased speed of writing OGG files.
  • OGG files never cut off at the end anymore. To ensure that oggenc.exe writes all data, a small period of silence followed by noise is sent to it, and the resulting OGG file is split at the beginning of the silence (the part containing noise is deleted). "vcut.exe" (official Vorbis splitter) is now included in the "tools" folder for this purpose.
  • No longer freezes waiting for silence at the end. This happened if "Use effects" was ticked and master volume was >=90%, and was caused by a DC offset output by the new (revision 124) chorus processor that was above Bawami's threshold for silence. Silence is now calculated based on difference between min and max points in the wave instead of an absolute value.
  • An existing OGG file will only be erased once the OGG quality has been chosen, instead of immediately after choosing a filename (i.e. the original file won't be lost if the quality selection dialogue is cancelled).
  • A zero-byte file is not left behind after choosing a new OGG filename but cancelling on the OGG quality selection dialogue.
  • Fine-tuned strength of attack/release overrides for XG MIDIs a little.
  • Corrected formula shown in information text when moving mouse over bottom text box in the "arpeggio" section of PC Speaker tab on the config window.
  • Should have eliminated click artifacts on note-offs when the channel's release time has been lowered so far as to mean "instant" on an instrument which didn't originally have an instant release.
  • Slightly reduced the (unintentional) effect where a high chorus level caused the volume to also increase.
  • Splash cymbal (percussive note 055) no longer shows up as "Unsupported perc" on the MIDI Messages view (despite playing correctly).
  • Changed decay and release of Woodblock (115) to avoid click artifacts.

New in BaWaMI 0.6.126 (Jun 2, 2015)

  • Fixed bug where, if pan changed on a MIDI channel playing more than one note, only the panning of one note would change (bug added in revision 122). I only just noticed this, and it annoyed me a lot, so I'm releasing this version with only this change.

New in BaWaMI 0.6.125 (Jun 2, 2015)

  • Instrument menu appears correctly again (with a circled tick to indicate category of the chosen instrument).

New in BaWaMI 0.6.124 (Jun 2, 2015)

  • Fixed crash on playback on computer with very long uptime (e.g. 70 days) (bug introduced in revision 121).
  • Fixed crash when setting channel aftertouch (bug introduced in revision 122).
  • "Override Other Controls" window now wastes a little less space.
  • Chorus processor has been replaced again and now works on Windows XP (without errors). Instead of "achorus.dll" (added in revision 122), "TALChorusLX.dll" (by TAL - Patrick Kunz) is now used. Many thanks for their permission to use this, which I believe sounds even better than the previous one.
  • Reverted to previous FMOD version (4.6.21) because version 4.8.2 (switched to in revision 122) causes errors during startup (specifically, checking ASIO support) on Windows XP. This might be slightly slower, but is still faster than revision 121.
  • "jsmalle.fon" font ("Small Fonts") is no longer included or checked at startup. The check was failing on Windows XP for some reason and preventing Bawami from starting. It's included with Windows anyway.
  • Added command line parameters -ocr and -occ to override a MIDI channel's reverb mix and chorus mix, respectively. They work in the same way as -ocv and -oce (e.g. "-ocr 2 127" sets MIDI channel 2's reverb mix to 127 (maximum) and locks it so that the MIDI file can't change it).
  • When using -invisible command line parameter, fractionally faster program loading and slightly lower CPU usage.
  • If MIDI file duration is less than 1 millisecond (e.g. only contains setup messages), playback no longer loops (caused program to stop responding).
  • When overriding release time to reduce it to "instant", and it wasn't originally truly instant (linear, speed 1), it is now set to "unnoticably fast" (non-linear, multiplier 0.5) instead of "truly instant" to avoid clicking artifacts on note-offs.
  • Fixed "being loading" typo on "Interface" tab of config window.
  • Reduced ModAutoDelay in default instrument file from 0.35 to 0.31 seconds. This results in VIBRATO DELAY messages setting the delay much closer to how the SC-88Pro does

New in BaWaMI 0.6.123 (Apr 10, 2015)

  • Optimised string-handling (only slightly affects loading config, language, instruments and percussion mapping), which also reduced the file size by 12KB.
  • Fixed the first 100 event indeces being displayed as 00-990 instead of 0-99 on MIDI Messages view.
  • Playback can no longer wrongly be skipped with Ctrl+Left/Right arrow keys while rendering a WAV or OGG file.
  • Reduced memory usage of MIDI Messages view slightly.
  • Fixed bug where volume/expression/aftertouch/pan bars would not be redrawn after choosing a new language during playback (bug introduced in revision 122).

New in BaWaMI 0.6.122 (Mar 27, 2015)

  • Sound-related improvements:
  • Improved sound of kicks, especially non-retro ones (filtered square wave is now used, instead of FMOD’s glitchy “saw” wave, and the filter also quenches pops). Slightly sped up code for starting/ending percussive notes while I was at it. Default (on first run) is now to not use retro percussion, because it’s not needed to hide kick glitches anymore (tick “Use retro percussion” on the Sound System tab if you don’t like this).
  • A much-better and stereo chorus is now used, instead of the mono one built into FMOD, which had a bug that caused it to stop working properly after some time had passed. Open-source chorus plugin (achorus.dll) is by Dennis Cronin.
  • Muting a MIDI channel now instantly stops its sound, instead of making the notes start releasing, which allowed the sound to continue for some time.
  • A note’s auto modulation now correctly continues even if the MIDI channel’s instrument changes while the note is playing (i.e. the held note doesn’t half-morph into the new instrument). However, a playing note’s auto modulation will stop when a message changes auto-mod speed or depth AND the instrument has been changed.
  • MIDI messages:
  • Added support for ATTACK TIME (CC #73, NRPN H001.L099), DECAY TIME (CC #75, NRPN H001.L100) and RELEASE TIME (CC #72, NRPN H001.L102). Only affects following notes on tone channels. I might tweak exactly how values affect times later (there’s no official meaning in the MIDI specs). See info.txt for details. You can disable responding to these messages on the “MIDI params” tab of the config window.
  • Bawami now distinguishes between GS and XG modes. Currently, this is only used to scale any attack/decay/release override values differently. GS mode is the default, and an XG Reset or GS Reset SysEx message sets the mode. The current mode is visible at the bottom-right of the “Sound + MIDI Channels” window.
  • Support for GS and XG SysEx messages to set VIBRATO RATE, VIBRATO DEPTH, VIBRATO DELAY, ATTACK TIME, DECAY TIME, RELEASE TIME (these can all also be set using control changes or NRPNs). For attack/decay/release changes, the current system mode (GS or XG) is ignored, and the type of SysEx message (GS or XG) is what determines the scaling of attack/decay/release values.
  • Support for GS and XG SysEx messages to set channel mode to monophonic or polyphonic (this was already possible using CCs #126 and #127). See “SUPPORTED SYSTEM-EXCLUSIVE MESSAGES” section in info.txt for details.
  • Sound + MIDI Channels view:
  • Added MIDI channel columns: sustain pedal, portamento time (red = on (CC #65), blue = next note only (CC #84)), attack/decay/release time adjustments, vibrato (auto modulation) depth/rate/delay adjustments.
  • When making the window appear while not playing a MIDI, the text is now immediately updated, instead of showing old values until you start playing.
  • Reduced CPU usage during playback (especially if the window is half-out of the screen so that only the “MIDI Channels” table is in view), even though more info is displayed there now.
  • Graphics-related improvements:
  • New option “Attempt to stabilise” when displaying one waveform per MIDI channel, which makes Bawami search for a zero-crossing point in the waveform and draw from this sample onwards in order to draw a stable waveform (if it isn’t too complicated). The number of samples drawn is same as before. If the search fails (it will with low frequencies), the waveform is drawn the same as before.
  • Styled “Override Other Controls” window to match the main window a little better. Instead of checkboxes to lock a control, alt-click a slider to lock it without moving it. The current value is now shown in its original range (e.g. 0-127; more accurate than a percentage).
  • Made Sound Canvas graphic LCD emulation easier to see by increasing contrast between “off” (blue) and “on” (black) colours.
  • Instruments:
  • Added the following instruments (some of the basses ended up sounding similar to already-existing instruments (although not directly based on them), but will at least make MIDIs which use them sound closer to how they’re meant to sound)
  • [GS] Stack Strings (050_002_003)
  • [GS] SH101 Bass 2 (039_018_002)
  • [GS] Thick Matrix (089_001_002)
  • [GS] D-50 Fat Saw (081_011_003)
  • [GS] Velocity Lead (081_005_002)
  • [GS] 303 Square Bass (038_017_003)
  • [GS] Synth Shamisen (106_008_003)
  • [GS] Eruption (127_004_003)
  • [GS] JP-8 Bass (038_004_003)
  • [GS] Sequence Saw 2 (081_041_003)
  • [GS] Fat Sync Lead (084_017_003)
  • [GS] Pulse Saw (081_002_002)
  • [GS] Feline GR (081_003_002)
  • [GS] JP8 Pulse Lead 1 (080_025_003)
  • [GS] JP8 Pulse Lead 2 (080_026_003)
  • [GS] JUNO Rave (087_003_003)
  • [GS] Wire String Bass (039_011_003)
  • [GS] Modular Bass (039_002_002)
  • [GS] Sequence Bass (039_003_002)
  • [GS] MG Octave Bass 2 (039_006_003)
  • [GS] Mg Octave Bass 1 (039_005_003)
  • [GS] Beef FM Bass (039_008_001)
  • Synth Brass 2 (060)
  • Added support for Splash Cymbal (percussive note 055). It doesn’t really sound right, as usual with cymbals sounds…
  • Made Taiko Drum (116) unable to use such high frequencies for its low-pass filter, i.e. reduced the key-tracking intensity. It was painfully loud with high-pitched notes before.
  • Made release of OB2 Saw (081_001_001) unnoticably fast, instead of truly instant, to avoid pops when notes stop.
  • Made Electric Grand (002)’s filter a little less velocity-sensitive.
  • Increased attack/decay speed, decreased sustain level, and increased volume of French Horn (060).
  • Slowed decay and decreased distortion of Acid Bass (038_008_002).
  • Increased decay/release speed of Tambourine (113_016_003).
  • Increased decay time of Clavichord (007).
  • Increased volume of Voice Oohs (053) slightly.
  • Corrected filename of House Bass (039_022_002) to 039_022_003.
  • More thorough checking of bad parameters when loading instruments (particularly of DecaySpeed, which could otherwise cause a crash now that “DECAY TIME” MIDI messages are supported).
  • Fixed some typos in explanations in “default.txt” instrument file.
  • Miscellaneous changes:
  • All controls on “MIDI params” tab of config window are usable now. This section has been redesigned and there are new checkboxes to disable responding to portamento, attack/decay/release times, and the depth and delay of automatic modulation. The checkboxes take effect only from the moment you toggle them, so you’ll probably want to restart playback afterwards.
  • While setting up system files on first run, text now becomes red if there’s an error, instead of only the wording changing.
  • In translator mode, it’s now possible to edit the tooltips (info-rectangle text) of labels (if they have tooltips) by pressing Ctrl+B.
  • Added missing keyboard shortcuts on “GUI” tab of the config window.
  • Updated the download URL, which is copied to the clipboard if the pre-loader cannot find required files, from “robbi-985.homeip.net” to “somethingunreal.homeip.net”.
  • Updated FMOD (fmodex.dll) version from 4.6.21 to 4.8.2. This appears to be the fastest version containing the features Bawami needs.
  • Version number increased to 0.6!
  • Other bug fixes:
  • Fixed bug where chorus and reverb processors remained running in the background after a WAV or OGG file had finished being written.
  • Fixed bug where Reverb or Chorus sliders on “Override Other Controls” window did not return to their original values when unticking their checkbox if the window had been displayed by right-clicking in empty space on the main window, as opposed to by right-clicking on a MIDI channel.
  • Fixed visual bug where note volume bars (or waveform) would remain visible at end of playback if window was minimized at the moment playback ended.
  • Bottom-most row of pixels of old instrument name (on main window) are now cleared when instrument name changes. Previously, they’d stay if the instrument name was too long (exceeded 3 lines of text).

New in BaWaMI 0.5.121 (Dec 8, 2014)

  • PC speaker-related:
  • PC speaker “Arpeggio” controls on the config window are now available to use! These settings are saved between runs.
  • Now updates its frequency smoothly! Vibrato and pitch-bends are no longer painful to listen to, so I’ve increased the modulation/pitch-bend update speed from every 14ms to 1ms. Many thanks to Andrew Jenner for pointing out the easy way to fix it.
  • Added checkboxes to allow PC speaker cutoff volume to take MIDI channel expression and volume into account, allowing e.g. gating effects via expression changes. These settings are saved between runs.
  • A long note that was already playing before noise-based percussion started playing now resumes playing after the percussive note finishes playing.
  • By request, I added an advanced command line option “-pitdump” for programmers of oldschool demos who want to capture the commands that Bawami sends to the programmable interrupt timer, which is responsible for generating tones on the PC speaker. See “COMMAND LINE PARAMETERS” in info.txt for details.
  • Instruments:
  • Added Muted Trumpet (059) and Shakuhachi (077).
  • Added [GS] Hollow Mini (080_002_002), and a shortcut for the XG equivalent: [XG] Hollow (080_000_018).
  • Attempted to improve Clarinet (071), but it still doesn’t sound very realistic.
  • Redesigned Sitar (104) so that it swells, although it’s most noticable only with lower notes. It’s also (slightly) velocity-sensitive. Very low-pitched notes (out of a real sitar’s range) may sound delayed now. Please swap the new file for the included old file if this is a problem.
  • Edited [GS] 2600 Sine (080_008_001) to have no attack time.
  • Increased volume of French Horn (060).
  • Quietened Rock Organ (018).
  • Corrected the spelling of “Shakuhachi”.
  • Added shortcut file [XG] Solo Sine (080_000_065) (shortcut to [GS] 2600 Sine (080_008_001)).
  • Added support for percussive note Square Click (note 032) by remapping it to Kick 1 (note 035).
  • If invalid line is seen when loading an instrument file, “default.txt” is now used for that instrument, instead of the bad instrument file; “Default (BAD FILE)” is then shown on the instrument-overriding menu for that instrument.
  • Miscellaneous:
  • Added support for GS SysEx messages to control how much modulation affects frequency or volume by (like ModToFreq and ModToVol in instrument files). Roland calls these parameters “MOD LFO1 Pitch” and “MOD LFO1 TVA Depth“. See “SUPPORTED SYSTEM-EXCLUSIVE MESSAGES” section in info.txt for details.
  • Changed strength of exponential curve of cutoff frequency (affects CC #74 and NRPN H001.L032) so that lower frequencies are more likely to be used.
  • For command line options requiring a parameter in , you can now use [square brackets] instead (doesn’t cause problems with the Windows command prompt).
  • As usual, hopefully less likely to crash when exiting…
  • Interface:
  • GUI shows the reset MIDI parameters when “Reset MIDI system” is clicked even if no MIDI file is playing and live MIDI input is not in use.
  • Added Alt-key shortcuts for various controls on the config window, and resolved some conflicting ones.
  • Fixed bug where, if the language was changed with “-guilang” on the command line, the chosen language wasn’t selected on the “Interface” tab of the config window.
  • Corrected slight vertical alignment problem of text in instrument category menu.
  • Finished (badly) translating all message boxes’ text to Japanese.
  • “(No sound output)” text in the “driver + device” drop-down menu is now language-specific.
  • When initialising sound system:
  • GUI stops being blank and returns to normal when sound system successfully initialises after the GUI has previously become blank due to the sound system failing to initialise.
  • Fixed stupid bug where expression on all MIDI channels is “forgotten” when sound system is restarted. This bug has been present for a shamefully long time (since revision 98), but I only just noticed it…
  • No longer possible to crash Bawami by clicking “Reset MIDI system” if sound system has failed to initialise.
  • Notes being sent on MIDI-out are now released instead of staying stuck on if sound system fails to initialise when clicking “Apply” to restart it.

New in BaWaMI 0.5.120 (Oct 11, 2014)

  • New stuff:
  • Added “buffer length” slider on “Sound system” tab of config window. This only affects the DSound and WinMM drivers. When using ASIO, your soundcard’s ASIO driver controls the buffer size. Lower values let you reduce the delay at the cost of potentially-stuttering sound on slow computers or inefficient drivers. Default is 93 (x 44 = 4092 samples) (~93 milliseconds). This setting is saved between runs.
  • Added instrument file for Sci-fi Effect (103).
  • Miscellaneous bug fixes:
  • No longer acts as if “Use filters” is ticked when it’s not, after the sound system is restarted. This fun bug meant that filters were always enabled when Bawami started even if checkbox was unticked, because the sound system is initialised after settings are loaded.
  • No longer possible to crash Bawami by holding Ctrl+Left to skip backwards when playback is already at the beginning of some MIDIs.
  • Fixed bug where Bawami could freeze in a loop at the end of playback or a custom loop end point, if a MIDI file set a custom loop start point to be the same as the end point. In this case, the custom points will be ignored, and playback will loop to 0 seconds at the end of the file. I had tried to make Bawami detect this situation before, but I discovered just now that it didn’t work.
  • Section loops that should only loop a certain number of times should now work correctly (not be infinite).
  • Visual/logging fixes:
  • Made all the window icons look nice even when they’re small (16×16 or 32×32). This also fixes the silly-looking icon in the Windows Volume Mixer. This actually reduced the EXE file size by 28KB!
  • Text that prompts to click “Apply” on the sound system tab of the configuration is bold again (it unintentionally stopped being bold some time when I worked on the language system).
  • Fixed bug where no “action” text would be displayed on the MIDI Messages view for CC #74 (cutoff frequency) messages if “Use filters” was unticked. Descriptive text would also be missing for NRPN H001.L032 (cutoff frequency) data entry messages.

New in BaWaMI 0.5.119 (Oct 1, 2014)

  • Miscellaneous changes:
  • A random character is no longer sometimes displayed at the end of text when emulating the Sound Canvas LCD (bug introduced in revision 108 when adding code to strip extra F0 bytes from the beginning of SysEx messages).
  • SysEx to display no graphic page on a Sound Canvas LCD is no longer shown on the MIDI Messages view as if it’s not recognised.
  • Fixed embarrassing mistake: The error shown when failing to initialise the sound device, and the error shown when failing to write to a WAV file, are no longer swapped. This had probably been wrong ever since writing of WAVs was first introduced in revision 106.
  • New command line option “-scanwinmm 0” to disable scanning for WinMM-compatible sound devices at startup, which causes Bawami (FMOD) to freeze with some bad USB3 drivers when a device is connected via USB3. This setting will be remembered in startup.cfg! To re-enable using devices with the WinMM driver, use “-scanwinmm 1“. You can also change “ScanWinMM” to 0 or 1 in startup.cfg.
  • Language-related changes:
  • Removed more pointless (duplicate) language files and stopped them from being created.
  • Worked on the Japanese translation a little more. It’s still very incomplete and bad-sounding.
  • In translator mode, it is now possible to press Ctrl+A to edit the caption of the following controls on the config window when the mouse pointer is above them: “Send “Reset” at start of playback” checkbox; all frames (e.g. the text “Graphical user interface” on the “Interface” tab).
  • When toggling “Show filenames” in translator mode by using the button in the bottom-left of the config window, tone and percussive instrument names are no longer reloaded, to make reloading the language faster. Instrument names will still be loaded when (re-)selecting the language on the “Interface” tab.

New in BaWaMI 0.5.118 (Oct 1, 2014)

  • Some of the biggest changes are:
  • Added ability to render the MIDI directly to an OGG file. You can do this in the same way that you create a WAV file – simply right-click in an empty space on the main window and choose “Convert this MIDI file to OGG…“.
  • Added ability to override MIDI channel’s reverb and chorus levels. These are on a new window called “Override Other Controls”. Many more controls will be overridable in the future. Right-click in empty space, or a MIDI channel’s note volume bars area, to reveal the menu option.
  • Holding the Shift key while overriding any control (volume, expression, instrument, chorus, reverb) now affects all channels, just like how it’s possible to mute all channels by shift-clicking the note volume bars.
  • Added GS instrument Bright Trumpet (056_024_002).
  • New tab on config window to modify the modulation wave shape, affecting how vibrato’s pitch rises and falls. You can choose from basic shapes such as sine and sawtooth, or mix two together to make a complicated shape.
  • New command line option “-translator” for easier editing of some language files.
  • Slightly reduced CPU usage and increased the speed of creating a WAV file.
  • New features:
  • Added ability to render the MIDI directly to an OGG file. You can do this in the same way that you create a WAV file – simply right-click in an empty space on the main window and choose “Convert this MIDI file to OGG…“. There is also a new -writeoggonly command line option that works in the same way as -writewavonly.
  • Added ability to override MIDI channel’s reverb and chorus levels. These are on a new window called “Override Other Controls”. Many more controls will be overridable in the future. Right-click in empty space, or a MIDI channel’s note volume bars area, to reveal the menu option.
  • New tab on config window to modify the modulation wave shape, affecting how vibrato’s pitch rises and falls. You can choose from basic shapes such as sine and sawtooth, or mix two together to make a complicated shape.
  • New command line option “-translator”. This causes most controls to display their language TXT filenames instead of the text stored in those files. Translators can easily see which TXT file is used where. While pointing at a control on the configuration window, you can use keyboard shortcuts to edit the TXT files (see info at bottom of window). This mode doesn’t affect instrument names, menus or dialogues.
  • Bug fixes:
  • No longer shows misleading error meassage and crashes if attempting to create WAV file with a path or filename that includes Unicode or double-byte characters, which FMOD does not support. Now, an appropriate message is shown and then the program is usable again.
  • WAVs created while “Mix sound in 8-bit” is ticked are now rendered correctly, in 16-bit. Previously, FMOD wrote signed 8-bit samples, which is impossible in a WAV file, resulting in highly distorted sound (although software such as Audacity could open the file as raw signed 8-bit data). Unfortunately, FMOD cannot write unsigned 8-bit samples, so 16-bit WAVs must be written.
  • When Bawami is waiting for the reverb to fade away at the end of writing a WAV file, it is no longer possible to click Play and cause playback to restart, messing up the WAV file.
  • Fixed bug where percussion playing on one MIDI channel could silence a percussive note of the same kind (e.g. a hihat) on a different MIDI channel. It’s correct to silence an old percussive note of the same kind, but only if it’s playing on the same MIDI channel. In other words, 2 percussive MIDI channels can’t interfere with each other anymore.
  • Fixed visual glitch on MIDI Messages view where text would sometimes appear in yellow instead of red when a note-off was aborted because the sound channel has been re-used for a different note (possibly on a different MIDI channel).
  • Stopped some pointless language files (e.g. ones whose text is simply “

New in BaWaMI 0.5.117 (Aug 4, 2014)

  • Fixed bug where it was impossible to choose the filename for creating a WAV file for the second or later time. Bawami would overwrite the last WAV file without asking for a new filename (bug that appeared in revision 113).
  • Added instruments Guitar Feedback (031_008_001) and Guitar Feedback 2

New in BaWaMI 0.5.116 (Mar 26, 2014)

  • Tooltips on the MIDI Messages view now work again (broken in revision 111, when language system was first introduced).
  • SysEx messages with less than 3 bytes of data no longer cause Bawami to freeze (SysEx messages should be at least 4 bytes long anyway, not including start/end bytes), and are logged correctly on the MIDI Messages view.
  • Quietened all percussion slightly further.
  • No longer crashes on MIDIs with invalid "sequence number" (meta) messages while showing MIDI Messages view.
  • "Sequence number" meta message text (on the MIDI Messages view) changed to "Seq.Number" so that it is now neatly aligned with the text of other types of meta message.
  • Instruments:
  • Improved sound of Footsteps (126_005_001).
  • Quietened Electric Grand (002) and Castanets (115_008_001) (also affects percussive note 085).
  • Increased volume of Bagpipe (109) (also affects Shanai (111)).

New in BaWaMI 0.5.115 (Feb 4, 2014)

  • The bug of crashing when exiting made it dangerous to use the "-invisible" command line parameter often, as many Windows crash-reporting processes could quickly build up in the background. However, it's now safe to use.

New in BaWaMI 0.5.114 (Feb 4, 2014)

  • Menus for changing instruments are back to how they used to be again (with the "circled tick" icon to quickly find the selected instrument). I accidentally left this disabled when releasing revision 113.

New in BaWaMI 0.5.113 (Feb 4, 2014)

  • "Reset All Controllers" (CC #121) now only resets one MIDI channel instead of all MIDI channels. That incorrect implementation had been present ever since I added it (1.5 years ago), but I only just noticed
  • Fractional numbers in config files are now always saved with "." as the decimal symbol, to avoid crashing or incorrectly loading config files made on a computer whose regional/language options are set to a country that uses "," as the decimal symbol
  • Added support for CCs #126 and #127 (mono or poly MIDI channel modes). The CC values are ignored. In monophonic mode, a MIDI channel is limited to playing only one note at once. CC #127 puts the channel back into polyphonic mode (the default). The various "Reset" SysEx messages also reset a MIDI channel to poly mode. CC #121 ("Reset All Controllers") does not affect the channel mode
  • Fixed potential bug where, when a huge number of notes are playing (many sound channels are being re-used), a note-off on one MIDI channel (whose sound channel had been re-used) would release the same note on a different MIDI channel
  • You may need to run this new version of Bawami "as administrator" (only for the first time); Bawami now correctly sets up "MSCOMCTL.OCX" and "MSCOMM32.OCX" when starting. Previously, on clean installations of Windows, Bawami would be unable to start running for a second (or later) time after moving its program folder to a different location
  • Added a 7th tip to the "instructions.txt" file for making new languages, regarding the use of the "&" symbol in control captions
  • Now accepts 25 command line options. The format is: BaWaMI.exe [options] ["MIDIFile.mid"]. If a MIDI file is given, and Bawami is already running, the already-running Bawami will be re-used and open it. To force a new instance to run while giving a MIDI file, include the option '-new' before the filename. See "COMMAND LINE PARAMETERS" in info.txt for full details
  • Bawami can now open MIDI files associated with its EXE, dropped onto the EXE, or passed on the command line between speech marks. If a Bawami is already running, the already-running Bawami will open the file instead, to avoid many instances of Bawami running at once
  • Percussive notes
  • Added Side Stick (note 037) (plays as a low-pitched castanet)
  • Instruments
  • Added Round Glock (098_003_003)
  • Increased resonance of Castanets (115_008_001)
  • Increased volume of White Noise (122_017_003)
  • Returned pitch of Agogo (113) to normal, as the +1 octave in the previous revision didn't help the issue and made some things sound worse

New in BaWaMI 0.5.112 (Nov 21, 2013)

  • Updated "First Run.bat" to be self-contained (not rely on a separate "regfull.bat") and bug-fixed, thanks to help from DJ3520.
  • Fixed visual glitch in the playback position (time) text when using live MIDI input on a computer whose clock is set to 12-hour format instead of 24-hour. This glitch had been present ever since revision 96, when the computer's time (clock) started to be displayed when using live MIDI input.
  • MIDI file playback either broke entirely (with some CPUs) or had inaccurate timing (played fractionally too slowly or quickly) in revision 111 due to a micro-optimisation I attempted to make (the multiplication instead of division). This change has been undone now, so file playback should work again for the affected computers.
  • Added support for percussive notes:
  • Claves (075) (plays as an extra-high-pitched woodblock).
  • By remapping to already-existing percussive instruments:
  • Remapped to Kick 1 (note 035): Room Kick 1 (note 008).
  • Remapped to Kick 2 (note 036): Room Kick 2 (note 009).
  • Remapped to Tambourine (054): Jingle Bell (note 083).
  • Instruments:
  • Added [GS] Sine Lead (080_009_003) (shortcut to [GS] Sine Wave (080_008_001)).

New in BaWaMI 0.5.111 (Nov 5, 2013)

  • Fixed huge resource leak whenever loading a skin for the second (or later) time since the program started running.
  • Slightly changed normal/overridden instrument text colours to try to make the overridden text easier to read against the background without making it hard to tell normal and overridden apart.
  • Fixed visual glitch where lines remained drawn on the "custom MIDI channel map" box on the "MIDI in" tab even if the mouse was not positioned over a MIDI channel.
  • Fixed memory (resource) leak when changing the "custom note velocity curve" on the "MIDI in" tab of the config window.
  • "First run.bat" didn't work on some computers, but it does now (on some computers, the default working directory for batch files is the folder of cmd.exe instead of the batch file, but the batch file now forces to switch to its own folder). Massive thanks to Charles M for helping debug this.
  • If main program window is minimized, GUI is no longer drawn at all, to reduce CPU usage.
  • Added support for the following percussive notes:
  • Completely new instruments:
  • MC-500 Beep 1 (note 022)
  • MC-500 Beep 2 (note 023)
  • Tambourine (note 054)
  • Castanets (note 085)
  • Instruments that used to exist only as tone instruments:
  • Woodblock High (note 076)
  • Woodblock Low (note 077)
  • By remapping to already-existing percussive instruments:
  • Remapped to Kick 1 (note 035): Electric Kick 2 (note 012), Kick Drum 1 (note 004), Standard 2 Kick 1 (note 002), Standard 1 Kick 1 (note 000).
  • Remapped to Kick 2 (note 036): Electric Kick 1 (note 013), Kick Drum 2 (note 005), Standard 2 Kick 2 (note 003), Standard 1 Kick 2 (note 001).
  • Remapped to Snare 1 (note 038): Standard 1 Kick 1 (note 097), Standard 2 Kick 1 (note 098), Electric Snare 1 (note 116), Electric Snare 2 (note 115), Slap (note 028).
  • Remapped to Snare 2 (note 040): Standard 1 Kick 2 (note 099), Standard 2 Kick 2 (note 100), Electric Snare 3 (note 117), Gated Snare (note 111).
  • Added percussion mapping system (the "percmap" folder). This lets you either simply "remap" from an unsupported percussive note to a supported one, or specify that an unsupported percussive note should play as a certain tone note on a certain tone instrument. See "percmap info.txt" in "percmap" folder for detailed information.
  • A few more subtle CPU usage reductions (using multiplications instead of divisions).
  • If pitch-bend sensitivity is changed on a channel currently playing notes while pitch-bend is not centred, the pitch of the playing notes will now be changed, taking the new sensitivity into account (bug present since revision 90).
  • PC speaker:
  • "Lowest note allowed" now defaults to C3 if this is the first time Bawami is being run (no startup.cfg exists).
  • Added experimental support for percussion. It takes priority over non-percussive notes. Please mute percussive channels if it sounds bad. Uses lots of CPU time when making noise (as opposed to tone) and will sound very bad if there is not enough available CPU time. In this case, try turning FPS (on "Interface" tab) down to minimum and setting sound device to "No sound output".
  • Fixed potential bug where the tone would very occasionally not change or not stop when it was supposed to (I never witnessed the bug, but it looked possible in the code).
  • Attempted to fix visual glitch where a few pixels of the previous instrument's name would be left behind on the main window when the instrument name changed. This had happened ever since the slight speed improvements made to drawing the main interface in revision 99.
  • MIDI Messages view and in debuglog.txt (when logging MIDI messages):
  • Corrected horizontal alignment (padding) of digits in "Set bank" text.
  • Instrument names no longer appear with "" halfway through the name.
  • Fixed bug where text for CCs #76, #77 and #78 (VIBRATO RATE/DEPTH/DELAY) would contain information about a previously-received message in addition to this new message (text from old messages would build up).
  • No longer possible to cause crash by changing instrument by clicking instrument name on the main window before sound system has fully finished being initialised.
  • Due to the huge changes needed for the language and bank systems, and the new possibilities they enable, version number has become 0.5!
  • Fixed visual glitch where, if a MIDI file couldn't be loaded, the duration of the previously-loaded file remained displayed next to the playback position bar even though it couldn't be played.
  • Name of loaded MIDI file, or "[No file]", is now shown in taskbar button and when selecting Bawami by Alt-Tab.
  • Changed text of "Browse..." button (to load new MIDI file) to the more-intuitive "Open...", and standard Ctrl+O keyboard shortcut now triggers it.
  • No longer possible to cause a crash by quickly loading the configuration window and changing something before program has finished starting to run (scanning for sound devices).
  • New "bank" system! "Variation" instrument files with names in the form of "PPP_HHH_LLL.txt" can now be loaded, where PPP = Program Change number, HHH = high bank (MSB), LLL = low bank (LSB). To select this instrument, first send Bank Select control changes, then send Program Change. If requested variation file doesn't exist, an alternative will automatically be used. See "BANK SELECTS" section of info.txt for details.
  • Changed default master volume (when run for the first time) to 88% instead of 100% to reduce likelihood of clipping.
  • Fixed memory leak when right-clicking instrument name to override it. After changing the instrument many dozens of times, or after moving the mouse for a long time over the instrument categories on the menu that appears, the menu would turn black in places and some programs (including Bawami) would fail to start until Windows was rebooted.
  • Instruments:
  • Slowed the attack and release of Warm Pad (089).
  • Agogo (113) now plays one octave higher, since low notes were extremely hard to hear.
  • Quietened Polysynth Pad (090), Ocarina (079) and Alto Saxophone (065).
  • Decreased the effect of modulation on frequency on Panflute (075).
  • Added Shanai (109) (shortcut to Bagpipe (111)).
  • Increased volume and decreased resonance and velocity sensitivity of Synth Bass 1 (038).
  • Increased volume and "bassiness" of Synth Bass 2 (039) by decreasing sustain cutoff frequency slightly.
  • Modified Electric Basses (033, 034) and Fretless Bass (035) to have noticably different envelopes and to subtly change muffledness based on playing note, and increased their volumes.
  • Quietened all percussion a little (long-overdue).
  • Added variation instruments:
  • [GS] Muted Distortion Guitar (028_001_002)
  • [GS] Pick Scrape (120_006_002)
  • [GS] Wind (122_003_001)
  • [GS] Thunder (122_002_001)
  • [GS] Footsteps (126_005_001)
  • [GS] Smooth Bass 2 (039_019_002)
  • [GS] Big Shot (127_005_003)
  • [GS] Car Engine (125_001_001)
  • [GS] Siren (125_005_001)
  • [GS] Door Creaking (124_002_001) and [XG] version: Door Creaking (065_064_000)
  • [GS] White Noise (122_017_003)
  • [GS] Pink Noise (122_016_003)
  • [GS] Sine Wave (080_008_001) and [XG] version: Sine Lead (080_000_066)
  • [GS] Tambourine (113_016_003)
  • [GS] Door (124_003_001) and [XG] version: Door Slam (066_064_000)
  • [GS] MC-500 Beep (124_011_003)
  • [GS] P5 Sync Lead (084_016_003)
  • [GS] OB2 Saw (081_001_001)
  • [GS] Guitar Cut Noise (120_001_001)
  • [GS] Acid Bass (038_008_002)
  • [GS] House Bass (039_022_002)
  • [GS] Castanets (115_008_001)
  • [GS] Rock Rhythm Guitar (030_024_002)
  • [GS] Funk Pop Guitar (028_008_001)
  • Non-standard instruments (exclusive to Bawami):
  • [Bawami] Hardstyle Reverse Bass 1 (038_098_098) (weak, high, fast)
  • [Bawami] Hardstyle Reverse Bass 2 (038_099_098) (strong, low, slow)
  • Increased volume of Synth Voice (054), Bright Piano (001), Piccolo (072), Bagpipe (109) and Kalimba (108).
  • Helicopter (125) now (always) has a subtle tremolo.
  • Reduced "velocity sensitivity" of Electric Grand (002).
  • Added Japanese language "“ú–{Œê i•sŠ®‘Sj" (select it from the "Interface" tab). Not everything is translated yet, and I don't know many technical words in Japanese, so it sounds strange/amusing in places. Help from a fluent speaker would be much-appreciated.
  • New "language" system. It allows people to customise/translate all text on message boxes, menus, the config window, and a couple of other places. A language is a folder of text files stored inside "\lang". To make a new language, please read "lang\instructions.txt" for full information (I tried to keep it easy).
  • Added option to send various different kinds of "Reset" messages on MIDI output when playback starts. Ensures that the external MIDI synth starts with its default settings, as expected, preventing e.g. pitch-bends or volumes being left over from a previously-played MIDI. The option (disabled by default) can be found on the "MIDI out" tab of the configuration window.
  • Finally hidden the non-functional "Config presets" area at the bottom-left of the configuration window for now. It has never done anything (I've still not got around to programming it) and was therefore confusing/misleading.
  • When changing MIDI output device, "ALL NOTES OFF" is now sent on the previously-chosen MIDI device to avoid stuck notes.
  • Added "Refresh" buttons next to lists of MIDI input and output devices to re-make the list and e.g. let you choose a MIDI device that you connected after Bawami started running.
  • Much safer listing and opening of MIDI in/out devices, particularly if a device is removed since Bawami was started (previously, Bawami would crash or open the wrong device), or if there is a device I/O error (previously, Bawami would crash). These problems have been present ever since revisions 106 and 89, when MIDI output and input, respectively, were first introduced.
  • Fixed potential crash when attempting to open MIDI output device that is no longer connected (only in revision 110). 1 or 2 bytes of memory were becoming corrupted.

New in BaWaMI 0.4.110 (Sep 20, 2013)

  • "Send SysEx messages" on "MIDI out" tab of configuration window is ticked by default now that SysEx output works.
  • Fixed bug: Between runs, custom MIDI-in channel mapping is remembered and automatically restored, but picture on configuration window shows default mapping (in=out).
  • When exitting Bawami, "ALL NOTES OFF" is now transmitted if using MIDI output to avoid stuck notes.
  • Full support for transmitting SysEx messages when using MIDI output! (Completely re-wrote MIDI output code; now uses Windows MIDI APIs directly, instead of MIDIIO2K.OCX. However, MIDIIO2K.OCX is still used for MIDI input.)
  • Fixed bug: Between runs, master volume is remembered correctly and slider position is restored but volume is actually 100% until changed.
  • When using live MIDI input, last byte of a SysEx message is no longer ignored (fixes XG Reset and many other messages not being recognised when received on live MIDI input).
  • Whether "Loop" checkbox on main window is ticked or not is now saved between runs in the config file.
  • When skipping playback to a new position, "NOTE ON"s and "NOTE OFF"s are no longer sent on MIDI-out while playback is catching up ("ALL NOTES OFF" is sent). This dramatically speeds up skipping in most MIDI files when using MIDI-out. (Until I add the ability to trace back control changes and other events without sending all of them, this is as good as it will get.)
  • Fixed bug where distortion processor was incorrectly enabled/disabled. Example: Create a MIDI using instrument 029 (Overdrive Guitar) on channel 10. Notes correctly play as percussion. Now, override the percussion mode of channel 10 to force off; Overdrive Guitar now plays, but incorrectly has no distortion.
  • Increased speed of scrolling text when emulating Sound Canvas LCD (interval is now 300ms, approximately the same as the real thing, instead of 400ms).
  • Fixed several silly typos of information on the configuration window.
  • Instruments:
  • Increased volume of Sawtooth Lead (081).
  • Electric Grand (002) now has more resonance and is velocity-sensitive.
  • Quietened Slap Bass 1 (036).
  • Modified auto modulation of Rock Organ (018) to be stronger and affect volume as well as frequency.
  • Added auto modulation to Pan Flute (075).
  • Tremolo Strings (044): Made less muffled for higher notes and reduced delay before tremolo starts.
  • Reduced attack time of Voice Lead (085).

New in BaWaMI 0.4.109 (Jun 25, 2013)

  • Fixed a bug that made 0.4.108 unusable on some computers

New in BaWaMI 0.4.108 (Jun 25, 2013)

  • Added override to force MIDI channel into or out of percussion mode (left-click instrument name - the new option is below "Lock instrument"). This is linked to "Lock instrument", so changing percussion mode will lock it that way. Right-click the instrument name or untick "Lock instrument" to return the channel to as the MIDI file states.
  • Crash can no longer be triggered by clicking "Apply" on the "Sound system" tab of the configuration window before a MIDI file has been loaded, and then clicking Play on the main window. Before, the playback controls would incorrectly become clickable when clicking "Apply".
  • Greyed out all controls on the configuration window that don't do anything yet, to avoid confusion. I should have done this a very long time ago, when I first added them. For now, they are placeholders until I make code for them.
  • All settings on the configuration window except for selected audio/MIDI devices are now saved between runs! A config file "startup.cfg" is automatically saved when exitting, and loaded on startup.
  • Increased the maximum number of playing notes while writing a WAV file from 64 to 128, since it doesn't slow down unless a MIDI actually tries to play that many notes at once.
  • When using "Multiple volume bars" option on Interface tab of configuration window, the bars also reflect auto modulation. As auto modulation is applied on a per-note, rather than per-MIDI channel basis, this is the only view that it's possible to display auto modulation on (on the main window).
  • For messages indicating the start/end of custom loop points, the position is now shown in seconds on the "MIDI Messages" view, instead of in Bawami's meaningless "event index".
  • Changed scale of RPN H001.L008 (Vibrato rate); values between 64 and 127 now translate to 1x to 3x default (previously, it was 1x to 4x default).
  • Fixed bug where irrelevant text was sometimes shown on the "MIDI Messages" view after a Bank Select control change.
  • New slider on "Sound system" tab: Maximum detune. By default, Bawami always plays notes slightly off the "ideal" frequency (a range of 4 cents) to try to avoid 2 unfortunately-timed same notes from cancelling each other's waveforms out. With this slider, you can increase the detune for an extra chorus-like effect or even disable detune entirely.
  • New slider on "Sound system" tab to control the stereo width (how much of an effect panning has). A channel panned fully to the left or right can feel uncomfortable on headphones, so in this case, move this slider to the left. This will cause the channels to move towards the centre a bit (even if a channel is panned fully to the left, the right ear will still hear it a little).
  • Added info text for when mouse moves over master volume control on "Sound system" tab of configuration window.
  • Added support for RPN H000.L005 (depth of modulation via CC #1). NRPN H001.L009 (Vibrato depth) now controls depth of automatic modulation.
  • Added entire automatic modulation system (same as "vibrato" on Sound Canvas synths). New instrument file parameters AutoModDepth and AutoModDelay control strength (default: none) and delay (from start of note) before automatic modulation starts. They can be adjusted/overridden by CCs and NRPNs to set depth and delay. See "SUPPORTED CONTROL CHANGES" and "SUPPORTED PARAMETER NUMBERS" in info.txt for details.
  • Right-clicking on the main window no longer displays a menu if the sound system is not initialised. This avoids a crash when trying to change a MIDI channel's instrument when the sound system has not been initialised (e.g. after choosing a sound device on the "Sound system" tab that isn't connected to your computer anymore).
  • If FMOD's thread hits 100% CPU usage and warning is shown on main window, this is now logged.
  • Added support for multimedia hotkeys and Winamp-like keyboard controls when the main window has focus:
  • Rewind (and don't stop playing) = Z or "Previous" hotkey
  • Start playing from current position = X
  • Pause (stop and don't rewind) / Unpause (same as X) = C or "Play/pause" hotkey
  • Stop (stop and rewind) = V or "Stop" hotkey
  • Skip forward by 10 seconds = Ctrl + Right-arrow
  • Skip back by approximately (at least) 10 seconds = Ctrl + Left-arrow
  • A space at the start of a line of text in an instrument file no longer causes that line to be ignored when the instrument file is loaded.
  • Added 2 new parameters to instrument files to control the effect of modulation: ModToFreq and ModToVol. By using "ModToVol 1", you can have a tremolo instead of a vibrato! The two parameters are actually multipliers. So, using "ModToFreq 0.5" ensures that modulation will always affect this instrument's frequency by half as much as normal. Defaults are "ModToFreq 1" and "ModToVol 0" (the same as before).
  • When changing (overriding) the instrument of a MIDI channel:
  • The category of the currently-chosen instrument is indicated with a circled tick. This prevents having to search through every single category to e.g. find the instrument number of the current instrument.
  • Resolved conflicting keyboard shortcuts for the instrument categories.
  • SysEx:
  • Erroneous extra F0 bytes at the start of a SysEx message are now stripped out before the message is interpreted (as happens with hardware MIDI synths), instead of being misinterpreted as part of the message itself.
  • Setting the pan of a MIDI channel to 0 via an XG or GS SysEx message sets the MIDI channel pan to "random" instead of fully to the left. This causes each note to play at a random pan position. See "SUPPORTED SYSTEM-EXCLUSIVE MESSAGES" section in info.txt for details.
  • Fixed sometimes not responding to "GS reset".
  • Support for GS SysEx messages to set cutoff frequency and resonance of a MIDI channel's low-pass filter (I'm not sure why I didn't add that earlier). See "SUPPORTED SYSTEM-EXCLUSIVE MESSAGES" section in info.txt for details.
  • Support for GS SysEx messages to turn on/off "Rx.Note Off" for any given percussive instrument. This causes e.g. cymbals to be instantly silenced by their Note Off message. See info.txt for details. This required a redesign of how percussive notes are handled internally, and as a result, polyphony of percussive channels can now be displayed on the "Sound + MIDI Channels" internal view, too!
  • If the chosen sound driver + device fails to initialise, clicking "Reload instruments" or changing the master volume on the configuration window no longer causes a crash.
  • Fixed most glitches caused by an instrument changing mid-playing note. Now, playing notes won't change instrument - only new notes will use the new instrument. Previously, when the note started releasing, the low-pass filter's cutoff frequency would often (depending on the old and new instruments) jump to 0 Hz, causing a pop. However, distortion applied to a whole MIDI channel will still be turned on/off immediately.
  • All silders on the configuration window now work properly when pressing the home/end keys (previously, the slider would jump to the beginning or end correctly, but it would have no effect).
  • Instruments:
  • Brass Section (061) now references Trumpet (056). Synth Brasses (062, 063) still sound like the old Brass Section (061).
  • Decreased volume Halo Pad (094), Alto Saxophone (065) and Woodblock (115).
  • Added files for Golbins Effect (101) and Bagpipe (109).
  • Created new versions of files for Ocarina (079), Tremolo Strings (044) and New Age Pad (088).
  • Update instruments that can take advantage of new "ModAuto" parameters (some strings, reed and pipe instruments).
  • Updated instrument that can take advantage of new "ModToVol" parameter (reed, pipe, some noise-based sound effects, Harmonica (022) and Accordians (021, 023)).
  • Attempted to create a file for Slap Bass 1 (036) (previously, it played as Synth Bass 2 (039). However, it ended up sounding like a mix between the Synth Basses (038, 039).
  • Modified Taiko Drum (116)'s release, volume and various filter parameters, but it didn't make a big improvement...
  • Made Grand Piano (000) "more" velocity-sensitive (lower-velocity notes are now even more muffled, so the difference in harshness between gentle and heavy key presses is more obvious).
  • Decreased resonance of English Horn (069).
  • Cutoff filter of Synth Bass 2 (039) and Sweep Pad (095) is now velocity-sensitive (like Synth Bass 1 (038)).
  • Stopped Fifths (086) from using distortion (as it was pre-revision 106).
  • Increased volume of Blown Bottle (076), Choir Pad (091), Bright Piano (001), Shamisen (106), Ocarina (079), Oboe (068), Flute (073), Electric Piano 2 (005) and Music Box (010).

New in BaWaMI 0.3.106 (May 9, 2013)

  • New option on "MIDI in" tab to scale the velocity of notes received via MIDI input according to an adjustable exponential curve. By boosting their volume, you can hear yourself playing along with a MIDI file even if your MIDI device transmits notes at a low velocity. The velocity can also be reduced. A curve is displayed to visualize how the velocity will be scaled.
  • Instruments that use sine waveforms should cause less pops and painful glitches of non-retro kick drums. Sine waves, which often caused such glitches within FMOD, are no longer used for instruments. Instead, Instruments that demand a sine waveform will actually play as a square wave with a low-pass filter set at the same frequency as the desired note, removing all higher harmonics and leaving only a sine-shaped wave.
  • In steps towards getting Bawami to run on an old Windows 98 machine of mine, on pre-Windows NT OSes: PC speaker output should now work (a different DLL file is automatically used in this case), and an alternative method of getting RAM info on startup is done to avoid crashing. I still have to test whether Bawami can actually start yet on Win98 (automatically installing DLL/OCX files definitely doesn't work yet).
  • Increased obviousness of chorus by increasing its delay (also decreased rate and feedback).
  • Added some damping to the reverb to avoid painful-sounding hihats or shakers. Reverb room size increased slightly to compensate for the less-obvious overall reverb effect.
  • Fixed bug where live MIDI input became "out-of-sync" (the timing was correct but the content of the MIDI messages was in delay). This happened when both MIDI data maxing out the MIDI bandwidth was received, and Bawami couldn't respond for over a second (a buffer in Bawami overflowed and this wasn't handled properly). Now, in this situation, messages will simply be lost.
  • Fixed bug where, after clicking "Reloading instruments" on the config window, disabling manual override for an instrument wouldn't set instrument back to normal (Bawami forgot the original instrument). Skipping playback to a different position would fix this, but that's no longer necessary.
  • Fixed bug: If MIDI input device can't be opened (e.g. if another program is using it), "Enable MIDI input" remains ticked after an error is shown even though output doesn't work.
  • Logging: Text from Bawami pre-loader (automatically runs when starting Bawami) is no longer overwritten when the main window appears. This means that info about checking/installing system files can now be seen at the beginning of the log. Also, less-important messages to do with setting up the sound system is not shown. This increases startup speed when running from a slow drive such as a flash memory stick.
  • Fixed typo on config window.
  • Slightly changed how RAM information is logged when starting up so that Bawami can now run on Windows 98 (I recently had access to a Win98 machine, and out of curiosity, I decided to see how it handled Bawami).
  • Instruments:
  • Added subtle distortion to Fifths Lead (086)
  • Increased Synth Voice (054)'s cutoff frequency.
  • Quietened Brightness (100).
  • Increased volume of Pan Flute (075) and Woodblock (115).
  • Added files for Tango Accordian (023), Accordian (021), Charang (084), Echoes Effect (102), Synth Drum (118), English Horn (069) and Voice Lead (085).
  • Added better files for Agogo (113) (previously identical to Woodblock (115)) and Polysynth Pad (090) (previously identical to Synth Voice (054)).
  • When using live MIDI input, there is no longer a random-seeming byte at the end of every SysEx message received.
  • Removed code that was supposed to display info on the "MIDI Messages" view when the following messages were received from live MIDI input: Song position pointer (F2h), Song select (F3h), Tune request (F6h). The code was wrongly written and would never work. The following messages are still displayed correctly (although still have no effect): MIDI start (FAh), MIDI continue (FBh), MIDI stop (FCh).
  • Fixed visual glitch where the bottom line of text in the "info" area of the config window would be misaligned when the mouse was waved over channel 10 (either source or target) of the MIDI channel mapping box on the "MIDI in" tab.
  • Added "MIDI out" ability (INCOMPLETE!). It lets you use a different MIDI synth while watching Bawami's visualisations. Bawami can transmit MIDI messages as they are played from the MIDI file (MIDI out), echo messages received from live MIDI input (MIDI thru), or both. Even messages not recognised by Bawami are sent. Sending of SysEx messages is very buggy, and so disabled by default. Skipping freezes.
  • Added icons to the tabs on the configuration window ("Sound system", "Interface", etc) to try to make it easier for newcomers to find what settings they're looking for. Having this kind of visual representation for each tab may also help memorize where each setting can be found, but really, I just wanted to make it look a bit fancier. =) Icons (actually BMP files) are stored in the skin's folder (can be skin-specific).
  • MIDI Messages view is cleared when loading a new MIDI file.
  • At end of playback, any reverb now fully fades away, instead of being cut off early! This known bug has been present ever since reverb was first introduced, way back in revision 93.
  • "&" is now displayed correctly in the information text area at the bottom of the config window.
  • Fixed bug where MIDI channel remained silent until its instrument was changed. This happened after clicking "Apply" to restart the sound system if the MIDI channel's instrument was being overridden.
  • Fixed bug where a MIDI channel's overridden (locked) instrument can't be unlocked by right-clicking it if the most recent right-click menu that was displayed belonged to a different MIDI channel.
  • SysEx messages:
  • Message to set display duration of Sound Canvas graphic pages (0 to 7.2 seconds) is supported. Like the SC, the default duration is 2.88 seconds. See info.txt for details.
  • Graphics (FrameDraw pages) emulation on Roland Sound Canvas LCD! MIDIs designed to transmit and display graphics on the LCD will have their graphics displayed in the top-right corner of the main window (underneath the LCD text area, if LCD text is also being emulated at the time, so that the layout is similar to the Sound Canvas's LCD). See info.txt for details.
  • Can now emulate the Roland Sound Canvas LCD's text display! MIDIs designed to display text at the top of a Roland Sound Canvas's LCD will have that text displayed in a rectangle that will appear in the top-right of the main window. Messages longer than 16 characters will scroll, just like on the SC. See info.txt for details.
  • For Yamaha XG messages referencing a MIDI channel higher than 16, this detail (including the channel number) is now shown on the MIDI Messages view, e.g. "[XG] (Unsupported: Channel 18 > 16)" instead of only "(Unsupported)".
  • For many unsupported GS and XG messages, Bawami can now tell you (on the MIDI Messages view) whether they are Roland GS or Yamaha XG by showing e.g. "[GS] (Unsupported)" instead of only "(Unsupported)". Also, often, it can display which MIDI channel they apply to (even if they are unsupported).
  • The code that handles SysEx messages was redesigned. In the future, the new code will make it easier for me to add support for more SysEx messages (before, the code was a total mess). Also, it decreased the EXE's file size by 4 KB.
  • Added option to right-click menu to make WAV files instead of playing on the soundcard! This is not limited to normal playback speed, and is as fast as your CPU allows. Doing anything that slows down Bawami will NOT affect what is written to the WAV file, unlike how it can worsen ordinary playback. See info.txt for details. For now, any kind of loops within a MIDI file are ignored while making a WAV file.
  • Changed how Bawami chooses which sound driver + device to use when starting to run. Now, a DirectSound-compatible soundcard is no longer required, and it is possible to run with e.g. only ASIO devices, or with the new "No sound output" option.
  • Added option of "No sound output" to the list of available sound drivers + devices on the config window. This allows Bawami to run on computers with no compatible soundcard, while still being able to e.g. play on the PC speaker or log MIDI messages. It uses less CPU time than merely turning the master volume to 0%, so it's recommended for any computer if only listening via the PC speaker.

New in BaWaMI 0.3.105 (May 9, 2013)

  • No longer crashes if there's a problem loading an image for a skin. A message is shown (and logged) instead, which is intended to help fix the error.
  • PC speaker no longer plays notes for noise-based instruments (e.g. Seashore).
  • New option to display a waveform for each MIDI channel instead of single/multiple note volume bars! This waveform represents the final sound for that MIDI channel (after filters and distortion) before it is potentially sent to the chorus/reverb effect, because after that point, the sound of all MIDI channels is mixed together and can't be accessed individually. This option uses much more CPU time.
  • If a file (e.g. image) doesn't exist in the chosen skin's folder, Bawami will now fall back to the equivalent file in the default skin's folder instead.
  • Change "MIDI channel enabled" to "MIDI channel unmuted" to avoid confusion by using different words to mean the same thing.
  • Warning is now shown for a while on main window if CPU usage by the sound thread (FMOD) reaches 100%, causing sound to stutter.
  • Font changed back to Mikachan for now, as the line spacing of "MS Sans Serif" was not consistent between computers for some reason, causing text to appear too low down and either get cut off or draw over the MIDI channel numbers. This will require some more research to fix.

New in BaWaMI 0.3.104 (May 9, 2013)

  • Two right-clicks anywhere in quick succession are no longer treated as a right-click followed by a left-click. E.g. Right-clicking in a note volume bar area twice quickly now shows a menu twice, instead of showing a menu once and then muting the channel.
  • Fixed another slight memory leak when exiting that would eventually prevent some programs (including Bawami) from starting or drawing their GUI properly.
  • New "skin" system (and drop-down menu on "Interface" tab of the config window) to change the appearance of the main window. Currently, the title bar, background, and playback position bar can be customized by a skin. Skins are stored in "\image\skin". To edit or create one, please copy the 'Default' skin folder and then modify the images inside it. The skin's name is the folder name.
  • Improved tabbing order of all controls (buttons, checkboxes, text boxes, etc). This means that it should be easier to use the Tab key to switch between different controls now.
  • While playing a MIDI file, "Play" button is now greyed out. Similarly, when not playing, "Stop" is now greyed out. This is such a basic thing that should have been done ages ago, but wasn't, due to my laziness.
  • By clicking the volume or expression bars to override them, it is now possible to set them to absolute minimum (0) or maximum (127). Previously, the range settable using the mouse was only about 1 to 126.
  • Right-click in empty space on the main window to see a menu with options to quickly lock or unlock volume/expression/instrument on all MIDI channels at once.
  • Changed font on main window back to "MS Sans Serif", as it was a long time ago. I only ever changed it to MS UI Gothic, and then to an alternative (Mikachan-puchiB), when I didn't know how to change the code page for text. Now that I do, Windows can correctly show Japanese characters even when primarily drawing in a neat font like MS Sans Serif (which itself includes no Japanese glyphs). Also reduced download size!
  • "&" symbols no longer cause the following character to be underlined in meta text on the MIDI Messages view.
  • In preparation for a new "skin" system to allow for a customized interface design, the playback position bar is now drawn depending on 2 images ("posback" and "posfront"). This means that custom bars with fancy designs (e.g. smoke or flames) are possible, or bars without rounded corners. Also fixes the glitch where the "filled" part is drawn outside the "unfilled" part on the left when playback is near the start.
  • Updated the info text that is shown when waving the mouse over "Use PC speaker" checkbox of configuration window (it still said that it didn't work with Vista/7, left over from a long time ago, when I had never tried it on Windows 7).
  • Master volume no longer wrongly returns to 100% after clicking "Apply" on "Sound system" tab of configuration window (despite the slider not being at 100%).
  • If a MIDI channel is muted, clicking to the right of the red cross does not invisibly override the volume and expression.

New in BaWaMI 0.3.103 (May 9, 2013)

  • Option to automatically unmute MIDI channels when a new MIDI file is loaded (on "Inteface" tab of config window) now has an effect. Also, there's a new, similar option to automatically disable all manually overridden controls (volume/expression/instrument) when a new MIDI file is loaded.
  • MIDI channel's instrument can be manually overridden by clicking on the instrument text on the main window! A popup menu will appear, and the instrument can be chosen. Right-click the instrument text to disable manual override. Alternatively, "Override instrument" can be ticked/unticked from the popup menu. "Shortcut" instrument files ("Load xxx") and default (no file) instruments are also indicated on the menu.
  • Each MIDI channel's volume and expression can now be manually overridden by clicking on a blue volume or expression bar on the main window. This will cause the bar to turn green, and volume or expression changes in the MIDI file or live MIDI input won't have an effect anymore. Right-click to disable manual override and the bar will turn blue again, updating to the latest MIDI file or live input value.
  • New "Master volume control" on "Sound system" tab of configuration window. This can be useful if you only want to hear the PC speaker output, but can't otherwise silence Bawami's main sound output. For example, if using a laptop where the PC speaker output is internally connected in such a way that muting Windows's volume will also mute the sound from the PC speaker (as is the case with my Acer Aspire 5552).
  • PC speaker control is now possible on 64-bit OSes! Honestly, I never thought this would happen. It is all thanks to Highresolution Enterprises and his modified, 64-bit port of inpout32.dll that was originally made by Logix4U. Bawami needs to install a virtual driver for this to work. It does this automatically if run as an administrator. Afterwards, the PC speaker can be used even if not running as an admin.
  • It's no longer possible to crash Bawami by quickly clicking Play (before the button gets greyed out) before the program has fully finished starting to run.
  • Changed range of MIDI channel filters' cutoff frequency. The range is now 300-16000 Hz instead of 400-11000 Hz, but the exponential scaling is now stronger, too. This means that more accuracy is possible at the lower frequencies, where the human ear is more sensitive to changes in frequency, even though the range is bigger now.

New in BaWaMI 0.3.102 (May 9, 2013)

  • Fixed bug where "Browse" became permanently greyed out if the computer entered standby/sleep/hibernation during playback and while browsing for a new MIDI file to load.
  • If Windows's default sound system can't be initialised when Bawami is starting up (e.g. if another program is using ASIO4ALL), Bawami no longer shows a barrage of errors and crashes.
  • Fixed logging:
  • "Starting playback..." is shown instead of "'Play' clicked", when skipping playback backwards in the MIDI file during playback.
  • When skipping backwards in the MIDI file during playback. Now, something like "Skipped to 32945.00 seconds (backwards; from start, manual index: 1425)" is shown, instead of several other lines appearing before the open-bracket.