The MidiSyn Home page


This program is a software based synthesis engine. It generates WAVE files from the information contained in MIDI files. As there is no sound information in a MIDI file, the program uses Sound Font files (also known as Sound Banks) to provide that information. If you own an AWE or SBLive soundcard, you have probably several of these files in your computer. Otherwise, there are several sites on the Internet where they are freely available.


The Main Window

The Options Dialog

Using Batch files

Sound Effects



How to Register

Copyright & Disclaimer





This program is very easy to operate. Basically you select a Sound Font, select an output file, select the MIDI file, hit the convert button and you are done. If you use the default Sound Font and output files, it is even simpler: Select the MIDI file, hit Convert, and after a while you have your WAVE file ready. You can also set the program to process a batch of MIDI files without you having to intervene at each conversion.

Instead of manually selecting the files, you can also use drag-and-drop: Select the file in the Windows Explorer (Right-click and hold), drag it over the MidiSyn window and release the mouse button. This can be used with any of the file types used by MidiSyn: Sound Font, WAVE and MIDI files. This only works when MidiSyn is idle.


The Main Window

Let us take a closer look at the main window fields and buttons:

¨       Sound Bank. This field shows the currently selected Sound Font file. To change it, hit the Change button and a File Select dialog box will show up. Please be aware that when you load a really big Sound Font file (some of them have several dozen Mb in length) the system will seem to freeze for a few seconds while the file is being loaded.

¨       Output File. This field shows the name of the WAVE file that will be created during the conversion process. To change it, hit the Change button and a File Select dialog box will be activated. You can also select an existing WAVE file for listening purposes; MidiSyn will work then as a WAVE player.

¨       Input File. This field shows the name of the MIDI or Karaoke file that you want to convert to WAVE. To select a file hit the Load button and a File Select dialog box will allow you to select the MIDI or Karaoke file.

¨       Progress. This is a progress indicator that shows the completion status during both the conversion and the listening processes. During batch processing this will show the amount of MIDI files already processed.

¨       Batch. This button activates the batch-processing mode. When you hit this button, a File Select dialog box pops up, allowing you to choose the batch file to process. After the batch processing is initiated, this button changes to Abort, allowing you to interrupt the process at any moment. The format of the batch file is described bellow.

¨       Convert. This button initiates the conversion process. As soon as the conversion process is initiated this button changes to Abort. This allows you to interrupt the process at any time, saving the part of the output file already done. As soon as the conversion process terminates, the button changes again to Convert.

¨       Listen. This button initiates the listening of the WAVE file selected (that may or may not have been created by the program), using whatever sound producing hardware is available on your PC. As soon as the listening process is initiated this button changes to Abort. This allows you to interrupt the process at any time and start again from the beginning. As soon as the listening process terminates, the button changes again to Listen.

¨       Mixer. This button will open a dialog box where you can adjust the volume for each instrument in a MIDI file (see bellow for details).

¨       Options. This button will open a dialog box where you can set some operation parameters (see bellow for details).

¨       Help. This button just shows this help file using your default html browser.

¨       About. This button will open the About dialog box:


The Midi Mixer

On this window you can adjust the volume for each instrument in a MIDI file. Here is a picture of the Midi Mixer window.

There are 16 sub-windows, one for each channel in a MIDI file. Let’s take a look at each element of a sub-window:

¨       At the top there is a text box where appears the name of the instrument assigned to that channel. Usually there is just one instrument per channel but sometimes can be two or more. When there is more than one, their names will be separated by slashes.

¨       The slider lets you adjust the volume of the instrument assigned to the channel. You can either increase the volume or decrease it. The excursion is from –25dB to 25dB in steps of 5dB

¨       The MUTE check box allows you to completely remove the instrument assigned to the channel from the output mix.

¨       The SOLO button lets you mute all the channels except the current one. This will cause the output file to include just the instrument assigned to that channel.


The RESET button lets you set all parameters to their default settings: All the sliders are set to 0dB and all the MUTE check boxes will be reset.


The Options Dialog

