PureStyle file format reference

Styles are the versatile automatic accompaniments found on digital keyboards from Yamaha and other manufacturers. There are thousands of Yamaha-format style files available for purchase or download on the Internet. Styles are employed to create custom accompaniments — a virtual backup band for performances. Styles may be installed on keyboards or used in computer programs like the Accompaniment Machine.

Conventional Yamaha-format styles were not intended as a standard for data exchange. In fact, they have many characteristics to maintain proprietary content:

  • Because the format evolved over several decades in a closed environment, a considerable amount of non-musical information has been appended.
  • There is no official documentation of the standard.
  • Many styles are modified to function only on specific keyboard models, leading to a multiplicity of redundant styles.
  • Some features are incompatible with computer MIDI output through sound fonts

A problem in designing software that utilizes styles is that users assume the program is at fault when a style fails to run or makes a strange or grating sound. To ensure that all styles distributed with the Accompaniment Machine perform correctly, we have created PureStyle, a new standard for style files. PureStyle files have the following advantages:

  • The files contains nothing but standard MIDI messages. Consequently, they are compact and may be modified with most MIDI editors.
  • The format is open and well documented.
  • A PureStyle file generates good-quality sounds with any keyboard, synthesizer or computer soundfont.
  • The format is compatible for direct loading on all existing Yamaha digital keyboards.
  • The files are smaller, an important factor for loading on keyboards with byte limits.

This article documents the PureStyle format and describes utilities for modifying the files.

A knowledge of the organization of standard Yamaha-format style files is necessary to understand the advantages of PureStyle. Reference 1 gives a brief summary while Reference 2 provides a detailed description.

A PureStyle file is a standard MIDI[3] binary file of Type 0. It contains a header chunk and a single track chunk. The file name has the form


The quantity DescriptiveText is a title for the style using only letter and number characters. Punctuation marks and spaces are not allowed. An underscore and the tempo (in quarter notes per minute) follows. This quantity is the default starting tempo for style sections. Tempo changes may occur during the musical sections, typically ritardandos in Endings. The time-signature appears after the next underscore in the form numerator-hyphen-denominator. Finally, the letters ps after the next underscore indicate that the style is in PureStyle format. The file extension is always sty. Here are some examples:

MIDI Microscope display of a PureStyle file.

Figure 1. MIDI Microscope display of a PureStyle file.

Because PureStyle files follow a standard MIDI format, a good way to understand the structure is to view the file with MIDI Microscope. Figure 1 shows the display with a PureStyle file loaded. The binary values appear in the left-hand box. The right-hand box shows a text explanation of the content. We will concentrate on these entries — Ref. 3 shows how the information is represented in binary format. The file is divided into two chunks: the header chunk and a single track chunk. The header chunk contains the following information:

 Chunk length: 6
 Midi file type: 0
 Number of tracks in file: 1
 Pulses per quarter note: 1920

The chunk contains six data bytes. The values of the chunk length, MIDI file type and number of track chunks are the same for all style files. A MIDI file of Type 0 includes a single track that contains the musical information. The final quantity defines how pulses (the time units in a MIDI file) are related to a quarter note. In this case, one pulse equals 1/1920 of a quarter note.

The beginning of the track chunk contains information like the following:

 Chunk length: 21646
 0     Non-MIDI event, time sig: 4/4 Notes/click: 24 Clock/quat: 4
 0     Non-MIDI event, tempo change: 422535 microseconds/quarter note
 0     Non-MIDI event, marker: SFF1
 0     Non-MIDI event, marker: SInt
 0     Program change, channel 09    Percussion
 0     Control change, channel 09    Bank select:   7F
 0     Control change, channel 09    LSB for Control 0 (Bank Select):   00
 0     Control change, channel 09    Channel Volume:   68
 0     Control change, channel 0C    LSB for Control 0 (Bank Select):   00
 0     Control change, channel 0C    Channel Volume:   58
 0     Control change, channel 0C    Pan:   24
 0     Control change, channel 0C    Effects 1 Depth:   00
 0     Non-MIDI event, marker: Main A
 0     Note on, channel 09    Note: 1A   Velocity: 3C
 0     Note on, channel 09    Note: Bass Drum 1   Velocity: 50
 0     Note on, channel 0A    Note: Bass Drum 1   Velocity: 32
 0     Note on, channel 0C    Note: F4   Velocity: 40
 0     Note on, channel 0C    Note: A4   Velocity: 41
 8     Note on, channel 0C    Note: G4   Velocity: 42

