Virtual piano, fretboard, and hammered dulcimer simulator/composer

MidiMapper is a free Windows 32 bit program that lets you write and play back songs thru midi and see the notes played (animated) on a musical staff and scale, piano keyboard, guitar/banjo/mandolin, and hammered dulcimer images.  You can define additional fretted or fretless musical instrument layouts, for example, violin, mountain dulcimer, etc, change the midi sounds to use any of 128 different instruments, and record to .mid files.  It supports up to 16 simultaneous voices (instruments).  Song files are entered in an easy to read and understand text syntax.  Click here to see a sample.

What is midi?  It's a way for musical instruments and computers to communicate with each other, and to store music digitally in your computer... (click for more)  Click here to hear some sample .mid files created by MidiMapper.

Update 05/23/15: Version 6.49 increases the allowable range for the Note Off/Note On delay and adds the option to randomize the delay between notes within the range you select.  This can add a more human or gospel feel to the music.  Read the help docs for details.  Also, some earlier distributions left some instruments out of some songs.  These have been fixed.  They are: The flute in El Condor Pasa, string ensemble in Moon River, and recorder in Windy.  Also, I've added a better explanation about how to add cc's to the .hds file to create effects such as reverb, sustain, chorus, volume, pan, balance, etc, and a list of cc's that most soundcards respond to.  Also, I've fixed the 'Load and Play Multiple Songs' dialog to play the chosen songs in the same order as they're listed in the 'File Open' dialog, instead of in pseudorandom order as was the case before.  Also, I fixed the guitar fretboard mapping.  Previously, notes were fretted 1 octave too high.  Also, I added a better explanation of the 'Ticks per Quarter note' field in the 'Save to .mid file' dialog.  Click here to download version 6.49.

Update 04/08/11: Version 6.47 added the ability to set breakpoints in a song, and a 'Line #' field to display the line # of the line that is selected in the listbox, both of which help a lot when editing & debugging songs.  The 'Load and Play Multiple songs' dialog was improved, including adding a 'Randomize Playlist' option.  Better instructions and tooltips, more fixes and enhancements to some songs, the player, instruction manual, and PolyDur editor.

Update 10/28/10: I've created a .zip file that has additional .hds songs that aren't in the original distribution, including 'Born Free', 'Down where the Wurzburger flows', 'It Never Rains in So. California', 'Michelle', the 'Mission Impossible' theme (using unusual 5/4 time), 'Moonlight Sonata', 'Nola', 'On the banks of the Wabash', the 'Pink Panther' theme, 'Proud Mary', 'She Bop', 'Sound of Silence', 'Spanish Eyes', and 'WipeOut'.  Click here to download them.  After downloading, just unzip into your MidiMapper\Music folder to be able to play them.  Michelle and maybe one or two others still have some problems with incorrect or missing notes, note durations, and beats per measure.  If you would like to fix them and send them to me, I would be very thankful and, of course, would give you a credit line.

Update 9/27/10: Version 6.45 added a clarification to the Instruction manual to make it clearer that, '...when embedding [midi ...] commands in .hds files, values are 0 based, rather than 1 based, so that instrument #'s shown at the end of the text should be reduced by 1 when sending a Program Change command, and channel #'s 0-15 should be used rather than 1-16'.  Some other fixes and enhancements were also added to the manual, player and PolyDur editor.

Update 07/19/09: Version 6.42 added a clarification to the Instruction manual that explains how older format (non-PolyDur) .hds files are shown differently in the 'Duration/notes' window than newer format PolyDur files are.

Update 03/29/09: Version 6.41 added more improvements to the PolyDur editor and beats/measure checking.

Update 10/20/07: Version 6.38 fixed a problem in the PolyDur editor where, when testing beats/measure, it would previously sometimes ignore the time sig specified in the song file, and use 4 beats/measure instead.  Also, the ability to rapidly change multiple note lines was improved.

Update 05/27/07: Version 6.37 added a more complete explanation of the .hds song syntax, improvements to the PolyDur music editor, and more options when recording a song to a .mid file.  I also added some delicious reverb to Canon in D and some other songs.

Update 04/06/07: Version 6.27 added a new menu option to insert a short delay in milliseconds between when one note is released and the next pressed, to better synchronize some computers and midi modules and create more realistic playback when playing .hds songs, and another option to set the default Dynamic to be used when you click the piano keyboard with the mouse or play an .hds song.  Also, the song window was made larger when the screen is maximized, which helps with editing.  Also, the 'Highlight each note as it plays' option works more smoothly now.

