You are on page 1of 25

******************************

gnmidi 2.20
MIDI Utilities for Windows 95/NT4
Shareware

by Guenter Nagler
1997/98
(info@gnmidi.com)
******************************

[1] BACKGROUND
I wrote some commandline MIDI utilities for DOS/UNIX.
This program should offer many operations of these
utilities. Many people are not familiar with computers, DOS, UNIX,
commandline, so they have problems using even simplier utilities
that need a commandline input filename.
I hope that the Windows program is easier to use.

This is also a programming test for me. I want to use the sources of the
DOS utilities without extra changes in my windows program.

The project now starts with some popular utilities and I will add new
one from time to time.
The project has become a big program with so many features and is in a very stabile
state.

It is also available in German when German is set in operating system


as preferred language (read german.dok).

Now it contains following functions:


simple MIDI player (Windows compatible soundcard or soundddriver must be
installed)
show some MIDI informations
MIDI format 1 to format 0
MIDI format 0 to format 1
repair errors in MIDI file structure
RMI to MID conversion
fade velocity
generate MIDI medley
play with favorite MIDI player
change volume (choose between volume controls or note velocities)
copy (cut) part of MIDI file (between start and end second) into a new file
generate controls in rhythmic or random way
show short or verbose track information
convert karaoke (.kar) to MIDI with lyrics for some specific applications
convert MIDI with lyrics to Karaoke (.kar)
trim mute song ending if longer than a second
show maximum notepolyphony (and its location)
Reset GM, GS, XG (optional userdefined midi files)
Convert all MIDI files from directory and subdirectories into format 0
Sort MIDI tracks in format 1
Select MIDI Output Device for internal MIDI player
Compress MIDI (result will be a MIDI with same content but if possible smaller)
Initialize MIDI device (optional userdefined midi file)
Humanize MIDI
MIDI note shift
MIDI to ASCII Text
ASCII Text to MIDI
Edit (starts your editor to modify documents)
Drag & Drop one or more MIDI files from Windows Explorer into GNMIDI
Map channel numbers
Note Shift
Split Drums
Split Programs
Replace Notes
Change Resolution
Set copyright information
Edit track titles
Calculate tempo (BPM)
Karaoke lyrics display
Stretch notes duration
Mute channels/tracks
Generate setup measure
Show or add secret copyright
Set Tempo (bpm)
Check all midi files (in a directroy tree)
Create new midi file
Browse midi directory
Reverse midi (mirror)
Check midi natural instrument note ranges
Remove hanging notes (notes that do not stop)
Delete midi tracks
Guess song key and optionally set midi song key
Show original midi song keys
MIDI time calculator (calculate position, time, tact, tempo within a song)
Player status information
Find text in midi files

More functions might be added from time to time.

[2] FILES DESCRIPTION

GNMIDI.EXE.........converter program (multilingual: English and German)


GNMIDI.DOC.........this file, showing usage of GNMIDI.EXE
GNMIDI.DOK.........German GNMIDI.DOC
README.TXT.........how to register
LIESMICH...........German readme
only GNMIDI.EXE is required to run program

Sources of the Windows program itself are not available.

[3] COPYRIGHT

GNMIDI (c) 1997 was created by Guenter Nagler.

GNMIDI 2.0 and later is not free it is Shareware (see [8]).


You can use it for 5 days to test it and then must
register (see [8] and [9]) if use it further or delete the program.
If you use it longer than allowed then this is a crime
and you are a thief!

Price might change anytime. Download newest demo version to see price.

You can give GNMIDI 2.0 and later versions to your friends, on a
shareware cdrom, www page, bbs etc.
but must include whole unmodified gnmidi.zip (including this .doc, program,
picture, readme).
Personal license files must not be distributed (they are never
included in a gnmidi.zip). Users personal data
is included readable in personal license files, so any illegal
distribution of these files uncover the copyright violation with
consequences by law.

[4] DISCLAIMER

GNMIDI was designed to handle 100% compatible standard MIDI files.


So I give no guarantees of the results, especially with non 100%
compatible MIDI files.
If you find a MIDI file that you think to be 100% compatible MIDI
that is not correctly converted, please send a sample file to
support@gnmidi.com

Use GNMIDI at your own risk. Anything you do with GNMIDI is your
responsibility, and not the author's. Any damage caused to any person,
computer, software, hardware, company, or business by running GNMIDI
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 of using GNMIDI, don't use it!
You are here forewarned.

You can test each program version for 5 days for free, to see if it
satisfies your needs.

After receiving error reports author will do the necessary tests and
if error is reproducable and a program fault then will correct it till
next program version. Author decides self between error and features and
only includes new features that he thinks to be useful.

If you use a stolen license then you (as thief) are responsible for any
aggressive actions of the program!

The demo behaves identical to full version, with exception of uncomfortable


warnings. The demo shows you all features of full version and it would be
silly of you to take any risk of software piracy, only to compare demo with
full version and find no differences. If you have questions to differences
between full version and demo at certain points, then simply ask the author.

When you ordered a license, we send you a license file by floppy disk (and
sometimes also by email).
After we have sent the license file, it is not possible to give the license
back and pay the payment back.
It is not possible to sell a license to other persons (only the users
who's name are mentioned in the license file have permission to use the
license file). The license is not a material thing, it is the permission
of author to use this software.

[5] INSTALLATION

This program runs only under MS Windows (tm), Win95, Win98 or Win NT.

Move GNMIDI.EXE in a directory that is in your Windows path.

Start it with Explorer by clicking on the GNMIDI.EXE program item.

For future use you can add the program item to one of your desktop
groups (or create a new one), use Explorer or Program Manager to do this.

When you registered then install your personal license file:


Unzip the file with your personal data (that I send you when I get
your correctly filled registration form and paid price) into directory where
GNMIDI.EXE
is installed.
This disables the shareware reminder dialogs and program status bar
immediately tells that you are registered. If you paid price but did not send
correctly
filled form then you are allowed to use it but you get the license file only
after the
correct personal data is delivered.

[6] USAGE

