AMac Christmas Collection

To celebrate the holidays, we expanded our library of ready-to-run Accompaniment Machine (AMac) sequences for Christmas songs. To review, a sequence is an accompaniment that runs in the AutoSequence mode of AMac. It includes a Yamaha-format style (including introductions, section changes, fills and endings), a chord sequence appropriate for the song, and voice settings if you want to play the solo part on a digital keyboard. Generally, sequences cover the full song with repeats. You can use the sequence as-is, or use it as a template to create your own sound. In this case, the chord sequences can be exported and edited. The style can also be exported, edited with Style Customizer and reloaded. With this feature, you can modify the instrumentation and balance to achieve a unique sound.

The new collection contains high-quality sequences for 41 songs, enough to fill an entire evening’s entertainment. It includes sequences appropriate for the following songs:

A La Nanita Nana, All I Want For Christmas Is You, All Through The Night, Angels From The Realms Of Glory, Angels We Have Heard On High, Auld Lang Syne, Carol Of The Bells, Christmas Is, Coventry Carol, Do You Hear What I Hear, Douglas Mountain, Feliz Navidad, Frosty The Snowman, God Rest Ye Merry Gentlemen, Happy XMas, Home For The Holidays, I Wonder As I Wander, It Came Upon A Midnight Clear, Its Beginning To Look A Lot Like Christmas, I’ve Got My Love To Keep Me Warm, Let It Snow, Masters In This Hall, Miracles, O Come All Ye Faithful, O Come Immanuel, O Holy Night, Pretty Paper, Santa Baby, Silent Night, Silver Bells, Somewhere In My Memory, The Christmas Song, The First Noel, The Most Wonderful Time Of The Year, The Star Carol, We Three Kings, We Wish You A Merry Christmas, Wexford Carol, What Are You Doin’ New Year’s, What Child Is This?, You’re All I Want For Christmas.

AMac users can get the new accompaniments by logging in to the sequence download site.

As a holiday treat, enjoy Yush Mikita’s classic recording of the Good Angel/Bad Angel Routine:


[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.

[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

FreeStyle: Yamaha-format style improviser for professionals

On January 1 we are releasing a new product, FreeStyle. With it, accomplished keyboardists can improvise sophisticated accompaniments using Yamaha-format style files [1] as MIDI loops. FreeStyle builds on the robust style reproduction engine that we developed for The Accompaniment Machine. Before describing the features of FreeStyle, it’s useful to point out the differences between the two programs:

  • The Accompaniment Machine was created for beginning and intermediate keyboard players. It provides rich musical backgrounds that greatly enhance performances. By preparing song materials in advance, the user can reduce demands during performances and even create completely automatic accompaniments. There are other useful features like melody auto-harmony.
  • FreeStyle is targeted to advanced or professional players who want to improvise accompaniments. The user controls all aspects of the accompaniment (style sections, chords, fades, irregular measures,…) in real time from the keyboard.

Figure 1 shows that main performance window of FreeStyle. The prime directive for program operation is that all musical functions are controlled from the keys of the keyboard (as opposed to buttons on the keyboard console). There are three reasons for this choice:

  • There is little standardization of console controls.
  • Removing fingers from the keys and hunting for a button could interrupt the musical flow.
  • FreeStyle works uniformly on any digital keyboard from any manufacturer.
FreeStyle main performance window

Figure 1. FreeStyle main performance window (preliminary).

Players use keys below a split note[2] for two functions:

  • Set chords to guide the harmony.
  • Perform operations like changing the style section, adjusting volume and tempo or initiating a fade.

Key combinations in the bass section of the keyboard are used to set chords, following the auto-accompaniment conventions of most digital keyboards. There are three options, balancing the simplicity of the key combinations against the number of available chord types:

  • An enhanced version of the Yamaha easy-chord system (5 chord types).
  • The FreeStyle system that accesses 10 chord types with 1,2 and 3 key combinations.
  • The full chord system involving up to 5 keys that accesses 31 chord types.

Operations are controlled by a set of five adjacent keys (chromatic or white keys), generally set aside at the low end of the keyboard. The graphic on the right-hand side of Fig. 1 shows the available operations and key combinations. The player can choose all available style sections. If a section is not available in a particular style file, FreeStyle chooses the best alternative. Other operations include the following:

  • The Stop operation either stops the style immediately or initiates a fade for a user-specific duration.
  • The volume commands reduce or enhance the accompaniment volume by a user specified ratio. Multiple key presses may be used for large volume changes.
  • Similarly, the tempo commands control accelerandos or ritardandos.
  • The OneBeat, TwoBeat and ThreeBeat commands play the next accompaniment measure for the specified number of beats and then continue with the normal pattern. This feature can be used to insert irregular measures.

The listbox at lower left (under construction) will store information for sets — setups for individual songs. Each row contains the style name and location as well as several parameters: starting tempo, relative volume, volume and tempo change ratios and fade length. The user can include any number of songs in the set, organize them and save them in a file.

The FreeStyle program includes the Style Organizer window shown in Fig. 2. Here, you can quickly check the sound and structure of individual styles and organize your style collection. The style organizer makes it easy to find just the right sound for a song. The FreeStyle package also includes the utilities MIDI Doctor and Style Voice Organizer. With the organizer, you can change the instrumentation of any style and customize voices for best performance on your computer. The package also includes a library of over 5000 tested styles organized by genre and song.

FreeStyle style organizer window

Figure 2. FreeStyle style organizer window.


[1] Brief description of Yamaha-format style files: LINK.

[2] Note that the top end of the keyboard (above the split note) may also be used in its normal mode.

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

[4] 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