Update 03/22/07: Version 6.24 fixed the problem where sometimes, even though Polyphony = 4 or more voices (channels), only the first 3 would play.  Also, instructions were added about how to use Excel to add new channels (voices) to an .hds song.  Also, 14 new .hds songs were added (click here to see the full list), and flute/recorder was added to the 2nd parts of Windy and El Condor Pasa, and string ensemble to the 2nd part of Moon River.

Update 03/14/07: Version 6.20 removes the restriction that a [Repeat Xx] line can't follow another, and that a [Repeat End] can't follow another.  Also, now any Repeat section, even nested ones, can have alternate endings.  New instructions were also added to the manual about how to mute or reroute one or more channels and how to add a 'repeat and fade' effect to the end of a song.

For Tandy Deskmate users: Because of the 6.20 enhancement above concerning [Repeat Xx] and [Repeat End] lines, please see new version 1.05 instructions for converting Deskmate .sng files below.

(Click for previous version history).

Oops!: When I first created the 6.5 install package, I accidentally left out the song (.hds) files, and image files that are necessary for program operation.  Sorry about that.  I've now updated the package, so please re-download and reinstall from the above link.

Good news for some older soundcards: MidiMapper now allows up to 16 different voices in song files, each written to a separate midi channel.  Splitting the voices into separate channels like this, rather than sending them all to one channel, as was done previously, seems to really improve the playback quality of some older sound cards especially.  Some older sound cards have problems with legato sequences especially, usually perceived as a 'clipped' feel to some notes in the sequence, but splitting the voices to separate channels solves it.

News: I'm planning to add a page for users to submit their own .hds songs, so if you want yours included, contact me.

How to install:

  1. After downloading, double click on and it should open up in your file archive software*.  Then,
  2. Unzip all the files into an empty directory.
  3. Double click Setup.exe, and follow the prompts.

* If, when you double click on the .zip file, you are asked which program to open it with, you need to first download a file archive program.  You can find a list of file archive software here.  You'll need one that can handle .zip files, but almost all of them do.

I've spent hundreds of hours developing this software.  Please, if the software has been helpful to you, click this button to donate your choice of amount.  It's fast and easy, and it's free.  Credit cards accepted.  Thank you.

Image hosted by

Image hosted by

Image hosted by

For Tandy Deskmate users or former users:

Updated 12/29/10: Click here to download version 1.07 of the Deskmate .SNG to .HDS syntax converter, which can convert .SNG files created in Deskmate, to .HDS syntax, which can then be played by my MidiMapper (see top of page) through your soundcard, using rich grand piano, or 127 other instruments.  Hey, I'm a big fan of Tandy's 3-voice sound, but it's no match for today's Soundcard Midi capabilities.  You really should hear these songs after they're converted, including 'Bridge Over Troubled Water', 'Desperado', and all the classical, ragtime, pop, and other pieces originally created in Deskmate.  Make sure you read the readme.txt for the program before using it.  This program was created with the help of tvdog (J. Hayes).

News: Problems with flanging: Flanging occurs when 2 voices (channels), playing the same instrument, play the same note and same octave simultaneously.  You should avoid this generally, but some Deskmate songs have this problem.  In some cases, it results in a muted sound, because the harmonics of the notes override and cancel each other.  I solved this muted note problem in Yesterday.hds, for instance, by changing 2 instances of '8D3/8D3/x' to '8D3/8R/x' (I changed the 2nd voice to a Rest).  You can listen to the other songs and fix them similarly.

I used this converter program and MidiMapper (see top of page) to create .mid files of the best Deskmate songs I found (so far) on tvdog's site (in my opinion).  (Updated! 03/28/09: I added 3 more songs to make it 37 total now, and added delicious reverb to several of them.  The .mid files are © W. Baldwin, 2007.)  I specified to use grand piano for voices 1-3 on all of them, manually adjusted the instrument volume dynamics where necessary, fixed a few incorrect notes, and added other enhancements.  Click here to download them, but realize that if you use MidiMapper instead, you can specify any instruments you want, add more voices, change the song speed, and do lots more with them.

