BaWaMI (revision 108)

Posted on 2013-05-29 at 00:39 in Music, Programs by Robbi-985.

New biggest update yet! So many things have changed that I’m increasing Bawami’s version number from 0.3 to 0.4! The biggest, shiny new things are:

  • All settings are automatically saved between runs (except for sound, MIDI-in and MIDI-out devices)!
  • Modulation can now affect volume (tremolo) and not just pitch (vibrato), good for wind instruments.
  • Brand-new “automatic modulation” system (same as “vibrato” on Sound Canvas synths). This lets modulation (vibrato) automatically be faded in after a note has been playing for a while, for a more natural sound. Defined in instrument files. Fully supports MIDI messages to override delay, depth and speed either by control changes or by NRPNs.
  • Keyboard shortcuts: Support for multimedia hotkeys and Winamp-like controls:
    Function: Key:
    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 10 seconds Ctrl + Left-arrow
  • Ability to override percussion mode of any channel (left-click instrument name).
  • Stereo width and maximum detune controls (on “Sound system” tab of configuration window).
  • Support for random pan per note

You can download this new version from the usual download place (6.88 MB)

That’s just the start of what’s changed – much more info, as well as many bug fixes, are detailed below!


  • When changing a MIDI channel’s instrument, 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.
  • Automatic modulation system: 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.
  • 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).
  • 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.
  • 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.
  • 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 support for RPN H000.L005 (depth of modulation via CC #1). NRPN H001.L009 (Vibrato depth) now controls depth of automatic modulation.

System-Exclusive messages

  • 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!
  • 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.
  • 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.
  • 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.
  • Fixed sometimes not responding to “GS reset”.

Bug fixes

  • 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).
  • 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.
  • 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).
  • 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”.
  • Fixed bug where irrelevant text was sometimes shown on the “MIDI Messages” view after a Bank Select control change.
  • 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.
  • Resolved conflicting keyboard shortcuts for the instrument categories when overriding a MIDI channel’s instrument.


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

Misc. changes

  • 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).
  • If FMOD’s thread hits 100% CPU usage and warning is shown on main window, this is now logged.
  • 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).
  • Added info text for when mouse moves over master volume control on “Sound system” tab of configuration window.
  • 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.

Leave a Reply

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


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