Some AMac improvements

We continually make small improvements and corrections to The Accompaniment Machine (AMac) in response to user suggestions. Here are some recent ones:

1) Style playback can be paused in the Auto Sequence and Performance modes in response to fermatas and N.C. designations in the score. In the Auto Sequence mode, a pause is applied when the performer presses the Control key. We added indicators to the Auto Sequence (Fig. 1) and Performance windows to show that the program is in the pause state and that playback is pending.

AMac Auto Sequence window with pause indicator

Figure 1. AMac Auto Sequence window with pause indicator.

2) The Style Equalizer dialog can be accessed from the Style Organizer, Performance and Auto Sequence windows. Previously, the channels were identified only by their function in a Yamaha-format style, sometimes making it difficult to determine the correspondence between the instrument sound and the channel. To help, we added a listing of the GM (general MIDI) program number and name (Fig. 2).

Channel equalizer dialog

Figure 2. Channel equalizer dialog.

3) A user noticed a problem using AMac in the Auto Sequence and Performance modes. Every time they pressed the Control key, the computer beeped. After some head scratching, I replicated the cause: there were two instances of AMac running, causing a MIDI conflict. The beep was generated by the operating system rather than the program. The advice: be sure to run only one instance of AMac. Note that you run AMac with Style Customizer, MIDI Doctor, MIDI Microscope or any other KBD-Infinity program without any problem.


[1] Find out more about KBD-Infinity: Home page.

[2] If you have comments or questions, please contact us at

MIDITyper: New features

MIDI Typer is one of the components of the MIDI Utility Pack. In the past, its prime function was the bulk conversion of MIDI files between Type0 and Type1. To review, in a Type0 file all musical and non-musical information is combined in a single track. A Type1 file contains multiple tracks. Items in a track are usually grouped by function. Figure 1 shows the MIDI Typer interface. The items in the lower section control navigation to folders that contain MIDI files. One option is to select one or more files. In response to the Type1 -> Type0 button, the program searches the selected files. All files that are originally Type1 are converted to Type0. In the absence of a selection, the search extends over all MIDI files in the folder. Conversely, the Type0 -> Type1 converts files originally of Type0 applying the following conventions:

  • All non-musical information is collected in Track 1.
  • For musical information, each MIDI channel is assigned to a track.
MIDI Typer main window

Figure 1. MIDI Typer main window.

Recently, a customer described an application where he wanted to remove program messages and voice control messages from a large collection of MIDI files. He wanted to play files using a virtual instrument setup in a digital workstation. In this case, instrument definition messages in the MIDI file would interfere with the virtual instrument definitions. Because of its versatile capabilities for bulk conversion, MIDI Typer seemed the ideal candidate to support this new function and others. Accordingly, we added two new features to the program:

  • An output filter capability to remove a variety of different MIDI messages. The filters could be applied during type conversions.
  • A Clean routine to apply the filters without changing the file type.
MIDI Typer Settings dialog

Figure 2. MIDI Typer Settings dialog.

The filters are controlled by a new settings dialog, shown in Fig. 2. Checking a box includes a message type. If the box is unchecked, the message type is not added to the file. Filters are included for the following message types:

Tempo changes (after start). Sometimes, MIDI files may contain a large number of tempo messages because the transcriber was either particularly expressive or did not use a metronome. Such tempo changes are undesirable when preparing an accompaniment. If the box is unchecked, all tempo messages after the first one will be omitted.

System exclusive messages. These messages are extended structures that contain binary instructions for specific hardware devices. They are generally ignored, so they can be removed from files intended for general distribution.

Program messages. Program messages set the GM (general MIDI) numbers of channels. The numbers control the type of instrumental voice associated with the channel. Such messages may cause a conflict when working with a digital workstation with a virtual instrument setup.

XG voice settings. XG messages specify synthesizer voices beyond the 128 general MIDI options. These settings are hardware specific. Uncheck this box to ensure compatibility with GM compliant devices.

Other voice control messages. These messages control characteristics of channel voices, such as volume, pan reverberation and timbre. If you want to control voices entirely from software when playing the output file, uncheck this box as well as Program messages and XG voice settings.

Text messages and lyrics. The words in karaoke files are sometimes stored as text messages and sometimes as lyric messages. Uncheck these boxes if you want to remove the information, converting a KAR file to a standard MID file. This option is useful for creating scores with music notation programs. Some programs attempt to include lyrics, making a messy display.

