diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2012-06-17 16:18:53 +0000 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2012-06-17 16:18:53 +0000 |
commit | c8e2aaf6999da491d6ea8dab2bc99752fa94b6d4 (patch) | |
tree | 49ef9be6a6ce6044aa2780cc52d7292f2836ab61 /src/illuminate.c | |
parent | 71dad10fdabd700f036893c725f02c9b4b4ac49b (diff) | |
download | 2012-violon-leds-c8e2aaf6999da491d6ea8dab2bc99752fa94b6d4.tar.gz 2012-violon-leds-c8e2aaf6999da491d6ea8dab2bc99752fa94b6d4.tar.bz2 2012-violon-leds-c8e2aaf6999da491d6ea8dab2bc99752fa94b6d4.zip |
Ajout d'une fonction pour linéariser un peu la réponse du projecteur (illuminate.c)
Ajout d'une moyenne sur 8 valeurs pour la luminosité (mais on garde la valeur instantanée pour altérer la couleur)
Correction du vumeter qui s'initialisais à 1px par 1px au lancement de l'appli.
Avec le lud-msi, le projo à Ju et les sons enregistrés par Laurent, ça pète pas mal :P
git-svn-id: file:///var/svn/2012-violon-leds/trunk@24 6be1fa4d-33ac-4c33-becc-79fcb3794bb6
Diffstat (limited to 'src/illuminate.c')
-rw-r--r-- | src/illuminate.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/illuminate.c b/src/illuminate.c index a0f146d..92c8fac 100644 --- a/src/illuminate.c +++ b/src/illuminate.c @@ -3,6 +3,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <math.h> #include "illuminate.h" // FTDI Vendor ID @@ -84,12 +85,22 @@ int dmx_init() { return 0; } +inline int projector_correction(int in) { + //int out=powf(((in-108.f)/162.f),3.f)*256.f+80.f; + int out=in*0.25f+0.75*(powf(((in-100.f)/162.f),3.f)*256.f+48.f); + if (out>255) out=255; + if (out<0) out=0; + return out; +} + int dmx_write_rgb(int r, int g, int b) { if (! ftdi.usb_dev ) return -1; - universe[2]=r; - universe[3]=g; - universe[4]=b; + universe[2]=projector_correction(r); + universe[3]=projector_correction(g); + universe[4]=projector_correction(b); + +// printf("rgb %3i %3i %3i dmx %3i %3i %3i\n", r,g,b, universe[2], universe[3], universe[4]); return dmx_universe_write(&ftdi, universe, DMX_CHANNELS); } |