summaryrefslogtreecommitdiff
path: root/src/illuminate.c
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2012-06-17 16:18:53 +0000
committerLudovic Pouzenc <ludovic@pouzenc.fr>2012-06-17 16:18:53 +0000
commitc8e2aaf6999da491d6ea8dab2bc99752fa94b6d4 (patch)
tree49ef9be6a6ce6044aa2780cc52d7292f2836ab61 /src/illuminate.c
parent71dad10fdabd700f036893c725f02c9b4b4ac49b (diff)
download2012-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.c17
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);
}