The track chunk header and the chunk length are followed by a series of standard MIDI messages. The quantity in the first row of each message defines the timing. It equals the number of pulses to wait before sending the message. The series of zeros indicates that the initial entries are setup messages that should be sent to the synthesizer immediately on startup.

The first three messages appear in all PureStyle files:

  • Byte values that specify the time signature.
  • The baseline tempo in microseconds per quarter note. The program or synthesizer uses this information to relate pulse values to absolute intervals of time. In the current case, each pulse equals 220 microseconds. The base tempo may be modified in some of the style sections (e.g., to implement a ritardando in an Ending).
  • The marker message SFF1. The dummy information is included for keyboard compatibility. The designation of SFF1 or SFF2 format has no function in PureStyle.

Remaining MIDI marker messages designate the starting point of style sections. In PureStyle, the baseline channel voices (synthesizer patches) are gathered in the SInt section. Each channel used in the style has a program change message and optionally a set of control change messages to set up the MIDI output device. The control change messages may include XG voice settings, although for style distribution it is recommended that the contain only GM (General MIDI) definitions. PureStyle files use the following channel conventions:

08h: Subrythm — this channel is often used for supplemental percussion instruments, although it could be defined for a pitch instrument. For percussion sounds, the style file must include program information to set the channel as a drum set. In this case, note values are interpreted as percussion sounds rather than pitches.

09h: Rhythm — the MIDI convention is that this channel  is used only for percussion and is always associated with a drum set.

0Ah: Bass notes — instruments like a string bass or tuba.

0Bh: Chord 1 — polyphonic instruments to create harmony, like a guitar or piano.

0Ch: Chord 2 — a second polyphonic instrument.

0Dh: Pad — usually a floating voice like strings or a choir.

0Eh: Phrase 1 — a melody instrument, usually appearing in introductions and endings.

0Fh: Phrase 2 — a second melody instrument.

The SInt section is followed by a set of style sections that contain the musical information. The start of each section is designated by a marker message. The following standard marker values may appear: MainA, MainB, MainC, MainD, IntroA, IntroB, IntroC, EndingA, EndingB, EndingC, FillAA, FillAB, FillBA, FillBB, FillCC and FillDD. Many styles do not include all sections. The only required section is MainA. The musical sections are in standard MIDI format with no channel redirection, key changes or other features supported by the CASM section of standard style files. A PureStyle file makes the correct sounds when played on any MIDI player. The musical sections follow the ideal style convention defined in Ref. 2 — the pitch instruments play in the key of C and the polyphonic instruments should suggest a CMaj7 chord. Tempo changes and voice changes may occur within a section.

The above information constitutes a complete definition of PureStyle. In contrast, the definition of the standard Yamaha-format style file with all its variants and idiosyncrasies occupies 55 pages in Ref. 2. We feel that PureStyle files create a comparable sound, particularly when the Style Master utility is used to tune the voices for a specific output device. Use this link if you want to inspect the complete MIDI Microscope listing for the PureStyle example, AFoggyDay_142_4-4_ps.sty.

We have developed two utilities that enhance the utility and versatility of the PureStyle format:

Performs automatic bulk conversion of an entire directory of standard Yamaha-format styles in either SFF1 or SFF2 format to PureStyle. During the conversion, ShapeShifter eliminates corrupted style files and removes duplicate styles that may differ only in tempo or voice assignment. This program is discussed in detail in the following article.

Style Master
An interactive program to set the channel voices, baseline tempo, time signature and other characteristics of PureStyle files. Style Customizer converts individual Yamaha-format styles in any format to PureStyle with options to correct any content that may be incompatible with GM devices. Because PureStyle files are in standard MIDI format, in principle they may be created or modified with any MIDI editor or digital workstation. In practice, available editors scramble the position of the marker messages needed to organize the musical content into sections. Style Master reads a PureStyle file, creates a subdirectory and then writes individual MIDI files for each section: SInt, MainA, MainB,….  Each file may then be modified and saved with conventional MIDI editors. Given a subdirectory, the program seeks files with standard section names and reassembles them into a single PureStyle file.


