Tim's Atari MIDI World

The PVG Experience


[Photo: Emile Tobenfeld]PVG. A new type of plumbing? It is for MIDI enthusiasts! PVG stands for Programmable Variation Generator. It was created by Emile Tobenfeld, AKA Dr T (see right). It only resides inside Dr T's KCS (Keyboard Controlled Sequencer) as an editing tool. Since its beginnings in 1987, the PVG is still one of the most remarkable advances in MIDI programming yet to seen in even our modern age of digital audio workstations.

What is PVG?
"The PVG is an enormously capable musical instrument, and is arguably the most powerful composition system ever seen on this planet." - from the PVG manual by Jim Aikin.

What PVG allows you to do is create variations of your music from a number of screens in many ways to alter, change and even create new music from your input.

Chas Stoddard (a former Dr T employee) gives us an excellent overview of the whole PVG system:

KCS would be an extraordinary tool as it stood but new heights were reached with the introduction of the Programmable Variations Generator and its close companion, the Master Editor. It is this author's opinion that the PVG represents one of the finest achievements ever in the field of MIDI music. It would, perhaps, be appropriate at this point to review what it does. Whilst many sequencers have facilities for Boolean editing, for example scanning a track for notes between C4 and C5 and adding notes that are one octave above to each note found, the PVG goes far beyond this. Not only is it capable of some sophisticated editing of existing data, it can also generate variations on this data and do so either completely deterministically or at random with the user having full control of the degree of indeterminism. Variations can be programmed to be Consecutive (give me 16 variations on this theme using the original as the basis for each) or Evolving (give me 16 variations on this theme basing each variation on the preceding one) - The PVG consists of ten pages of functions (over 500 of them) divided into a series of logical groups - these are:

  1. Changes: The introduction of new elements (via random or deterministic selection)
  2. Signed: Size and weight plus direction
  3. Gaussian: Statistical control of changes
  4. Constant: Size and weight but NOT direction
  5. Swap/Copy: The rearrangement of existing data in a sequence, or between two sequences using random selection
  6. Set Values: The selection of data at random that can be mapped to any set value. Any configuration of data is possible.
  7. Global 1: Provides transposition, inversion, erasure and deletion.
  8. Global 2: Maps specified data to set values
  9. Split/Pattern: An extension of the Global Protection function, it permits important characteristics of a sequence, particularly interval patterns, to be defined as a protection "template" and the varied material split from the original to form new material
  10. Ornaments: The addition of adjacent or simultaneous data with up to 18 different additions available at one transformation
  11. Add Controllers: Similar to Ornaments. Used to add controller, program, aftertouch and pitch bend data
  12. Vary Controllers: Similar to Changes. Used to vary controller, program, aftertouch and pitch bend data
  13. Macros: Up to 16 of the above presets can be combined to operate simultaneously or sequentially on a sequence. Control over each preset's range and direction of reading

An additional function appears if PVG is called from Open Mode - In-Betweens, which permits two sequences to be "morphed" from one to the other. In addition, the Master Editor provides functions that don't easily fit into PVG's environment. Of particular note is the Pitch Map - select any pitch on any channel and map it to a new pitch and/or channel: this can also be done recursively.

What the PVG does for the composer is to allow them to create their own tools that can be made to emulate virtually any conceivable compositional or pre/post-production MIDI editing process. For example, much composition requires "pre-processing", the manipulation of existing material via the user's own criteria to form new material - counterpoint is a good example of this. Practically any "rule" for extracting thematic material can be created or otherwise mimicked in the PVG: the musical devices of counterpoint, such as inversion, rotation, augmentation, diminution and reflection, can be programmed and applied to any aspect of the music - other compositional procedures are just as easily created. The PVG can also be used as an "ideas" generator: in short, KCS is a tremendous grab-bag of customizable tools suitable for both top-down and bottom-up composition and editing.

Chas Stoddard has also contributed to the usefulness of PVG with his PVG files that actually allow you to do microtonal music! Please see the link section to his site for more information on PVG and KCS in general as well as the amazing world of microtonal music.

A little history
What started all of this was a program produced in 1986 by DR T's Software called, "Algorithmic Composer" for the Commodore 64 platform. It was used by Jan Hammer in his Miami Vice scores. After that, Emile Tobenfeld (Dr T) and Jim Johnson (who co-wrote Algorithmic Composer) scratched their beards and came up with variations of the program called Fingers (Tobenfeld) and Tunesmith (Johnson). At this time the Atari ST was out in full force in the music field. KCS was progressing on several platforms, not the least the Atari platform. But Emile Tobenfeld wanted more and created a complete algorithmic and deterministic environment inside his KCS (level II) system. This was PVG (Programmable Variation Generator). Tunesmith and Fingers could also be used at the same time inside KCS with the MPE multi-tasking environment. For example, you could make variations of Tunesmith sequences with PVG.

