Programs

Here you can get information on and download the latest versions of all programs I’ve created. Please remember that there is a file called info.txt included in the downloads of all of my programs which includes probably more info on the program than I’ve posted anywhere on the Internet. If you have problems or just want to know more, please read this file!

Please click the name of the program to be taken to the download page.

SC-88Pro LCD SysEx Generator

This generates System-Exclusive MIDI messages to control the LCD on the Roland SC-88Pro MIDI synth (it may work with other Roland Sound Canvas models, too).  The SysEx message text can then be pasted onto any MIDI editor that lets you insert SysEx messages. The program replicates the SC-88Pro’s own FrameDraw functions, allowing you to draw graphics on the 10 pages, as well as display text at the top of the LCD. Please see this video for a demonstration of version 1.0.0.

(Click it to see full-size image)

  • Create SysEx to store graphics, display graphics, or display text.
  • Easily shift/drag the graphic up/down/left/right, invert colours and duplicate it
  • Can also decode LCD SysEx messages back to graphics or plain text
  • Can recalculate the checksum bytes of GS SysEx messages
  • Can automatically copy SysEx to clipboard for quick editing
  • SysEx updates as soon as you change anything (e.g. draw a pixel)
  • Remembers the 10 graphic pages between runs, like how the SC-88Pro keeps pages stored while powered off.

Please see the included “info.txt” for full details and tips/advice. The Microsoft Visual Basic Runtime installer is included in the download for convenience. You only need to install it if the program fails to run – newer Windows operating systems come with it pre-installed.

BaWaMI

A MIDI software synthesizer that uses subtractive synthesis to create simple/retro/electronic sound. It can also play on the internal PC speaker (in a much more advanced way than Bleeper Music Maker), even on Windows 8 (32 or 64-bit). It is capable of playing MIDI files and live MIDI input. The interface design was inspired by Gashisoft’s “GXSCC”.
A dual-core or hyperthreaded CPU is highly recommended.
Windows 10 is not officially supported
(although most parts work).

(Click it to see full-size image)

Bawami’s name comes from the fact that all of its sound starts off as a raw “basic waveform”, such as a square, sawtooth or white noise. It is then filtered in various ways to shape the sound into an approximation of a MIDI instrument (e.g. a saxophone) according to an instrument file.

  • Can use ASIO (useful for low latency when using live MIDI input)
  • Has editable instrument files (human-readable plain text)
  • Supports live MIDI input, playing to a MIDI-out device, and MIDI-thru.
  • Easily lock or override the instrument, volume, expression, and other controls for each MIDI channel while a MIDI plays.
  • MIDI files can use chorus and reverb effects, channel filter, portamento, custom modulation strength/speed, change attack/decay/release times, sustain pedal, custom loop points, multiple percussion channels.
  • Can play pitch-bends, modulation (vibrato), portamento and percussion (experimental) on the PC speaker on 32-bit or 64-bit Windows.
  • Supports GS and XG “variation” instruments (Bank Selects) in addition to the 128 GM instruments.
  • Support for several GS and XG System Exclusive messages, including ones to set volume, channel filters, extra percussion channels, and displaying text/graphics, instead of only the Reset messages.
  • Supports receiving MIDI Tuning Standard messages: Master Coarse/Fine, Channel Coarse/Fine, Scale/Octave, Single Note, Bulk Tuning Dump.
  • Can directly render a WAV or OGG file from a MIDI file (even without a soundcard).
  • “Maximum number of playing notes” can be changed from 1 to 255 (default is 24, a fast computer is recommended for over 48)
  • Extensive support for running in console mode (e.g. for use in batch files), with 35 available command line parameters (as of version 128).

Please see the included “info.txt” for lots of documentation. In particular, you may need to run “First Run.bat” as an administrator when using Bawami for the first time, to sort necessary system files. Please see “FIRST RUN” in “info.txt” for details.

Waveform Display