[1] What’s In a Yamaha Style File.

[2] Peter Wierzba and Michael P. Bedesem, Style Files – Introduction and Detail.

[3] A good reference for creating binary MIDI files, About MIDI Files.

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

[5] If you have comments or questions, please contact us at info@kbd-infinity.com.

Tempo corrections in Style Master

I added a new feature to the Style Master in response to a problem I encountered creating an accompaniment to Memory by Andrew Lloyd Weber. The piece is in 12/8 time and there are few, if any, Yamaha-format styles available with this time signature. On the other hand, there are many available styles in 3/4 time. A simple solution to build a sequence for the Accompaniment Machine is to use a 3/4 style and to count each measure in the score as four measures. The style tempo must be boosted to about 180 quarter notes per minute to achieve the normal flow of the song. The procedure usually works for Main and Fill sections, but problems may occur in Intro and Ending sections. They often contain tempo-change messages to implement ritardandos or accelerandos. Such messages set an absolute tempo that does not match the tempo specified in the Style Master or the Accompaniment Machine. The result is that the song may slow to a crawl halfway through the ending.

To correct the problem, I added a new option in the Style Master  shown by the red arrow in Fig. 1. When Tempo clear is active, the program removes any tempo changes that occur in the style sections. The result is that all sections play at the same rate. In this case, in an Accompaniment Machine performance you have the option of adding relative ritardandos in an Ending by using the TempoChange or TempoSet commands of the Autosequence or Performance modes. The recording below illustrates the ending of the Memory accompaniment with and correction.

Main window of the Style Customizer

Figure 1. Main window of the Style Master. The red arrow shows the new TempoChange option.

Regarding a performance of Memory with the Accompaniment Machine, it’s easy to deal with the 6/8 and 10/8 measures that occur in the song. For the 6/8 measures, simply count the measure as two 3/4 groups rather than four. The 10/8 measure can be implemented by adding a OneBeat command at the third 3/4 measure of the 12/8 group.

This short recording illustrates the feature. The first section is the ending of an accompaniment to Memory with no correction. The second section is the result with tempo correction and a specified ritardando.


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

[2] If you have comments or questions, please contact us at info@kbd-infinity.com.

Style Master: bulk style corrections

Styles are the automatic accompaniments available on digital keyboard from Yamaha and other manufacturers. They function like a backup band to spice up performances. The Yamaha-style format has become the de facto standard for style exchange. There are more than a hundred-thousand style files available for download or purchase in all musical genres. Unfortunately, the style file as defined by Yamaha is a poor format for information exchange for the following reasons:

  • Because the format evolved over several decades in a closed environment, a considerable amount of non-musical information has been tacked on.
  • There is no official documentation of the standard.
  • Many styles are designed to function only on specific keyboard models, leading to a multiplicity of redundant files.
  • Some features are incompatible with computer MIDI output through soundfonts.

My interest in standardizing the style format derives from my development of the Accompaniment Machine (link) program. When users run across a style, play it on their keyboard through the Accompaniment Machine and it sounds weird, they tend to blame the program rather than the file format. Accordingly, I created a style-exchange format called PureStyle. PureStyle files have the following advantages:

  • The format contains nothing but standard MIDI messages. Consequently, the files are easy to understand and accessible to many existing MIDI editors.
  • The format is open and well documented.
  • A PureStyle file generates high-quality sounds with any keyboard, synthesizer or computer soundfont.
  • The file name includes the tempo and time-signature of the style to make selection easier.
  • PureStyle files are more compact, ensuring that advanced styles don’t exceed byte limitations on keyboards.
  • Most important, the format is back-compatible with all existing style performance keyboards and programs.

We distribute only PureStyle files with our software. At this point in its evolution, I feel that the advantages of PureStyle make the format of general interest to the keyboard community. This article begins a series describing problems of legacy Yamaha files and documenting PureStyle as an open format.