Markers. Markers designate sections of a MIDI file. They may appear in specialized applications like Yamaha style files.

Other non-MIDI messages. Include or exclude specialized non-MIDI messages that are usually not required to play the file, including SMPTE, MIDI port, MIDI channel, copyright, cue point, instrument and sequence track name.

Pitch wheel messages. Pitch wheel messages shift the frequency of the synthesizer to give a twangy or bluesy sound. Uncheck this box if you want all notes to sound at their prescribed pitch.

The filter set is similar to the one in MIDI Doctor. The main difference between the programs is that MIDI Doctor is designed to optimize single files, while MIDI Typer works on large sets. MIDI Doctor has additional functions appropriate to single files, such as channel voice control.


[1] Find out more about KBD-Infinity: Home page.

s[2] If you have comments or questions, please contact us at

Fixing percussion sounds with Style Customizer

Yamaha-format styles are accompaniment files that you can play on your digital keyboard or use in our Accompaniment Machine program. Often, you may find a great style that is effectively useless because 1) it’s permeated by police whistles and other strange sounds or 2) the percussion sounds like someone pounding on a piano . In this article, I’ll explain the origin of the problems and review new features in the Style Customizer that lets you correct the files.

To understand the problem, it’s necessary to review some features of MIDI (Musical Instrument Digital Interface). A MIDI file consists of a sequence of timed messages. The most important one is the 3-byte NoteOn Message

90h+ChanNo  NoteNum  Volume

The 90h value specifies NoteOn and ChanNo is one of 16 MIDI channels, each of which can represent an individual synthesizer voice (instrument). The pitch value (in the range 00h-7Fh) is given by the number NoteNum, representing the 88 keys of the piano plus some extras. Yamaha styles use channels 08h through 0Fh. By convention, channel 09h carries percussion sounds. Optionally, channel 08h can be set as a supplementary percussion channel by sending an appropriate message. Because these sounds do not have pitch, the NoteNum value is used to specify the type of instrument. The following standard set is recognized by all MIDI compliant keyboards and synthesizers:

035 Bass Drum 2           058 Vibra Slap
036 Bass Drum 1           059 Ride Cymbal 2
037 Side Stick/Rimshot    060 High Bongo
038 Snare Drum 1          061 Low Bongo
039 Hand Clap             062 Mute High Conga
040 Snare Drum 2          063 Open High Conga
041 Low Tom 2             064 Low Conga
042 Closed Hi-hat         065 High Timbale
043 Low Tom 1             066 Low Timbale
044 Pedal Hi-hat          067 High Agogo
045 Mid Tom 2             068 Low Agogo
046 Open Hi-hat           069 Cabasa
047 Mid Tom 1             070 Maracas
048 High Tom 2            071 Short Whistle
049 Crash Cymbal 1        072 Long Whistle
050 High Tom 1            073 Short Guiro
051 Ride Cymbal 1         074 Long Guiro
052 Chinese Cymbal        075 Claves
053 Ride Bell             076 High Wood Block
054 Tambourine            077 Low Wood Block
055 Splash Cymbal         078 Mute Cuica
056 Cowbell               079 Open Cuica
057 Crash Cymbal 2        080 Mute Triangle
081 Open Triangle

Regarding the first issue, the complication is that high-end keyboard workstations may have several alternate drum sets that make different sounds in response to the same NoteNum. A style file designed for such a machine (often with the suffix PRS) sounds great on that keyboard but may include inappropriate sounds on a keyboard or with a soundfont that doesn’t recognize the drum set.

The second issue arises when using the computer as the MIDI output device through soundfonts. Neither Microsoft MIDI Mapper nor CoolSoft VirtualMIDISynth recognizes percussion messages on channels other than 09h. In this case, percussion messages on channel 08h are reproduced as through they were for a pitched instrument, leading to some strange sounds.

Current Style Voice Optimizer interface

Figure 1. Current Customizer interface.

We added features to the Style Customizer to fix the problems. Figure 1 shows the program interface. There are two new checkboxes: Percussion filter and Percussion channel compress. The first control addresses the issue of inappropriate sounds. It is fortunate that the General MIDI equivalent is acceptable for most of drum sounds. There are only a few really bad ones. When the Percussion filter box is checked, SVO assigns zero volume to NoteOn signals to percussion channels in a save file operation with the following NoteNum values:

