Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
581 commits
Select commit Hold shift + click to select a range
d27f0ce
Jan 7, 2018
39ab178
Jan 7, 2018
56a7581
Jan 7, 2018
3b77d97
Jan 7, 2018
52050a0
Jan 7, 2018
940b45c
Jan 7, 2018
8823642
Jan 7, 2018
c464cf1
Jan 7, 2018
3ea468d
Jan 7, 2018
1fbff3a
Jan 7, 2018
716a6b4
Jan 7, 2018
79c6391
Jan 7, 2018
7f940e4
Jan 7, 2018
266b294
Jan 7, 2018
b5a4704
Jan 7, 2018
18f38c3
Jan 7, 2018
1b35a3d
Jan 7, 2018
db84379
Jan 7, 2018
7c7b0a4
Jan 7, 2018
6e9fd6b
Jan 7, 2018
54a7682
Jan 7, 2018
d7bcd63
Jan 7, 2018
553e327
Jan 7, 2018
1d66006
Jan 7, 2018
65b4092
Jan 7, 2018
d549573
Jan 7, 2018
8fcd0ef
Jan 7, 2018
b99ec63
Jan 7, 2018
21fea43
Jan 7, 2018
1a80838
Jan 7, 2018
8f155ae
Jan 7, 2018
07aa4ec
Jan 7, 2018
65e8352
Jan 7, 2018
a652c16
Jan 7, 2018
9e887cb
Jan 7, 2018
4e5786a
Jan 7, 2018
9c5dfe5
Jan 7, 2018
d8a16cf
Jan 7, 2018
2f80da0
Jan 7, 2018
2de8492
Jan 7, 2018
193621e
Jan 7, 2018
28eb40d
Jan 7, 2018
5c8feec
Jan 7, 2018
7be8e68
Jan 7, 2018
8c76c79
Jan 7, 2018
7257625
Jan 7, 2018
ee27eae
Jan 7, 2018
0832535
Jan 7, 2018
b55c4da
Jan 7, 2018
1673d55
Jan 7, 2018
264304b
Jan 7, 2018
114f949
Jan 7, 2018
e8708a3
Jan 7, 2018
f89bb53
Jan 7, 2018
a58f09a
Jan 7, 2018
fc06bc7
Jan 7, 2018
bac787f
Jan 7, 2018
64f421f
Jan 7, 2018
8dc6e31
Jan 7, 2018
c515cd2
Jan 7, 2018
2e7667e
Jan 7, 2018
ad0599a
Jan 7, 2018
16e65b4
Jan 7, 2018
2299755
Jan 7, 2018
cdd009e
Jan 7, 2018
eabf53d
Jan 8, 2018
a261fa0
Jan 8, 2018
ada8a38
Jan 8, 2018
797f617
Jan 8, 2018
8e95516
Jan 8, 2018
305c5e9
Jan 8, 2018
b63034e
Jan 8, 2018
880ff50
Jan 8, 2018
67bc678
Jan 8, 2018
7cd1e87
Jan 8, 2018
bc9506a
Jan 8, 2018
e382be9
Jan 8, 2018
8cad962
Jan 8, 2018
610fbde
Jan 8, 2018
7ec75f2
Jan 8, 2018
1c82353
Jan 8, 2018
42d6184
Jan 8, 2018
a0ab002
Jan 8, 2018
e16b098
Jan 8, 2018
8df8181
Jan 8, 2018
8b2bbc0
Jan 8, 2018
e98763e
Jan 8, 2018
4c0ec1a
Jan 8, 2018
d94c1ea
Jan 8, 2018
6237bf2
Jan 8, 2018
c2c07b0
Jan 8, 2018
dcc8e21
Jan 8, 2018
717a332
Jan 8, 2018
0229455
Jan 8, 2018
34359b5
Jan 8, 2018
d484086
Jan 8, 2018
39d6b5e
Jan 8, 2018
5a93c14
Jan 8, 2018
be8318a
Jan 8, 2018
885a1bf
Jan 8, 2018
cca6f4c
Jan 8, 2018
55085ef
Jan 8, 2018
e5cb212
Jan 8, 2018
ae43e9f
Jan 8, 2018
0bc2787
Jan 8, 2018
a9e4cf5
Jan 8, 2018
34f1371
Jan 8, 2018
17dc7d4
Jan 8, 2018
d5b6743
Jan 8, 2018
fe700f9
Jan 8, 2018
4521bb9
Jan 8, 2018
4a5f046
Jan 8, 2018
223e1d3
Jan 8, 2018
94eb433
Jan 8, 2018
b61b85a
Jan 8, 2018
615af37
Jan 8, 2018
90c9d81
Jan 8, 2018
e9e28fd
Jan 8, 2018
4acad66
Jan 8, 2018
2b1a658
Jan 8, 2018
1552c90
Jan 8, 2018
68111c0
Jan 8, 2018
9cdd2bb
Jan 8, 2018
a99b96a
Jan 8, 2018
5ebfeac
Jan 8, 2018
485f00e
Jan 8, 2018
e7ae424
Jan 8, 2018
3c92fd1
Jan 8, 2018
e72f4f7
Jan 8, 2018
f36e650
Jan 8, 2018
6804030
Jan 8, 2018
b36160c
Jan 8, 2018
1a609d5
Jan 8, 2018
2743d60
Jan 8, 2018
0794991
Jan 8, 2018
7417e12
Jan 8, 2018
320970b
Jan 8, 2018
7ea5059
Jan 8, 2018
f236aff
Jan 8, 2018
e7f9c83
Jan 8, 2018
eb4251d
Jan 8, 2018
fcef24b
Jan 8, 2018
069daa6
Jan 8, 2018
c2a91b5
Jan 8, 2018
7b9215a
Jan 8, 2018
412951e
Jan 8, 2018
d15b66f
Jan 8, 2018
0c35924
Jan 8, 2018
066994a
Jan 8, 2018
75120a8
Jan 8, 2018
14a333d
Jan 8, 2018
096f333
Jan 8, 2018
43d639b
Jan 8, 2018
6228b54
Jan 8, 2018
aa08e4d
Jan 8, 2018
e50c684
Jan 8, 2018
968eb6b
Jan 8, 2018
b4343e4
Jan 8, 2018
a327d60
Jan 8, 2018
12c7b75
Jan 8, 2018
19cf8ba
Jan 8, 2018
a1d3239
Jan 8, 2018
705d477
Jan 8, 2018
a5e5cbd
Jan 8, 2018
7e09cc1
Jan 8, 2018
2319e08
Jan 8, 2018
7e5e570
Jan 8, 2018
b2a9fe7
Jan 8, 2018
d18596a
Jan 8, 2018
1799f7b
Jan 8, 2018
5da77b1
Jan 8, 2018
ec2f5c9
Jan 8, 2018
f9606cb
Jan 8, 2018
72c2853
Jan 8, 2018
ed809a7
Jan 8, 2018
ad1161c
Jan 8, 2018
3e56e56
Jan 8, 2018
570ede8
Jan 8, 2018
bfe180b
Jan 8, 2018
ec4ca9b
Jan 8, 2018
4f63e7b
Jan 8, 2018
ad40320
Jan 8, 2018
f4c51fe
Jan 8, 2018
fc4f9c3
Jan 8, 2018
c56a7f1
Jan 8, 2018
7e46e67
Jan 8, 2018
68bac3d
Jan 8, 2018
8fad26c
Jan 8, 2018
87a5ef6
Jan 8, 2018
cee68a5
Jan 8, 2018
9f5ca95
Jan 8, 2018
720e522
Jan 8, 2018
9bb5304
Jan 8, 2018
abe7744
Jan 8, 2018
cf29cd3
Jan 8, 2018
7c02091
Jan 8, 2018
645387c
Jan 8, 2018
c1d6ddd
Jan 8, 2018
8b3b245
Jan 8, 2018
22bc1d0
Jan 8, 2018
114b57c
Jan 8, 2018
01204f8
Jan 8, 2018
8f42fc1
Jan 8, 2018
2b79bc2
Jan 8, 2018
75644c6
Jan 8, 2018
2809a58
Jan 8, 2018
79b490e
Jan 8, 2018
12c2f27
Jan 8, 2018
b842a53
Jan 8, 2018
1eebd95
Jan 8, 2018
8cb602c
Jan 8, 2018
45aaa2a
Jan 8, 2018
f235c45
Jan 8, 2018
f02a200
Jan 8, 2018
f1fe4e0
Jan 8, 2018
692f1a9
Jan 8, 2018
7cf4b5c
Jan 8, 2018
03c6eb5
Jan 8, 2018
c9c725d
Jan 8, 2018
a5f7199
Jan 8, 2018
23913bb
Jan 8, 2018
5d74abd
Jan 9, 2018
7a5cd65
Jan 9, 2018
1ba2193
Jan 9, 2018
fdd7505
Jan 9, 2018
82bff00
Jan 9, 2018
e2d33ca
Jan 9, 2018
d6f06c0
Jan 9, 2018
59b5a14
Jan 9, 2018
f706940
Jan 9, 2018
46b32e5
Jan 9, 2018
80c94b4
Jan 9, 2018
11f3910
Jan 9, 2018
3569b17
Jan 9, 2018
1446a18
Jan 9, 2018
91f9050
Jan 9, 2018
5a60d28
Jan 9, 2018
056a2a7
Jan 9, 2018
6ced7bf
Jan 9, 2018
aed0a94
Jan 9, 2018
019d688
Jan 9, 2018
042c8a3
Jan 9, 2018
1bdfee0
Jan 9, 2018
2b3d4ba
Jan 9, 2018
74adf84
Jan 9, 2018
7d67d50
Jan 9, 2018
aed0743
Jan 9, 2018
9e532cd
Jan 9, 2018
248a564
Jan 9, 2018
f6c1c3e
Jan 9, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
.DS_Store
node_modules/
node_modules/
/.settings/
/.project
17 changes: 17 additions & 0 deletions .project
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>blinkstick-node</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>
</projectDescription>
16 changes: 16 additions & 0 deletions .settings/.jsdtscope
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="">
<attributes>
<attribute name="provider" value="org.eclipse.wst.jsdt.web.core.internal.project.ModuleSourcePathProvider"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
<attributes>
<attribute name="hide" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path=""/>
</classpath>
1 change: 1 addition & 0 deletions .settings/org.eclipse.wst.jsdt.ui.superType.container
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
org.eclipse.wst.jsdt.launching.baseBrowserLibrary
1 change: 1 addition & 0 deletions .settings/org.eclipse.wst.jsdt.ui.superType.name
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Window
2 changes: 1 addition & 1 deletion examples/connect/connect.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