1.06 changes: You can now tell the program to skip (not convert) 1 or more voices or the control track.  Also, previously, the program would stop with an error message if a voice or control track didn't have an even # of bytes, but now, the program will instead give you the option to 'Continue anyway' if one doesn't have an even # of bytes.  The output data won't be correct in this case, but may be correctible manually in the .hds file, which you can edit in Notepad.

Also, the option to 'Change octave' was changed to 'Transpose by semitones'.  If you select to transpose the song, a comment will also be written to the output file, like, for example: ';transposed +3 semitone(s) from original'.  Also, [Key sig=Xx] lines will be transposed to the new key.  If any of you find a bug with this part, especially in songs where the key sig changes in the middle of the song, please let me know.  I think it works OK, but I only have a limited # of songs to test with, so feedback is appreciated.  Thanks.

1.05 changes: Previously, the program stated that the order that [Repeat Xx] and [Repeat End] lines are in in an .hds file doesn't matter, however, because of the 6.20 enhancements to MidiMapper (see above), [Repeat Xx], [Ending Xx], and [Repeat End] lines now have to be in the correct order.  Because Deskmate sometimes put them in the wrong order, or omitted the last [Ending Xx] line altogether, the .hds files now have to be edited in some cases, so they can be played correctly in MidiMapper.  Also, now any Repeat section, even nested ones, can have alternate endings.  Please see the revised readme.txt for more about these changes.

Version 1.04 was changed to also write out the other .SNG data that previous versions ignored.  The additional data is:

  1. Instrument changes.  These are numeric and can range from 1 to 32 I think.  The first version of Music.pdm (bundled with Personal Deskmate 2 on the 1000HX) assigned these instruments to the numbers: 1 - Wood flute, 2 - Jazz piano, 3 - Fantatone, 4 - Banjo, 5 - Cello.  The 2nd version of Music.pdm, which was bundled with later computers assigned these numbers: 1 - clarinet, 2 - piano, 3 - bells, 4 - cello, 5 - baritone (horn), 6 - banjo, but #6 thru 32 can be re-assigned to other instruments using .SND files.

  2. Instrument dynamic changes.  These will be pp, p, mp, mf, f, ff.  According to the Deskmate manual, mf is the default if nothing is specified.  Unfortunately, some songs don't have dynamics specified at the beginning of the song, so you might want to enter them manually in the .hds file, especially if the song later changes to a much higher or lower dynamic, because MidiMapper uses 'p' insted of 'mf' as the default dynamic (The latest version of MidiMapper now allows you to change the default dynamic, so the previous limitation is no longer true).  Then, the change won't seem so large when the program changes to the new dynamic later in the song.  You can copy and paste the next 3 lines to the beginning of the .hds file under the '[Notes]' line, in this case:
    [Inst. 1 dyn. = mf]
    [Inst. 2 dyn. = mf]
    [Inst. 3 dyn. = mf]

  3. Score markers.  These are markers that the person could add to the score for their own purpose and can range from the characters A to Z.

Version 1.03 changed how the song tempo is handled.  Previously, it would read thru the file until it found a 'Tempo' message, and then set the 'Pace=' field in the heading of the output .HDS file accordingly.  This wasn't really a very good method, because some songs start with the Deskmate 'default' tempo of 100 quarter notes per minute, but then change to a different tempo later in the song.  But I had done it this way because previously, my Instrument simulator/player could only play a song at one tempo.  But now, starting at version 5.4, my Instrument simulator/player can change tempo's during a song, so this program was then changed to, instead, always make Pace = 100 in the header, and then the simulator/player will change to a different tempo as it's playing, if necessary.

Version 1.02 fixed several problems.  When the user selected the 'Convert all files in directory' checkbox, previously, when looping and creating each output file, the program wasn't properly initializing some variables.  Also, the default tempo that was used before was 60 quarter notes per minute, but it should have been 100 per minute.  Also, the Key and Time signatures and tempo changes are now added to the output .HDS files.  Also, a new function was added to let you raise or lower the entire song by one or more octaves.  Since the key signature of each song can now be known, there is no more need for the 'Use sharps' and 'Use flats' option buttons, so those were removed.

Version 1.01 added a comment to the .hds file that specifies the original .SNG file name.  For instance, when converting Bach.sng to, say, 'Two Part Invention in F Major.hds', it will add this comment: ';Converted from BACH.SNG'.

Image hosted by

Add Me! - Search Engine Optimization