056 Cowbell
058 Vibra Slap
071 Short Whistle
072 Long Whistle
073 Short Guiro
074 Long Guiro
078 Mute Cuica
079 Open Cuica

When the Percussion channel compress box is checked, Style Customizer makes a simple correction when channel 08h has been defined as a percussion channel. The program assigns any NoteOn or NoteOff signals to channel 09h rather than channel 08h. There is no loss of information, and the percussion sounds are reproduced correctly by both Microsoft MIDI Mapper and CoolSoft VirtualMIDISynth.

A sound is worth a thousand words. In the following excerpt, a PRS file is played through CoolSoft. For clarity, only channels 08h and 09h are included. The first part is the original file while the second part is a corrected file generated by Style Customizer.


[1] Find out more about KBD-Infinity: Home page.

[2] If you have comments or questions, please contact us at

Making accompaniments from MIDI files

The right accompaniment can enhance your vocal, instrumental or keyboard performance. Accompaniments are also a great way to practice. You can create accompaniments for any song with our Accompaniment Machine program using style loops. On the other hand, sometimes you may want to use a full MIDI file to accompany an iconic song, complete with its introduction, riffs and other performance features.  For this application, we’ve created a new software system, Pancho.

There are thousands of MIDI files available for download on the Internet, covering almost every popular song and classical work. If you wanted to perform a song, imagine you could grab it from the Internet and do the following:

  • Separate the musical data into solo and accompaniment files.
  • Change the range and key to match your instrument.
  • Modify the accompaniment instrumentation to achieve a special sound.
  • Create a printed score for your solo part.
  • Play the accompaniment on your computer or keyboard with measure synchronization for practice or performance.

Sound amazing? With the Pancho program and procedures described in the instruction manual, you can do it all. Rather than simply playing audio recordings, Pancho is a digital MIDI-based program. There are significant advantages:

  • You can make tempo changes without affecting the pitch.
  • You can store settings for accompaniments and run through an entire performance set automatically.
  • Most important, with the myriad of MIDI files available on the Internet, you can create scores and accompaniments with little effort and at no cost.

There are three components of the Pancho system:

  • MIDI Doctor, a utility for dividing and customizing MIDI files.
  • Step-by-step instructions in this manual for making printed scores of solo parts in your songs.
  • The Pancho program itself, an advanced MIDI player with a metronome, measure and beat counters and other features for practice and performance.

Pancho runs on any Windows computer.

Use this link to get more information on Pancho You can also download the Pancho instruction manual: Two freeware programs are needed to perform all the tasks described in the manual:

Speedy MIDI for quick editing of MIDI files:

MuseScore for creating and editing printed scores from MIDI files:


[1] Find out more about KBD-Infinity: Home page.

[2] If you have comments or questions, please contact us at

Finding MIDI files

We working on the instruction manual for Pancho, our new program for quickly generating accompaniments and solo scores from MIDI files. Chapter 2 starts with advice on where to find MIDI files. We realize that there are a lot of pages on the Internet that tell you where to look, but another one can’t hurt. Here’s our contribution.:

MIDI File Collections

Searches and Links to MIDI File Collection Sites


[1] Find out more about KBD-Infinity: Home page.

[2] If you have comments or questions, please contact us at

Changing the key signature of MIDI files

Key transpositions of MIDI files are relatively easy. The note value is the second byte of a NoteOn or NoteOff message:

&h90+ChanNo  Note  Velocity
&h80+ChanNo  Note  Velocity

The quantity Note takes integer values from &h00 (0) to &h7F (127) following the chromatic scale. Middle C corresponds to Note = &h3C (60). Therefore, a transposition of a MIDI file consists simply to rewriting the file with offset Note values:

Note = Note + N,

where N is an integer. The purpose of this article is to show how to choose N to achieve a desired key signature.

A well formattted MIDI file includes a message that defines the key signature in the form

&hFF &h59 &h02 SF MI

The first byte indicates a non-MIDI message, the second byte designates that the message contains a key signature and the third byte states that two data bytes follow. The value of MI determines whether the key is major (MI = 0) or minor (MI = 1). The value of SF determines the key signature according to Table 1.