if (process.argv[2] == null) {
console.log("Please supply access code as an argument");
return;
process.exit(1);
}

var faye = require('faye'),
Expand Down
14 changes: 14 additions & 0 deletions examples/flex_stream/TODO.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
TODO
Add audio to notifiers
Multi-channel support
- Might require firmware changes to setColors() to send all channels in one call.
RGBA layers
Refactor as npm project
RGB Emulator Matrix REM (websockets - standalone or in parallel with BlinkStick)

Make web UI prettier

DONE
Specify width and height for matrices, setSize(W,H) getSize()==>WxH
- Sharp package's rasterized buffers already compatible with rasterized matrices
Add more notification images (s3d, vrip, twitter, etc)
39 changes: 39 additions & 0 deletions examples/flex_stream/ambilight.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
//Ambient display (ambilight) based on flex_stream.js
//Real-time streaming of desktop to BlinkStick Flex and Pro
//User defined OnFrame() samples the desktop, and morphs scaled frames to BlinkStick
//Minimum Requirements:
//- Latest version of nodejs (tested with v8.9.3)
//- Latest blinkstick, screenshot-desktop and sharp npm packages (all cross-platform)
//For Windows, Linux and Mac

module.exports = {
init: function() {
init();
}
}

const flex_stream = require("./flex_stream.js");
const screenshot = require('screenshot-desktop'); //Available at npmjs.com
const sharp = require('sharp'); //Available at npmjs.com


