#!/usr/local/bin/cz -- use b Main() space(1900,200) origin(w_2, h_2) rainbow_init() for(x, 0.0, w) rainbow_colour(x/w) line(x, 0, x, h) paint() if args && cstr_eq(arg[0], "-s"): plot_12_tones() num rb_red_angle, rb_green_angle, rb_blue_angle num rb_red_power, rb_green_power, rb_blue_power rainbow_init() rb_red_angle = deg2rad(0) rb_green_angle = deg2rad(120) rb_blue_angle = deg2rad(-120) rb_red_power = 1 rb_green_power = 1 rb_blue_power = 1 colour rainbow_colour(num h) num y = pow(2, h)-1 num a = 2*pi*y num r = rb_red_power * (cos((a-rb_red_angle))+1)/2 num g = rb_green_power * (cos((a-rb_green_angle))+1)/2 num b = rb_blue_power * (cos((a-rb_blue_angle))+1)/2 return rgb(r, g, b) plot_12_tones() black() for(i, 0, 12+1): num freq = pow(2, i/12.0) num wl = 2 - 1/freq * 2 num x = wl*w x = iclamp(x, 0, w-1) line(x, 0, x, 2) line(x, h, x, h-3)