Spring Breeze -afternoon- (Clannad OST) and BaWaMI [rev 106]

Posted on 2013-03-14 at 05:58 in Music, Programs, Videos by Robbi-985.

Here’s the latest version of Bawami, my MIDI player, playing Kamoto’s MIDI of the theme 「東風 -afternoon-」, from the visual novel Clannad.

[Watch in HD]

This video is both to show off some new things in my software, while letting you hear  how it performs with this particular MIDI file. This is the biggest update since I first released Bawami to the public, and I changed even some smaller things such as the character of the reverb (there’s now damping, so that hihats and treble such as the shakers in this MIDI don’t sound painfully loud anymore).

You can download this version from the usual download place (6.79 MB).

Full list of changes is below (very long)~


  • 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.
  • 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.
  • 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.
  • 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.
  • 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 visualise how the velocity will be scaled.
  • 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 memorise 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).

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.


  • 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 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.
  • Increased obviousness of chorus by increasing its delay (also decreased rate and feedback).


  • 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.
  • 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.
  • 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.
  • 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.
  • When using live MIDI input, there is no longer a random-seeming byte at the end of every SysEx message received.


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


  • 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.
  • MIDI Messages view is cleared when loading a new MIDI file.
  • 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.
  • “&” is now displayed correctly in the information text area at the bottom of the config window.
  • 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).
  • 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).
  • 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).
  • Fixed typo on config window.

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>