//Stream scaled desktop (size x 1) to BlinkStick via async futures pipeline
function ambilight(){
screenshot().then((img) => {
sharp(img).resize(flex_stream.getWidth(),flex_stream.getHeight()).ignoreAspectRatio().raw().toBuffer().then(data => {
flex_stream.setAlpha(0.1);
flex_stream.produceFrame(data);
})
});
}

//Configure stream

function init(){
flex_stream.setSize(8,1);
flex_stream.setProducerFramerate(5);
flex_stream.setConsumerFramerate(60);
flex_stream.setOnFrame(ambilight);
}

init();
54 changes: 54 additions & 0 deletions examples/flex_stream/aurora.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
//Aurora Borealis ambience based on flex_stream.js
//For Windows, Linux and Mac

module.exports = {
init: function() {
init();
}
}

const os = require("os");
const flex_stream = require("./flex_stream.js");


var frame = flex_stream.newFrame();
function aurora() {
//Aurora
a = Math.random();
flex_stream.setProducerFramerate(a*4+4);
flex_stream.setAlpha(.01+(a/200));

//Borealis
for (i=0; i<flex_stream.getSize(); i++)
{

var r = Math.random()*150;
var g = (1-Math.random()*.85)*150;
var b = (1-Math.random()*.85)*200;

if (Math.random()>.75)
{
r=0; g=0; b=0;
}

if (Math.random()>.5)
{
frame[i*3+0] = Math.floor(r); //R
frame[i*3+1] = Math.floor(g); //G
frame[i*3+2] = Math.floor(b); //B
}
}
flex_stream.produceFrame(frame);
}