1. Open a MIDI file


a file dialog starts and you can tell the name of the MIDI file.
use the directory list and filename list to find it.
Once you have specified an existing file, the MIDI information is analysed
and shown in a new window with filename as title.

It shows: file size (number of bytes), MIDI format


(0=single track, 1=more tracks, or 2=more songs)
number of tracks, MIDI resolution (time units per quarternote).

If the file is not a MIDI file or contains errors an error message is shown
instead.

2. Close a MIDI file


You can close a window at any time, even if the song is currently playing.
When closing new generated or modified MIDI files (marked with a * in title)
then the program asks if you want to save it (Yes=asks for a filename,
No=does not save and removes the MIDI, Cancel=do not close).

3. Play a MIDI file


Play will start MIDI player for the MIDI file in window that currently
has the focus (highlighted title background). It will automatically stop
a playing file when closing the file or starting a new play command.
The settings in menu are used to prepare MIDI before playing and to select the
output device.

4. Stop a MIDI file to play


This stops any MIDI currently playing with internal player.
Does not stop playing of an external MIDI player.

5. Save a MIDI file


You only need to save a new generated or modified MIDI (* marked).
It will suggest to save the file to the name in the title.
You can change this before saving it.

6. Save As ...
This command can rename a MIDI file or move a MIDI file to another location.
It is also used to save a modified MIDI to an other filename.
Current directory changes after this operation when new location is used.
For copying files to a slow drive (e.g. floppy disk) better use Windows Explorer
than this
operation because the operations will use this drive for work.
7. Change Format
You can choose between destination formats 0 (single track) and 1
(more tracks, one per used channel).
Look into the window information what format MIDI files currently have.
When you choose same format then it will tell that conversion is not
necessary. Otherwise it will convert the format and open a new window
with the new generated MIDI. You can directly play the new MIDI.

Format 1 to 0 is popular because some keyboards only play format 0.


See also comfortable operation Format 1 to 0 of a whole directory (23.).

8. Repairing MIDI files


repairing is usually only needed if file format is corrupt.
The open MIDI file should report an error in the window before you
select this function. It can not repair all errors and repairing might
lose data.

9. RIFF MIDI to Standard MIDI conversion


This is only available when opening a file with extension .rmi
Such files could also contain other multimedia documents like WAV, AVI.
For successful conversion the file should contain a MIDI document.

10. Fade velocity


This utility can be used to increase or decrease velocity (affects volume)
of a given part of your MIDI file. It can be used for fade in and fade out.
You 'll get a fade dialog where you should specify the time range and
percentages of original values. The values inside the range are linear
interpolated. You can also limit the changes to a single channel.

Time formats are


Time min:sec or min:sec.microsec
Units value between 0 and total units shown in dialog
Beats value between 0 and total beats (=quarternotes)
shown in dialog

The Fadein button sets time range to fade in 10 seconds from no sound to
original volume.
The Fadeout button sets time range to fade out 10 seconds before end of song
from original volume to mute.

11. Generate MIDI Medley


You get a dialog to make a list of MIDI files, after the list is ready and
sorted in your preferred order press Make Medley Button.

Now the utility checks MIDI format and converts all MIDI files temporarily
to format 0. If there are invalid files or files that are not format 0 or
format 1
in the list then the operation stops and the first invalid file is opened.
You could try to repair the file with repair function.

All MIDI files are concatenated to a file containing the songs in a sequence
(medley).
No pauses are removed or inserted. If you want a pause between the songs
then
insert a small midi that has only this pause.
The MIDI medley will be opened as a new document.

12. Play MIDI with favorite MIDI player


The menu function starts the program associated with file extension of
current
MIDI file (usually .mid, could also be .kar). It automatically adds the name
of
current MIDI document as first parameter.

Programs can be associated to file extensions with help of Win95/WinNT4.0


Explorer
or Win3.1/WinNT3.51 Filemanager.

13. Change Volume (or Note velocities)

Choose between modifying volume by volume controls or note velocities.


Enter a percentage between 0% and 1000% and optionally choose a channel
between 1 and 16 (default is all channels). Percentage 100% does not
change volume.

14. Cut part

This utility can copy a part of the song into a new MIDI file.
Choose a time unit (real time, midi units, beats) depending of what
kind of start and end you want to use. Usually real time is wanted.
The others are for precision cuts in logical units (=smallest possible
distance between two commands) or beats (=quarternotes).

For real time enter a time range (start time, end time) in seconds or
minutes:seconds
(m:ss) format or more precisely (m:ss.milliseconds) and then choose ok.

For the other time unit formats enter an integral unsigned number and choose
ok.
The number is number of units or beats from beginning of song.

A new MIDI song with content from the chosen part (start-end) will be created
and ready to play. Settings are not removed, so the part plays with original
settings.

15. Generate control events in rhythmic or random way

The dialog box lets you specify many parameters for the rhythmic or random
operation.
Most important parameters are:
control number: choose one that you know (usually volume, balance)
channel number: only one channel can be chosen 1-16
track number: only necessary if channel is used in more than 1 tracks
looping: no loop
loop cycle (if at end then start with initial value again)
loop up and down (when at end then direction changes and
starts again)
direction: increasing, decreasing, random (direction can change after
each loop)

For detailed information see midictrl.doc in midictrl.zip at my WWW page.

16. Show short or verbose track information

Track information is shown inside MIDI window, beginning with "Track 1".
The information can be toggled between short and long with menu option
Window/View/Verbose Trackinfo.
A line e.g. looks like:
Track 4 [1]: "Melody" (Brass)

that means: track number is 4, contains only one channel with number 1,
track title is "Melody" and initial program (sound) is Brass.

The information is identical to program miditrk, see miditrk.doc for


detailed interpretation of the output lines.

17. Karaoke to MIDI with lyrics


A .kar file that contains lyrics in karaoke format is converted
into cakewalk (old "markers" or new "lyrics") or tune1000 or Farfisa MIDI with
lyrics

see also kar2midi.doc

18. MIDI with lyrics is converted to Karaoke MIDI


