Home

chorus.js Overview

The Song class is used to generate a song. The overall structure looks like this:

Song → time →
Section 1 scale
Harmony chords
Part 1  pitches rhythm
Part 2  pitches rhythm
Part 3  pitches rhythm
Section 2 scale
Harmony chords
Part 1  pitches rhythm
Part 2  pitches rhythm
Section 3 scale
Harmony chords
Part 1  pitches rhythm
Part 2  pitches rhythm
Part 3  pitches rhythm
Part 4  pitches rhythm

A Song consists of a list of sections that play one after the other sequentially in time.

Each Section has a scale, a harmony, and a list of parts which play in parallel within the Section (note that any Part may start late or end early within its Section).

A Harmony has a list of chords that define a chord progression.

Each Part has a list of pitches, and a rhythm that controls the timing, intensity, and duration of each note generated by the part.

A Part's pitches can either be absolute Pitches, or Numbers that represent relative pitch values. Relative pitch values produce Pitches based on the Part's mode setting, the Harmony's chords, and the Section's scale, which makes it easy to try different scales and chord progressions without changing the Part.

This is the basic Song structure. Each object mentioned here has various options to further control the song's behavior. Consult each class's documentation for more information.

TODO: examples!