The Dr speaks
Here are Emile Tobenfeld's thoughts and views on PVG:

In January and February of 1987, I took a "vacation" from working on the ST KCS, and implemented many of the features found in the Changes and Swap/Copy screens of the PVG. I found the program fascinating to use, and made some interesting music. I found that I could be almost hypnotized by a series of evolving variations that a simple preset could generate from a simple line of maybe a dozen notes, and even more fascinated if I played two or three sets of such variations slightly out of phase with each other. As I made additions to the PVG, the nature of the program changed somewhat. It was originally intended as a tool to allow these changes to evolve over time. Although the user had very precise control over the kinds of changes to be made, the process was essentially random in nature. As I added features like global changes and macros, it became possible to use the program to do quite complex things that were completely determined. These can either create variations on a piece or just be editing operations. The PVG in fact provides a very powerful editing environment with a number of useful orchestration tools as well.

A consistent part of my approach to designing and coding the PVG has been the desire to make things as general as possible. If I let you do something to the pitch of a note, I am likely to let you do the same thing to its velocity, duration, timing, MIDI channel, perhaps all at once. Likewise, in addition to allowing you to change, set, copy or swap parameter values, I also allow you to do things like rotate and time-reverse. This leads to a program with many screens, and more possibilities than one can absorb in a few hours or even days. Fortunately, the program is organized so that you can usually ignore those features that you do not want to use. Using the PVG I suggest that you bite off this program in small chunks, trying a few features here and there and seeing where they take you musically, then trying some more, etc. If you need to do something specific to a piece, search through the screens and the manual to see if there is a feature that will do the job. As you use the program, you should get a better picture of the kinds of things it can do, and how its various parts fit together. The PVG and Master Editor can be used in a number of different ways. You can use them strictly as editing tools to put together a preconceived piece of music as rapidly and accurately as possible. You can use them as a grab-bag of tools, available to be applied to a musical phrase any time you are so moved by whim or inspiration. They can also be explored as a source of music in themselves.

KCS/PVG and Steem
It is now possible to run this amazing editing tool on a PC using the free Atari emulator called Steem. There are many users who use KCS as their main sequencing environment for MIDI and drive soft-synths all on the same PC. For more information on Steem, please see my Steem page on TAMW for information and installation instructions (see link section).

Adventures in PVG tutorial

[Screen-shot: Track view screen]

Track view screen.


  1. Double click on LEVEL2.PRG. KCS loads. The track screen is presented. Record five measures or so of music on one track (click on Record, play your MIDI keyboard, then click on Stop)


[Screen-shot: Edit screen]

Edit screen.


  1. At the bottom of the screen, click on Edit. The main edit screen comes up with an event list and several editing options. You will also see a track selector at the bottom of the screen. Make sure track 1 is selected (or whatever track you recorded on in step 1).


[Screen-shot: Change by constant screen]

Change by Constant screen.


  1. Click on the PVG option. The Change by Constant screen appears.
  2. In the general options section enter 51 for changes per vary and 3 variations. This will ensure that PVG will do something once you start entering some parameters. Now unselect "Consecutive Mults" so that only "Evolving Mults" is highlighted.
  3. Now let's create some changes: Notice that you have several rows/fields to create changes: pitch, velocity, duration, time, shift, and interval. By entering an amount (AMT) and weight (WGT) you can effect changes in your sequence.
  4. Let's try this: on the pitch row, enter 10 for AMT and 5 for WGT. Scroll with the arrow keys to Velocity. Enter 12 for AMT and WGT of 7. Scroll to Interval and enter 5 (a 5th) with a WGT of 7. For this experiment, click on OK at the bottom of the screen. You will see the dialog "working".
  5. You are back to the event editing screen. You should see three new tracks in the track display (bottom of screen)
  6. Click on the "Play Screen" selection (or hit [F1]). You are taken back to the Track Play View. The newly created tracks will be called VARY1 and will be muted (MV). Unmute the first VARY1 track by clicking on it (clicking it again mutes it).
  7. Hit the space bar or select Play. The sequence plays the original track along with the PVG processed track. You should hear variations in the pitch.
  8. Muting then unmuting the next VARY1 track will let you audition the other evolving tracks compared to the original track. The last track will have the greatest variation.
  9. Try muting the original track so all you hear is the PVG processed track(s).
  10. If you do not like what PVG has done, you can go to the menu under Track function and select Erase track. Then click on the offending track and answer yes to the prompt.


