home/ atoms/ renardo-scale-degree-system

Renardo uses scale degree integers (not MIDI notes) as pitch values, converted via `Scale.default`

In Renardo, pitch values like [0, 1, 2, 3] are not MIDI note numbers but scale degrees. Degree 0 is the root, degree 1 is the second note of the active scale, etc. Negative values go below the root (degree -1 = the 7th below). The conversion to actual frequency uses Scale.default (by default Scale.major) and Root.default (by default 0 = C). Changing Scale.default = Scale.minor instantly re-maps all players using that scale. Octave crossing is automatic: degree 7 in a 7-note scale wraps to the root of the next octave. This abstraction means the same code plays in any key or mode by changing two globals.

Examples

Scale.default = Scale.minor
Root.default = 5          # F minor
p1 >> pluck([0,2,4,0,-2])  # F minor arpeggio
p1 >> pluck([0,1,2,3], scale=Scale.penta)  # override per-player

Assessment

p1 >> pluck([0, 4, 7]) plays what interval in the major scale? Change the code so the same pattern plays in D minor without changing the degree list.

“def midi(scale, octave, degree, root=0, stepsPerOctave=12): """ Calculates a midinote from a scale, octave, degree, and root """”
corpus · renardo-python-over-supercollider-foxdot-successor-with-buil · chunk 78