By Harm Visser, 2007
Let us take a look to the ideas and historical background of BP2. At the end of the fifties the linguistic scientist Noam Chomsky wrote his famous book 'Syntactic Structures'. It was an attempt to generalize the structure of language in a system of rewrite-rules, so called 'grammars':
Sentence --> NP + VP
NP --> T + N
VP --> Verb + NP
T --> The
N --> man, ball..
Verb -> hit, took…
When we computerize such a grammar and we give the command 'derive' we should see that Sentence became NP + VP, NP became T + N, VP became Verb + NP etc. At the end we see that N became 'man' and Verb became 'hit'. No further derivation is possible. The words 'man', 'hit' are therefore called 'terminal symbols'.
After derivation of Sentence we should read: the man hit… (or whatever). Such a Chomsky 'grammar' can be seen as a set of rules to generate well-formed English sentences.
You can read a rule as 'X --> Y'. It gives the 'instruction' to rewrite X as Y (X becomes Y). Maybe you can imagine already that such a grammar-system can also apply to musical syntax.
Let us therefore compare the Chomsky-example with this BP2-example:
S(entence) --> X Y
X --> Motif1
Y --> Motif2
Motif1 --> C3
Motif2 --> D3
After derivation we should hear the terminal symbols C3 D3.
The main difference between the 'Chomsky-grammar' and a BP2-grammar is that a BP2-grammar is exclusive. It is a formalisation of one particular piece of music. Chomsky-grammars try to generalize language as a whole.
At the other hand you can in BP2 'formalize' the sonata-form:
S --> Sonata
Sonata --> Theme1 Theme2 Development Coda
Theme1 --> Notes1
Theme2 --> Notes2
Development VariateNotes1 VariateNotes2
Coda --> HalfTheme1 HalfTheme2
When we derive the Sonata, we shall hear nothing, because there are no terminal symbols i.c. 'real notes', like C3, D2, etc. So let's finish the Sonata:
S --> Sonata
Sonata --> Theme1 Theme2 Development Coda
Theme1 --> Notes1
Theme2 --> Notes2
Development --> VariateNotes1 VariateNotes2
Coda --> HalfTheme1 HalfTheme2
Notes1 --> A3 B3 A3 G3
Notes2 --> D3 E3 F3 A3
VariateNotes1 --> _transpose(2) Notes1
VariateNotes2 --> _retro Notes2
HalfTheme1 --> A3 B3
HalfTheme2 --> D3 E3
Note that we use for VariateNotes1 and VariateNotes2 the tools _transpose(2) and _retro.
_transpose(x) transposes up or down at a given interval: _transpose(2) (two semitone up), _transpose(6) (six semitones up) _transpose(-7) (seven semitones down). You can also use values like _transpose(0.2).
The _retro tool stands of course for 'retrograde'. It turns the symbols backwards. You can read commands like _transpose and _retro as 'transformers'.
Well, let's listen to this Sonata! Select S and 'Play selection':
A3 B3 A3 G3 D3 E3 F3 A3 _transpose(2) A3 B3 A3 G3 E3 D3 B3 A3 A3 F3 E3 D3
There are two important things to remember
- When you write a variable like Theme1 or VariateNotes2 or Sonata (yes, these are variables until you give them a 'content'), start the variable with a capital and don't use empty spaces between symbols. So Not 'sonata', but 'Sonata'. Not 'n1', but 'N1', not 'my piece', but 'Mypiece'.
- You can listen to every stage or level of your piece at every moment. So, instead selecting S, you can select Notes1 or Development, or G3… In other words, you can listen to every compositorial detail! Try to make your own Sonata now!
Note that the example-Sonata is also a description of the actual piece. That is to say that the first half is the description, the second half is the 'realisation' of the description. This approach means that a description can also have a 'subdescription', while the subdescription can have… indeed, a subsubdecription. So BP2 is the perfect tool for hierarchical descriptions of musical structures.