MIDIDIOM V1.8 - (C) Copyright 2003 Wayne Bowers

OVERVIEW:	MIDIDIOM (pronounced Midi Idiom) is a program that takes your existing midi file and generates a new song while not affecting the structure of the song.  It may be helpful in creating a song that is similar to a particular song that you like.  Load in your favorite midi file and it will be altered into something new while preserving the structure of the song. (Be sure to treat any copyrighted material appropriately)

KEY:		This is used in relation to the SHIFT, GROUP, MY_WORDS & MY_SCALES buttons.  It is not necessarily set to the key of the song but is set to a key which works well for a particular SHIFT, GROUP, MY_WORDS & MY_SCALES parameter.

GUESS:		This button activates guess.exe which will attempt to tell you the METER, KEY & TEMPO for your midi file.

ROTATE:		This button can be thought of like a windmill.  It takes all the notes of the song and rotates them around the selected CENTER note.  If LOCATION BOTH is selected everything between the LEFT MARKER and RIGHT MARKER is rotated around the selected CENTER note. If LOCATION LEFT is selected only those notes between the LEFT MARKER and CENTER MARKER are rotated.  If LOCATION RIGHT is selected only those notes between CENTER and RIGHT MARKER are rotated. Usually setting LOCATION to BOTH gives you the best results.  Generally because the BASS instrument has low notes they end up as high notes.  So usually the BASS and other low instruments need to be brought down several octaves after they are rotated.  This can be done using the OCTAVE button.  The opposite is true of instruments with high pitches.  Refer to the SONG INFO window for information about what channel a particular instrument is on.  Also note that channel 10 is the default drum channel and is not altered.  If the channel information was not included in the original midi file you will need your own sequencer to figure out what instrument is on what channel.  If you update the midi file with your sequencer to include track/instrument/channel info they will be shown when you load in the updated midi file into MIDIDIOM.

SHIFT:		This button alters midi files using pre-defined scales.  Custom made scales submitted by users using the MY_WORDS button and the MY_SCALES button will be included in the list. 3~5 means the 3rd note of the scale becomes the 5th note and the 5th note becomes the 3rd note.  2 => 6 means make all the 2nd notes of the scale the 6th note.  Various modes and other miscellaneous scale alterations are included here as well.  Only notes between the LEFT MARKER and RIGHT MARKER are altered.  CENTER and LOCATION are ignored.  In order for this to work properly the key of the song should be known.  If there is no key listed in the song info window or if you have altered the midi file to a new key but have not updated the midi file info with your sequencer, the keyboard program keys.zip offered on my website is a quick way to hear all 12 notes to help you figure out the key of the song.  There is also a free utility that you can download from www.gnmidi.com/utils/midikey.zip that is very good at determining the key of a midi file. Other keys outside the key of the song can be selected for other desired results.  Hit the SHIFT INFO button for information about the current SHIFT parameter including the recommended KEY in relation to the key of the song. Also note that channel 10 is the default drum channel and is not altered.

SHIFT INFO:	This button displays any information that may be included about the SHIFT parameter. Name, created with My_Scales Button "SCALE" or My_Words button "WORD", date submitted, who submitted it, and what Major and Minor keys the scale seems to work best in.  For instance if the key of the song is C Major but the SHIFT parameter works well in G minor, then you will see the info "Major key 5 Minor".  If the key of the song is C Minor but the SHIFT parameter works well in D# Major then you will see the info "Minor key 3 Major". (Major Keys have 1/2 steps between 3 & 4 and 7 & 8, Minor Keys have half steps between 2 & 3 and 5 & 6. Keep that in mind when you are setting the KEY).  These are just the recommended keys, other keys may work well also. If no key is specified try using the original key of the midi file.