//Configure stream

function init(){
flex_stream.setSize(8,1);
flex_stream.setProducerFramerate(60);
flex_stream.setConsumerFramerate(60);
flex_stream.setOnFrame(aurora);
}

init();

79 changes: 79 additions & 0 deletions examples/flex_stream/cpu_meter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
//CPU load meter based on flex_stream.js
//User defined OnFrame() is a particle trail emitter to indicate CPU load.
//For Windows, Linux and Mac

module.exports = {
init: function() {
init();
}
}

const os = require("os");
const flex_stream = require("./flex_stream.js");

var framerate = 30; // Varies with CPU load

var startMeasure = cpuLoad();
var percentageCPU = 0;
var cpu_avg = 0;
var pos = 1;
var speed = 1;

function cpuMeter() {
var endMeasure = cpuLoad();
var idleDifference = endMeasure.idle - startMeasure.idle;
var totalDifference = endMeasure.total - startMeasure.total;

startMeasure = endMeasure;

if (totalDifference != 0)
percentageCPU = 100 - (100 * idleDifference / totalDifference);

cpu_avg = (cpu_avg+percentageCPU)/2;

//Vary the producer framerate by percentage CPU load (15 to 60 fps)
framerate = cpu_avg*0.45+15;

//Bounce particle off edges of LED strip
if (pos<=0 || pos>=flex_stream.getSize()-1)
speed =-speed;
pos += speed;

var frame = flex_stream.newFrame();
//Vary particle colour by CPU load (green to amber to red)
frame[pos*3+0] = Math.floor(cpu_avg*2.5)+5; //R
frame[pos*3+1] = 100-Math.floor(cpu_avg); //G
frame[pos*3+2] = 2; //B

flex_stream.setProducerFramerate(framerate);
flex_stream.setAlpha(0.25);
flex_stream.produceFrame(frame);
}

//CPU load
function cpuLoad() {
var totalIdle = 0;
var totalTick = 0;
var cpus = os.cpus();

for(var i = 0, len = cpus.length; i < len; i++) {
var cpu = cpus[i];
for(type in cpu.times) {
totalTick += cpu.times[type];
}
totalIdle += cpu.times.idle;
}
return {idle: totalIdle / cpus.length, total: totalTick / cpus.length};
}

//Configure stream

function init(){
flex_stream.setSize(8,1);
flex_stream.setProducerFramerate(30);
flex_stream.setConsumerFramerate(60);
flex_stream.setOnFrame(cpuMeter);
}

init();

Binary file added examples/flex_stream/favicon.ico
Binary file not shown.
47 changes: 47 additions & 0 deletions examples/flex_stream/fireplace.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//Fireplace ambience based on flex_stream.js
//For Windows, Linux and Mac

const os = require("os");
const flex_stream = require("./flex_stream.js");

module.exports = {
init: function() {
init();
}
}

var frame = flex_stream.newFrame();

function fireplace() {

for (i=0; i<flex_stream.getSize(); i++)
{
if (Math.random()<.5)
{
//Red to yellow spectrum
var r = Math.random()*230+25;
var g = r*Math.random()*.75;
frame[i*3+0] = Math.floor(r); //R
frame[i*3+1] = Math.floor(g); //G
frame[i*3+2] = 0; //B
}


}
//Flickering flames
f = Math.random();
flex_stream.setProducerFramerate(f*10+2);
flex_stream.setAlpha(.05+(f/20));
flex_stream.produceFrame(frame);
}

//Configure stream

function init(){
flex_stream.setSize(8,1);
flex_stream.setProducerFramerate(15);
flex_stream.setConsumerFramerate(60);
flex_stream.setOnFrame(fireplace);
}

init();
Loading