[Screen-shot: Swap-copy screen]

Swap/copy screen.


  1. Go back into Edit. Click on your original track, select PVG. Now select Clear and the previous operations (the WGTS) will be cleared. Let's try another screen. Click on Swap/copy on the PVG menu. The Swap/copy screen appears. On the pitch row, enter 5 for swap, 5 for ADJ, and 5 for copy with a WGT of 10. Click OK.
  2. You are back to the editing screen. Hit [F1] or Play Screen as before. Audition your new VRY tracks. You will hear variations and harmonies against the original.


[Screen-shot: Getting PVG presets]

Getting PVG presets.


  1. So this is the general concept. Put in amounts (AMT) and weights (WGT), click on OK and audition your tracks. Throw out what you don't like. Try going into other screens to see what they do. The full manual is available so you can look up certain functions. Try out some of the preset VRY files (Randy Roos) by selecting Load, then Get. There are some good presets for the ornaments section such as stick bounce effects (sounds great on drum tracks), drum fills, variations... There is also the Macros screen, which is worth looking into. Experimentation is the key. You can store your own presets in your own file by using the Save command from the menu.


[Screen-shot: Macros screen]

Macros screen.

Importing MIDI files
Let's just say you have started a piece in Cubase and saved it as a MIDI file. It is possible to bring that piece into PVG for processing. Here is how you do it:

When the main screen of KCS comes up, select the Edit button, which brings you into edit mode (with the list editor present). From here, go to file and select "LOAD MID FILE". Select your MIDI file for importing. The file loads. I have found that if you try to do this in the main KCS track screen, it does not always work, but works every time this way (go figure). Once the MIDI file is in KCS and you see it displayed in the list editor, select a track you want processed with the PVG (the track numbers are at the bottom of the screen) then select the PVG button. You are taken into the first screen of PVG and can perform your PVG processing from there. Sometimes I will create variations of several tracks. Then go into "TIGER". Change the MIDI channels that the variations are on, and assign new sounds to them.

Creating an algorithmic environment
The amazing thing about KCS is the ability for it to load many programs (that were designed to work together) and share the same data streams. This is called the MPE (Multi Programming Environment), it means you can set up a complete algorithmic compositional system by adding Fingers (now MIDIAxe) and Tunesmith to load up at the same time as KCS (as they are MPE modules). This means whatever data you generate in Tunesmith or Fingers/MIDIax will be recorded as a KCS sequence which you can alter more by bringing the results in PVG for further processing. This presents a staggering system, which will keep even the most advanced MIDI user occupied for a long time! The key is in editing the KCS.INF file (with a text editor) to include the paths of the other MPE modules INF files. At boot-up, KCS will read the KCS.INF and load up the other modules. It is quite something to advance from screen to screen, clicking as you go. What a system!

KCS/PVG availability
Today, Dr T has agreed to a shareware version that now includes KCS version 4 Level II with PVG and Master Editor along with Tiger, Quick Score and Song Edit. Many example PVG files are also included. The shareware fee is $30.

Also included with registration is the KCS version 5 manual in electronic form (Microsoft Word). Please note that the manual is for version 5 and will have the additional features of version 5 covered. It can still be used for version 4 with good results.

Send US funds to:
Alpha Channel Productions
15 Frances Road
Lexington MA 02421

Once you have sent the funds, contact Dr T via his e-mail (below). Once he receives the funds, he will e-mail you the manual. The manual is over 300 pages.

To upgrade to version 5.11 which includes many more MPE modules, contact Emile Tobenfeld. Please read the documents supplied in the archive KCS4.ZIP for more details on version 5.0

Contact: Emile Tobenfeld, Ph. D.


  • KCS version 4 with PVG
    Note: For floppy-only systems you may need to put the folders in this archive on a separate disk. For hard drive users, simply unzip to your hard drive with ST ZIP, or copy the files over from disk. Remember: if you like the software, please pay the reasonable shareware fee and get the manual!
  • PVG documents in text format (scanning, OCR and formatting to text by Atari MIDI member, Brian Mclaren).


Useful links


Top of page ]

MyAtari magazine - Feature #7, March 2003

Copyright 2003 MyAtari magazine