# Pastebin cT3iIhCV var connect = require('./ftdi') var ndarray = require('ndarray') var getFrame = require('pixels-apa102') var hsl = require('./hsl.js') var net = require('net') var split = require('split') process.stdin.pipe(split()).on('data', function (c) { var num = parseFloat(c) queue.push(num) }) var queue = [] connect(0, function (err, send) { if (err) throw err var lastStrand = null var frame = 0 var h = 0 var s = 1.0 var l = 0.5 var FPS = 60 var dir = 1 function march () { frame += dir } setInterval(function () { march(frame) var strand = Strand(118) var next = queue.shift() console.log('next', [next]) if (next) h = parseFloat(next) set(strand, 0, hsl(h, s, l)) if (lastStrand) { for (var i = 1; i < strand.shape[0]; i++) { strand.set(i, 0, lastStrand.get(i - dir, 0)) strand.set(i, 1, lastStrand.get(i - dir, 1)) strand.set(i, 2, lastStrand.get(i - dir, 2)) } } lastStrand = strand send(getFrame(strand)) }, 1000 / FPS) }) function Strand (length) { return ndarray(new Uint8Array(length * 3), [length, 3]) } function set (target, x, rgb) { target.set(x, 0, rgb[0]) target.set(x, 1, rgb[1]) target.set(x, 2, rgb[2]) }