Archive for January, 2005

SyxLoader

Friday, January 14th, 2005

SyxLoader is a little tool for sending MIDI system exclusive data from SYX Files (.syx) or Standard MIDI Files (.mid) to your MIDI devices.

SyxLoader

About SYX files
SYX files are the simplest way to store system exclusive data. They contain raw MIDI data in one or more blocks as transmitted via MIDI when performing a bulk dump. Unlike SMF, no timing information is included. The only thing a parser has to know or assume about a SYX file is that one or more data blocks may occur, each beginning with system exclusive status byte F0h and ending with F7h (end of exclusive, EOX). The contents in between are not of parsers interest but only for the dedicated MIDI device.

About Standard MIDI Files (SMF)
SMF are a common and standardized way to interchange time-stamped MIDI data between computers or MIDI devices. The file format was specified by the MIDI Manufacturers Association (MMA).

Quick Guide
Files can be opened as usual but drag & drop is supported and recommended. Some keyboard shortcuts are provided for basic control. The Save as.. allows you to save (and thus convert) a loaded SYX file to an SMF.

Menu File

There is an Offline option to close the MIDI output and make it available to other applications without closing SyxLoader. May be useful.

Menu MIDI-Output

Transmission can be paused and resumed. This is not really an essential option for a sysex tool as most MIDI devices do not like interruptions. It may be useful if you put several dumps with distinct pauses into one file and stop transmission to change the MIDI output.

While sending

In between ..
SyxLoader splits big sysex events into parts of 1024 bytes by default. To get this done internally, the subsequent parts are handled as separate events with status byte F7h (EOX). Delta time in ticks between these events is calculated as follows:

Brainer

Measure warp
With the Save as… option there is one thing to mention about the saved SMF: In case they contain music next to sysex data you will experience a measure warp along the timeline. This is due to SyxLoaders fragmentation algorithm which not only splits big sysex blocks into small ones but also shifts the position of all subsequent events to the amount of calculated delta times; see the animated GIF below. This warping is a feature, not a bug.

Measure warp

Update for Version 1.5 (12. August 2007)
Recently a user contacted me, who was not able to get just one sysex dump out of his Miditech MIDIFACE USB interface without experiencing a sporadic data loss and ridiculous amounts of data bytes wrongly transmitted on the MIDI output. So I ordered a MIDIFACE myself and found it to be one of those USB class-compliant interfaces which do not need a special driver and just work out of the box. They are sometimes called “driverless”, but of course they are not. Instead — under Windows XP — it is the OS’s usbaudio.sys driver which handles them.

It turned out that with usbaudio.sys an application should not pass a big sysex event with more than one call of midiOutLongMsg() unless you want the output data to be severely corrupted. In other words, the driver and probably all thereby driven class-compliant MIDI interfaces will handle sysex data correctly if you avoid the commonly used split output buffering. A typical drawback of usbaudio.sys are blocking calls to midiOutLongMsg() that will not return until the driver has synchronously transmitted all of the passed MIDI data.

SyxLoader now offers a preferences dialog to control the splitting behaviour. With Maximum Blocksize you may either vary the split size or — recommended, if you use a class-compliant device — disable the splitting by choosing ignore (do not split). Please be aware that the progress bar on SyxLoader’s main window may appear “chunky” or frozen while transferring big non-splitted MIDI dumps.

Preferences

Download
SyxLoader is built with Borland C++Builder 6 using Theme Manager by Mike Lischke. It is designed to run on Microsoft Windows 2000/XP and comes with Inno Setup installer. Please tell if you find errors or want further features to be added – your feedback is welcome.

SyxLoader is freeware and provided to you as is. It is assumed to work properly but may be erroneous and have malicious effects on your computer systems or MIDI devices. Download and use at your own risk.

Download SyxLoaderDownload SyxLoader 1.5 (~607KB)