KEYBOARD DR. T'S PVG PROGRAMMABLE VARIATIONS GENERATOR & MASTER EDITOR By Mark Vail Collaboration can be a fruitful arrangement - people working together toward a common creative goal. Such a liaison often forms because each member brings special talents that merge exceptionally well with those of his associate. Many a modern-day MIDI composer is perfectly happy with his partner, the personal computer. Luckily for him, a few MIDI software developers aren't content to create another typical sequencer. Rather than being a passive collaborator, the computer can play an active role. Way back in 1985, Dr. T's introduced their original Keyboard Controlled Sequencer [Keyboard Report, Sept.'85]. They've been refurbishing it over the years, and we've been trying to keep pace [Keyboard Reports, Oct.'86, Feb.'87, and Oct.'87]. The most recent version is KCS Level II for the Atari ST (anticipated to be available for the Amiga in July'88). While the KCS was powerful before, its newest additions, the Programmable Variations Generator (PVG) and Master Editor, are something to shout about. Prepare yourself for a new dimension in editing power. Overview. The PVG provides a series of routines to massage your tracks with the intent of creating musical passages that you wouldn't have come up with yourself. You could consider it sort of a data improviser. Functions are provided for varying note parameters, creating ornaments or embellishments, and adding or altering controller data in random or non-random ways. An operation can be performed on an entire track, or on a specific range within a track. You can enter new values for an operation each time you want to perform it, or store a group of settings and recall them later. (If you enter new values each time, you should remember to clear the previous values, with a simple click of the mouse, because certain operations use more than one window of parameters. Values remaining on another screen could greatly affect the PVG's output.) A stored setup for an operation is called a preset. The computer holds a total of 80 different presets simultaneously - 20 each of the Vary Notes, Ornaments, Add Controllers, and Vary Controllers types. For really involved changes, the PVG includes a method for combining a number of presets at once, called macros. As with a preset, you can determine whether a macro will process your track data randomly or according to your detailed instructions. However, the possibilities provided by macros extend far beyond those offered by single presets. The PVG stores 20 macros internally. The Master Editor includes operations somewhat like those offered by the PVG. The major difference is that while some of the PVG's presets use more than one window of parameters, each Master Editor operation uses only one window. Included in the Master Editor are operations to blend two tracks into one, edit chords, filter controller data, alter tempo information, and remap notes and their velocities. Blending is more powerful than simple track merging. It allows you to take attributes of one track and impress them onto another. For example, you can take a track with a distinctive rhythm and copy the rhythm onto another track of notes with different pitches and rhythms. You can save all PVG presets and macros and Master Editor screens as one file on disk. Individual preseAs cannot be saved in separate files, however. The first time you boot KCS, a default file containing a variety of PVG and Master Editor operations is loaded into the computer's memory. Once you have created a number of presets and macros that you want to save on disk, you can replace the default file with one of your own to be loaded when KCS is booted up. General Options. This section is where you tell the program the number of variations to make, and where to store the results. You can choose to replace your original track with the new material, and if it doesn't meet with your approval, you can still undo the operation and return to the original track. While you're still learning your way around the program, it might be a better idea to retain the original track by writing the new one to a separate memory location. That way, you can compare it with variations to evaluate the effects of different operations. If you make more than one variation with an operation, you can assign the results to the same destination. In this case, the variations will be appended to one another. You can base each new variation on the original track or on the previously generated one, depending on the type of result that you want to achieve. Using the original track each time can create more subtle variations, while using the previously generated track will create results that stray further from the original with each new variation. A reverse function is provided to work in conjunction with the previous two options. When you use reverse, the variations will be stored in an order opposite from the one that they were created in. This feature can be used to make a well-shaped phrase appear gradually out of a cloud of random notes. Protection. Since the PVG randomly chooses notes for many of its operations, some method had to be implemented in order to avoid total chaos in the program's results. Therefore, a protection scheme allows you to determine which notes should remain untouched. You can specify a probability of protection from 0% to 100%. Specific notes, events on one or two MIDI channels, and events at the beginning and end of the track can be designated as protected. Ranges of protection can be defined for pitch, velocity, duration, time, and intervals of these. Restrictions. To control the results of certain operations, you use restrictions to specify what you don't want. This can include note names, which is helpful if you want to change some pitches while keeping the results in a specific key. You can have the PVG analyze the current track and automatically restrict an operation so it won't generate note names that aren't already present. Ranges can be defined to limit a note's pitch and velocity data. PVG expects a lower value on the left and a higher one on the right for these parameters. If you reverse these values, the program will go ahead and process the track, but it won't create any new note data. A minimum time value can be assigned so that unwanted chords or notes that play too close together aren't produced. An auto-correct feature is provided so that newly generated time values are metrically even. Note duration restrictions prevent notes from overlapping. If a note has been shifted backward in time, PVG will shorten the duration of the preceding note so that it stops playing before the shifted note starts. These restrictions would be especially helpful in working with synthesizers limited to one voice per MIDI channel. Weights & Changes Per Vary'. It is imperative that you understand these parameters when you work with PVG. In order for a preset to process note data, at least one weight value must be set for some parameter. Any parameter with a weight value of zero will not be used by a preset. Many PVG presets will use non-zero values for only two or three weights out of the dozens available. The value given for changes per vary controls the number of operations PVG will per-form while creating a new variation of your track. This value works in conjunction with the weight value for each type of parameter to be changed. The PVG manual uses an analogy between the changes per vary value and a pie. When you enter weight values, you are in essence slicing up the Changes Per Vary pie. The higher the weight value, the more probability that any change made will be of that particular type. If the changes per vary value is zero, the number of changes made in a track will have a one-to-one correspondence with the weight values. Vary Notes. PVG allows you to insert values to vary a note's pitch, velocity, duration, channel, and time data. You can also insert values to shift time, which is like changing time data except that any amount that is subtracted from one note's time value will be added to that of the following note, and vice-versa, thereby retaining the overall length of the original track. Another option is to vary the interval relationship between a pair of notes. A staccato/legato option can be used to preserve the relationship of one note's duration and the following note's time value. PVG provides you with three ways to set the amount by which a preset will vary note data. You can set a constant amount, which the PVG may add to or subtract from a note parameter. In a second category, you designate a positive or negative constant amount to be used. For more random variations, PVG can generate an amount based on the standard deviation from a value that you provide. For example, if you provide an amount of 2 to be used for pitch variations, PVG will produce a majority of whole-step changes, some half-step and minor-third changes, and a few larger changes. Rather than creating new note data from existing data, you can choose to have the PVG alter your track by using elements that already exist within that track. For example, the program can randomly select two notes at a time and swap some type of data, such as duration, time, or velocity, between the two notes. Instead of swapping data between notes, the PVG can copy the data from one note onto another without altering the first note. This operation can effectively reduce the variety of a track by duplicating some of the note data. The program also provides a function for processing as many consecutive notes at a time as you wish. This makes working with specific patterns possible. You can paste certain elements of a track, such as a rhythmic pattern, onto another track at randomly selected points. Since you can control the elements and number of consecutive notes to be copied from the source track, the range of variation can span from purely stochastic to completely deterministic. Time reverse can be applied to a randomly selected but contiguous set of notes within a track, so that note data (pitches, durations, or whatever) is shuffled into an order opposite from the original. Another option is to rotate data from a randomly chosen set so that they are passed toward the end of the consecutive region by the number of steps that you designate. PVG can randomly select notes and affix absolute values to them. This operation includes delete and erase functions. These differ in that deleting a note removes its time value, shortening the track, while erasing a note causes its time value to be added to that of the next event, retaining the length of the track. Using an erase function like this is one way to create syncopation effects for variety in your rhythmically constant tracks. Global operations allow you to process all unprotected events in a track. Options include inversions and transpositions of pitch, velocity, duration, time, MIDI channel, and interval. A logical pattern screen test is available; this operates as a complex protection function. In order for a note to be processed, it must pass a test based on its pitch or velocity relationship to up to eight other notes in the track. Pattern testing can be performed during other Vary Notes operations, but not with Ornaments, Add Controllers, or Vary Controllers. You set up the pattern to be tested by entering logical arithmetic criteria and interval data. You also specify the note to be changed and the last note of the test pattern. If the pattern passes the test, the preset can vary the chosen note within the pattern. For example, you could tell the PVG to vary any note that is at least a fifth higher than the preceding note. Any PVG operation could then be performed on this note. In Betweens. You can create new tracks that are linear interpolations between two existing tracks. By using scale restrictions to keep the in-between track harmonically sensible and quantization to keep it rhythmically sensible, you can get some interesting music. One of the options in this operation is a restrictions function. When we called up this screen, we found an intriguing row of gibberish. According to Dr. T's, this row of characters is part of Emile Tobenfeld's programming code for this operation, and was left in our copy of the program by accident. We also tried to cancel out of In Betweens from the restrictions screen, but PVG processed our track anyway. The KCS we were checking out was dated February 26, and we're informed by Dr. T's that in the newest version, dated March 16, these problems have been corrected. Ornaments. If you prefer to have the PVG create some new notes to accompany those you've already put in, the Ornaments presets are for you. Instead of merely altering existing note data, Ornaments presets add new notes around existing ones. You can specify up to ten ornamental notes to be based on those already within the track. The PVG can choose notes at random to add your ornament to, or it can ornament all unprotected notes. A copy function lets you create a new ornament from an existing track by specifying a range from the source track. The data for these notes include pitch, velocity, duration, and MIDI channel. An offset value determines the starting time of the ornament in relation to the note it is based on. The offset value can be positive or negative, allowing you to start an ornament prior to the note being ornamented. A delay setting for each ornamental note designates the starting time of that note in relation to the offset time. Three of the Ornaments parameters-loop, length, and shift-affect the repeating characteristics of the ornament. The loop value establishes the number of times the ornamental group of notes repeat. The length parameter determines the amount of time between repetitions. Shift is used to define the relative pitch, volume, or duration of each iteration of a loop. When shift is used to control velocity, a negative value will cause successive iterations to get quieter, while positive values will make it get louder. Settings are also provided to limit the ornament to the duration of the ornamented note or to stop the ornament at the beginning of the next note. Add Controllers. PVG can insert new controller data, including continuous controller, after-touch, and pitch-bend information. Up to 18 controller events can be generated for each note in a track. The note's pitch or velocity can be used to modulate the amount and timing of the controller data. Parameters are included to stop controller data after a note ends or when the next note begins. Predetermined program change events can be randomly inserted into a track, but program numbers can't be randomly generated by a preset. If you want various program changes to be randomly inserted within a track, you could create 16 different Add Controllers presets, each with one of 16 program change numbers, and then randomly select among them using a Macro. Like Ornaments and the pattern function, Add Controllers includes a feature that allows you to copy data from an existing track into the preset, which is a nice convenience. The Add Controller operation also features controls to modulate the data depending on the pitch and velocity information in a track. New to KCS Level II is the addition of polyphonic key after-touch compatibility. This is exciting news for those owners of instruments which respond to this data (such as the Ensoniq ESQ-1; see the Programming Clinic on pg. 74). Even if you don't have a keyboard that will generate this controller information, PVG can create it for you. Vary Controllers. This type of preset allows you to edit existing controller data. Vary Controllers has its own version of protection and restriction parameters. Global and single event operations are provided. Editing Functions. If you're thinking that the PVG would only be useful for randomizing your music, you're wrong. You can perform very complex and powerful global editing to your sequences. Using protection and pattern recognition of specific notes, you can make changes to any part of the material in a very deterministic manner. For example, you could change the MIDI channel and duration of all the C's with velocities between 82 and 91 that follow B's. You can be more or less particular than this, as well. Macros. This powerful feature lets you use up to 16 presets randomly or in a deterministic manner, on an entire track or only a portion of it, for more complex edits and variations than are possible with individual presets. You can use Macros for applications as detailed as varying the data of a note that falls on a specific beat of every measure or altering the velocity and MIDI channel of repeating sets of five notes within a repeating eighth-note pattern. We found only one way to crash the KCS program. You're supposed to be able to use the computer's escape key to abort any PVG operation, but it doesn't work consistently for all operations. We set up and activated a long macro, but escape wouldn't abort it. Our macro toiled for more than 15 minutes and produced two tracks, each over 50,000 events long. When we switched from one of these to the other, changing took the computer about 1 1/2 minutes, and there was no way we could stop it. After deleting both of these tracks, we tried to record a new track, but the program went bye-bye. Otherwise, no matter what kind of contortions we went through, we couldn't crash KCS - an impressive feat for such a complex program. We'd love to delve further into the capabilities of PVG's macros, but space just won't allow it. Suffice it to say that this feature provides the most powerful music editing capabilities that we've ever seen. The Pitch Map. This function allows you to redefine 88 MIDI notes and their MIDI channel and velocity parameters. Velocity settings can beset, transposed, or averaged between those occurring in a track and a given value on the Pitch Map screen. A recursive function is provided so that you can apply the Pitch Map over and over to a track, causing the pitches to cycle through a set of relationships. One useful application of the Pitch Map would be to translate notes from one drum machine to another that used different note numbers for the drum sounds. By applying the Pitch Map to a track that included some inharmonic notes, you could clean up the track. The Pitch Map can also be called in place of a preset from a PVG macro. Chords. Using this function, you can process chords in a number of exciting ways. If the notes you intended to play simultaneously are separated by time values of 1 or 2, you can "deflam" them-the program searches for events within a time value that you specify and moves their starting time to coincide with those of the other notes of that chord. This procedure then adjusts the time values of non-chord events to maintain the rhythm and length of the original track. Operations can be performed on the velocity, duration, and MIDI channel of individual chord notes to create multi-timbral events. An arpeggiation operation does the opposite of deflam, spreading the notes of chords out over time. The notes of an arpeggio can be sorted to play in a number of different orders. Conclusion: We've never seen anything quite like Dr. T's PVG. It's very complex and requires insight, experience, and experimentation before you can expect to get "acceptable" music from it. The effort is worth it, though. As you learn how to use PVG, you'll find yourself daydreaming about applications while you're away from it. Of course, we had to make up a wish list, but it's very short. First, we would prefer to have a way of entering values that was a bit more user-friendly. There are so many parameters to adjust on each operation screen, and after you click on the one you want to change, you either enter a number on the computer keyboard or use the arithmetic strip on the screen. Maybe using the right mouse button and horizontal or vertical movements to enter values would be a viable alternative. It would also be nice to have a command to initialize the Protections, Restrictions, and General Options parameters. The "clear" command only resets weight-type values. Getting a new preset initializes Protections and Restrictions, but you still have to change the General Options settings. Dr. T's offers two versions of KCS: Level II and l.6. The l.6 program does not include PVG or the Master Editor. The biggest improvement of these over KCS version 1.5 is the ability to run four programs simultaneously on the Atari in Dr. T's multi-programming environment. This capability allows you to switch from one application to another, such as from the KCS to one of three different synthesizer editors. You can then play your current track or sequence without leaving the editor, so as to hear how the edited patch will work with the music. (Only a small group of programs, most of them from Dr. T's, will run in this environment.) Upgrading from 1.5 to 1.6 will cost $40, and $100 from 1.5 to Level II. If you have version 1.6 and decide you want Level lI,theupgradepriceis$75. We suggest that you go for Level II, because PVG will provide you with one of the most complete and powerful editing environments available. Look at it as a new partner in a collaboration towards higher levels of music. It's powerful stuff-provided you can keep the top of your head attached. Dr. T's PVG & Master Editor Description: Stochastic and deterministic editing enhancement for Keyboard Controlled Sequencer Level II. System Requirements: Atari 1040 ST or Mega computer. Amiga and Macintosh versions projected for July '88. Features: Variation of note data, note data swapping and copying, consecutive and evolving variations, pattern generation and recognition, note ornamentation, addition and variation of controllers including polyphonic key after-touch. Track blending, pitch mapping, chord deflamming, chord arpeggiation, automated macro editing, time reversal and inversion, tempo change utilities. Size: Program comes on a 3.5" copy-protected floppy disk. Additional disk with tutorial programs. List Price: Keyboard Controlled Sequencer Level II: $325.00. Upgrade from KCS ver. 1.5: $100.00. Upgrade from KCS ver. 1.6: $75.00. Contact: Dr. T's Music Software, 220 Boylston St., Suite 306, Chestnut Hill, MA 02167. (617) 244-6954.