ChordMaps are sets of potential chords or chord paths for chord progressions to follow. Introducing a ChordMap into a Segment allows DirectMusic to generate chord progressions on the fly, adding a new element of variability to DirectMusic songs. DirectMusic pieces the chord progression together within the boundaries provided by the content creator's ChordMap parameters. This section includes examples of variable chord progressions and instructions on how to use them.

Create a ChordMap called SignPostsOnly by using Ctrl+N and selecting ChordMap. If you have seen ChordMaps before, you may have noticed the charts with lots of little connecting lines going everywhere. The truth is, you do not need to put anything into that area of the ChordMap to get a variable chord progression.

The most vital thing in a ChordMap is the signpost. Signposts are groups of chords from which DirectMusic chooses while generating a chord progression from the ChordMap. The signpost list is located on the right side of the ChordMap editor (see Figure 6-4). Under SP (SignPost), you'll see the word <new>. Click on that, and a new chord will be created. You can edit the chord from there. If you check a box under the number 1 and next to your chord, your signpost chord will become a member of signpost group one. When you start working in your Segment, the signposts are the main way that you control how the ChordMap is used within the Segment. You will be able to specify which signpost group you want the engine to choose from at that given time.

click to expand
Figure 6-4: The signpost list.

There is an easier method to employ in the creation of chords here. The chord on the left side of the screen can be dragged into the signpost list. The chords on the left have nothing to do with the way the ChordMap sounds. That is just a palette for you to grab chords from. Just like a painter's palette, you can change and customize the palette. All the chords on the palette are editable. To start with, they are all major chords, but if you look up next to DirectMusic Producer's main View drop-down menu, you can see a ChordMap drop-down menu. From there, you can change the palette to all minor, major, major seventh, dominant seventh, minor seventh, or chords based on the underlying scale of the ChordMap.

To show flats instead of sharps in any of the ChordMap's various components (in this case, the palette) click on the ChordMap in the tree view and go to the Chord Properties window. There is a check box that lets you specify flats along with the key of the ChordMap. It is a good idea to set this first, since changing the key will transpose all chords in your ChordMap.

For this example, add these chords to the signpost list: C, F, Dmin, G7, Ab7, and Db7. Once you've got the chords entered, check group one for C, group two for Dmin, F, and Ab7, and group three for G7 and Db7. If you are a theory buff, group one is tonic, group two is subdominant (or a substitution), and group three is dominant (or a substitution). Figure 6-4 shows what the signpost list should look like.

Now we can make a Segment to use the ChordMap. Create an eight-measure Segment and name it SignPostOnly. You will need a ChordMap Track, a Signpost Track, and a Style Track. To create the ChordMap and Signpost Tracks, use Ctrl+Ins or right-click and select Add Tracks. Then select the appropriate track type to create. Insert SimpleStyle into the Style Track and your new ChordMap into the ChordMap Track (bar one beat one). Click bar one beat one of your Signpost Track to insert a signpost. Choose group one. Fill out the rest of the Segment so the signposts follow this pattern:

| 1 | 2 | 3 | 1 | 2 | | 3 | | (also shown in Figure 6-5)

click to expand
Figure 6-5: Signpost demonstration.

Now we can generate the chord progression from the ChordMap. This is done by clicking the dice icon in the Signpost Track. When you do so, a ChordMap Track appears and is filled in with chords. Notice that for all bars where groups two and three are entered, the same chords are used. If you click Compose again, it selects new chords for groups two and three again and uses only those chords instead of the previously generated chords. Group one only has one chord; that's C major. If you do not want to have to click the dice all the time, you can call up the signpost track's properties page (select the blue track label) and go to the Flags tab. Check both Recompose on Play and Recompose on Loop. The Recompose on Play flag automatically selects new chords every time the piece plays. The Recompose on Loop flag automatically selects new chords every time the section loops.

Here is what the Segment should look like. Note that the chords will most likely be different:

You are probably itching to play with all the neat graphs, so let's do that next!

You can define different paths for the chords to take when moving from one signpost to another. Do this by mapping out chords between the different signpost chords and drawing lines from chord to chord. You can experiment with the map that we just created by dragging all the chords from group two to bar one and all the chords from group three to bar three. Right-click each of the chords in measure one and make them beginning signpost chords by selecting Toggle beginning signpost from the pop-up menu that appears. Beginning signposts are signified by a green arrow. Similarly, right-click all the chords in measure three and make them all ending signpost chords. Ending signposts are signified by a red circle. Put whatever chords you want into bar two, and start drawing lines from one chord to another. The lines are drawn from the lowest gray box on the end of the chord. An empty box is always on the bottom since a new one is added every time you create a new connection path.

click to expand
Figure 6-6: Connecting chords.

If you go back and recompose (i.e., regenerate) the Segment above, bar six should have one of the connecting chords that you just added. This happens because once connections between two signposts are drawn, DirectMusic will always use the connection lines if there is room in the Segment. The area between bars five and seven is the only place where there is a move from signpost two to signpost three, and there is a measure open for the connecting chord. If you want the chord progression generated by the ChordMap to be able to choose randomly between going directly from signpost to signpost and using the connecting chords, draw a line that connects the two signposts directly. Otherwise, DirectMusic will always use the connecting chords if there is room. To delete a connection, click on the line and press the Delete key.

For another example of connecting chords, open on the companion CD. Check out the bookmark Connecting Chords. The ChordMap only uses one signpost chord that is placed into groups one and two. The map (see Figure 6-7) is meant for a Segment that is five measures in length with signpost one on bar one and signpost two on bar five. The connecting chords play on bars two, three, and four. The strategy here is that bar five is never actually played. The Segment is set up so that it loops after bar four. Bar five is only there to hold the target signpost so the connecting chords can be composed. This is a good strategy for looping Segments that need to transition back to bar one. You can't compose connecting chords back to bar one, so you have to make a duplicate that never plays.

click to expand
Figure 6-7: Connecting chords example 2.

The ChordMap in the example above has to be played in a five-measure Segment that is in 4/4 time to get the connecting chords to play properly. If you select the variable editing option in the ChordMap Properties dialog, the chords can now occur at different time intervals than they are laid out in the ChordMap. To change the time intervals that a chord can play, bring up the properties page for the connection line. Here you can adjust minimum and maximum lengths and even the weight — the probability that that connection will be selected.

One other ChordMap feature is the cadence. This could be useful in a jazz situation where you just want to put in the keys and have the ii-V-Is come in automatically. Cadences are good for that, but the chords do not have to be standard classical cadences. Your cadence could be bVI, bV, i.

Any signpost can have an associated cadence. The two slots to the left of the signpost in the signpost list labeled C1 and C2 are for cadence chords (see Figure 6-8). Drag the chord or chords you want to use into those slots. Then when you want to cadence to a signpost, check the Precede Signpost with Cadence check box in the properties page for signposts in your Segment's signpost track. There is a Cadences bookmark in the accompanying project that gives an example of this.

click to expand
Figure 6-8: Cadences.