Table 1

Table 1.

Table 2 shows the relationship between the note displacement N and the key. A transposition represents a movement up or down the table by a number of rows equal to N. For example, to transpose a piece from the key of C to F, we need to move either up seven rows (N = -7) or down five rows (N = +5). The final key has one flat. Here are two examples of how to use the tables:

  • Transpose a piece with a key signature with four sharps (E major) to C major. Inspection of Table 2 shows that we need to change the Note values by either N = -4 or N = +8.
  • The goal is to transpose a MIDI file in E major (four sharps) to use as an accompaniment for a recorder, an instrument on which it is difficult to play black-key notes. At the same time, we want to keep N as small as possible to avoid a radical change in the accompaniment sound. The key of G is close and has only one sharp, so we pick N = +3.
Table 2

Table 2.


[1] Find out more about KBD-Infinity: Home page.

[2] If you have comments or questions, please contact us at

Converting AMac songs to accompaniments

Users of AMac Versions 1.0 and 2.0 with a library of song files (ASG) probably want to convert some of them to AutoSequence files (ASQ) to use the new capabilities of AMac 3.0. This article describes the conversion process along with some tips on sequences.

To begin, load the song file in the AMac Performance window. Then, switch to the AutoSequence window. Much useful information is automatically transferred:

  • The style and its settings (tempo, volume).
  • The song title.
  • The sequence of style sections used.
  • Primary and alternate voice definitions.
  • Program settings like the chord transposition method.

If the song starts with an Intro section, go to Style Organizer window to find its length in measures. Click SaveAcc to make a reference accompaniment file. Then click SaveSeq to make a reference sequence file.

At this point, you can fill out chords in the sequence using a text editor or the program sequence editing commands. Figure 1 shows a compressed view of the display in the ConText editor for an appropriate accompaniment for the song They Want to Be Close to You by Burt Bacharach. Here are some tips:

  • IntroC was four measures long. I started it at measure -3 so that the pickup occurred at measure 0.
  • Lead sheets are not inviolate. Sometimes, chord specifications just don’t work with the unpredictable combinations of notes in the style. The ear is the final arbiter. Accordingly, I started IntroC in EbMaj and changed EbMaj6 to EbMaj in measure 7.
  • The song ends with an extended fade (15.0 seconds), repeating an ending phrase for as long as is necessary. Accordingly, the sequence of Fig. 1 includes three copies of the phrase. The fade starts at the beginning of the second.
  • Although the FadeOut operation will terminate the style, I added a StopStyle operation at the end for good form and to avoid a warning from AMac.


Sequence example

Figure 1. Sequence example.


[1] Find out more about KBD-Infinity: Home page.

[2] If you have comments or questions, please contact us at

Creating AMac sequences with the ConText text editor

A text editor is the one of the quickest ways to create sequences for the Accompaniment Machine. A good editor can make many of your computer tasks easier. If you are using a primitive utility like NotePad, you owe it to yourself to move up. The good news is that you can get a great editor for free. ConTEXT is available at:

Syntax highlighting is useful feature. Figure 1 shows a ConText display of an AMac sequence with highlighting. Comment lines appear in a specific color in italics. Operations are shown in bold red, chord roots in bold blue and chord types in bold green. Syntax highlighting makes the display more readable. More important, it provides a crosscheck on data entry. If you mistype an operation or enter one that is not recognized, the word will not be highlighted.

Display of an AMac sequence in the ConText editor

Figure 1. Display of an AMac sequence in the ConText editor with syntax highlighting.

Here’s how to add syntax highlighting for AMac sequence files (FName.ASQ):

1. Download and install ConText.

2. Download this file: amac_sequence.chl.

3. Save it in the directory

C:\Program Files (x86)\ConTEXT\Highlighters\

4. Highlighting will automatically be applied to files with the suffix ASQ the next time you run ConTEXT. You can edit the chl file if you want to change colors or other properties.


[1] Find out more about KBD-Infinity: Home page.[2] If you have comments or questions, please contact us at

Converting Cakewalk Instrument Definition Files

