| 
							- // Rainbow RGB LED example
 - // by Andrew Belt
 - 
 - // Call process() every 256 audio samples
 - config.frameDivider = 256
 - 
 - 
 - // From https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB
 - function hsvToRgb(h, s, v) {
 - 	h *= 6
 - 	let c = v * s
 - 	let x = c * (1 - Math.abs(h % 2 - 1))
 - 	let rgb;
 - 	if (h < 1) rgb = [c, x, 0]
 - 	else if (h < 2) rgb = [x, c, 0]
 - 	else if (h < 3) rgb = [0, c, x]
 - 	else if (h < 4) rgb = [0, x, c]
 - 	else if (h < 5) rgb = [x, 0, c]
 - 	else rgb = [c, 0, x]
 - 	let m = v - c
 - 	rgb[0] += m
 - 	rgb[1] += m
 - 	rgb[2] += m
 - 	return rgb
 - }
 - 
 - 
 - let phase = 0
 - function process(block) {
 - 	phase += block.sampleTime * config.frameDivider * 0.5
 - 	phase %= 1
 - 
 - 	for (let i = 0; i < 6; i++) {
 - 		let h = (1 - i / 6 + phase) % 1
 - 		let rgb = hsvToRgb(h, 1, 1)
 - 		for (let c = 0; c < 3; c++) {
 - 			block.lights[i][c] = rgb[c]
 - 			block.switchLights[i][c] = rgb[c]
 - 		}
 - 		block.outputs[i][0] = Math.sin(2 * Math.PI * h) * 5 + 5
 - 	}
 - }
 - 
 - display("Hello, world!")
 
 
  |