Terry Riley's famous minimalist composition, In C., is comprised of 53 musical parts. These are to be performed in sequence by an orchestra whose size can range from small to large.
Each player is allowed to select how many times to repeat a part and the result is a mesmerizing interplay between voices and parts.
To achieve this in a simple Fiddle project, we combine abc notation with a simple node graph.
Right-click to copy examples to your workspace
In the screengrab below, you can see:
M:none
to indicate that measure may have different lengthL:1/8
to select our default note-lengthvoice
capability to encode the 53 different patterns.
Here, V:1
defines the pattern {C}E2 {C}E2 {C}E2
, which can
be visualized live (via abcjs)
while entering the pattern. The visualization can be toggled on-or-of
via hot-keys or the cogs menu. You can even play your notes here.
In this case, all voices are played simultaneously which is
not very helpful for this composition. We explore how the voices are selected and serialized below.
Below we see the graph overview for 5 players. Notice:
AbcNotes
- parses the abc file and delivers notes
to the player nodePlayer
- receives notes optionally transposes them
and delivers them to the the instrument nodeInstrument
- receives notes from player and converts
the notes to sound. This graph employs a different instrument
for each voice.Channel
- receives the sound and offers controls over
gain and panning. Optional per-channel effects chains can
be embedded within these nodes.
In this detailed view the green circles represent values that have been
changed. To the right you can see the node inspector for an
individual AbcNotes
node.
Notice:
AbcNotes
proceed from voice 1 through 53.If you right-click on this example you can copy it into your workspace where you can perform the piece and make changes.
To perform:
fiddleExamples/in-c/in-c.chg
in your workspace.
This should load the file into a graph editor window.Chuck it!
to send it
to chuck for performance.An exercise left to the reader:
See also: