WesterParse¶
Peter Westergaard enhanced the pedagogical discipline of species counterpoint by formulating a syntax for contrapuntal lines and explicating the cognitive issues involved in how listeners parse the syntax of such lines. Hence the name of this program, WesterParse.
WesterParse implements the theory of tonal music presented in chapters 4-6 of Westergaard’s textbook, An Introduction to Tonal Theory (New York: Norton, 1975). This portion of Westergaard’s text develops a theory of species counterpoint for classically tonal music. An innovative feature of the approach is the set of rules that define the closed tonal line. In effect, these line-generating rules implement the generative model of tonal syntax originally developed by Heinrich Schenker. Westergaard was also interested in how the notes in one line interact with the notes in another, and he had many interesting insights into how listeners use the rules as they negotiate the interpretation of two or more lines unfolding simultaneously. WesterParse already incorporates many of the cognitive preferences identified by Westergaard. The plan is ultimately to include all of the preference rules as well as to give users the option of activating each rule.
There are two main components to WesterParse: a parser that evaluates the structure of musical lines used in species counterpoint, and a checker that evaluates the voice leading of species counterpoint compositions. For more information, see Getting Started and User’s Guide.
One task of music theory is to model the procedural knowledge of stylistically competent listeners. In his textbook, Westergaard focused on developing a shared metalanguage for discussing classically tonal music. (See the figure below.) WesterParse provides many additional refinements to this metalanguage, such as the concept of dynamic syntactic memory units (in the form of lists for tracking open heads and transitions) and methodologies for retrospectively reinterpreting syntactic structure to cope with novel events.
- Getting Started
- The Westergaard Rules
- User’s Guide
- WesterParse Web Site
- Viewing the WesterParse Corpus
- Module Documentation
- WesterParse
evaluateLines()
evaluateCounterpoint()
makeGlobalContext()
parseContext()
validatePartSelection()
validateLineTypeSelection()
parsePart()
checkFinalStep()
writeParseDataLog()
getGenerability()
writeParseDataFiles()
extractParseDataFromPart()
createParseReport()
gatherParseSets()
selectPreferredParseSets()
extractCounterpointDataFromParseSets()
showParses()
assignSlurs()
arcBuild()
assignRules()
assignParentheses()
Test
- Context
ContextError
EvaluationException
Context
LocalContext
GlobalContext
validateHarmonicSegmentation()
- Key Finder
KeyFinderError
testKey()
inferKey()
Test
- Parser
Parser
isEmbeddedInOtherArc()
conflictsWithOtherArc()
Test
- Voice Leading Checker
checkCounterpoint()
checkDuet()
checkFirstSpecies()
checkSecondSpecies()
checkThirdSpecies()
checkFourthSpecies()
checkControlOfDissonance()
checkFourthSpeciesControlOfDissonance()
checkForbiddenMotionsOntoBeatWithoutSyncope()
checkFirstSpeciesForbiddenMotions()
checkSecondSpeciesForbiddenMotions()
checkThirdSpeciesForbiddenMotions()
checkFourthSpeciesForbiddenMotions()
checkFirstSpeciesNonconsecutiveParallels()
checkSecondSpeciesNonconsecutiveUnisons()
checkSecondSpeciesNonconsecutiveOctaves()
checkConsecutions()
checkFourthLeapsInBass()
getAllPartNumPairs()
getOffsetList()
getOnbeatOffsetList()
getOffbeatOffsetList()
getOnbeatIntervals()
getOffbeatIntervals()
getGenericKlangs()
getVerticalityContentDictFromDuet()
getVerticalContentDictionariesList()
getVerticalPairs()
getAllVLQsFromDuet()
getOnbeatVLQs()
getNonconsecutiveOffbeatToOnbeatVLQs()
makeVLQFromVPairList()
makeVLQfromVertPairs()
getFourthLeapsInBassDict()
isConsonanceAboveBass()
isThirdOrSixthAboveBass()
isConsonanceBetweenUpper()
isPermittedDissonanceBetweenUpper()
isTriadicConsonance()
isTriadicInterval()
isPerfectVerticalConsonance()
isImperfectVerticalConsonance()
isVerticalDissonance()
isDiatonicStep()
isUnison()
isOctave()
isSimilarUnison()
isSimilarFromUnison()
isSimilarFifth()
isSimilarOctave()
isParallelUnison()
isParallelFifth()
isParallelOctave()
isVoiceOverlap()
isVoiceCrossing()
isCrossRelation()
isDisplaced()
isOnbeat()
isSyncopated()
Test
- Dependency
DependencyException
Dependency
- Rule
Rule
- Concrete Scale Degree (CSD)
CSDError
ConcreteScaleDegree
- Arc
Arc
- Consecutions
Consecutions
getConsecutions()
Test
pairwise()
pairwiseFromLists()
- License