The Intelligent Part-Writer Applet allows you to design a chord progression, then watch the applet automatically compose the parts. Before you try designing schemes of your own, you should check out the example I have prepared. Since the applet's file chooser always starts with your home directory, and since you probably don't want to clutter up your home directory with XML files, I recommend that you establish a working folder directly under your home directory. A single working directory will suffice for all the applets on this site.
Version 2.0.3 of the Intelligent Part-Writer implements two enhancements relative to the preceding version 2.0.2.
The first enhancement is that the SHA-1 64-bit encrypted Java Signing Certificate has been upgraded to 128-bit
SHA-2 encryption, as required by the latest browsers.
The second enhancement is the establishment of an XML schema document, part-writer.xsd
.
The version 2.0.3 file chooser now verifies that each compliant XML input file has a document element named
“document” with a schemaLocation
attribute set to “https://charlesames.net/part-writer part-writer.xsd”.
If you wish to understand what is needed to bring a pre-2.0.3 file into compliance, use an online XML validation site such
as www.freeformatter.com.
The first prepared example is defined in the file Partwriter-Example.xml
.
Follow the instructions given in here to download Partwriter-Example.xml
into a working folder under your home directory.
Initially, the applet should resemble Figure 1.
To load the file, click on and use the file chooser to locate Partwriter-Example.xml
in its download directory.
Once the file is successfully loaded, the applet will display the file path and the topmost component of the configuration scheme.
This new display is shown in Figure 2.
Partwriter-Example.xml
has been loaded.
This portion of the instructions explains how to view the components of an Intelligent Part-Writer file. If you have loaded the prepared example and simply wish to experience the demonstration, you may skip ahead to Running the Example.
We will now tour the graphical editor. Notice that this editor provides no Save or Undo buttons; any changes you make are written directly to the underlying file. That's the bad news. The good news is that if you inadvertently shut down the applet by browsing to another window, you can reload the file you were working on without losing data. You will be called upon to run this example shortly, so don't change any data for the moment.
To the right of the Document: Example component is a show-content icon (). Clicking on this icon reveals the child items shown in Figure 3. Notice that the show/expand icon toggles to a hide/collapse icon ().
Expand Attributes by clicking on the item's icon. This action reveals the document-attribute editing panel pictured in Figure 4.
Attribute panels are the exception to the practice of saving changes immediately to file. Within any attribute panel, you make whatever attribute changes you wish and then click on . The editor checks your choices. Only if it agrees with these choices does the editor save the changed attribute values to file.
The document attributes include:
The remaining items are check boxes which engage/disengage constraints. These various constraints are explained in the topic page.
Continue your tour by hiding () the attributes panel, then expanding () the Chords collection. The editor should now appear as pictured in Figure 5.
Six new control icons are revealed in Figure 5:
Were just looking right now, so don't touch ANY of these. Instead, click on for Chord #1: C Major. Next, click on for both the Attributes and Tones items. The editor should now appear as pictured in Figure 6.
Expand Tone: C and its Attributes panel. The editor should now appear as pictured in Figure 7.
The attributes of a Tone are explained elsewhere.
Collapse () the Chords collection.
Continue the tour by expanding () the Parts collection. There are 4 Parts numbered from 1 to 4. Click on for Part #1: Soprano and then click on for the Attributes component under Part #1. The editor should now appear as pictured in Figure 8.
The Clef drop down at the top of the attributes panel in Figure 8 indicates that Part #1 will be notated using the treble clef. The part will range from C4 (middle C) to G5 (an octave and a fifth higher than middle C). Part #1 will not play the bass line; indeed, only the highest-numbered part may have the Bass checkbox selected. Part #1 will be realized aurally using a General Midi flute with MIDI velocity 90 (forte).
Notice you do NOT have control over the MIDI channel. The applet assigns MIDI channels dynamically to MIDI programs, so that two sounds with the same program will be played using the same channel. Since channel #10 is reserved for percussion, no more than 15 different MIDI programs may be selected. However any number of Parts may share the same program.
Peruse the other parts if you wish, then continue the tour by collapsing () the Parts collection.
Expanding () the Voicings collection. There are 9 Voicings numbered from 1 to 9. Click on for Voicing #2: A Minor 7th and then click on for the Attributes component under Voicing #2. The editor should now appear as pictured in Figure 9.
Voicing components have two attributes, ID and Chord. All voicings last for one beat where the tempo is controlled by the document's MIDI Beats per Second attribute. The first voicing starts at time zero; after that, each voicing begins where the previous voicing leaves off.
This completes your tour. Please hide everything but the top-level Document.
The viewer/editor toured in the previous section is embedded within the first
of two tabbed panels named Configuration and Animation.
The Animation panel was initially grayed out (see Figure 1)
but came active immediately after Partwriter-Example.xml
was loaded (see Figure 2).
However, the Animation panel only became active because the applet verified
that all the components in Partwriter-Example.xml
were properly defined.
Now is the time to click on the tab named Animation.
Partwriter-Example.xml
.
The Animation panel pictured in Figure 10 splits into an upper panel showing the parts and a lower panel showing the current status. Beneath the status panel lie seven buttons. The first five of these buttons control the animation:
Evaluate the next pitch option. | |
Complete selecting pitches for the current Voicing. | |
Complete the entire voice-leading exercise at a liesurely rate. | |
Complete the entire voice-leading exercise at a rapid rate. | |
Interrupt auto-selection. |
The goal of the animation is to choose a pitch for each Part under each Voicing. Clicking on displays individual pitches as they are being considered. Choices will vary depending on the Seed and Heterogeneity settings in the document attributes panel (Figure 4). Figure 11 shows what the applet presents to me after clicking once on .
The blue box around the middle C under “C Major” in the bottom staff of Figure 11 indicates that the part-writer is presently considering middle C for the Bass part for Voicing #1.
The status panel in Figure 11 informs us that the part-writer has elected to compose the parts for Voicing #1 in the sequence Bass, Soprano, Tenor, Alto. The blue rectangle surrounding the name Bass verifies that this is the part it is currently working on. The Option Sequence tells us that that the part-writer has elected to consider first C4 (middle C), next and finally C3 (viola C), as options for the Bass part of Voicing #1. Since there is no particular reason favoring either pitch over the other, the pitch sequence is random. Since the list of Violations for C4 is empty, the part-writer may freely advance to the Soprano part.
Clicking once again on produces the display panel shown in Figure 12.
The blue box around the G5 under “C Major” in the top staff of Figure 12 now indicates that the part-writer is considering G5 for the Soprano part for Voicing #1.
The status panel in Figure 12 confirms that the part-writer is working on the Soprano part. Here the available options embrace all pitches from the “C Major” chord in the Soprano range as indicated in Figure 8. The Option Sequence tells us that that the part-writer has elected to evaluate these pitches in the sequence G5 E4 C5 G4 C4 E5. Since the list of Violations for G5 is empty, the part-writer may freely advance to the Tenor part.
Stepping forward twice brings me to the first Alto option, which happens to be G4. Notice also that the Violations table now contains an item named “Illegal Doubling”. Click on the “Illegal Doubling” item. The display panel should now appear as in Figure 13.
Clicking on the “Illegal Doubling” Violation causes the applet to draw rectangular borders around all contributing pitches. The blue border identifies the pitch currently under consideration — a choice which the part-writing engine has already rejected owing to the presence of a violation. The red border identifies the pitch which the engine blames for the violation. (Pink borders identify other contributing pitches.) Had the engine chosen, say, C5 for the Soprano, G4 would have been acceptable here in the Alto.
Stepping along into the next voicing brings me to the multiple violations shown in Figure 14.
Of the three Violations pictured in Figure 14:
The three Violations pictured in Figure 14 between each other blame the Tenor and Bass parts in the same voicing. You need to take my word that the decision sequence for the A Minor 7th voicing was Tenor, Bass, Alto, Soprano. Thus source of conflict for backtracking purposes is the Tenor, which is earliest of the blamed decisions
At this point I clicked on to set loose the remainder of the part-writing run. The animation is fun to watch as it gropes it's way forward, only to backtrack when confronted by impasses. The completed display appears in Figure 15.
Partwriter-Example.xml
example after the
voice-leading run has completed.
Notice that the animation-controlling buttons are all grayed out but that two other buttons have now come active:
Click on to hear a MIDI rendition of the example.
Click on to save a MIDI rendition of the example to a file named Example.midi
.
To clear the display panel and re-experience the same solution, toggle back and forth between the Configuration and Animation tabs. To obtain a different solution, you must change the Seed value in the document Attributes panel.
This portion of the instructions explains how to create the Partwriter-Example.xml
example from scratch.
This is the same example explained on the topic page.
You need to read that explanation before you undertake the procedures described here.
It will be helpful, but not required, to have read Viewing the Configuration.
Make sure you're viewing the Configuration panel.
To create a new file, click on .
Use the file chooser to locate your working directory and name the file Partwriter-Example.xml
.
If a file with the same name already exists, overwrite it. (You can always re-download the original.)
The editor should now resemble Figure 15.
Partwriter-Example.xml
example.
Notice the icon, located just right of the Example component. This is the show/expand icon. Click on it. The editor should now resemble Figure 16.
The first thing to do is select document attributes. To reveal the document attributes panel, click on the the show/expand icon () to the right of the Attributes item. The editor should now resemble Figure 17.
The functions of the document attributes are explained above. Accept all attribute defaults and use the hide/collapse icon () to hide the attributes panel.
The next task it to create the repertory of Chords. To undertake this task you will need the Chord tables from the example description. Open this link under a separate browser tab.
Locate the Chords collection and click on the new-item icon (). A New Chord dialog will appear. Accept the default ID (1) but change the Name to “C Major”. Then click on . Continue creating Chords using default id's and the names listed on the other browser tab. When you're done, the display should resemble Figure 18: Seven Chords in all, with id's ranging from 1 to 7. Notice there's no Save option. Each time you create a new Chord, the change will immediately be recorded in the underlying file.
Now it's time to supply each Chord with a set of Tones. Expanding Chord #1: C Major reveals two child items: Attributes and Tones. Click on the new-item icon () to the right of Tones. Set the degree to “C” and click on .
Continue adding Tones for degrees “E” and “G”. The display should resemble Figure 19.
Fill in the Tone attributes as directed by Table 1-1 on the other browser panel. Figure 20 shows the attributes panels for all three “C Major” tones after the changes have been submitted.
Continue creating Tones for Chords using the information in Table 1-2 through Table 1-7 in the other browser tab. Once you've specified Tones for all seven Chords, you can close the other browser tab.
Locate the Parts collection and click on the new-item icon (). A New Part dialog will appear. Accept the default ID (1) but change the Name to “Soprano”. Then click on . Continue creating Parts named &lquo;Alto”, “Tenor”, and “Bass”. Accept the default ID in each instance. When you're done, the display should resemble Figure 21.
Fill in the part attributes as directed by the Parts table on the topic page. Figure 22 shows the attributes panels for all four Parts after the changes have been submitted.
Locate the Voicings collection and click on the new-item icon (). A New Voicing dialog will appear. Accept the default ID, then click on . Continue creating Voices until you have created 9 in all. When you're done, the display should resemble Figure 23.
Each of your Voicings needs to be mapped to a Chord. Expand Voicing #1 and its Attributes item. Do the same for Voicing #2. The display should now resemble Figure 24.
Even though both attributes panels offer the “C Major” as the default Chord, both of these Voicings have yet to be mapped. Click on for Voicing #1. The item name changes to Voicing #1: C Major, verifying that Voicing #1 is now mapped. Use the Chord drop-down for Voicing #2 to select “A Minor 7th”, then click on for Voicing #2. The display should now resemble Figure 25.
Continue mapping Voicings to Chords as directed by the Voicings table on the topic page. Collapse all attributes panels, then verify that the Voicings collection looks like Figure 26.
If the Animation tab is grayed out, click on click on
to obtain a list of errors. Such errors usually involve components missing necessary child components. Fix them.
When the Animation tab becomes available, you are done creating Partwriter-Example.xml
.
© Charles Ames | Page created: 2013-10-16 | Last updated: 2015-08-25 |