Converting MIDI GM files for use with the ENSONIQ SQ2
(Some of the following also applies to the SQ1 and KS32 keyboards)
This web page describes a step by step process for translating Midi GM files to Cakewalk sequence files for the SQ2. Even if you do not want to use whole tranlation process their may be reference information that may be of value.
The Ensoniq SQ2 provides realistic and interesting sound that can be used in the full range of sequence for commercial tunes. While the Ensoniq SQ2 is MIDI compatible it is not directly GM or GS compatible.
The process of converting MIDI files from GM or GS to be used on the Ensoniq is not straight forward and requires some musical judgement in some circumstances. However It is undoubtedly easier than producing MIDI files from scratch.
This conversion process assumes you have CakeWalk software. In my case I am still using CakeWalk Vsn 2.00 for Windows. Hopefully the CAL macros included here will be compatible with later versions.
If you want to add panning and effects to your sequence you will need to create SYSX files for the Ensoniq. I do this using MicroSoft Word 6 macros. So you will have get access to Word 6.0.
I have translated about 40 MIDI files using this process. I use them in live music in my duo. My live rig includes the Ensoniq SQ2 and a portable computer. The following description often refers to the SQ2. I understand the description is also applicable to the Ensoniq SQ1 and KS32 models.
I am writing this to provide my own documentation of the process. Other people may have similar requirements. Please use care I do not accept any liability for what you do to your system. If you muck up your Ensoniq sound settings, or your CakeWalk INI files, or your lose your favourite MIDI file or befall any other terrible fate in relation to these instructions I disclaim any obligation to help you out.
I do not maintain this is the best way of doing this and I hope to hear from anyone who has suggestions, alternatives, improvements or would like to compare methods for MIDI translation.
· Get the
Tools Required
· Find
a MIDI File
· Choose
Sounds for All Tracks
· Convert
Drum Sounds
· Add
Panning and Overall Effect
As mentioned above you will require CakeWalk to perform this translation. You will also require Word 6 if you want to add panning and an effect to the song.
The other files required for the conversion process can be downloaded from this web page and include the following. Not all files will be used in every conversion.
CakeWalk uses a file called PATCHES.INI to record the
translation between the MIDI instrument number and the English
description of the instrument. To use the Ensoniq with CakeWalk
effectively these instruments need to be added to this file. A
description at the top of the file describes how this should be
done. A copy of my modified PATCHES.INI
file can be down-loaded from this site.
The Ensoniq patches are at the end of the file. There is one set
for the ROM instruments and the other for the RAM (internal)
instruments. The RAM instruments are basically the same as the
factory settings except for
62=Shami (AK special) (Not used)
64=Biwa (AK Bongos)
66=Acc. Bass AK
67=Dirt Guitar AK (Not used)
The Bongos and Acc. Bass (Accoustic Bass) settings will be explained later. The other two settings are not required.
Add the Ensoniq patches to your PATCHES.INI file and update the "list of lists" at the top of the patches file.
The [Dump Request Macros] section of the WINCAKE.INI contains system exclusive commands for sending and receiving data in the Sysx view. I have added a list of commands for the SQ2 to my own WINCAKE.INI. The commands I have added are:
Ensoniq SQ-2 Single Sound...
Ensoniq SQ-2 All Internal Sounds...
Ensoniq SQ-2 Single Sequence...
Ensoniq SQ-2 All Sequences...
Ensoniq SQ-2 Dump Everything...
Ensoniq SQ-2 Receive ...
Ensoniq SQ-2 Receive All...
Ensoniq SQ-2 Button Command...
For the purpose of this document we will only be using Single Sequence and this will only be required if you need to edit presets later on. I find these commands handy to dump sounds from the SQ2 rather than using the standard DOS SYSX utilites (SYXDUMP and SYXRECV).
Copy all the above commands into the appropriate place in your own WINCAKE.INI.
To fully understand how these function you will need get the
document "SQ-1 Musician's Manual Appendix A - SQ-1 MIDI
Specification" from
ENSONIQ Corp
MIDI Specification Desk
155 Great Valley Parkway
Malvern, PA 19355
I have set up CakeWalk to access both banks of sounds on the Ensoniq. This is described on P.213 of CakeWalk Professional of Windows release 2.0 manual. Port 3 which is usually not assigned to an any hardware is used for a secondary bank of sounds.
Using the CakeWalk menu entry "Settings.../Patch
Names"
Select Port 1, Channel 1-16 and assign it to the patch name list
labelled "Ensoniq SQ2 ROM".
Select Port 3, Channel 1-16 and assign it to the patch name list
labelled "Ensoniq SQ2 RAM".
<A Screen Dump would be nice here>
System Exclusive for Bongos and Accoustic Bass
I find creating new sounds for the Ensoniq a difficult process. I have done for a couple of sounds I felt are absolutely necessary.
| AKBONGO.SYX | This sound has bongos and congas that are slapped (rather than hit with a drumstick). There is also a woodblock in this sound at the top of the range which has come in handy. |
| AKBASS.SYX | I created the Accoustic Bass because I did not like the decay characteristics of the standard offering. |
These two SYSX files are included so that can be loaded into your
Ensoniq if required. To be consistent with the patch files above
the bongos should loaded into location 64 and the Accoustic Bass
into 66.
You can use the standard DOS utilites (SYXDUMP and SYXRECV) to
load these SYSX sounds or you can use CakeWalk as follows:
The following CAL files are required:
| INITTRK | First check a track for modulation, pitch bend or extra patches. Then add the necessary track initialisation information. |
| INITRK2 | Add the necessary track initialisation information without performing the above search for controller and patch changes. |
| CHKDRUM | Used to check drums settings to see if they fall outside the range. If they fall outside the range there note number is returned. This is faster than CHKDRUM2 but does not report note name and instrument. |
| CHKDRUM2 | Used to check drums settings to see if they fall outside the range. If they fall outside the range there note number (eg. 39), the note name (eg. Eb3) and the instrument (eg. hand clap) is returned. |
| FIXDRUM | This transposes standard drums from MIDI GM to one of the standard Ensoniq drum kits. This is to be used after one of the CHKDRUM programs has checked the track for instruments outside of the range for these drum kits. |
| CONGA | This transposes a conga and bongo part written for MIDI GM drums to the Ensoniq bongos instrument created above. |
| AGOGOS | This transposes an agogos part written for MIDI GM drums to the Ensoniq SQ2 agogos in the Latin Kit sound (sound 87). |
The purpose of these CAL files will be explained in more detail in later sections.
MicroSoft Word Macros
To set panning and effect options for the Ensoniq SQ2 it necessary to send this information using a System Exclusive packet (SYSX). These parameters cannot be controlled with MIDI controllers. To create these SYSX packets I use word processor macros. This was cheap and easy for me.
The two macros are:
| SYSX | Allows you to enter a song name panning, volume and effect for the song. It also allow you to specify the effect parameters. |
| SYSX2 | As above but this assumes you require the default effect parameters. |
These tables are not necessary for the process of translating GM sequences however they may be useful.
There is a good availability of MIDI Files on the internet. I have used mostly commercial sources and a few free sources. Here are some of my favourite sources.
Commercial Sources
Free Sources
Midi File Sites
This is a very comprehensive list of a sites that offer MIDI files.
News Group
Subscribe to alt.binaries.sounds.midi. To request a MIDI file add the prefix REQ: to the subject.
The following is the process I use to select each sound patch for the Ensoniq SQ2.
From within CakeWalk
| Accoustic Grand, Bright Accoustic Piano | Dynamic Grand |
| Electric Guitar Clean and Overdriven | Record Guitar |
| Electric Guitar Muted | Chuk Guitar |
| Distortion Guitar | Analog Power |
| Electric Bass (Finger or Pick) | Rock Bass |
| Accoustic Bass | I use my own (see above SYSX dump of this sound). |
| Other Electric Basses | Have a listen to a recording of the song. I have found Rippin' Bass, Phaser Bass, Fretless 2* and Slap Bass 2* useful. |
| Acc. Guitar Nylon | Mellow Nylon* |
| Acc. Guitar Steel | I have used steel string, sound wound* and Tremelo Guitar* for different type of song. |
| Brass | Trumpet (I find this good for trumpet, trombone and brass ensemble work). I sometimes use French Horn if there are a few brass tracks. |
| Synth Brass | Brass Pad* or French Horn |
| Strings | Concerto* |
| Voices | Silk Voices* |
To initialise each track we need to select a suitable patch and bank for each sound. We also need to set the pitch wheel and modulation controller values to zero in case these are still set from previous sequences. If you are in the practice of using any of the other controllers it may be necessary to zero these as well.
I have set my CakeWalk ports 1 and 3 to map to ROM sounds and RAM sounds respectively. This is explained in Get the Tools Required/dafsd
Once you have found a sound for your track
Enter patch and port into the track parameters of the
Track/Measure view. The channel for the sound will 1 for ROM
sounds and 3 for RAM sounds if you have used the set-up explained
above.
Click on the first measure of the track and run the CAL program
INITTRK (Edit/Run CAL Program...).
You will be notified about any other patch events, controller
events or pitch wheel events in the sequence. It is useful to
know about these because they can cause odd effects when
translated from another synthesiser. I generally leave the pitch
wheel and controller events in and have a good listen later to
make sure it sounds as expected. If you get sick of click on OK
to ignore these events you can use INITTRK2 instead of INITRK.
INITTRK2 does not search for these events.
At the end of INITRK or INITRK2 you are prompted first for a
channel number (track number) and then a port number (1 for ROM
or 3 for RAM).
You then need to adjust one of the patch events in the event list
view so that it reflects the sound you chose. Right-click on the
first measure of the sequence and select Event List. You will
then see two patch events that are the same. Change the second of
these by double-clicking in "Values" column for that
event and selecting the same sound that selected in the
Track/Measure view.
Repeat this process for each sound except the drum kits (usually track 10 of a GM sequence).
Convert Drums
The GM Drum table uses about 60 sounds in the one drum kit. This
is difficult to translated to the Ensoniq SQ2 because it can only
manage 17 "voices" per instrument. However most
drummers only hit a few objects and we can fix most drum beats if
we cover the basic drum sounds of
Kick
Snare
High Hat (Closed, Open, Pedal)
Ride Cymbal
Crash Cymbal (2)
Low Tom
Hi Tom
The rest of the 60 instruments are only used occasionally and special arrangements can be made for them.
My approach is therefore to use a CakeWalk CAL program to translate the common GM drum instruments to Ensoniq equivalents. Bongos and Congas are dealt with using a separate CAL program. Other percussion instruments are handled by copying them to their own track and choosing an instrument for them.
2. Run CAL
Program CHKDRUM2 (Edit/Run CAL Program...). This
will report all drum sounds that fall outside the
basic drum sound listed above. For each note
event that falls outside this range you given the
note number (midi note number), the note location
(measure, beat and tick), the note name (eg. A4,
Bb3, C#2) and the sound name (eg. maracas, hand
clap, open triangle).
3. Write down the
note name, number and sound name for each
different sound. Proceed to step 3 once CHKDUM2
completes or your have the same instruments
repeating over and over again.
1For each drum sound outside
the range paste it to its own track.
2. Cut only
the instruments you want to put on a single track
from the drum track
2.2.
In the Filter dialogue box uncheck all
the include option except
"Note".
2.3. Place
the note name beside the "Note"
and in the Min and Max columns. If you
are cutting just one note put the same
note name in both boxes.
2.4. Click
"OK"
3. 1Paste the
instruments to their own track (Click on the next
blank track and select Edit/Past to One Track).
You should see measures where the instrument
plays appear in the Track/Measure view.
4. Type the
instrument name in the name column of the
Track/Measure view.
5. Several sounds can
be pasted to the same track without destroying
earlier sequences. Try to keep like instruments
together. All bongos and congas should be stored
on the same track. If you have high an low agogos
you could put them on the same track.
6. Repeat the process
from 2.1 until all the sounds you recorded have
been moved to new tracks.
7. If you have not
yet complete the running CHKDRUM2 then go back to
step 1.1 and run it again. The instruments that
you cut out of the drum track should not be
detected again.
1Choose an SQ2 drum-kit and
other drums sounds
2. Also of
prime importance in choosing the drum kit is the
style of song you translating.
3. For Bongos and
Agogos is step 4.
4. After considering
the above issues you may still find that more
than one track is required for the drum kit.
5. For each track you
have assign a channel and the drum sound you
chose to that track.
1Transpose Bongos and Agogos.
I have found this instruments commonly in sequence so
have created a CAL program to transpose them.
1.2.
Select port 3 and select the custom
Conga/Bongos sound (AK Bongos) for the
patch.
1.3.
Initialise the track as in the previous
section (run INITTRK).
1.4. Select
the whole track (Click on the first
measure and press Ctrl-F10).
1.5. Run CAL
Program CONGA (Edit/Run CAL Program...).
2. 1Assuming both
high and low agogos have been put on the one
track do the following:
2.2.
Select the whole track (Click on the
first measure and press Ctrl-F10).
2.3. Run CAL
Program AGOGOS (Edit/Run CAL Program...).
1Transpose the standard drums
sounds.
2. Select the
whole track (Click on the first measure and press
Ctrl-F10).
3. Run CAL Program
FIXDRUM (Edit/Run CAL Program...).
4. FIXDRUM will
report any sounds that are outside the basic drum
sound range. If this occurs you may left with a
mess that you have fix by loading the saved
version of the sequence and going back to step 2
(running CHKDRUM2).
1Clean up other sounds
1.2.
Work out the note number (midi number)
for the sound that you want. I do this by
getting into Piano Roll view (right-click
on a measure then select Piano Roll),
adding a note to it (Ctrl-click) and then
moving this note up and down the role
until I here the note I am after. The
note number appears in brackets beside
the note name in the top left corner just
under the Piano Roll title bar. Write
this note number down.
1.3. Subtract
note number of the GM sound from the note
number you just wrote down. This is your
transposition interval in semitones.
1.4.
Transpose the track by the transposition
interval
1.4.2. Select
Edit/Transpose...
1.4.3.
Make sure "Diatonic
Math" is not checked and
enter the transposition interval
beside amount.
1.4.4.
If there is more than one
instrument on this track you may
wish to transpose each separately
using the event filter.
Another approach to drum mapping you might like to consider is by setting up drum kits which cover the whole GM range. Theoretically this would take 4 SQ2 drum kits (since if we have 3 lots of 17 SQ2 sounds we get 51 of the 60 sounds) but wally<address info> provides a bank of three drum kits which may prove useful. It then would be possible to write a CAL program which does the lot without having to spend time on individual sounds. This may lead to using more tracks than necessary.
Add Panning and Overall Effect
The Ensoniq SQ2 does not accept MIDI panning signals. The only
way to set panning is use as preset SYSX packet at the start of a
sequence. There are a number of other settings that can be
included in the preset SYSX. I also set the overall effect for
the sequence and the name of the sequence on the SQ2 display.
Occasionally I will set an instrument in the SYSX but usually I
rely on CakeWalk to set up the instruments.
2. Run Macro
SYSX2
3. Enter a song name
(14 characters or less)
4. Enter MIDI panning
values (0,1..127) that you recorded from your
MIDI sequence or put the values you require.
These are automatically translated to SQ2 panning
values (-98..+99 and SOUND). A zero MIDI value is
the same as SQ2 SOUND which is what ever pan
value has been set for the sound patch.
5. Select an effect
for the sequence. If you want to specify more
detail for the effect the use the macro SYSX
rather than SYSX2.
6. Click
"OK". A whole series of numbers is
generated on screen. These series of numbers is
then copied to the clipboard.
1Paste the value into
CakeWalk SYSX bank
2. Delete any
SYSX banks that are left over from the original
MIDI sequence (select them and press the delete
button).
3. Select Bank 0 and
press the "Edit Bytes" button.
4. Paste the
clipboard (Ctrl-V). This assumes you have not
used the clip board since running the SYSX2
macro.
5. The size of bank
should be 494 bytes. This is displayed in the
Length column of the Sysx view. If it is not,
then something went wrong above. Probably you
entered too many characters in the name or
provided a panning value that was out of range.
6. Set the SYSX to
auto load. Press the Auto button.
1Adjust start of the sequence
1.2.
Add the instrument setting to the preset
SYSX packet.
1.2.2. Dump
the preset SYSX back to the
computer using CakeWalk. From the
CakeWalk Sysx view select and
empty bank and click on the Receive
button. Select "Ensoniq
SQ-2 Single Sequence...". If
this is not visible return to
Pre-requisites/Wincake.ini above.
1.2.3.
You are prompted for the SYSX
channel (usually 1) and then a
dialog box saying you have
receive 458 characters is
received.
1.2.4.
I have found it necessary to add
a buffer command to the sysx
packets because of the relative
speeds of the my PC and the SQ2.
I copy bytes 19 through 54 from
my orginally generated bank
(length 494) bytes and paste
these at byte 19 of the new bank
making its length now 494 bytes.
1.2.5.
From the CakeWalk Sysx view you
can now delete the original bank
and make the new bank the Auto
bank.
1
The Finished Product
Congratulations! You have reached the end of the conversion
process. You can now play this sequence from CakeWalk into your
Ensoniq SQ2.
You now should play the sequence and adjust the volume and velocity of the tracks. You will perhaps want to experiment with different sound patches. The sequence may not sound perfect due to difficulties with the translation or simply because of a poor quality GM sequence. The only way to get a good sequence is to listen to a recording of the song and adjust accordingly.