Only available if MIDI contains lyrics and is not already Karaoke formatted.
Save the files with file extension .kar to play them with Karaoke players.

19. Trim mute song ending if longer than a second


end of a song can last longer than wanted, there is probably a long pause at
end of
any track. It does only remove pauses behind last note, so if there
is a long note playing it doesn't cut it (even if you don't here it, use MIDI
editor
to edit the note length or cut operation from above).

20. show maximum notepolyphony

It calculates number of notes playing at same time and shows


the number and location of maximum playing notes.
Includes influence of piano pedals.

21. Reset GM, GS, XG, INIT

These commands play a MIDI file that contains only a


standard sysex command (or a user defined midi file).
It is useful to reset the soundcard or force it into a certain mode
before playing MIDI files (e.g. if drums at channel 10 play piano or
other instruments then it should be forced into GM mode with a GM reset)

Only working if your sound device supports GM, GS or XG compatible modes.

You can redefine the buttons to play own midi files by modifying gnmidi.ini
file:
[Settings]
GM=drive:\\path\filename.mid
GS=drive:\\path\filename.mid
XG=drive:\\path\filename.mid
Init=drive:\\path\filename.mid

replace the right sides of = by path of existing midi file


e.g. c:\gnmidi\gsreset.mid
if not set in .ini file then a standard reset is played

22. Setting MIDI Standard


to prepare MIDI file before playing if wanted, the internal or external player
will play
a temporary MIDI file instead of the original MIDI file.

* No MIDI mode: play file as it is without any modifications


* GM only: remove all non-GM MIDI commands (bank controls, sysex) and add
GM Reset sysex
* GM reset: remove all Sysex commands and add a GM sysex.

23. Convert all MIDI files from directory and subdirectories into format 0
The operation can be found in menu Convert when all MIDI files are closed
(Alt-C 0) and in menu Convert file format/convert all midi files to format 0
when
a midi document is open (Alt-C a).
It opens a directory chooser for source directory where midi files
are and for destination directory where converted results should be
placed. You can create a new directory with the New button.
It is not allowed to convert files into same directory, since the
operation can't be 100% reversed.

The destination drive should have enough disk space left free that
all files can be converted to format 0.
After Ok the operation shows the source and destination directory
and gives last chance to stop (if you choosed wrong directories).
Start operation with answer Yes or cancel it with answer No.

Operation will convert all files *.* in source directory and its
subdirectories.
Directories are created in destination, files that are already format 0 or are
not convertable (wrong file format or unknown MIDI version) are copied.
During conversion the action operation can be aborted with the button.
After conversion or abort it will display errors and warnings for
files/directories that were not generated in a text document with notepad.
Read the information (you can also save or print).

Backup the original files since there is more information in format 1


files than in format 0 files (not for playing but for editing or
printing MIDI files).

24. Sort tracks in a format 1 MIDI file


Load a MIDI file, choose menu Convert/Sort Track order.
A dialog opens that shows current tracks of MIDI song.
Each line contains:
Original track number: Track 1 etc.
Track channel number: 1-16 or - (if no channel MIDI events) or
multi (if more than one channel used in this track)
Track title: Title "..." or Tempotrack or none
Track initial program: Program ... or none
Current selected line can be moved with buttons Move Up and Move Down
into direction up or down.
It is not allowed to move Tempotrack (Track 1).
It is not allowed to move a track in front of Tempotrack.
It is not possible to move last track down.
The buttons are disabled in this cases.
When order is finished press Ok for creating a new MIDI with
sorted tracks or press Cancel to abort operation.

25. Select MIDI output device for internal MIDI player


If more than one Windows MCI MIDI players (software, soundcard, keyboard, ...)
are installed then system plays through default MIDI player selected in system
control properties of multimedia drivers.
This menu command (Settings/Midi Output) lets choose between installed
MIDI output devices. Pressing play button of internal player (see 3.)
will play through selected device.
This does not affect external MIDI players, they have their own
settings.

26. Compress MIDI


Load a MIDI file and use this operation to try to make it compacter.
If compression possible then it creates a new MIDI file and opens it
on desktop. It will tell some statistics on compression.
The compression ratio depends on input, usually 10%-15% of original
file size smaller. Files cannot be compressed twice, utility will tell
"Compression not necessary". Invalid files can't be compressed
("Operation failed").

27. Initialize MIDI device


Resets many MIDI parameters to defaults on selected MIDI output device.

28. Humanize MIDI


Load a MIDI file and choose between humanizing
timing or note velocities or both. Choosing nothing of both is not
possible (has no sense). Choose level of humanizing between 1 and 10
where 3 is soft, 5 is medium, 10 is heavy.

Use this function to make computer sequenced or generated midi songs


with exact timing more like played by human, with little inexactness
in timing and key pressure. Try different levels to find a middle between
too exact and too inexact.

Humanizing timing: produces little random timing errors within the


selected level. Timing is limited to remain within 1/16 note of
original timing. This affects the position of all commands and notes
and duration of notes.

Note velocities: varies all note velocities by random within


selected level. This affects the key pressure of note on/off commands
usually notes volume and effects.

29. Note Shift (transpose by halfnotes)


Shifts note values up or down some halfnotes.
Enter a increment number of halfnotes between -12..+12 and
choose channel. Default values are +2 halfnotes (shift up)
applied on all channels except GM drum channel 10.
The result midi contains higher or lower notes.

Use this operation e.g. if you need to transpose midi notes to


level of the lead singer.

30. Map Channel Numbers


Each note is assigned to a channel number 1-16. In General Midi standard
channel 10 is reserved for drums. This utility renumbers all
channel numbers. Fill the mapping table for each channel that you
want to renumber. Channels where old and new value are identical
will not be changed.

Hint: You can map one or more channel numbers at once.

