Universal Manager for Win32 platforms
Welcome to the Universal Manager for Win32 platforms.. This tool is freeware, use it freely and spread it to all people you know. Questions go to: universalmanager@nilschneider.de.
How to use
At startup, a dialog will appear that shows you a list of available machines that you can edit. Choose the machine that you want to edit and press ok. If you work with that machine the first time, you have to choose your midi devices and the device ID of your machine. Select the two midi devices where your machine is connected to. You need both connections (in and out) to run the program correctly. The Main Window: In the main window you see two lists. Each list holds all sounds that the machine can store. Why two lists? One list is intended to represent the internal buffer of your machine. The second one should offer an "exchange station" where you can load other sound sets that you have got from other sources (internet, cd-rom etc...). This is only an example, how you use the two lists is your own choice. In Functionality, the two lists are identical. Every list offers the possibility to send/receive sounds from/to the machine and to load/save sounds to disk. Renaming of sounds is also possible. And you can copy sounds from the first list to the second and vice versa ( The most important thing at all ).
The controls and menu entries
So what about that "Universal", and what is that UniversalManager.idf file?
Instead of other pattch/bank managers, the universal manager supports a dynamic list of machines that can be edited. All machines that can be edited are described in an .idf file (Instruments definition file). If there is no .idf file, there is no support for machines, so make sure that you always have an .idf file placed in the directory of you universal manager version. You should check http://www.nilsschneider.de for updates of the .idf file regularly. You've got a machine that is not supported by Universal Manager? Just edit the .idf file and add the machine you want to be supported. Here is the format of the .idf file:
Only one .idf file is needed because all instruments are combined in one file. Every instrument is defined by it's name, written between rectangular brackets. Example: [Nova]. After the instrument name, several variables follow to describe the instrument. Here is an overview of all variables that can be set. Note that every variable has it's default value and that all future variables that may be able to set in future versions will have default values that are taken if the variable isn't set. If no variables are set, the instrument definition represents a valid definition for the Novation Nova Laptop.
Variable | Default Value | Description |
NumTotalPatches | 256 | Defines the number of patches that can be requested from the machine. Usually, this includes ram and rom banks. |
NumEditablePatches |
256 | |
NumPatchesPerBank | 128 | Describes how many patches are stored in one bank of the machine |
FooterSize | 1 | The footer size is the number of midi bytes that come after the data block of the sysex dump. For dumps without checksum is this 1, for dumps with checksum this is usually 2 |
DataSize | 286 | Describes the size of the data of the dump. Note that this is not the actual dump length! It's the dump length minus size of the header minus size of the footer |
PatchSelect | - | Some older machines may not be able to receive a request to every patch. Because of this, this midi string can be set and is sent before a dump or request is sent (one example: Oberheim Matrix-1000 needs it's bank select command here) |
Request | f0,00,20,29,01,21,u1,13,t1,s1,f7 | This is the request string that will be sent to ask the machine for a specified patch. |
Send | f0,00,20,29,01,21,u1,02,t1,sl | This is the header that will be received and sent for every patch. Sure, the header is included in every dump that the Universal Manager will receive from the machine, but we need the header to change the device id and location where the patch will be stored in the machine |
BankOffset | 5 | Some machines need an offset in their patch data for the current bank. For example in the Nova starts the frst bank with number 5 and the second bank is 6. In the Virus from Access, the first bank is 1 |
BankRequestOffset | 0 | Some machines (Nord Lead 2) have different bytes for the bank in the request/dump message. For those purposes, this value will be added to the bank byte whenever a request is sent to a machine. |
PatchOffset | 0 | The same as "BankOffset", but for the patch number |
NamePos | 10 | Defines where the name for the patch can be found within the dump to display. Note that this is an absolute position, position 0 is the start of the whole dump including header, not only the data |
NameLen | 16 | Defines the number of characters that define the name |
DeviceIDNames | 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 | Defines the device ID names that will be placed into the combo box for the midi setup of the machine |
DeviceIDBytes | 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | Defines the corresponding bytes that will be send over midi as the device ID |
ChecksumType | - | Defines the type of checksum that will be placed into the send / request midi strings. Types currently supported: "Q", "Virus", "Matrix-1000", "AllDataBytes", a fixed hexadecimal number (example: "7f") and "Range:..." (Example: "Range:0-3,4,7,11-27,33"). If you need more types to be supported, please contact me! universalmanager@nilsschneider.de |
ChecksumStartValue | 0 | Applies to checksum types "AllDataBytes" and "Range:" In these modes, the checksum is built by adding all bytes together. The checksum start value can be used to change the starting value from 0 to something else. For example, for a Kawai K1, this value is 165 (hex value a5h) |
RequestChecksumType | Value of "ChecksumType" | If you need another checksum type for the request you can type it here. For checksum styles see above |
SendChecksumPos | 0 | Defines the position where the checksum will be inserted before a dump is sent to the machine. Usually this is the dump length minus one to place the checksum before the ending f7h |
RequestChecksumPos | 0 | Defines the position where the checksum will be inserted before a request is sent to the machine. Usually this is the dump length minus one to place the checksum before the ending f7h |
FirstPatchNumber | 0 | Defines the first patch number to be displayed. Usually this is 0 or 1. Nova uses 0 for example, but Waldorf microQ uses 1 |
FirstBankSign | A | Defines how the bank numbers are displayed. For the Nova / Virus and microQ this is 'A', but the Matrix-1000 for example needs '0' here |
BankNames | - | If you need a more complicated way to display banks, you can define the bank names individually, separated by commas. For example for the waldorf q you need "A,B,C,X". |
Settings | - | By default, every instrument definition gets it's own settings section in the configuration for Universal Manager. Settings such as the midi devices, device ID and send / request delays are stored here. If you set the variable Settings, you can group different instrument definitions into the same settings section. This is useful if you have one instrument that supports different styles of dumps, e.g. Singles and Multis |
The Midi strings
Some notes for the above midi strings: The strings represent hexadecimal values, one value per midi byte. They are separated by a ",". The values "s", "t" and "u" are special characters that are replaced. The "s" is the current sound number, the "t" is the current bank and the "u" is the device id. The "1" after each of the special characters specifies the encoding of the value. Here's a list of possible encoding modes:
Character | Description | Encoding Equation |
0 | No changes, all 8 bits are sent | destination = source |
1, l | Only bits 0-6 are sent | destination = source & 7fh |
2, h | Bits 7-13 are sent as bits 0-6 | destination = (source >> 7) & 7fh |
3 | Only bits 0-3 are sent | destination = source & 0fh |
4 | Bits 4-7 are sent as bits 0-3 | destination = (source >> 4) & 0fh |
If you need more encoding types please contact me! universalmanager@nilsschneider.de
Defining a definition for an instrument is not as difficult as it looks like. Just open the shipped .idf file to see examples how to define instruments. One important thing: If you've created (and testet!) a definiton for an instrument, please send the definition to me so that I can upload the definition file on the web page and include it into the next release of Universal Editor. For more information and current instrument definition files visit http://www.nilsschneider.de
Disclaimer
This tool is freeware. That means, you are allowed to copy and distribute the program if the whole program package is not modified. You may also place the program on CDs. If you want to place the program on your website: Please link to the following zipped program file to make sure that you always provide the most current version: http://www.nilsschneider.de/Files/UniversalManager.zip. The current version will always be available at this location. Note that you have to mention that the program is not created by yourself! It's also not allowed to place the tool as an "extra" if you sell a synth without mentioning that the program is a freeware tool that can also be downloaded from the web for free! I'm not responsible for any software- and/or hardware damage or data loss that may be caused by using the program. The program has been tested carefully, but no program is perfect. Use the program at your own risk! Nils Schneider