Here is a picture of the Options Dialog Box.

The following paragraphs describe the parameters that you can set in the Options Dialog Box and the way they affect program operation.

¨       MIDI debug. If the output file does not correspond to what you were expecting, there is probably something going wrong with the Sound Font or the MIDI file or both. Suppose that you are trying to convert a MIDI with a piano piece and you are using a Sound Bank that doesn’t have the piano preset. The output file will have no sound at all. By toggling this option the program will generate warning messages that provide some insight into what is going on. By default this option is disabled.

¨       MIDI tempo. With this you can set the tempo or the pace at which the MIDI file is being played. It can be set to go faster or slower, as a percentage of the original tempo. If you want the MIDI file to play at double the original speed, set this option to 100% faster. The thumbwheels only go to 100% but you can edit the numeric field to set any value you desire. This parameter is only effective before the conversion process; it does not affect the WAVE file.

¨       MIDI Transposition. This facility allows you to shift the pitch of the notes in a MIDI file. This applies to all the channels except channel 10, used for percussion. The transposition can be up- or downward and can consist of any number of semitones. This feature is very useful if you want to render a Midi file to support singing: You can use transposition to adjust the pitch of the background music to the vocal range of the singer.

¨       Default Files. In this field you can change the default file name/path for the Sound Bank and the output files. This information is stored as an .INI file in the same folder as the executable. To change a file name/path you can edit it directly on the edit box or use the associated Browse button.

¨       Chorus. With the chorus slide-bar you can change the amount of chorus applied to a MIDI file during the conversion process. It allows you to specify a value to be added to the amount of chorus specified by a CC93 MIDI command and to the value specified in the SoundFont for the samples you are using. The range of possible values is from –100% to 100%. The value can be negative, so that you can actually subtract from the value specified by the CC93 command or SoundFont. The drawback is that the value you specify in this field affects all the channels. The total amount of chorus (the value you specify in this field plus the value in the CC93 MIDI command plus the value specified in the SoundFont) must remain in the 0-100% range. If the result is outside this range the sum is limited automatically by the program. For instance to completely remove any chorus effect that is set in your MIDI or SoundFont files, you set the slider full to the left, which corresponds to a value of –100%. For a description of the Chorus effect and how it is used, see bellow the Sound Effects section.

¨       Reverberator. This group of sliders allows you to set some of the reverberator’s parameters. For a description of the Reverberation effect and how it is used, see bellow the Sound Effects section. Parameters:

1)    Room size. This controls the simulation of the acoustic characteristics of the place where the music would be played. It can range from a small room to a concert hall or a cathedral.

2)    Damping factor. This value determines how fast a given sound will die away. If you push the slider full to the left, that will cause the sound to last the longest.

3)    Amount. This works in the same way as the Amount parameter for the Chorus effect, described above. Here we are talking about the amount of sound that passes through the reverberation effects processor. The MIDI controller for reverberation is CC91.

¨       Delay. This group of sliders control the Delay unit. This is a very versatile unit, which can be used to implement not only the classical Delay unit, but also Echo, Phaser, Flanger and even Chorus. For a description of the Delay effect and how it is used, see bellow the Sound Effects section. Parameters:

1)    Delay time. This slider defines the delay time in milliseconds. In order to accommodate a wide range of values and still be able to fine adjust the small values, this control is not linear but logarithmic. This means that the further it is to the left, the less amount correspond to a unit of displacement. For instance, the mid position of the slider doesn’t correspond to 500 ms as it would if it were linear, but to 30 ms.

2)    Modulation. This is a periodic variation of the Delay Time. The amount of time specified in this control is added to the Delay Time under the control of a triangle wave, which has a frequency of 2 Hz.

3)    Feedback. This slider controls the amount of time that a given sound will remain in the Delay unit, by feeding back to the input a percentage of the output sound.

4)    Stereo spread. This slider introduces an asymmetry between the right and left channel. This results in the scattering of the instruments throughout the stereo image, resulting in a more agreeable sound.