If more track use same channel number then changes are done in all these
tracks.
31. Guess Chords
Open a MIDI file and start the operation. Choose an output text format
(Marker, Lyrics, Text) and frequency (guess chord each bar or half bar).
It will collect the notes of each bar and try to guess a chord. Currently
Major and minor chords are recognized. If too few notes are available or
the program has no idea which chord it might be then the missing chord will be
marked with [?]. The operation creates a new midi file that contains
a new track with chords as text meta events in chosen text format
(e.g. [C], [Cm], [F], [F#m]).
The text events are synchronized to the bar positions.
Some players can show them while playing
(e.g. DOS/Win95 midimach player at http://www2.iicm.edu/midiprog)
Since v2.14 recognizes also chord types 6th, 7th, 7Maj.
Since v2.20 chords can be converted to harmony notes (select a channel between
1 and 16, low velocity).

32. Split Drums


General MIDI drums are always at channel 10. Each note is an other
drum instrument. This operation generates a new track for each
used drum instrument and moves the notes into corresponding track.
When loading such a file into a sequencer then the drum tracks
have separate lines for each drum instrument, which is sometimes
easier to edit or understand.

33. Split Programs


Sometimes midi channels change midi program (sound) several times
within a song. Reason is usually to use more than 16 instruments
in a song, where some channels share more instruments that play
at different times (they don't collide).
This operation collects the notes that are played with certain program
and move them into a separate track. The channel number and sound does not
change, only the display changes when loading the file into a sequencer.
Sometimes this is easier to edit.

34. Replace Notes


This operation lets you define a translation table for notes and their
channel. The table remembers its last content. Use clear if you want
to create a new table. Load *.rpl files if you previously defined
a translation. You can also edit *.rpl files with notepad, they are
simple text files (see midirepl.doc at http://www.iicm.edu/Cpub for
description of this simple format).
Appends lets you edit a new replacement for a note
and adds it at end of table. Insert lets you edit a new replacement and
inserts it before current selected replacement (if table is empty then it
is same as Append. Save your replacement table if the replacements can
also be used later for other files.
Start replacing with OK or cancel it. The table content is remembered
even if you cancel but no replacements are done in this case.
Replacing is done in order of table entries.
Each replacement definition contains old note and channel number and
new note and channel number. Channel numbers are 1-16, 10 is usually drums.
For drum channel it will replace drum instruments (each drum note is a
drum instrument). In non-drum channels it replaces notes.
When old channel number is different to new channel number then
notes are logically moved to the new channel (but not physically moved
into a new track).

35. Change Resolution


MIDI resolution defines number of units per quarternote for whole song
(resolution). A unit is smallest usable pause or note duration in the
song. The smallest usable pause or note is 1/(4*resolution) units
(e.g. for resolution 96 the smallest note is 1/384 = 1/(3*128),
that means that it can be used precisely for trioles of 1/128 notes).
Resolution can be changed without tempo changing for whole song, the
pauses are quantized to the new resolution steps.
96 ppq is recommended for General midi compatible songs.
Some players might not be able to play songs with too high resolution,
reducing resolution with this operation should help.

36. Set copyright information


show copyright text of current MIDI document,
or if no copyright yet available then allows to enter a new copyright text.
The copyright notice is added to first track.

It is not possible to modify an existing copyright with this operation


(this is not allowed)!

Add copyright only if you are owner of copyright, i.e. you are composer of the
song or have licensed the distribution rights for this song from the copyright
owner.

37. Edit track titles


Shows track titles of current selected MIDI document in a list box.
Double click on a title or use of "edit title" button gives opportunity
to change the title text. Press ok when you want to generate a new MIDI
document
with the changed titles or cancel to abort operation.
The old track name(s) are removed from MIDI file and new track name(s) are
inserted at beginning of MIDI track.

38. Calculate tempo (BPM)


Use this operation when you need to know the bpm tempo of an existing song
on cd or tape.
Shows a dialog with a click button. Press it at every beat or hit the space key
or the enter key. The time between two clicks (beats) is used to calculate
beats/min (BPM) and is added to the list. Whenever the current bpm is near to
the previous ones it is used to calculate the average of last bpm values. This
is displayed in the right field.
There is an option field "tempo can change", when this is unchecked then
it is assumed that each click belongs to current tempo calculation.
Click often and with good timing at each beat, then the average value will soon
determine the correct tempo value.
When it is checked then only clicks within a certain time range are assumed to
be used in current average calculation, others start a new tempo calculation
from
beginning.

39. Karaoke lyrics display


It is only a rudimentary karaoke display and does not replace a
Karaoke player.
Load a karaoke file (.kar, midi with text or lyrics or markers)
and play the song with internal player (see 3.).
Scroll information window that the lyrics are visible.
The lyrics are blue synchron to the playing melody.

40. Stretch notes duration


This operation lets define some parameters to stretch (increase or decrease)
duration of notes (midi units)
by percentage or incremental.
Choose between percentage (%) or incremental (+) options. The value field will
change its display format
(value or percentage). Enter a value or percentage (%) or change the value with
the spin control arrows (up/down).
When pressing an arrow longer the speed of changing the value will increase.
Choose all channels or select one channel 1-16. If you want to apply the
operation on only certain
durations (midi units) then enter min and max. units e.g. min=0 max=5 for only
small notes min=50 for larger notes (no max).
Start the operation with OK or abort with cancel.
The operation will read the midi file and modify all matching notes by the
percentage or incremental calculation.
Then it copies input file to a new midi file replacing the new note off
commands.
The new midi file will be opened automatically in a new window.

41. Mute channel/tracks


This operation lets select tracks or channels (or both) to mute the
corresponding data by one of 4 choosable methods.
That is very useful when you want a certain track or channel not to play
(e.g. mute melody in karaoke) or when you want to play a certain instrument
self on a keyboard.

Selection: You can multiselect with mouse and control/shift keys


in standard way as any Windows multi selection (like Explorer file selection)
* If you select only tracks than any channels on this track are used for mute
operation.
* If you select only channels than any tracks that contain these channels are
used for mute operation.
* If you select both tracks and channels then only those tracks are used that
contain one of the given channels
and only these matching tracks and channels are used for mute operation.
(i.e. selecting both lists does an AND combination of tracks and channels).

Choose one of 4 mute operation methods:


* delete all matching events:
this deletes any events that match the track/channel selection.
* delete notes:
this deletes the matching notes and some depending events
(pitchbend, aftertouch, polyaftertouch) but does not delete controls
and programs. This is useful if you want to play these deleted notes
self with original settings.
* silent:
sets channel volume of matching tracks to 0 (silent). The notes
are still playing. This is useful if you want sing a muted melody (karaoke)
and still need the notes displayed on screen with a sequencer or special
midi player.
* silent notes:
sets note velocity to minimum (1), that is the pressure of notes starting
on a keyboard. If pressing the key with low pressure then it notes play
silent (1 is usually not listenable).
When all selections are done then press ok button to create a copy of the midi
file
with muted tracks or channels. If you don't select any track or channel then
surely no changes are made. The new midi file will be opened in a new
window.
Warning: The operation can't be undone so you need to keep the original
files if you want the muted tracks back.

Since 2.17 the initial instrument names for channels are shown (assuming GM)
and the tracknames.

42. Generate setup measure


This operation inserts a new tact bar (measure) with optional
Reset sysex commands as checked in the dialog and initializes
some parameters at beginning of each track that seem not to be initialized
and might be problem when playing files in a sequence (or medley).
Following Reset commands can be inserted:
GM Reset: initialize General midi compatible devices
XG Reset: initialize XG compatible devices (Yamaha)
GS Reset: initialize GS compatible devices (Roland)
Following midi parameters are initialized to GM default values
if values are not initialized before playing first note in track:
volume controller: 100
balance controller: center
program: Piano (except drum channel 10)
pitchbend: center (no pitch bending)
pitchbend range: +/-2 halftones (with RPN commands, not supported
work on all devices)

43. Show or add secret copyright


This function is for owners of a copyright to a song or midi file
and fear that somebody illegally removes or overwrites standard
copyright field.
The secret copyright can prove your copyright when somebody else tries
to steal it.

If a secret copyright (done with GNMIDI) already exists then it displays


this information.
If no secret copyright found, but standard copyright is available then
this copyright information is added as secret copyright into the file.
If no standard and no secret copyright found then program asks for
a copyright line. Use only ASCII characters (characters space - ~),
others are not stored.

44. Set tempo (bpm)


This function asks for a new tempo in beats per minutes between 40 and 240.
Floating point values are allowed (40.0-240.0).
Start operation with OK button this will generate a new modified midi file
if the input value is valid.
All existing tempo values are removed and the new tempo is inserted
as a single tempo change at beginning of song.

45. Check all midi files


This operation asks for a directory. Choose one from the dialog that
contains midi files and press ok to check all midi files for errors
and warnings.
You can abort during file checking.
Information about midi files in a directory are stored in gnmiderr.chk
text files.
If existing they are loaded before a directory is checked and
does not check files with same filename and file size again.
Therefore checkings of updated directories are quickly done.
If you want a directory to check all files again then simply remove the
.chk file from this directory.
Files in subdirectories are checked too.
46. Create new midi file
This operation creates an empty format 1 midi file with some
initializations and one measure without notes.
You can use it as start for sequencing a new song.

47. Browse midi directory


This operation lets choose a directory and shows contained midi files
in a listbox with information. The operation uses gnmiderr.chk files
generated by check midi files operation (see 45) to load information from
directory quicker if the file is nearly up-to-date.
You can scroll in the list with scrollbar and arrow keys and select
one or more lines to load them at once with OK button. You can abort
with cancel button.

48. Reverse midi (mirror)


This operation mirrors position of notes of current midi song.
This allows to play a midi song reverse.
The mirrored result can be reversed again but it might be slightly different to
original (some commands are not mirrored, e.g. tempo, tact, text).

49. Check midi natural instrument note ranges


This operation loads the note range definition file for a certain device
(usually the text file gm.rng which contains note ranges of
some General MIDI standard instruments).
All notes in current midi file are checked against the note range definitions
and warnings reported if a note is outside the range specified in
the range definitions for the instrument which plays the note.
The note range definition file can be modified or a new definition file
defined and activated by changing gnmidi.ini in Windows directory:

[Settings]
RangeDefinitions=myranges.rng

The range definition file must be in GNMIDI installation directory.

50. Remove hanging notes


This operation checks current midi file for existing notes that are not
stopped (missing note off command). It considers pedal commands hold and
sostenuto and all-notes-off. A message tells how many notes are not stopped
and asks if these notes should be removed. The cleaned file is opened in a new
window.

51. Delete midi tracks


This operation starts same dialog as edit track titles operation.
You can edit titles and delete tracks at same time.
Select a track and press the delete track button to mark it for deleting.
You can abort the operation by pressing cancel or entering a new title
for this track. Tracks that should be deleted are marked with title
!delete!
Press OK to finish the operation. The modified file is opened in a new
window.

52.MIDI to ASCII Text


Activate the window containing the MIDI file by click on window title.
Press "A" Toolbutton or choose operation in menu. A new window with
the midi content displayed in ASCII text is opened.
You can edit this text file with a text editor.
Choose the edit pencil symbol in toolbar (or edit in file menu)
to open the file with your standard text editor.

53. ASCII Text to MIDI


Activate the window with the ASCII text.
Press "A" Toolbutton or choose operation from menu.
The Text will be compiled into midi file, if syntax contains no errors.
You can find a description of language syntax in free utility txt2midi.zip.
Program names (of GM instruments) can be used by number 0-127 or
from following GM instrument list:
0 GrandPno
1 BritePno
2 El.Grand
3 HnkyTonk
4 ElPiano1
5 ElPiano2
6 Harpsich
7 Clavi.
8 Celesta
9 Glocken
10 MusicBox
11 Vibes
12 Marimba
13 Xylophon
14 TubulBel
15 Dulcimer
16 DrawOrgn
17 PercOrgn
18 RockOrgn
19 ChrcOrgn
20 ReedOrgn
21 Acordion
22 Harmnica
23 TangoAcd
24 NylonGtr
25 SteelGtr
26 JazzGtr
27 CleanGtr
28 MuteGtr
29 Ovrdrive
30 Distortd
31 Harmnics
32 WoodBass
33 FngrBass
34 PickBass
35 Fretless
36 SlapBas1
37 SlapBas2
38 SynBass1
39 SynBass2
40 Violin
41 Viola
42 Cello
43 Contra
44 TremStrg
45 Pizzicto
46 Harp
47 Timpani
48 Ensmble1
49 Ensmble2
50 SynStrg1
51 SynStrg2
52 AahChoir
53 OohChoir
54 SynChoir
55 OrchHit
56 Trumpet
57 Trombone
58 Tuba
59 MuteTrum
60 FrenchHr
61 BrasSect
62 SynBras1
63 SynBras2
64 SprnoSax
65 AltoSax
66 TenorSax
67 BariSax
68 Oboe
69 EnglHorn
70 Bassoon
71 Clarinet
72 Piccolo
73 Flute
74 Recorder
75 PanFlute
76 Bottle
77 Shakhchi
78 Whistle
79 Ocarina
80 SquareLd
81 SawLd
82 CaliopLd
83 ChiffLd
84 CharanLd
85 VoiceLd
86 FifthLd
87 Bass&Ld
88 NewAgePd
89 WarmPd
90 PolySyPd
91 ChoirPd
92 BowedPd
93 MetalPd
94 HaloPd
95 SweepPd
96 Rain
97 SoundTrk
98 Crystal
99 Atmosphr
100 Bright
101 Goblin
102 Echoes
103 SciFi
104 Sitar
105 Banjo
106 Shamisen
107 Koto
108 Kalimba
109 Bagpipe
110 Fiddle
111 Shanai
112 TnklBell
113 Agogo
114 StlDrum
115 WoodBlok
116 TaikoDrm
117 MelodTom
118 SynthTom
119 RevCymbl
120 FretNoiz
121 BrthNoiz
122 Seashore
123 Tweet
124 Telphone
125 Helicptr
126 Applause
127 Gunshot
The names must be written exactly.

54. Guess song key and optionally set midi song key
Load a midi file and start this operation. It will analyze the midi
song for best choice of a song key (number of # or b, major or minor).
That is the one which would require minimum exception symbols on a
score sheet. The guessed key is suggested in a message box and
you are asked if want to set this key as song key signature in the
midi file. If choosing yes then a new modified midi file is created
that has this key, existing key settings are replaced.
If choosing no then operation does not create a modified midi file.
Note that a song can be printed on scoresheet with any key, with a bad
choice only the number of necessary exception symbols within measures
can be high and score might be difficult to read.

55. Show original midi song keys


This operation analyzes midi file and writes a list of used key settings
into a text file that is shown with text browser (notepad).
The song position is shown where the key is changed, and key name meaning,
is explained by the number of # or b on a scoresheet.
E.g. key C Major has no #, key Am has no b,
key D Major has two #, key Bm has 2 b.
Default key is C, if it is not set within song.

56. MIDI time calculator (calculate position, time, tact, tempo within a song)
The MIDI calculator opens a dialog that lets you enter a position, or beat number
or time, or measure position and calculates the position (midi unit) within the
song. If a position exceeds end of song then the end position of song is shown.
From this position (unit) various information values are calculated for current
song:
beat number, measure number, real time, tact, tempo
The values have following format and meaning:
unit: number of midi units from beginning of song (integral number e.g. 30000)
time: time since beginning of song ( minutes:seconds.milliseconds )
beat: beats (= quarternotes) since beginning of song ( beats.units )
measure: measures since beginning of song ( measures.beats.units )
tact: tact at this song position ( nominator / denominator e.g. 4/4, 6/8,
3/4 )
tempo: tempo at this song position ( beats per minute e.g. 120.0 )
57. Player status information
With Ctrl-I a dialog with status information about the current playing midi
file (with internal MIDI player) is shown. The info dialog displays current
midi filename, midi position and time, current tact and tempo.

58. Find text


With Ctrl-F a dialog lets enter a word that should be searched in midi files,
after ok you can select the starting directory for search, the midi files in
this directory and subdirectories are searched for the word, this includes
the copyright, tracknames, lyrics, markers.
First search might take long time, information will be collected for
future searches that then any search will speed up. This speed optimization
works only if the directories are writable, a file gnmidtxt.fnd will be
generated in each directory.
The matching filenames will be listed in a new text file with notepad.
You can save this content or use it to create a batch file for
processing the matching files.

New utilities might be added from time to time. Check out the www site for
new versions.

[7] SUGGESTIONS / COMMENTS / BUG REPORTS / QUESTIONS

WWW: http://www.gnmidi.com
(old address http://www.iicm.edu/Cpub )
contains all my dos/windows/unix MIDI programs
EMAIL: info@gnmidi.com

Support only for registered users at support@gnmidi.com


Bug reports, comments, suggestions also from testers welcome.

Report abuses to abuse@gnmidi.com

[8] SHAREWARE

GNMIDI 2.0 and later is not freeware it is shareware.


Registration currently costs only 20 Euro or 25 US$ or 40 DM or 280 ATS.
Fill order form correctly that we can send you the license and newest program
version
on floppy disk [see 9]). The price might change anytime so check out the newest
demo
version for current price. So be quick to reserve your license for low price.
Registration is then valid for GNMIDI 2.0 and minor upgrades 2.01-2.99
(download see [7]). It is not possible to get license for a certain
minor version or an old version, only a major version. This is your
benefit, since this includes fixing problems that might be found and
advancing the product with new features.

Keyrings are not accepted anymore as payment (as earlier).

Shareware production takes much time, so please register after testing (5 days)
if you like it. The concept makes it safe for you, you don't purchase
something that you haven't tried and the feature list increases
without purchasing extra for updates. You can contact author directly
and discuss problems or wishes and you don't need to wait several month
for an updated version, because this shareware updates more often.

[9] REGISTRATION FORM


In text file README.TXT you will find registration form
or use the form inside program in help menu.
Print the filled form or send it by email and price with post.
If you have no printer then write your order good readable
on paper.
If using Regsoft.com for ordering then you don't need to fill
this form extra.

Rules:
o Don't use pseudonyms or shortcuts, use full name
o The information must be complete that a license file for you can be
generated (e.g. send missing information by email or with letter).
o Use your international post address
o Use (if possible) only english characters and no special characters
from your language (e.g. japanese, chinese, ...)
o After valid registration we create a personal license file from your
personal data
o normal License is only valid for single users, if you more than one
person to use the program (e.g. company) then tell us the
number of users (price multiplies by this number) or
ask us for conditions of a multiuser license.
o After valid registration we send license on floppy disk with priority
mail to given address and name.
o In case of wrong registration (e.g. price changed, missing information,
not enough payment) we try to contact you by email.
o Your personal data won't be given to others.

Send the registration fee and the filled registration form to


=======================
Guenter Nagler
Dr. Robert-Herth Str. 5
A-8120 Peggau
Austria
=======================

You get a personal license file on a floppy disk. Program and updates
can be downloaded from http://www.iicm.edu/Cpub

[10] CHANGES:
25.4.1998:
* bug fixed: saving failed when saving result to existing file or
different drive to that containing windows temporary directory.
* temporary files are prefered written to same directory as
loaded file, alternative directory is windows temporary directory.
This makes it easier when doing Save As, it suggests better
directory.
Temporary files are called new0*.mid
* added feature: rhythmic controls

15.5.1998:
* added track information output to MIDI window
* added option short/verbose track information to menu
* remembering medley song list and its order also if canceling dialog

25.5.1998:
* stricter handling of bad MIDI files when loading

9.9.1998:
* converter .kar -> MIDI with lyrics added
* converter MIDI with lyrics ->.kar added
* toolbar save replaced by "save As" so that it can be renamed and saved
at different location

19.9.1998:
* added copy information to clipboard
(allows exporting information or printing with other program,
e.g. wordpad)
* show lyrics information
* allow scrolling of active window with keys
* trim mute song ending if longer than a second (miditrim -end)
* show maximum notepolyphony operation
* Reset GM, GS, XG

15.10.1998:
* added settings menu for MIDI player and other options
* added settings/MIDI Standard option (MIDI preparation for playing
with certain MIDI mode)

30.10.1998:
* convert all MIDI files from directory and subdirectories into format 0
must choose any file in directory with MIDIs and choose a destination
directory where to copy the results
* version 2.0 created. It becomes keyringware (shareware).
+ testing 5 days after installing shareware allowed, then must
register or delete software, using it longer without registering
is illegal.
+ cheap registration (for sending one keyring)
+ now program can be distributed (also on shareware cd's,
bundles etc.).
3.11.1998 v2.01
* operation "sort track order" added

14.11.1998 v2.02
* operation Change Volume extended by real volume control change.
if volume controls are missing for channel then default volume controls
are inserted and modified.
* Select MIDI output device for internal player
Menu Settings/Midi Output/...

27.11.1998 v2.03
* temporary files deleted if not saved to a file
* sort dialog channel output corrected
* operation compress MIDI added
* splitted large toolbar into two smaller ones, they are separately
movable and dockable.
* quicker loading of MIDI files
* more recent filenames remembered in file open menu

1.12.1998 v2.04
* Bug of v2.03 fixed: deleting temporary files after playing MIDI
with internal or external player, safety included so that
original files are not deleted by accident. With previous version
2.03 original files could have been deleted by accident.
* Closing modified MIDI files will ask if modified file should
be saved, if not then file will be deleted. If currently playing with
internal player then player stops.
* play internal button as toggle between play and stop if using it
for same MIDI file:
when playing it is checked (down) and click stops playing
when stopped it is not checked (up) and click starts playing
When clicking it while other MIDI file is selected, it will
stop old play and start new play.
* New operation Initialize MIDI device (menu File/Reset MIDI
device/Initialize)

2.1.1999 v2.05
* MIDI humanize integrated
* Registered users get a personal license file gnmidi.txt that
must be copied into same directory as gnmidi.exe,
if you already registered and didn't get license file
then send me email.
* Unregistered free use for 5 days reminds user to register.
Might also remind during operations randomly.
For registered users no more annoying registering reminders
appear (if correctly copied file into same directory where
gnmidi.exe is placed.
* Registration price is a correctly filled registration form and a
keyring (keyring). Then your personal license file will be
sent to you by Internet Email for no extra costs. If you want to
get program and license file on floppy disk (PC-HD 1.44MB) then add 5$ (US
currency)
or Eurocheck (EC) ATS 50.-- (Austrian currency) or 5.-- EUR
(European currency) for disk, package and shipping costs.

16.1.1999
* open midi files from command line:
gnmidi filename.mid
* show registration information in status bar (registered to or not
registered)

21.1.1999
* note shift operation (simple transpose), increments all notes of
specified channel(s) by number of halfnotes (-12..+12).

22.1.1999 v2.06 released

23.1.1999
* midi2txt operation integrated, document lists the readable midi
commands, display limited, larger text must be browsed with
own text browser or editor (e.g. wordpad)
* recognize if documents are modified by external editor, updates
document information
* txt2midi operation integrated, if current document is a text generated
by midi2txt operation then this text can be converted back into a new
midi file. Textfile content must be according to midi2txt output file
syntax. Textfiles with syntax errors are not converted.

26.1.1999
* drag one or more files (from Windows Explorer) into program,
all MIDI documents are automatically loaded

31.1.1999
* map channel numbers operation added

1.2.1999 v2.07 released

27.2.1999
* guess chords operation added
* split drums operation added
* split programs operation added
* replace notes operation added

1.3.1999 v2.08 released

2.3.1999
* support format 0 files for guess chord
* recent file list reduced to 10 because of limited number of available
key shortcuts (0-9)
* redrawn icons
* fixed bug in splitting operations that produced several duplicated lyrics
* added count-in operation
* added edit button to toolbar (editing midi as ascii text with notepad)

7.3.1999
* successful check file format result now in status bar instead of an
information dialog
* added logging of commands into gnmidi.log
* several improvements in DOS utilities, GNMIDI profits also from them

8.3.1999 v2.09 released

14.3.1999
* added change resolution

20.3.1999
* show/add copyright information
* show/edit track titles
* scrolling text in information window now more comfortabler (page, line)
* added some shortcut keys for operations
(polyphony=Ctrl-P, titles=Ctrl-T, edit text=Ctrl-E)
* directory chooser dialog (used by midi format to 0 in directories)
* replace notes dialog load/save operation remembers recently used directory
* edit text for midi document now generates a notepad text file from midi
information

22.3.1999 v2.10 released

9.4.1999 - 11.4.1999
* translation to German (now program is multilingual English and German)
depending on System language other text resources are used
* update of all windows when changing verbose track info menu option
* coloring fields in information window

14.4.1999
* calculate tempo (BPM)

16.4.1999 - 18.4.1999
* translation of GNMIDI.DOC to German GNMIDI.DOK

22.4.1999
* assign operation to button "0" when all documents closed:
convert all midi files to format 0

24.4.1999
* added rudimentare karaoke display in information window
* scroll information window content left right with keys
26.4.1999 v2.11 released

7.5.1999
* solved a minor miditran problem with channel 16

15.5.1999
* version number in about box
* added guess chords options dialog (choose text format and frequency)

20.5.1999
* added stretch notes duration

24.5.1999
* new registration price: 20 Euro or 25 US$ or 40 DM or 280 ATS
license and newest program version will be sent on floppy disk only

25.5.1999 version 2.12 released

17.6.1999 - 25.6.1999
* added operation mute with 4 different methods (to play karaoke or play an
instrument track self):
delete all events for given channel/track
delete only notes for given channel/track
silent channel/track by changing volume
silent notes of channel/track by changing their velocities

27.6.1999
* added operation "generate setup measure"

28.6.1999 version 2.13 released

1.7.1999 online registration possible at regsoft.com

2.7.1999 - 3.7.1999
* improved chord guessing including 6th, 7th, 7Maj chords

23.7.1999 - 25.7.1999
* added new function "secret copyright"

25.7.1999
* added online order (help menu)
* added link to GNMIDI homepage (help menu), here you can download new version

26.7.1999 released 2.14

6.8.1999
* found and repaired bug in midiio that caused problem with stretch notes

6.8.-7.8.1999
* added new feature check all midi files

9.8.1999 released 2.15

16.8.1999
* found problem with encrypted copyright,the encoded commands can affect
sound of song
* new encoding of copyright within song
23.8.1999
* cut has more time units to choose (real time, midi units, beats)
* midi reverse added

26.8.1999
* save as: move temporary midi files (new00*.mid), copy all other files

28.8.1999
* GM, GS, XG, Init button can be set to play userdefined midi file
modify gnmidi.ini
[Settings]
Init=drive:\\path\filename.mid
GM=drive:\\path\filename.mid
GS=drive:\\path\filename.mid
XG=drive:\\path\filename.mid
if not specified then a temporary standard midi sequence is played.

2.9.1999
* added midi check notes range operation

6.9.1999 released 2.16 [!!! don't use this version!]

10.9.1999 WARNING: detected a severe bug in save operations of 2.16


don't use this version, it could destroy files!
Use newer version 2.17 or higher where problem is solved

10.9.1999 make mute dialog more user friendly by displaying track names and
initial program for each channel (assuming GM).

11.9.1999 added remove hanging notes operation

13.9.1999 released 2.17

1.10.1999 fixed problem with time limited license and saving in different
directory

2.10.1999 added delete track(s) operation


2.10.1999 karaoke to midi conversion: move spaces at left side of words to right
side

4.10.1999 released 2.18

25.10.1999 improved midi to karaoke converter by splitting channels into


different tracks.
26.10.1999 added operation guess song key and optionally set song key.

7.11.1999 added operation show song keys used in midi file


7.11.1999 added midi time calculator

13.11.1999 fixed minor bug in demo: temporary files new000*.mid were not deleted
13.11.1999 added Roland option to kar->midi conversion

14.11.1999 better handling of temporary files, located in Windows temp directory


windows remember original filename after operation, shown in title of
conversion
results, file cache for deleting temporary files later if they
are during gnmidi session in use by an application (e.g. external player
or editor).
14.11.1999 smaller waiting time during legal demo use (max. 5 days after
installation)
14.11.1999 added player status information dialog

17.11.1999 released 2.19

19.11.1999 save main window location, save position of toolbars


19.11.1999 midi -> .kar support Roland midi with sysex lyrics

5.12.1999 found and fixed a minor bug in gnmiderr.chk files:


the resolution value was not correct, if you need the value
correctly then delete all gnmiderr.chk files and restart error
check in directories.

8.12.1999 added operation search text in midi files


10.12.1999 removed the 1/4 pause between medley songs

1.1.2000 http://www.gnmidi.com started, this is "GNMIDI solutions"


homepage, new email addresses are available:

info@gnmidi.com ... about order, price, download, ideas, demo


support@gnmidi.com ... support for registered users, questions,
bug reports, ideas
abuse@gnmidi.com ... tell me about abuse of this shareware program,
illegal copies, stolen licenses,
unauthorized sellings

4.1.2000 changed program names that they are equal in text conversion and
information window
5.1.2000 XF support in some operations (midifix, midierr, midi2txt)
6.1.2000 fixed problem with midi playing status when same midi file
was opened more than once (e.g. could not stop midi or stopped
already after closing first window)
8.1.2000 default text editor/browser "notepad" now can be configured in
gnmidi.ini by setting
[Settings]
TextEditor=c:\programs\myeditor.exe
the filename will be added as first argument to the commandline
15.1.2000 .kar -> XF converter (SL02 version)
17.1.2000 increased compatibility that some karaoke players
are able to read .kar files generated by GNMIDI
18.1.2000 added option to convert the guessed chords to harmony notes
19.1.2000 added channel option for harmony notes
20.1.2000 released 2.20

You might also like