Polyphony project v0.3.0

First, I apologise for making you and everyone remember a clunky word like “chronomorph”. I think I should simplify the language and use the word “note” instead, so that no special definition is required.

Even though I explained a bit of how the program works inside, I haven’t provided any easy ways to control the musical material. Someone has suggested it to me before, but I didn’t have an easy answer.

There is one way, but I would not recommend it because it’s too much work for you or anyone at the moment. The way: insert your own motifs on line 36 of main (set("motifs", …)). Here is what the first 4 bars look like as 2 motifs:

set("motifs", [
  makeMotif([
    makeChronomorph(0, 3),
    makeChronomorph(1, 1),
    makeChronomorph(2, 2),
    makeChronomorph(2, 2),
    
    makeChronomorph(1, 1),
    makeChronomorph(0, 1),
    makeChronomorph(1, 1),
    makeChronomorph(2, 1),
    makeChronomorph(0, 2),
    makeChronomorph(-3, 2),
    ]),
    
  makeMotif([
    makeChronomorph(0, 3),
    makeChronomorph(1, 1),
    makeChronomorph(2, 2),
    makeChronomorph(2, 2),
    
    makeChronomorph(1, 1),
    makeChronomorph(0, 1),
    makeChronomorph(1, 1),
    makeChronomorph(2, 1),
    makeChronomorph(0, 4),
    ]),
  ])

Two things to note when making your own motifs:

  1. Notes are specified in relative notation, e.g. in the key of F major, F4 = 0, G4 = 1, &c.
  2. The notes’ spans should add up to the number of units per measure exactly. Too little, and the program might crash when it reaches an index out of bounds. Too much, and you won’t hear the rest of the motif because the program won’t reach it.

I made a branch for this work for you to play around with. Among other changes, the key signature is (0, :ionian), and the units per minute is 280.

Here is what this ‘Alouette Fantaisie’ sounds like:

I’ll make an easier way to enter notes.