5)    Amount. This controls the amount of sound that passes through the Delay unit. Contrary to what happens in the Chorus and Reverberation units, this unit is not controlled via MIDI and therefore, this slider doesn’t have a negative range.

¨       Master Volume. With this slider you can control the overall amplification applied to the output file. It can have positive or negative values and ranges from –20dB to 20dB. If you feel that the output file sounds too quiet, set this field to a positive value. For instance 20dB will provide a tenfold increase in the value of the output volume. On the other hand, if there is distortion in the output or the effect of the Limiter is noticeable (you hear sudden changes between to quiet and too loud in the sound) you should put a negative value in this field. For instance –20dB will provide one tenth of the value in the output volume. The Master Volume control is associated with the dynamic compressor unit. For a description of the Compression effect and how it is used, see bellow the Sound Effects section.

¨       Compressor level. This slider controls the static compressor part of the output unit. It provides a “soft” clipping of the output peaks, so that the overall volume can be cranked up. You apply this feature when you feel that the output sound seems to be all right but is otherwise dull, it lacks that “punch” quality that you can hear on commercial records. This works best in files with lots of percussion. Be careful though if you set too high a value you will get noticeable distortion on the output sound. This slider, controls the static compressor unit. For a description of the Compression effect and how it is used, see bellow the Sound Effects section.

¨       Rescale WAVE file. When this option is selected, MidiSyn will adjust the volume of the output file to the maximum possible without introducing distortion. This may not produce the best sound in some cases, especially if there are just a few samples that reach the maximum value, while the majority of them have much less amplitude. In these cases you should set appropriately the compressor gain, described above. If this feature is inactive, MidiSyn will tell you the value that you should put in the Master Volume field to get the best result. This is useful in those situations where the automatic rescaling doesn’t produce the best result and you have to manually adjust the settings.


Batch files

From version 1.5 on there is a batch facility, whereby you can convert a set of MIDI files without having to manually set the parameters for each conversion. The instructions for the batch go into a text file that you can edit with a text editor like Notepad.

Each line in the batch file describes a job in the batch. Each line has three fields corresponding to:

1)     The SoundFont to be used.

2)     The output file (WAVE) where to put the result of the conversion.

3)     The MIDI file to convert.

The fields, which besides the file name can include the partial or full path, are separated by one or more spaces. If the file name or path used in a field have embedded spaces, enclose the file name/path between “”. You can use TABs instead of spaces to separate fields. Any line that starts with a semicolon is considered as a comment and is not parsed for conversion purposes.

At the beginning of the batch process the program will check for errors in the batch file, for instance if a specified SoundFont really exists. If it finds an error, it shows a Message Box indicating the line where the error was found and a message explaining what caused the error and then terminates the batch process. You can then correct the error and resubmit the file.


Sound Effects

Sound effects are the icing over the cake; they can be the difference between a dull and uninteresting sound and a lively, more enjoyable one. A simple delay can transform a muddled sound, where the instruments seem to step over each other into a sound where each the instrument has its own space, greatly adding to their expressiveness. In this section we will take a brief look at the sound effects implemented by MidiSyn.


Just as a chorus is a group of singers, the chorus effect can make a single instrument sound like there are actually several instruments being played. It adds some thickness to the sound, and is often described as 'lush' or 'rich'.

The algorithm behind the chorus effect isn't a spectacular or amazing trick - it's actually fairly simple. What happens when two people play instruments in unison? Well they are not always playing in precise synchronization, so there is some delay between the sounds they produce. In addition, the pitch of the two instruments can deviate somewhat, despite careful tuning. These are the functions that your chorus effect is reproducing.


Reverberation (reverb for short) is probably one of the most heavily used effects in music. When you mention reverb to a musician, many will immediately think of a stomp box, signal processor, or the reverb knob on their amplifier. But many people don't realize how important reverberation is, and that we actually hear reverb every day, without any special processors.

Reverberation is the result of the many reflections of a sound that occur in a room. From any sound source, say a speaker of your stereo, there is a direct path that the sound covers to reach our ears. But that's not the only way the sound can reach us. Sound waves can also take a slightly longer path by reflecting off a wall or the ceiling, before arriving at your ears. A reflected sound wave like this will arrive a little later than the direct sound, since it travels a longer distance, and is generally a little weaker, as the walls and other surfaces in the room will absorb some of the sound energy. Of course, these reflected waves can again bounce off another wall before arriving at your ears, and so on. This series of delayed and attenuated sound waves is what we call reverb, and this is what creates the 'spaciousness' of a room.

It's very tempting to say that reverb a series of echoes, but this isn't quite correct. 'Echo' generally implies a distinct, delayed version of a sound, as you would hear with a delay more than one or two-tenths of a second. With reverb, each delayed sound wave arrives in such a short period of time that we do not perceive each reflection as a copy of the original sound. Even though we can't discern every reflection, we still hear the effect that the entire series of reflections has.


The delay is one of the simplest effects out there, but it is very valuable when used properly. A little delay can bring life to dull mixes and widen your sound. The delay is the also a building block for a number of other effects, such as reverb, chorus, and flanging.

Simply put, a delay takes an audio signal, and plays it back after the delay time. The delay time can range from several milliseconds to one second. When there is no feedback involved, the delay only produces a single copy of the input, and thus is often referred to as an echo device. With feedback, you control the time that a sound is recycled on the delay unit and therefore the number of echoes produced.

Delays are very useful for filling out an instrument's sound. Using the delay unit with a short echo, say 50 to 100 milliseconds, creates a doubling effect, as though two instruments were being played in unison.

The Delay unit is also very important when building a mix of instruments in a stereo environment. It can enhance stereo placement of instruments, and making the mix sound 'bigger'. A little delay can be more effective than panning for spreading tracks out in the stereo field. Just a simple delay on the order of 20 milliseconds can make a big difference.


As the name implies, compression reduces the dynamic range of a signal. It is used extensively in audio recording, production work, noise reduction, and live performance applications, but it does need to be used with care. It's commonly said that compressors make loud sounds quieter, and the quiet sounds louder, but this is actually only half correct.

A compressor is basically a variable gain device, where the amount of gain used depends on the level of the input. In this case, the gain will be reduced when the signal level is high which makes louder passages softer, reducing the dynamic range.

MidiSyn has two compressors, one dynamic and one static. They perform two very different kinds of sound processing.

The static compressor works on instantaneous values of the output: As soon as the output value becomes greater than a given threshold, the output is clipped is a soft manner, so as not to cause audible distortion. This compressor is controlled by the Compressor level slider control. This sets the threshold that determines the point where the clipping starts to take place. When this slider is set to the minimum (pushed full to the left) the static compressor becomes inactive.

The dynamic compressor looks ahead in the output buffer and when it finds that a sound peak is about to happen, it starts to reduce the gain of the output stage, in a gradual manner, so that when the peak is reached, the gain is set so as not to cause distortion. After the peak is over, the gain is gradually set back to the normal value.

The dynamic compressor is always active and is controlled indirectly by the Master Volume slider. This means that to increase the effect of the dynamic compressor you increase the Master Volume so that the sound peaks will be higher and thus the effect of the compressor more pronounced. Conversely, if the compressor is generating unpleasant sound dynamics, you should reduce the Master Volume.

The amount of time that the dynamic compressor looks ahead is about 3 seconds. This is also the time it takes to recover back to normal gain after a peak.


Flanging has a very characteristic sound that many people refer to as a "whooshing" sound, or a sound similar to the sound of a jet plane flying overhead.

Flanging is created by mixing a signal with a slightly delayed copy of itself, where the length of the delay is constantly changing. This isn't difficult to produce with standard audio equipment, and it is believed that flanging was actually "discovered" by accident. Legend says it originated while the Beatles were producing an album. A tape machine was being used for a delay and someone touched the rim of a tape reel, changing the pitch. With some more tinkering and mixing of signals, that characteristic flanging sound was created. The rim of the reel is also known as the 'flange', hence the name 'flanging'.

