Skip to content

Commit

Permalink
Tweaks programas. Fix bug con soundbased y multi
Browse files Browse the repository at this point in the history
  • Loading branch information
jsilveira committed Feb 19, 2017
1 parent 5404bc2 commit 63139d1
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 20 deletions.
2 changes: 1 addition & 1 deletion src/containers/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const ProgramNames = [
'debugSetup',
'all-white', 'all-off', 'blink', 'pw', 'rainbow', 'stars', 'musicFlow', 'musicFreqs', 'vertical', 'radial',
'mixRainbowTriangulos', 'mixMusicW', 'mixMusicPsycho',
'multiIntro'
'multiIntro', 'multiWarroLetras'
]

import { default as Lights } from '../geometry/canvas'
Expand Down
14 changes: 9 additions & 5 deletions src/function/SoundBasedFunction.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import {TimeTickedFunction} from "./TimeTickedFunction";
export class SoundBasedFunction extends TimeTickedFunction{
constructor(config, leds) {
super(config, leds);
}

start(config, draw, done){
this.averageVolume = 0;
let self = this;

Expand Down Expand Up @@ -50,7 +52,7 @@ export class SoundBasedFunction extends TimeTickedFunction{
self.mediaStreamSource = self.audioContext.createMediaStreamSource(stream);

self.analyser = self.audioContext.createAnalyser();
self.analyser.smoothingTimeConstant = 0.1;
self.analyser.smoothingTimeConstant = 0.2;
self.analyser.fftSize = 2048;

self.audioProcessorNode = self.audioContext.createScriptProcessor(self.analyser.frequencyBinCount, 1, 1);
Expand All @@ -76,11 +78,13 @@ export class SoundBasedFunction extends TimeTickedFunction{
lastTime = new Date();
}, config.soundSamplingFreq);

// stream -> mediaSource -> analyser -> javascriptNode -> destination
self.mediaStreamSource.connect(self.analyser);
self.analyser.connect(self.audioProcessorNode);
self.audioProcessorNode.connect(self.audioContext.destination);
// stream -> mediaSource -> analyser -> javascriptNode -> destination
self.mediaStreamSource.connect(self.analyser);
self.analyser.connect(self.audioProcessorNode);
self.audioProcessorNode.connect(self.audioContext.destination);
}

super.start(config, draw, done)
}

// To be overriden by subclasses that need this
Expand Down
19 changes: 13 additions & 6 deletions src/function/Transformations.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,27 +30,34 @@ export function programsByShape(mapping) {
const shuffleSegments10 = _.flatten(_.shuffle(_.map(_.range(0,60), i => _.range(i*10, (i+1)*10))))
const shuffleSegments20 = _.flatten(_.shuffle(_.map(_.range(0,30), i => _.range(i*20, (i+1)*20))))

// Numeros
const char_1 = _.range(150, 300)
const char_2 = _.flatten([inv(trianguloBottomBottom), trianguloBottomLeft, trianguloTopRight, trianguloTopTop])
const char_3 = _.flatten([trianguloBottomBottom, trianguloBottomRight, trianguloTopRight, trianguloTopTop])

// La W warra
const Warro = _.flatten([inv(pataLeft), _.range(150,300), inv(_.range(300, 450)), pataRight])

// Las V V
const V1 = inv(pataLeft).concat(_.range(150,300-quiebre_arriba))
const V2 = inv(_.range(300,450-quiebre_arriba)).concat(pataRight)

// Reloj de arena
const reloj = _.flatten([basePataLeft, _.range(150, 300), inv(_.range(300, 450)), inv(basePataRight)])

// Numeros y letras
const char_1 = _.range(150, 300)
const char_2 = _.flatten([inv(trianguloBottomBottom), trianguloBottomLeft, trianguloTopRight, trianguloTopTop])
const char_3 = _.flatten([trianguloBottomBottom, trianguloBottomRight, trianguloTopRight, trianguloTopTop])

const char_a = _.flatten([trianguloBottom, trianguloTopRight, trianguloTopTop, inv(_.range(450-quiebre_arriba-10,450-quiebre_arriba))])
const char_o = _.flatten([reloj.slice(0,90-20), reloj.slice(90+20,270-20), reloj.slice(270+20,360)]) // El reloj sin el centro
const char_r = _.flatten([trianguloBottomLeft, trianguloTop, inv(trianguloBottomRight)])
const char_w = Warro


const knownMappings = {
pataLeft, pataRight,
trianguloBottom, trianguloTop,
trianguloBottomBottom, trianguloTopTop,
Warro, reloj, V1, V2,
shuffle, shuffleSegments10, shuffleSegments20,
char_1, char_2, char_3
char_1, char_2, char_3, char_a, char_o, char_r, char_w
};

return class {
Expand Down
19 changes: 19 additions & 0 deletions src/function/multiWarroLetras.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// import {Func} from "./rainbow";
const _ = require('lodash')
import {createMultiProgram} from "./MultiPrograms";
import {programsByShape} from "./Transformations";

const Rainbow = require("./rainbow").Func;
const MusicFlow = require("./musicFlow").Func;
const Stars = require("./stars").Func;

// las formas que se pueden usar están definidas en Transformation
const schedule = [
// {duration: 3000, program: programsByShape({char_w: Rainbow})},
{duration: 3000, program: programsByShape({char_a: [Stars, Stars.presets().muchasFast]})},
{duration: 3000, program: programsByShape({char_r: Rainbow})},
{duration: 3000, program: programsByShape({char_r: [Stars, Stars.presets().muchasFast]})},
{duration: 3000, program: programsByShape({char_o: Rainbow})},
]

export const Func = createMultiProgram(schedule)
18 changes: 10 additions & 8 deletions src/function/musicFlow.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ import {SoundBasedFunction} from "./SoundBasedFunction";
export class Func extends SoundBasedFunction{
constructor(config, leds) {
super(config, leds);
}

start(config, draw, done){
this.lastVolume = new Array(this.numberOfLeds+1).join('0').split('').map(() => "#000000");
this.time = 0;

this.maxVolume = 0;

super.start(config, draw, done)
}

// Override parent method
Expand All @@ -27,15 +30,14 @@ export class Func extends SoundBasedFunction{
for(let i=0;i<this.config.speed;i++) {
if(this.config.doble){
if(this.config.haciaAfuera) {
this.lastVolume.splice(Math.floor(this.numberOfLeds / 2 - 1), 2);
this.lastVolume.unshift(newVal);
this.lastVolume.push(newVal);
} else {
this.lastVolume.splice(this.numberOfLeds-1, 1);
this.lastVolume.splice(0, 1);

this.lastVolume.splice(this.lastVolume.length/2, 0, newVal);
this.lastVolume.splice(this.lastVolume.length/2, 0, newVal);
} else {
this.lastVolume.splice(Math.floor(this.numberOfLeds / 2 - 1), 2);
this.lastVolume.unshift(newVal);
this.lastVolume.push(newVal);
}
} else {
this.lastVolume.splice(this.numberOfLeds-1, 1);
Expand All @@ -51,8 +53,8 @@ export class Func extends SoundBasedFunction{
return {
slowDoble: {speed: 1, doble: true},
fastSimple: {speed: 5, doble: false},
fastDobleDesdePuntas: {speed: 5, doble: true, haciaAfuera: true},
fastDobleDesdeCentro: {speed: 5, doble: true, haciaAfuera: false},
fastDobleDesdePuntas: {speed: 5, doble: true, haciaAfuera: false},
fastDobleDesdeCentro: {speed: 5, doble: true, haciaAfuera: true},
}
}

Expand Down

0 comments on commit 63139d1

Please sign in to comment.