MIDIDIOM V3.14 - (C) Copyright 2008 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 and MAP 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 and MAP parameter.

GUESS:		This button will attempt to tell you the METER, KEY & TEMPO for your midi file.  The GUESS button attempts to find the KEY by counting the number of notes with sharps and flats so it is therefore not always accurate.

CHANNEL:	Use this to select which channels you would like to alter.  "ALL BUT 10" is the default because usually the drums are on channel 10 and you do not want to change pitch values for the drums. "ALL" will alter all channels 1-16. Also, you may choose a particular channel alone to be altered which is particularly useful with the OCTAVE button.
 
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.  Because the BASS instrument has low pitches they end up as high notes and the opposite is true of instruments with high pitches.  If the AUTO OCTAVE CORRECT CHECK BOX is checked the program attempts to move the instruments back to their proper octave.  If you decide not to check the AUTO OCTAVE CORRECT BOX you can also move the instruments by CHANNEL by using the OCTAVE button.  Refer to the SONG INFO window for information about what channel a particular instrument is on.  The KEY parameter is not used with the ROTATE button. You may want to use the JOIN button on the results created by the ROTATE button to force the results into a particular key. 

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 GUESS button can attempt to figure out the key for you.  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.  You may want to use the JOIN button on the results created by the SHIFT button to force the results into a particular key.

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))  A text file will pop up to let you know how many midi files were created and the parameters that were used.  You will need to save this text file to a different name if you would like to keep it as a reference.  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.  You may want to use the JOIN button on the results created by the GROUP button to force the results into a particular key.

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

MAP:		This button will map the notes using either predefined or randomly generated maps.  All of the maps 1-1000 are set to zero except for MAP 1 when you first unzip mididiom.zip.  There are 2 ways to edit the maps.  Choose EDIT or RANDOM and hit the MAP button.  If you choose EDIT your text editor will load the file MAP.TXT. Edit the maps you want to alter 1-1000 and then save it.  Fill in the numbers 1-12 for each map, such as 1=6. Use positive and negative numbers to alter the maps.  This either raises or lowers the pitch.  Place a "-" before negative numbers but do not place a "+" before positive numbers.  The RANDOM feature uses the numbers from -7 to 7.  Usually altering the notes any more than this does not give as good results but you may use greater numbers if you wish.  To edit the maps using the RANDOM feature choose RANDOM and then set the range of maps you wish to alter such as 1 thru 10 and the hit the MAP button.  After you have altered MAPS, choose RUN then select MAP range such as 1 thru 10 then hit the MAP button.  In this case it would create 10 subsequently numbered midi files.  A text file will pop up to let you know how many midi files were created and the parameters that were used.  You will need to save this text file to a different name if you would like to keep it as a reference.  Changing the KEY parameter will give you different effects for each MAP.  Only notes between the LEFT MARKER and RIGHT MARKER are altered.  CENTER and LOCATION are ignored.  You may want to use the JOIN button on the results created by the MAP button to force the results into a particular key.

JOIN:		This button will force a midi file to join a particular key. For instance if the parameter is "C Major Resolve Up" and the note is C#, the C# will resolve up to D.  if the parameter is "C Major Resolve Down" and the note is C#, the C# will resolve down to C.  The MARKERS and LOCATION are ignored with this button as is the KEY parameter since the KEY is being chosen with the JOIN button.  

YO_YO:		This button will randomize all notes between the LEFT MARKER and the RIGHT MARKER using random notes between the range indicated next to the Yo_Yo button.
The default is 48 (C4) to 76 (E6).  Instruments/Channels can moved to an appropriate octave using the OCTAVE button.  Many times all it takes is moving the bass down 2 octaves to make the song sound correct.  KEY is ignored because the notes are randomized.  You may want to use the JOIN button on the results created by the YO_YO button to force the results into a particular key.

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. You may want to use the JOIN button on the results created by the WORDS button to force the results into a particular key.  If you find a WORD that works well I encourage you to send it to me at webtech@roadrunner.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#

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. You may want to use the JOIN button on the results created by the SCALES button to force the results into a particular key.  If option EDIT is selected press the MY_SCALES button and your text editor 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, choose RELOAD and hit the MY_SCALES button for your changes to be recognized.  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 webtech@roadrunner.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. You may want to use the JOIN button on the results created by the IN_OUT button to force the results into a particular key.  

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.  Be sure that CHANNEL is set to "ALL BUT 10" if you want to transpose all the instruments except the drums.

OCTAVE:	This button will change the octave of your channels.  Be sure to choose a particular CHANNEL if you only want to change the octave for one instrument. This is  especially needed after hitting the ROTATE button if AUTO OCTAVE CORRECT is not selected.  It is also useful after using the Yo_Yo button.  To figure out what channel a particular instrument is on look in the SONG INFO window.  Only notes between the LEFT MARKER and RIGHT MARKER are altered.  CENTER and LOCATION are ignored.

SONG INFO:	This window contains the File name, Key, Channel and Patch information.  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. A midi file can also be loaded by dragging it over the MIDIDIOM window.  Files loaded are displayed underneath the song info window and can be selected by clicking on them.  

RENDER ALL:	Will render each midi file in the file list accoring to which button you pressed.  A text file will pop up to let you know how many midi files were created and the parameters that were used.  You will need to save this text file to a different name if you would like to keep it as a reference.  

LOAD DIRECTORY:	Will clear the current file list and bring up a directory dialog, which once chosen, will add all the midi files in that directory to the file list.

SAVE DIRECTORY:	This will give you the option to either let MIDIDIOM decide where to save your files or you can choose a single directory where you would like files to be saved to.

CLEAR:		Files can be removed from the file list by clicking on them twice or the entire list can be cleared by clicking on CLEAR.

UNDO:		Deletes the most recently rendered midi files and reloads the previous midi file.

DELETE:		Deletes the loaded file.

SAVE_AS:	Files are automatically saved with each rendering to a song directory with the same name as the midi file.  Each rendering is given a subsequent number as a file name.  If however you would like to copy the currently loaded file to a new name you can use the SAVE_AS button.  

HELP:		The information you are looking at now.

UNLOCK:		After registering MIDIDIOM click on this button to enter your registration code.  Once entered you will need to exit the program and restart it for the program to recognize your registration code.

HOTKEY:		Rather than clicking on some of the buttons you may use the HOTKEYS shown by the underlined letter on each BUTTON.  These can be accessed by tapping the designated letter while holding down the ALT key.

PLAYER BUTTONS:	PLAY, STOP, PAUSE and external midi player. Can either be clicked on or use hotkeys. Play=Ctrl+Right Arrow, Stop=Ctrl+Left Arrow, Pause=Ctrl+Down Arrow and External midi player=Ctrl+Up Arrow.

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.

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

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 webtech@roadrunner.com. Register the software at http://webtechnology.tech.officelive.com/mididiom.aspx The cost for registration is $20 US dollars.  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. You have to restart the program for your unlock code to be recognized.

CONTACT:	You can email me with comments, bugs or questions at webtech@roadrunner.com  Also look for updated information on the program at http://webtechnology.tech.officelive.com/mididiom.aspx

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.