In MidiSyn, the flanger effect is provided by the Delay unit. For this, you set the delay time between 1 and 10 ms and the modulation value between 2 and 6 ms. Optionally you can set a small amount of feedback. A large amount of feedback can create a very 'metallic' and 'intense' sound.


The phase shifter (or phaser) achieves its distinctive sound by creating one or more notches in the frequency domain that eliminate sounds at the notch frequencies (the flanger also makes use of notches, and it is actually one specific type of phasing). The notches are created by simply filtering the signal, and mixing the filter output with the input signal.

In MidiSyn, the phaser effect is provided by the Delay unit. For this, you set the delay time to 3 ms and the modulation to 4 ms. If you set a small amount of feedback the phasing effect will be more intense.



In this section we will take a look at some of the MIDI commands and parameters that are processed by the synthesis engine and how the sound generated will be affected by them. The next section will deal exclusively with Continuous Controllers.

To fully understand the concepts described in this section it is helpful to have an idea of the synthesis engine architecture, as described in the MidiSyn technical page.

¨       Key Velocity. MIDI key velocity affects both the attenuation of the sound and the filter cut-off frequency. As far as attenuation is concerned, key velocity will affect the initial attenuation (before other modulators, namely the envelope, are applied) in an inverse way. The key velocity values of 0®127 will map to an attenuation of 96dB®0. As far as filter cut-off frequency is concerned, key velocity will affect the initial value (before other modulators are applied). The key velocity affects filter cut-off frequency in an inverse way – As the velocity increases the filter cut-off frequency decreases. The key velocity values of 0®127 will map to a frequency change of 0®-2400 Cents.

¨       Channel Pressure. Both Polyphonic Key Pressure and Channel Aftertouch will affect Vibrato LFO pitch depth. This is a modulator that affects the digital oscillators included in the Sound Generator blocks. The Channel Pressure values of 0®127 will cause a frequency change of 0®50 Cents relative to the maximum excursion of the vibrato modulator.

¨       MIDI CC1. Like Channel Pressure, MIDI continuous controller 1 (Modulation) will affect Vibrato LFO pitch depth. The maximum amount of modulation will also be 50 Cents.

¨       MIDI CC7. MIDI continuous controller 7 (Main Volume) affects initial attenuation of the signal in an inverse way. MIDI CC7 values of 0®127 will map to attenuation values of 96dB®0.

¨       MIDI CC10. MIDI continuous controller 10 (Panorama) will affect the position of the sound generated in the stereo field. Value 0 corresponds to the extreme left, 64 to centre and 127 to the extreme right.

¨       MIDI CC11. Like MIDI CC7, MIDI continuous controller 11 (Expression) affects the initial attenuation, by the same amount. MIDI CC7 should be used at the beginning of a track to set overall volume, and CC11 should be used locally to highlight small passages of the music.

¨       MIDI CC91. MIDI continuous controller 91 (Reverberation) controls the percentage of signal that is routed through the reverberation unit. CC91 values of 0®127 will map to values of 0®100%.

¨       MIDI CC93. MIDI continuous controller 93 (Chorus) controls the percentage of signal that is routed through the chorus unit. CC91 values of 0®127 will map to values of 0®100%.

¨       MIDI Pitch Wheel. Pitch Wheel values are bipolar and range from 0® +/-8192. The pitch value sent to the oscillators depends on the value set for the Pitch Wheel Sensitivity parameter. By default the pitch wheel excursion is set to 2 semitones (200 cents).



In this section we will take a look at some of the MIDI Continuous Controllers which are processed by the synthesis engine. The difference between these controllers and the modulators referred to in the preceding section consists mainly in the fact that the controllers herein described do not directly affect the sound generated, being more of an housekeeping nature.


¨       MIDI CC0 – Bank Select. Selects one of the banks of the Sound Font file.

¨       MIDI CC32 – Bank Select LSB. This controller is ignored.