A user suggested that AMac and SVO[1] would be easier to use if they could read INS[2] files. In this way, the full set of voices for particular keyboard synthesizers would be immediately available for styles and melodies. I analyzed the content of INS files for over 40 keyboards available at My conclusion was that it would be more effective to translate the files to the MIDI Voice File (MDV) format rather than to input them directly into our programs. Here are my reasons:

  • The programs already reads MDV files.
  • INS files contain only a subset of the MIDI control information that may be included in MDV files.
  • INS files are proprietary and incompletely documented. I found the organization of information was quirky and varied between the examples I checked. In contrast, the MDV file format is simple and well-documented. The format faithfully adheres to MIDI conventions.

INS files are hardware specific. The useful information is a list of all combinations of the MIDI parameters BankMSB, BankLSB and GMProgram that result in a unique voice on the keyboard. The list is located between the markers .Patch Names and .Note Names. Is consists of a list of voice names organized by the bank number

128*BankMSB + BankLSB

and GMProgram number. We wrote a translation utility INStoMDV that reads the INS information and creates an MDV file with all voices and drum sets included. For each voice, the MDV file includes BankMSB, BankLSB, GMProgram and default values for the Volume and Pan. The user can add additional MIDI controls (reverb, chorus, brightness, timbre,…) in SVO or the AMac Voice Laboratory to tune the voices or to create new variants (Fig. 1).  The translation utility also creates a formatted list of settings:

Program INStoMDV
KBD-Infinity, Albuquerque, New Mexico
Input file: Test.ins
Output file: Test.MDV
Bank MSB  Bank LSB  GM Prog  Name
       0     113      25     12String Guitar
       0     118      16     16'+2' Organ
       0     119      16     16'+4' Organ
       0     117      27     60's Clean Guitar
       0     112      32     Acoustic Bass
       0     112      54     Air Choir
       0     112      65     Alto Sax
       0     115      81     Analogon
       0     113      23     Bandoneon
       0     112      67     Baritone Sax

We will include 43 MDV files for popular keyboards with AMac and SVO. To make your own conversions, use this link to download the INStoMDV utility: Download INStoMDV.


AMac voice laboratory with Tyros voice set loaded

Figure 1. AMac voice laboratory with Tyros voice set loaded.


[1] The Accompaniment Machine and the Style Voice Optimizer.

[2] Instrument definition files developed for the Cakewalk program.

[3] Find out more about KBD-Infinity: Home page.

[4] If you have comments or questions, please contact us at

Manually creating a new file type in Windows

File types in Windows are designated by extensions (e.g., .txt, .html, .jpg, …). You can associate a file type with a specific program. Then, if you double-click on a file in MIDI File Manager or Windows Explorer, the file opens in the associated program. For example, my computer is set up to open files of type .txt with the ConText text editor.

It’s easy to set the associated program for an existing file type. In Windows 7, go to Control panel/Default programs/Associate a file type or protocol with a program. Scroll down, select the extension and then click the Change program button. Navigate to the program executable and pick it.

But, what if the file extension is not on the list? Things get more complicated — there is no procedure in the Control panel to add a new file extension. Here’s how to do it by editing the Registry with regedit (a built-in Windows utility) [1].

As an example, I’ll use the a file type that got me started on this issue. Sequence files (.asq) are the core of Version 3.0 of the Accompaniment Machine. An easy way to build new sequences is with the ConText using our special syntax highlighting definitions.  Accordingly, I would like .asq files to open automatically in ConText. A check of the existing associations shows that .asq is not included. Here is the procedure to add it:

  1. Run regedit. (The Run option in the Start Menu seems to have disappeared from Windows 7. To start the program, right-click in FP File Manager, open a terminal window and enter the command regedit).
  2. In regedit, right click HKEY_CLASSES_ROOT and choose New/Key.
  3. Enter the name .asq (be sure to include the dot).
  4. Within the new key (right-hand side of the window), right-click on (Default) and choose Modify.
  5. Type in the name  AMac sequence.
  6. Again, right-click on HKEY_CLASSES_ROOT and choose New/Key.
  7. Name the key AMac sequence (the same name as in Step 5).
  8. Exit regedit.

Now if you go back to Associate a file type with a specific program from the Control panel, the file type .asq appears in the list. Click the Choose program button and navigate to ConText. Arcane procedure, but it works.


[1] Be cautious if you decide to edit the Registry. A big mistake could ruin the Windows setup.

[2] Find out more about KBD-Infinity: Home page.

[3] If you have comments or questions, please contact us at