▸ Arrival and ▸ Departure (28:15, 43:15)
Trains come and go with passengers.
|
▸ Busy, ▸ Busy, ▸ Busy (06:00, 08:00, 29:00)
Very crowded, lots of people and movement. |
▸ Quiet Crossing (14:10)
People criss-cross an otherwise quiet platform. |
▸ Return Journey (28:00)
A steady stream of people cross right-to-left. |
▸ Wave after ▸ Wave (18:00, 40:00)
Swarms of people criss-cross in waves. |
▸ Cycle after ▸ Cycle (19:25, 35:50)
Bicycles traverse the platform, right or left. |
▸ Bicycle Stand (23:30)
A bicycle enters right, pauses, then exits left. |
▸ Moving Luggage (15:15)
A few suitcases move around a quiet platform. |
|
-
The transpose() function shifts all pitches in a range so the first pitch matches that specified:
transpose(@Array, D-4)
For example, if @Array contained a C Major triad (C-E-G), it would become D Major (D-F#-A)
-
For an equal chance of incrementing, decre-menting, or retaining the same pitch, we generate a random number with 3 possible outcomes (-1, 0, 1) using the rnd() function:
rnd(-1,1)
-
In Manhattan, conditional statements (if-then-else) also support probablistic conditions. Whilst 0.0 is false (0% chance) and 1.0 is true (100% chance), conditions that evaluate to values in-between will treat that as a probability:
0.5 ? X : Y - half a chance of X, else Y
1/10 ? X - X will happen 1 time in 10
1/3 ? X : 1/2 ? Y : Z - three-way split
-
The group() function references the nth group of cells (separated by empty cells) in a range:
copy(group(1, @Things), @Thing)
This code selects the first group of cells in @Things and copies it to the @Thing array. The function is useful for concisely listing and selecting from (or iterating through) chord sequences.
|
SOLUTIONS (click to reveal)
▸ Root of the problem
copy(@Persons, @Notes)
@Notes = f(".pitch = C-4 + .pitch / 3")
@Notes = f(".volume = (@Persons +.volume) * 0.7")
transpose(@Chord, @Root.pitch)
constrain(@Notes, @Chord, 1)
▸ Stepwise Motion
copy(@Persons, @Notes)
@Notes = f(".pitch = C-4 + .pitch / 3")
@Notes = f(".volume = (@Persons +.volume) * 0.7")
0.25 ? @Root.pitch = @Root.pitch + rnd(-1,1)
transpose(@Chord, @Root.pitch)
constrain(@Notes, @Chord, 1)
▸ Variable Quality
copy(@Persons, @Notes)
@Notes = f(".pitch = C-4 + .pitch / 3")
@Notes = f(".volume = (@Persons +.volume) * 0.7")
copy(group(rnd(1,4),@Chords), @Chord)
0.25 ? @Root.pitch = @Root.pitch + rnd(-1,1)
transpose(@Chord, @Root.pitch)
constrain(@Notes, @Chord, 1)
|