GNMIDI

Table of Contents Keyword Index

Sysex Transfer
Previous  Top  Next


dialogsysex

This dialog is used for sending and receiving sysex data dumps between computer and external MIDI devices (keyboard, sound modules ...) and reverse through MIDI cable. It has comfortable features like describing a MIDI sysex command or assign a sysex command (or sysex file) to a button to quickly send the data by a click.

Hint: key combination Alt+X opens this dialog.

Input device
displays the current selected MIDI input device name. It can be changed in menu Settings. The number behind the name tells the number of bytes received.  
 
Output device
displays the current selected MIDI output device name. It can be changed in menu Settings. The number behind the name tells the number of bytes sent.  
 
Receiving box
The list box in the Receive sysex dump group contains information about incoming sysex data (one line per sysex command).  
 
Clear
deletes the content of the receiving box. Resets the number of transferred data back to 0.  
 
save .syx file
saves all selected sysex data lines of the receiving box into a binary sysex data file (.syx).  
 
save .dmp file
saves all selected sysex data lines of the receiving box into a readable and editable sysex data text file (.dmp). The .dmp file contains hexadecimal values.  
 
describe ...
select a received sysex data line of the receiving box and describe the meaning of the sysex data. Few data bytes from beginning of the sysex command are used to recognize the meaning of a sysex in future when receiving a similar sysex again e.g. receiving song data dump ...  
 
MIDI clock
displays a star symbol in the rectangle box when receiving MIDI data. It should blink when the MIDI connection is working.  

Send sysex edit field
enter a short hexadecimal sysex command or a filename of a predefined .syx or .dmp file to send the data using send button  
 
send
sends data entered in the send sysex edit field (left side of the button).  
 
send file ...
choose a .syx or .dmp file that will be sent  

choose sysex item
this combo box contains user defined sysex elements that will be sent when the item is selected. The combo box contains also possibility to define a new sysex element self.  
 
define sysex item
user defined sysex elements can be named and assigned to a button or chosen from sysex item combo box. A dialog is opened where the new sysex element can be defined.  
 
sysex element buttons
some space in the dialog is reserved for your own buttons that send certain sysex commands. The buttons show the name of the sysex element in the caption. Two buttons are already defined (Identify, GM Reset). They can be removed in file sendsyx.txt and replaced using define sysex item if wanted.  

Sysex messages
a sysex message (system exclusive message) starts with F0 (SOX) then follow data bytes of range 0-127 and at end the sysex is terminated by F7 (EOX). Short sysex messages are used to transfer simple commands with some parameters. Large sysex messages are used to transfer songs or data dumps (which store the current settings of a device). Since the transferred data are only 7bit values, transferred data is usually encoded.  
 

dialogsendsysex

Send hexadecimal sysex message
enter a sysex command in hexadecimal representation. That is the usual form used in device manuals to list all supported MIDI sysex commands. Press send button or Enter or Return key to send the data to the output device if it is a valid sysex message F0 ... F7. It does not care if the hexadecimal characters are written in lower or upper case.  
e.g. some KORG models accept following identify command  
   f0 7e 0 6 1 f7
If the hexadecimal sysex string is not valid then the dialog will beep and select the part of the string that looks wrong. After correct sending the connected device might respond or perform some action.  
 
After sending the data GNMIDI will wait certain delay time to give the device enough time to handle the transferred data.  
The delay can be modified in gnmidi.ini file by following setting:
       [Settings]
       SendSyxDelay=5000

Hint: If you are sure that the command is done and the device doesn't need more time then you could abort the delay by pressing <Esc> key.  

Send sysex file (.syx)
sysex files (with file extension .syx) contain one or more sysex commands. The files can be huge (e.g. dump of all keyboard songs, all keyboard settings). Press button send file and choose a valid .syx file to send all valid sysex commands in this file to the output device. Or enter the full path of the sysex file into the sysex edit field and press send button. If the file exists and contains valid sysex data then it will be transferred.  

After sending each sysex the program will wait certain delay to give the device enough time to handle the data.  

Send readable sysex file (.dmp)
.dmp file contains hexadecimal formatted sysex data lines. The lines look like:  
       00000: F0 42 30 49 4E 06 F7
The hexadecimal number before the sysex data bytes (including the colon) is optional, specifying only  
       F0 42 30 49 4E 06 F7 
in a .dmp file is allowed). GNMIDI stores the current byte position of a corresponding .syx file in this offset number when saving sysex data to a .dmp file. You can change the .dmp file without need for updating the offset values, the values are not used at reading a .dmp file.  
Optionally a ! character can be used to append a comment to a line.  
       F0 42 30 49 4E 06 F7 ! GM Reset
The comment is not part of the sysex data. GNMIDI inserts such comment for each known sysex. E.g.  
  00000: F0 42 30 49 4E 06 F7  ! KORG i30 change to song mode

Maximum line length is 1024 characters in a .dmp file. Insert line breaks between data values that the lines are short (which is easier for reading and editing). GNMIDI writes 16 data bytes per line.  

When the .dmp file contains invalid formatted line then the sending will not be performed and an error message tells which line contains the problem.  

After sending the data from .dmp file the program will wait certain delay after each sysex command to give the device enough time to handle the data.  


dialogdefinesysex

Define own sysex data items
Often used sysex commands can be stored as sysex items. They can be sent comfortably by selecting a list box item or pressing a self defined button.  
The second item in the send sysex combo drop down list is always "define sysex item". This item opens a dialog that defines a new sysex item that will be added to the combo drop down list and will be assigned to a send button if it is one of the first 5 items.  