This program plays a sound file (WAV, MP3, OGG, FLAC, WMA) and, as the name suggests, shows a waveform of the sound as it plays. It can display the waveform in various ways and on various devices and handle very long audio files. It can also attempt to play the sound on the internal PC speaker!

(Click it to see full-size image)

  • Playback speed can be changed from 1/8x to 8x (continuous).
  • Options to change the waveform scaling width-ways (time) and height-ways (amplitude).
  • Includes a playlist system.
  • Can display the waveform on a Logitech G15 keyboard or other GamePanel LCD.
  • Can “bend” the waveform into a picture
  • Can send the waveform to an EasyLase to control a laser projector. (Only up to revision 18)
  • Experimental (buggy) option to play the sound on an internal PC speaker! (Also on 64-bit Windows)
  • VU meter with its own scaling options that can be reflected in up to 8 lights controlled via the parallel port.
  • Can handle files which are several hours long since it does not decode the whole file to RAM first.
  • Has a very basic (glitchy) pitch detection function designed for monophonic sounds such as speech.

StepMania Player

This program plays back StepMania (*.SM) simfiles and can control things connected to your computer.

(Click it to see full-size image)

  • Plays the music in sync with the steps (can be disabled if you want).
  • Playback rate (without affecting pitch) and playback offset changable (even during playback).
  • See several different views of the tap/press/release: a list, a DDR-style view of the scrolling arrows, and a view of the keys which light up as they’re pressed.
  • Controls lights connected to parallel port, or lights or servos connected to a serial port (via SSC-32).
  • Up to 8 individual outputs can be mapped to Left/Down/Up/Right/BEAT/STOP triggers in any combination.
  • Outputs can also be triggered in realtime (with no simfile) by you pressing arrow keys (by default – can be changed) on your keyboard, even when the program isn’t on top, useful for if you want to play StepMania while having each separate light flash to each key which you press.
  • Has support for rolls.
  • Has support for Double (8 arrows) as well as Single (4 arrows) type step charts.
  • Timing is decoded in the same way as StepMania 3.9, meaning that songs with negative BPMs or stop durations work exactly as they should, unlike in StepMania CVS 4.0, where negative BPMs and stop durations are ignored.
  • View lots of simfile information including the number of notes, taps and holds, jumps and hands, stops and total stopped duration, BPM range, title, artist and step chart difficulty.
  • Several more things which would take up too much space here.

Please remember that there’s an info.txt file in the download ZIP which explains what to do if you get OCX/DLL errors when trying to run the program (kinda common when running programs from me for the first time, because I haven’t made an installer to do stuff with the OCX/DLL files automatically).


Bleeper Music Maker

This program lets you create music which is played on the internal “PC speaker” inside your computer’s case. You know, the little thing that usually just emits a “beep” tone when your computer boots? Well, you can use this program to make the PC speaker play much more complex music. Superceded by BaWaMI.

(Click it to see full-size image)

In addition to creating and playing such music, you can do more with the program, including:

  • Play actual MIDI (*.mid) files through your PC speaker (or FMOD, etc)
  • Save and load created music in the program’s “BMM” file format (quite a few examples which I’ve made are included in the ZIP download).
  • Play “BMM” music through your ordinary speakers or headphones, useful if your computer has no internal PC speaker.
  • Have several instances of the program running at the same time and get them to play their own music at the same time, in sync with each other.
  • Play notes received from a MIDI device through the PC speaker (e.g. live from a MIDI keyboard), coping with an unlimited number of notes at once.
  • Play “BMM” music through a MIDI synth. Not just an external device, though. Remember, Windows comes with a built-in MIDI synth of its own, so you can play through this to have your BMM music sound like any MIDI instrument (piano, strings, trumpet, etc).

The program works on Windows NT, ME, 2K, XP and Vista. Please read the included “info.txt” file if you have any problems, before contacting me.


StepMania BPM Changes

When I created my Touhou Piano Medley StepMania simfile, I ended up having to create a program to calculate  the non-stop BPM changes (since I played the music without a metronome). This is the program – you use it essentially by tapping a key along with the playing music. As you do so, the program makes a #BPMS section for a StepMania simfile.

