Scales
About
Warp natively understands musical scales/modes, so that notes in Patterns can be expressed as scale degrees and easily shifted between different scales, without having to rely on classic 'force to scale' mechanics that do not provide support for blue notes. In Warp, scales can either be generated from included scale types, or user supplied, by expressing them in scale degrees.
While a default scale can be assigned to a Song, scale assignments can be overriden on individual Scenes or Clips.
As it's important to support percussion tracks, it's possible to enter literal notes such as "C0" without using scale degrees or being subject to scale transpositions. We'll showcase this when we get to Slots.
Creating A Scale #
Canned scales:
api.scales.add(name='intro', note='C', octave=0, scale_type='major')
User defined scale types:
api.scales.add(name='user_example', note='C', octave=0, slots=[ 1, 2, 'b3', 5, 'b6' ])
A scale has the following properties:
Property | Type | Description |
name | string | A symbolic name for the scale, which will can be refererenced from a Song, Scene, or Clip. |
note | string | The root of the scale, such as "C", "Bb" or "F#" |
octave | int | the base octave - note that transpositions below this value are not possible, so it is better to adjust the global octave using the parameter base_octave on Instrument. |
scale_type | string | the name of a built-in scale type to construct the scale from - see below for values |
slots | list of ints/strings | The scale degrees to be used in forming the scale as shown in the above example. Mutually exclusive with scale_type. |
Built-In Scales #
Valid values for scale_type are:
major = [ 1, 2, 3, 4, 5, 6, 7 ],
pentatonic = [ 1, 2, 3, 5, 6 ],
pentatonic_minor = [ 1, 3, 4, 5, 7 ],
natural_minor = [ 1, 2, 'b3', 4, 5, 'b6', 'b7' ],
blues = [ 1, 'b3', 4, 'b5', 5, 'b7' ],
dorian = [ 1, 2, 'b3', 4, 5, 6, 'b7' ],
chromatic = [ 1, 'b2', 2, 'b3', 3, 4, 'b5', 5, 'b6', 6, 'b7', 7 ],
harmonic_major = [ 1, 2, 3, 4, 5, 'b6', 7 ],
harmonic_minor = [ 1, 2, 3, 4, 5, 'b6', 7 ],
locrian = [ 1, 'b2', 'b3', 4, 'b5', 'b6', 'b7' ],
lydian = [ 1, 2, 3, 'b5', 5, 6, 7 ],
major_pentatonic = [ 1, 2, 3, 5, 6 ],
melodic_minor_asc = [ 1, 2, 'b3', 4, 5, 'b7', 'b8', 8 ],
melodic_minor_desc = [ 1, 2, 'b3', 4, 5, 'b6', 'b7', 8 ],
minor_pentatonic = [ 1, 'b3', 4, 5, 'b7' ],
mixolydian = [ 1, 2, 3, 4, 5, 6, 'b7' ],
phrygian = [ 1, 'b2', 'b3', 4, 5, 'b6', 'b7' ],
japanese = [ 1, 2, 4, 5, 6 ],
akebono = [ 1, 2, 'b3', 5, 6 ]
This list will grow over time. Contributions of your favorite scales are welcome.
Suggestions & Tips #
- If you don't set a scale anywhere, you'll get the C chromatic scale, and that's probably not going to sound like you want.