In this article, I will describe new features of our Style Master program. Figure 1 shows the interface. The new controls are circled in red. They occupy a small portion of the interface, but serve an important function. The first step is click on the button Set working folder and then to navigate to folder that contains any number of style files (with suffixes STY, BCS, PRS, SST and PCS). The second step is to click the Correct all files in folder button. Here, Style Master builds a new PureStyle file using the musical and organization information of each original style and then deletes the old file. The bar above the button shows the progress of operations. Note that Style Master can handle original files designed for any Yamaha keyboard in either SFF1 or SFF2 format.

Style Customizer interface

Figure 1. Style Customizer interface.

I’ll summarizes the sequence of tasks performed by Style Master for each original style. Future articles detailing the PureStyle format will clarify the operations.

1) Loop through all files in the folder than have style suffixes.

2) Read the style information, including the mysterious CASM section, including channel redirections and alternate sections. Delete any corrupted files detected.

3) Use the MIDI and CASM information to build a PureStyle model in memory that contains only a MIDI section with standard MIDI messages and follows the two ideal-style rules: 1) all channels and sections are in the key of C and 2) harmonic channels suggest the CMaj7 chord.

4) Use the original style name and information to construct a PureStyle name of the form DescriptiveText_Tempo_TimeSignature_ps.sty. (Note that all PureStyle files have the suffix STY because there is no need to differentiate.)

5) Write a PureStyle file with content that depends on the current state of the Style Master checkboxes:

a) GM compliant: Remove XG voice settings so that the style produces a good sound on any General MIDI device. The standard features of Style Master can then be used to optimize voices (i.e., add XG voice information) for specific keyboards.

b) Percussion channel compress: Some styles use the style Chan 08h to store additional percussion information. This convention is totally unnecessary and is not recognized by all devices (e.g., CoolSoft VirtualMIDISynth). If this box is checked and the original style uses Chan 08h for percussion, Style Master transfers musical information from Chan 08h to Chan 09h and eliminates Chan 08h.

c) Percussion filter: The technical name for this feature is the Xavier Cugat Filter. Tyros styles often use a drum set that produces strange sounds (e.g., bird tweets, rachets, police whistles,…) when played on a GM drum set. This option removes offending sounds that would occur only in the strangest of styles.

d) Keyboard compatible: In principle, a PureStyle file should contain only a MIDI section. Some Yamaha keyboards will not load a style without a CASM section. This option adds a dummy CASM section with no information to the output file. The dummy section has no effect on the style performance in software.

6) Delete the original files.

In other words, Style Master provides a quick path to move an entire style library to a device-independent form.

I can extol the virtues of PureStyle, but the proof is in the sound. The following short audio selection shows the advantages. Using a style I picked at random from an archive purchased from the PSR Tutorial site, I recorded MainB using Coolsoft VirtualMIDISynth as the output device with the Arachno soundfont. The first half of the clip is the raw style, clearly unusable. The second half is the PureStyle equivalent produced by Style Master. The byte length of the PureStyle file is only 58% of the original length.

If you want to try some PureStyle files on your keyboard, use this link to download a sample collection: PureStyleSampler.zip. Following articles will give technical details and also the official PureStyle format reference.


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

[2] If you have comments or questions, please contact us at info@kbd-infinity.com.

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 info@kbd-infinity.com.

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 info@kbd-infinity.com.

Fixing percussion sounds with Style Master

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 Mater 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 Master 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 Master.


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

[2] If you have comments or questions, please contact us at info@kbd-infinity.com.

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 Panchohttps://kbd-infinity.com/pancho.html. You can also download the Pancho instruction manual: https://kbd-infinity.com/documents/Pancho.pdf. Two freeware programs are needed to perform all the tasks described in the manual:

Speedy MIDI for quick editing of MIDI files: http://sourceforge.net/projects/speedymidi/

MuseScore for creating and editing printed scores from MIDI files: https://musescore.org/


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

[2] If you have comments or questions, please contact us at info@kbd-infinity.com.

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 info@kbd-infinity.com.

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 info@kbd-infinity.com.

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 info@kbd-infinity.com.