(Click it to see full-size image)

My program is not suited to constant BPMs – it constantly makes new BPMs, and since the human brain and hand are not precision devices, the BPMs my program calculates will fluctuate around the actual BPM which you’re trying to tap. This is sometimes quite noticable in-game. If it is getting the constant BPM of a song which is needed, I recommend the neat little freeware program TapTempo by AnalogX. It will give you a fairly accurate average BPM if you tap along with the playing music. It should be easy to work out what the actual BPM is because it will fluctuate around the value.

With my program, you can obtain more accurate BPM values by playing the music at half-speed, tapping to it, and then afterwards, multiplying all BPMs by 2 (there’s a feature to multiply all BPMs by a value which you type).

There are instructions on using the program shown within the program itself. Since I didn’t originally intend to release this to the public, it doesn’t look very interesting, but it does what it’s supposed to do, so it should be of use to those who are trying to make simfiles of music with constantly-changing BPMs.

22 Responses to Programs

  1. Alchemist says:

    I like your Bleeper!! Good work, man!!!!!!

    • Daniel Kisielewski says:

      as a blind user of bmm, good work! I am still wondering how to make it more accessible to do arpegios. you can contact me at: skype: [removed to avoid you being spammed]

  2. Joe says:

    if you can get back to me i really like it i want to try modding your app to work with LED-WIZ

  3. Joe says:

    if you still check this im still looking to see if you want to share your code for sm player to expand to windows 7 and led wiz support
    contact me at techmasterjoe at gmail dot com

  4. keegan says:

    Would you be able to make a program that enables the floppy drive to play midi’s? I know there is a driver for BeOS, but that operating system is sooo old… It would be awesome if you could. If you are able to, or consider it, please contact me at foxx423 at [EDIT: address removed to avoid you being spammed]
    Thanks

    • Robbi-985 says:

      I’m afraid I can’t. I don’t know how to access the floppy drive (or any drive) at such a low level, and if I did, it would max out (1 core of) the CPU.

      • keegan says:

        Do you think you could make an option in the BMM player so that if you played a midi that you could record to of the midi channels and save it as a BMM file?

  5. DW says:

    Robbi– I noticed after a few seconds of download of your BMM program, the server’s connection drops to ridiculously slow download rates, like 10 kbps. Just thought I’d tell you!

  6. DVant says:

    NICE!

    Just nice, good work man. =]

  7. Brandon says:

    Hello,

    Do any of you know what the save as type box can be used for? What other file types can I save as?

    Thanks!

    • Robbi-985 says:

      I’m afraid it’s only my basic BMM file format. I added the “All files” option as it’s sometimes useful to be able to see other files in folders in the dialog box to get a bearing, instead of Windows restricting you to viewing only files that end in “.BMM”.

  8. Daniel S. says:

    Hi there, would it be possible to make an output driver for the internal speaker so that one could select it as a Skype output ringing device? Is that something you could tackle?

    • Robbi-985 says:

      I’m afraid I don’t know anything near enough to be able to write drivers.

      Older versions of Skype used to have an option to “Ring PC speaker”, which would simply make it beep repeatedly when someone called, but I assume that’s been removed now (it probably didn’t work with Windows versions newer than XP).

      I do know that, because Windows isn’t a “realtime” operating system, a sound driver for the PC speaker (to allow it to play any sound file) would require it to max out one CPU core. This is to allow it to use dithering to fake e.g. 4-bit or maybe even 6-bit depths from the 1-bit speaker by looping as quickly as possible (it will need to loop 4 or 6 times faster than the sample rate, respectively). Idealy, it would wait for a tiny fraction of a second (on the order of hundred-thousandths) instead of maxing out the CPU, but the resolution of the multimedia timer (the highest-resolution timer in Windows) is only 1000 Hz (one thousandth of a second). This would only allow sound at a sample rate of 1 KHz at 1-bit, 500 Hz at 2-bit, etc.

      TL;DR: I’m afraid not.

  9. TheTrustedComputer says:

    Hi! Your programs are fantastic! However, there are things you need to consider:

    On your Waveform Display program, there’s a potential for memory leakage. For example, when loading thousands of files gigs in size to the playlist then unloading them, they’re still present in RAM even though the playlist is empty. They should be cleared expect the one last played, until I load another one via “Browse for audio” or remove it from the playlist. In Task Manager, the RAM usage is always increasing file by file. Please fix this as soon as possible; I’ll be glad if this is fixed by the end of the year.

    I also want settings saved on every close. This is purely optional, but it’s nice to have a place to save settings; it’s a good practice software developers do all the time.

    • Robbi-985 says:

      Thank you, I’m glad you get some use out of them!

      Thanks for that bug report. That’s certainly not meant to happen, and it does indeed happen for me, too. I don’t think it happened in old versions; I expect I broke the unloading of files when adding the options for when to load the next file (e.g. at end of current file’s playback). It’s definitely a bug that needs fixing, but I’m afraid I can’t promise a date that it’ll be fixed by. If it’s of any consolation, you can rest assured that it’s on my mental list of things to do.

  10. Joel Robert Justiawan says:

    Hey guys! for you using WINE in Linux, or whatever, says the app needs “Administrator” all the way out,
    NEVER RUN WINE UNDER ROOT, BECAUSE IF YOU DO THAT YOU MAY DAMAGE YOUR COMPUTER! Plus, breaking the .wine permission into belongs root. If it’s too late, change the .wine permission back using
    chmod $USER:USER $HOME/your_username/.wine

    Back to topic.
    Do as I say:

    download BaWaMI as usual and extract it’s 7z contents

    download these dlls: mfc40.dll, mfc42.dll

    Open terminal a.k.a. console and type: wine explorer

    find where you put the extraction of BaWaMI is. Usually the download folder in Ubuntu follows your language, so it could be like such: /home/username/Downloads/BaWaMI stuffs like that
    try to check on drive Z:\ where the linux root was mounted on by default, if not, mount it.

    As you are in there, the BaWaMI folder, copy these dll to C:\windows\system32
    midifl32.ocx
    midiio2k.ocx
    inpout32.dll
    inpout32simp.dll
    what again? tell me more! BaWaMI should tells us what files should be in there, if fails, they tell which file are not found.

    then go to the directories where you put the downloaded dll, e.g. right in the download folder $HOME/Downloads

    $HOME stands for the Home folder, a.k.a /home/your_username

    copy those dlls I mentioned as well to C:\windows\system32

    close the Wine explorer.

    back to main terminal, type wine $HOME/Downloads/BaWaMi/BaWaMI.exe or whatever you know where the directory is.

    IT WORKS!!!!!!!!!!!!!!!!!!!!!!! but if fail, make sure you followed steps clear. still fail? ask me, reply me!

    I hope I put HTML codes correctly…
    EDIT: Where my mind was? I mistaken the 4th line where I closed the code tag with wrong word: wine
    LOL XD!!

  11. K17 says:

    Hi, would it be possible for you to release your source code (onto GitHub?) for some of these projects? In particular, the StepMania Player. Thanks~

  12. Tom says:

    Hey Robbi,

    nice work though.
    Is there a kind of algorithm which is able to convert frequencies to those frequency numbers used by internal PC speakers?

    Thanks,
    Tom

    • Robbi-985 says:

      Hi Tom,

      What you want is the high and low “count” values for the 8254 timer that controls the PC speaker, right? The formula is simply:

      CountVal = ClockSpeed / DesiredHz
      CountHigh = CountVal \ 256
      CountLow = CountVal - (CountHigh * 256)

      (Where \ means integer division, i.e. floored, not rounded.)

      ClockSpeed is roughly 1193182, for historical reasons =D (see https://en.wikipedia.org/wiki/Intel_8254 ).

      I hope this helps!

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>