A sysex data item consists of fields  
·sysex   enter a sysex command F0 ... F7 in hexadecimal numbers or enter a .syx or .dmp filename, use Browse to select a file.  
·caption    enter a caption text for the combo list box item or for a button, use & prefix to declare a key shortcut Alt+(next character)  
·delay   enter a delay time in milliseconds that the program must wait after sending this sysex command (default 5000 ms).  

After entering a complete and correct sysex data item the combo drop down list and up to five send item buttons will be updated and can be used. Currently this dialog can only be used to define new items. Modifying or deleting existing items can only be done by modifying the text file where the definitions are stored.  

gnmidi.ini contains a setting that tells which file contains the sysex item definitions:  
       [Settings]
       SendSyxFile=sendsyx.txt

The self defined items are added to the combo drop down list and first 5 ones are assigned to buttons in the send sysex area.  

The text file contains the item descriptions in following form:  
       [SendSyx]
       Caption=&Identify
       Sysex=f0 7e 0 6 1 f7
       Delay=500

       [SendSyx]
       Caption=&Church Sounds
       Sysex=c:\sounds\sysex\organ.syx
       Delay=23000

       [SendSyx]
       ... 
       [SendSyx]
       ...

Hint: gnmidi.log will contain error messages if the sysex item definitions file contains incorrect definitions.  

Send sysex data item from self defined button
First 5 valid self defined data items are assigned to 5 reserved buttons in the send sysex area. The caption is displayed on the button. If caption contains an ampersand character & then next character can be used for a key shortcut Alt+(next character) if this shortcut is not used elsewhere in the dialog.  
e.g. caption &Identify will be displayed as Identify on the button and key combination Alt+I can be used to send this sysex item (if Alt+I key is not used elsewhere in the dialog as shortcut).  

Send sysex data items from the user defined combo box items
All valid self defined sysex items are added to the combo box in the send area. The first item does not send anything, it clears the send sysex edit field. The second item opens the dialog to define a new sysex data item.  
When opening the drop down combo box list and selecting a sysex data item with left mouse click then this item will be sent to the output device.  
When selecting combo box list items with arrow keys then the item info will be copied into the send sysex edit box and then this data can be sent from the edit box (send button or Enter/Return key).  

Receive sysex dumps
First choose the input MIDI device that will be used for receiving MIDI data.  
The small box in the receive sysex dump area should blink, this is a proof that the input device is active (a working MIDI device is sending MIDI clock F8 or activesense FE command steadily!).  
In order to receive sysex data you either need to start a send sysex dump operation on the MIDI device or send a sysex request command to the device first. Some operations on the MIDI device might automatically send a sysex notification (e.g. change to certain mode). Some MIDI devices send sysex data only when certain option on the device is set.  

Every caught sysex command will be added to the list in the center, it will be displayed in hexadecimal numbers F0 ... F7 (longer sysex data will only be displayed partially, but the complete received sysex is still remembered) . While the sysex command is not complete it will be displayed ... without the F7 at end, when the sysex transfer completes then the ... F7 will be added.  

The current list of sysex messages can be cleared (removes all sysex and resets transfer counters to 0). Individual sysex commands can be selected inside the list by clicking with the mouse on the line. Selected sysex commands can be removed by using clear after selection. Selected sysex commands can be saved to file (.syx or .dmp).  

Describe sysex commands
Select one of the received sysex commands and click on the describe ... button. Look into your MIDI device manual to find out what this sysex command means. First 10 hexadecimal values of the received sysex are displayed in the edit field. Only a part of the sysex beginning is necessary to identify the type of command. You can delete unnecessary numbers at end of the sysex or insert more numbers if less or more bytes are significant to identify the meaning.  
Special characters can be used as wildcards to skip meaningless numbers or numbers that are counters:  
? this character inside the hexadecimal sysex part will match any byte number [0-7f]  
# this character inside the hexadecimal sysex part will match any byte number [0-7f] and remembers the byte number of a matching sysex at this position.    The number can be added to the sysex description using the # character as placeholder  

A sysex description text to a matching sysex will be  
·displayed for received sysex as [...]  
·displayed when sending such a sysex  
·added as comment when saving a .dmp file  

Currently the describe sysex dialog can only be used to define new descriptions. Modifying or deleting existing descriptions can only be done by modifying the sysex description file where the descriptions are stored:  

Following setting in gnmidi.ini tells which file contains the sysex descriptions:  
       [Settings]
       SysexDescriptionFile=describesyx.txt

A stored sysex description in the sysex description file looks like

       [KORG i30 change to song mode]
       F0 42 30 49 4E 06 F7

This will display description when this sysex is received as:
       F0 42 30 49 4E 06 F7 [KORG i30 change to song mode]

For longer sysex data it is sufficient to specify beginning of sysex, the character # can be used as place holder of a number information that can be used in the description of sysex, e.g.  

       [KORG i30 style block #]
       F0 42 30 49 65 #
will describe sysex F0 42 30 49 65 02 by following line:  
       F0 42 30 49 65 02 00 20 00 00 00 [KORG i30 style block 2]

Hint: Sysex data in hexadecimal numbers and their meaning can be found in manual of your MIDI device. Read also in manual to your MIDI device how to receive and send sysex dumps.

Important notice for sending sysex from file
the program waits a certain delay to give the MIDI device enough time to consummate and handle sysex data (default 5 seconds additionally to the transfer time). That is usually enough time to decode and store larger data block but can be too small if sending a series of dump requests where each might deliver much data. If the device has not enough time then it could fail to handle (larger) sysex data properly.  
The default waiting time between sending sysex commands can be changed with following gnmidi.ini setting:  
       [Settings]
       SendSyxDelay=15000
(this would set the delay to 15 seconds)  

Hint: For self defined sysex items you can define the wait time individually for each sysex item.