¨       MIDI CC64 – Sustain. Active when the value associated is greater than or equal to 64. When active, all notes in the key-on state remain in this state regardless of whether a key-off command for the note arrives. The key-off commands are stored and when sustain becomes inactive all stored key-off commands are executed.

¨       MIDI CC66 – Sostenuto. Active when the value associated is greater than or equal to 64. Unlike the Sustain command, the Sostenuto function prolongs only the notes that are played after the function becomes active.

¨       MIDI CC67 – Soft. Active when the value associated is greater than or equal to 64. This causes the notes to be played at half strength.

¨       MIDI CC120 – All sound off. When received with any data value, all notes playing in the key-on state immediately enter release phase, regardless of their Sustain or Sostenuto status.

¨       MIDI CC121 – Reset All Controllers. Resets all continuous controllers to their default values.

¨       MIDI CC123 – All notes off. When received with any data value, all notes playing in the key-on state immediately enter release phase, pending their Sustain or Sostenuto status.


How to Register

MidiSyn is shareware. The registration fee of US$ 29.00 (including p&p) will get you two CDs: An Installation CD and a Demonstration CD. To take a look at pictures of the MidiSyn CDs click here.

There is a trial version of MidiSyn that is identical to the registered version except that it will only generate one minute of WAVE sound for each MIDI file. The batch facility will also render only one MIDI file.

If you are using the trial version, when you start a conversion or batch process, the following message will appear:

The Installation CD contains all that you need to start using MidiSyn (including the default SoundFont), plus a set of alternative SoundFonts for you to experiment with, together with some examples and a bunch of MIDI files.

The Demonstration CD is in CD-Audio format (you can play it in your Hi-Fi or car stereo), and contains a sample of songs rendered with MidiSyn.

To order MidiSyn, please go to the MidiSyn order page. Upon registration, you will receive by mail the two MidiSyn Cds.


Copyright & Disclaimer

Shareware notice

This software is distributed as Shareware with a 30-day trial period. This means that you may use the unregistered version of the program for a maximum of 30 days from the day when you first try it, after which you should either register it or delete it from your hard disk. If you decide that you want to continue using it, you must register it and pay for a user license. The license is valid for one single user only and cannot be transferred or resold. Please see the preceding section (How to Register) for details on how to register the program.


This program and its components are the copyright of its author, Antonio Esteves, and Future Algorithms.

The program and its components may not be modified or altered in anyway whatsoever without prior written consent from the author. Disassembly or reverse engineering are strictly prohibited.

All trademarks, service marks and other registered names, mentioned in this, and accompanying documents are the property of their respective owners.

Distribution notice

Subject to conditions listed below, you (an individual or an entity) are hereby authorized to freely keep, distribute and multiply copies of the unregistered distribution archive for this software with, through and on, BBS’s, Internet-sites and equivalent information and on-line services. You are also allowed to store it on personal media like hard disks, floppy disks and networks, for personal use only. You are further allowed to include it on so called Shareware collection CD-ROM’s and equivalents without any charge. You are also allowed to share it with your friends using a transportation medium of your choice. Note that this authorization only concerns the unregistered software. Distributions of the registered software and/or registration codes are strictly prohibited.

·         You must always make clear to the recipient that it is unregistered shareware.

·         All the files that are part of the program distribution package must always be supplied in completely unmodified form.

Disclaimer of warranty

Future Algorithms exclude any and all implied warranties, including warranties of merchantability and fitness for a particular purpose.

Nor does Future Algorithms make any warranty of representation, either express or implied, with respect to this product, its quality, performance, functionality or fitness for a particular purpose.

Nor shall Future Algorithms have any liability for special, incidental, or consequential damages arising out of or resulting from any use of this product.

Nor shall Future Algorithms have any responsibilities, or any obligations whatsoever to provide support for this product.

Nor shall Future Algorithms have any responsibilities whatsoever to provide upgrades or bug fixes of any kind.



Comments, suggestions and bug reports are welcome and should be sent to



This page last modified 2002-11-21 - Copyright © 2000-2002 ACE

The MidiSyn Home page