GROUP:		This button makes multiple midi files by grouping together SHIFT, MY_WORDS or MY_SCALES parameters.  For instance if the original key of the song is C Major and you choose the parameter "MAJOR - 5# MAJOR", this means... ("MAJOR" - original key of song is in a Major key) and ("5# MAJOR" - Choose the KEY G# Major. (This is just the recommended key))  The midi files that are created will be numbered 1.mid, 2.mid, 3.mid, etc. and will always be in the MIDIDIOM directory.  A text file will pop up to let you know how many midi files were created and the parameters that were used.  In some cases there may not yet be any parameters that apply.  If this is the case you will get the message, "Nothing to create".  If you would like to have your own multiple parameters set up you can use the files USERGP01.TXT thru USERGP10.TXT to paste in your own SHIFT, MY_WORDS or MY_SCALES parameters.  Using a text editor open up the files SHIFT.FMT, MY_WORDS.TXT or MY_SCALE.TXT.  Highlight and copy to the clipboard (Ctrl C) all of the data on a particular line you want (make sure word wrap is off) and then paste them in (Ctrl V) before the line that says "END_GROUP.FMT", and then save the new files. Do not erase the line that says "END_GROUP.FMT" or the GROUP button will not work properly when you choose the "USER GROUP" parameters.  Choose your saved "USER GROUP" parameters at the bottom of the GROUP parameters after you have added your own parameters to the USERGP.TXT files. USER GROUP 1 = USERGP01.TXT, USER GROUP 2 = USERGP02.TXT ETC. Once you are done editing and save the file, MIDIDIOM will need to be restarted for your changes to take effect.

GROUP INFO:	This button indicates how many midi files will be created for a particular GROUP parameter.

MY_WORDS:	This Button converts any 7 letters into a scale.  It is more like a puzzle than anything else because it is challenging to try to find a 7 letter word that sounds good.  It can be an interesting and creative way to try to make new music.  If option RUN is selected, press the MY_WORDS Button and it will convert the currently LOADED song to the new scale using the currently loaded WORD.  Try a variety of different KEYS because sometimes a word will not sound good in one key but will sound good in another key.  If option NEW is selected press the MY_WORDS Button and input your new 7 letters.  If option DELETE is selected press the MY_WORDS Button and the currently selected word is deleted from your list.  Only notes between the LEFT MARKER and RIGHT MARKER are altered.  CENTER and LOCATION are ignored. If you find a WORD that works well I encourage you to send it to me at sunyside@panax.com and I may include it in the next SHIFT LIST update.  For instance if the key of the song is C Major but your WORD works well in G minor, then include the info "Major key 5 Minor".  If the key of the song is C Minor but your word works well in D# Major then include the info "Minor key 3 Major". (Major Keys have 1/2 steps between 3 & 4 and 7 & 8, Minor Keys have half steps between 2 & 3 and 5 & 6. Keep that in mind when you are setting the KEY). Also if you do not mind submitting your name I will be including in the SHIFT LIST the info about the WORD and who submitted it.  Please do not send any attachments, just include the text you want to send in the email message. Any information submitted becomes the intellectual property of MIDIDIOM.  If you would like to take a more systematic approach to finding good words use the info below to figure out the values for each letter.
A=0  B=1  C=2  D=3  E=4  F=5  G=6  H=7  I=-4  J=-3  K=-2  L=-1  M=0  N=1  O=2  P=3  Q=4  R=5  S=6  T=7  U=-4  V=-3  W=-2  X=-1  Y=0  Z=1
For example if the key is C Major and the word "Premise" is used  P=3 so C goes up 3 half steps to D#, R=5 so D goes up 5 half steps to G, E=4 so E goes up 4 half steps to G#, M=0 so F stays at F, I=-4 so G goes down 4 half steps to D#, S=6 so A goes up 6 half steps to D#, E=4 so B goes up 4 half steps to D#

MY_SCALES:	This Button allows you to make your own custom designed SCALES.  If option RUN is selected press the MY_SCALES button and the current SCALE name shown will convert the currently LOADED song to the new SCALE using the selected KEY. If option EDIT is selected press the MY_SCALES button and  Notepad will bring up MY_SCALE.TXT for editing.  Do not edit the first line where it says TEMPLATE.  Copy that line to the next line and edit the new line.  The template line is there to help you make sure that the numbers that you asign are lined up properly. Once you are done editing and save the file, MIDIDIOM will need to be restarted for your changes to take effect.  When you are editing the file use a font that does not use proportional spacing so that everything lines up properly. Also make sure "word wrap" is turned off. The name that you want to give your new SCALE goes all the way to the left. (No more than 58 characters). Do not use any tabs, use spaces only. Scale note 1 must always start at position 60, scale note 2 at 65, scale note 3 at 70, scale note 4 at 75, scale note 5 at 80, scale note 6 at 85, scale note 7 at 90.
Example:

0 0 0 0 0 0 0  If you apply these numbers: 1  2  3  -4  -3  2  1 <= 1/2 steps 
C D E F G A B               you would get: C# E  G  C#  E   B  C

Note that whenever you have a negative number the "-" is always the beginning of the number so the "-" needs to be on postion 60,65,70 etc.  Except for special instances I do not use numbers bigger than 7 to -7 because I find it makes the scale jump around too much.  You can use a different text editor than notepad if you want. If you find a SCALE that works well I encourage you to send it to me at sunyside@panax.com and I may include it in the next SHIFT LIST update.  Include what key it works best in.  For instance if the key of the song is C Major but your WORD works well in G minor, then include the info "Major key 5 Minor".  If the key of the song is C Minor but your word works well in D# Major then include the info "Minor key 3 Major". (Major Keys have 1/2 steps between 3 & 4 and 7 & 8, Minor Keys have half steps between 2 & 3 and 5 & 6. Keep that in mind when you are setting the KEY). Also if you do not mind submitting your name I will be including in the SHIFT LIST the info about the SCALE and who submitted it.  Please do not send any attachments, just include the text you want to send in the email message. Any information submitted becomes the intellectual property of MIDIDIOM.  

IN_OUT:		This button either pulls towards or pushes away from the selected CENTER note.  If the selected CENTER note is 64 and the parameter is set to 1 every note greater than 64 is increased by 1 and every note less than 64 is decreased by 1.  Likewise if the parameter was set to -1 every note greater than 64 is decreased by one and every note less than 64 is increased by 1. In effect either pulling all the notes closer to one another or pushing them further apart. Like the ROTATE button, if LOCATION RIGHT is selected only those notes above the selected CENTER note are affected and if LOCATION LEFT is selected only those notes below the selected CENTER note are affected.  If LOCATION BOTH is selected than all of the notes above and below are affected. Also the LEFT MARKER and RIGHT MARKER set the boundaries for those notes you want altered. Usually setting LOCATION to RIGHT and setting IN_OUT to 7 works well.  This raises everything above the selected CENTER NOTE up a 5th.

TRANSPOSE:	This button will transpose the entire song +12 to -12 half steps.  This is necessary especially after hitting the ROTATE button to get all the instruments into a good sounding key. The LEFT MARKER and RIGHT MARKER set the boundaries for those notes you want altered.

OCTAVE:	This button takes a particular midi Track/Channel/Instrument and changes the OCTAVE.  This is especially needed after hitting the ROTATE button as discussed.  To figure out what channel a particular instrument is on look in the SONG INFO window.  If the channel information was not included in the original midi file you will need your own sequencer to figure out what instrument is on what channel. If you save the track/instrument/channel information with your sequencer, the next time you load the song that information will show up in the SONG INFO window. The LEFT MARKER and RIGHT MARKER set the boundaries for those notes you want altered.

SONG INFO:	This window contains the midi file in text format. Note that the key shown for the midi file is the original key that the song was in when you loaded into memory.  If you change the key of the midi file using ROTATE or TRANSPOSE the new key will not be reflected in the SONG INFO window.  You will need a midi sequencer to change the text that says what key the song is in. The next time you load the song that information will show up in the SONG INFO window.

LOAD:		Loads the selected midi file into memory.  

PLAY:		Plays the selected midi file. Your computer must be set up to associate .mid files with a particular midi player in order for this to work.

SAVE:		Saves the newly rendered midi file. Do not use file name "NEW".  Also, the "GROUP " Button uses midi files numbered 1.mid, 2.mid, 3.mid etc. so keep that in mind when you are saving your midi files or they may get overwritten.  You can use the file names 1.mid, 2.mid, 3.mid etc. if you save them to a directory other than the MIDIDIOM directory.

HELP:		The information you are looking at now.

MIDI TO WAV	A sound card by itself sometimes does not sound that good.  There is a free program that I use called MIDINIGHT EXPRESS which can turn your midi files into .wav files using .wav files as instruments instead of your sound card.  You can turn any .wav file into an instrument !  Download it at http://www.polyhedric.com/software/mn/index.html.  What I do is record my sound card on a .wav file and the midinight express on a .wav file, then using digital audio put each of the 2 .wav files on seperate tracks, line them up, and pan one .wav file about 2/3 to the left and the other .wav file 2/3 to the right.  I have generated some nice sounding .wav files from my midi files that way.

OTHER NOTES:	The program seems to have a hard time with long directory names.  It is best to have the program right on the root directory ie. C:\MIDIDIOM to avoid potential problems.  Also save your midi files not too deep in directories and do not use directory or file names that are more than 8 characters in length.  

Sometimes you may end up with some duplicate notes.  There is a free utility that can be found at www.gnmidi.com/utils/midundup.zip which removes duplicate notes.

There is no need to click on a button twice. Keep your eyes on the status bar at the bottom of the window.  It will tell you what the program is currently doing.  It may appear without looking at the status bar that the program is not doing anything but if you clicked on a button it is processing your request.  Do not click on another button until it is finished with your current request.

If you are going to be downloading many midi files off the internet take care to watch out for computer viruses.

QUICK TUTORIAL:	

1.  Hit the LOAD BUTTON and load in the song demo.mid (Look at the status bar at bottom of screen). The key of the song is C Major.

2.  Hit the PLAY BUTTON to hear as much or as little of the original song as you want. When done close the media player.

3.  Set the CENTER number to 64 and Hit the ROTATE BUTTON. (Will take a few moments to render)

4.  Hit the PLAY BUTTON to hear the new midi file. Listen as long as you want then close the media player.  Note that the song has changed to the key of C# minor. (Use the keyboard program on my web site or your own instrument to figure out the new keys.)

5.  Hit the SAVE BUTTON and save in a directory as NEW1 or something like that. (Save to file names and directories with 8 characters or less and dont make your directories very deep.)

6.  The BASS instrument is 4 octaves too high.  Notice in the SONG INFO window that BASS is on channel 7. (You have to scroll almost to the bottom of the SONG INFO window to find it.)  Next to the OCTAVE BUTTON select channel 7 and -4 then hit the OCTAVE BUTTON.

7.  Hit the PLAY BUTTON to hear as much or as little of the original song as you want. When done close the media player.

8.  Hit the SAVE BUTTON and save NEW2 or whatever name you want.

6.  The PIANO instrument is 1 octave too low.  Notice in the SONG INFO window that PIANO is on channel 2. (It is near the top of the SONG INFO window).  Next to the OCTAVE BUTTON select channel 2 and 1 then hit the OCTAVE BUTTON.

7.  Hit the PLAY BUTTON to hear as much or as little of the original song as you want. When done close the midi file.

8.  Hit the SAVE BUTTON and save NEW3 or whatever name you want.

9.  We are going to change the key from minor back to major.   Set the KEY to C# Minor and select Minor2Major Hit the SHIFT KEY. The key will change from C# Minor to C# Major.  (C# minor is the relative minor to E Major.  Using E Major gives a whole different effect.)

10.  Hit the PLAY BUTTON to hear as much or as little of the original song as you want. When done close the media player.

11.  Hit the SAVE BUTTON and save NEW4 or whatever name you want.

12.  Next to the transpose button select -1 then hit the TRANSPOSE BUTTON.  This will put the song back down to C Major.

13.  Hit the PLAY BUTTON and SAVE BUTTON again.

REGISTRATION:	This program is shareware.  The demo has limited menu options.  When you run the program, at the bottom left of your screen will be a number.  After you register the program send this number via email to sunyside@panax.com. Register the software using RegSoft at http://www.regsoft.net/purchase.php3?productid=60857 Upon registering the program you will receive the code to unlock the program via email. Click on the Unlock button and enter your code to unlock the program.  The cost for registration is $20 US dollars. You have to restart the program for your unlock code to be recognized.

CONTACT:	You can email me with comments, bugs or questions at sunyside@panax.com.  Also look for updated information on the program at http://snow.prohosting.com/mididiom

PROGRAMMING:	Some of the software used to create this program has been written by Guenter Nagler and has been used by permission.  If you would like more information about his software go to http://www.gnmidi.com/

DISCLAIMER:	Use MIDIDIOM at your own risk.  Anything you do with MIDIDIOM is your responsibility, and not the author's.  Any damage caused to any person, computer, software, hardware, company, or business by running MIDIDIOM  is your responsibility, and the author will not be liable.  If you don't understand these terms, or are not sure of something, or are afraid something bad might come from using MIDIDIOM, don't  use  it!  You are here forewarned.


