|
@@ -216,7 +216,7 @@ static EXT_RAM_ATTR struct {
|
|
|
|
|
|
static EXT_RAM_ATTR struct {
|
|
|
int mode;
|
|
|
- int n, style, max;
|
|
|
+ int n, style, max, gain;
|
|
|
u16_t config;
|
|
|
struct bar_s bars[MAX_BARS] ;
|
|
|
} led_visu;
|
|
@@ -1089,10 +1089,10 @@ static void displayer_update(void) {
|
|
|
if (led_display && led_visu.mode) {
|
|
|
// run built in visualizer effects
|
|
|
if (led_visu.mode == VISU_VUMETER) {
|
|
|
- vu_scale(led_visu.bars, led_visu.max, meters.levels);
|
|
|
+ vu_scale(led_visu.bars, led_visu.gain, meters.levels);
|
|
|
led_vu_display(led_visu.bars[0].current, led_visu.bars[1].current, led_visu.max, led_visu.style);
|
|
|
} else if (led_visu.mode == VISU_SPECTRUM) {
|
|
|
- spectrum_scale(led_visu.n, led_visu.bars, led_visu.max, meters.samples);
|
|
|
+ spectrum_scale(led_visu.n, led_visu.bars, led_visu.gain, meters.samples);
|
|
|
uint8_t* p = (uint8_t*) led_data;
|
|
|
for (int i = 0; i < led_visu.n; i++) {
|
|
|
*p = led_visu.bars[i].current;
|
|
@@ -1100,7 +1100,7 @@ static void displayer_update(void) {
|
|
|
}
|
|
|
led_vu_spectrum(led_data, led_visu.max, led_visu.n, led_visu.style);
|
|
|
} else if (led_visu.mode == VISU_WAVEFORM) {
|
|
|
- spectrum_scale(led_visu.n, led_visu.bars, led_visu.max, meters.samples);
|
|
|
+ spectrum_scale(led_visu.n, led_visu.bars, led_visu.gain, meters.samples);
|
|
|
led_vu_spin_dial(
|
|
|
led_visu.bars[led_visu.n-2].current,
|
|
|
led_visu.bars[(led_visu.n/2)+1].current * 50 / led_visu.max,
|
|
@@ -1277,9 +1277,9 @@ static void ledv_handler( u8_t *data, int len) {
|
|
|
led_visu.mode = pkt->which;
|
|
|
led_visu.style = pkt->style;
|
|
|
led_visu.max = pkt->bright;
|
|
|
+led_visu.gain = led_visu.max * led_vu_scale() / 100;
|
|
|
|
|
|
- led_vu_clear();
|
|
|
- if (led_visu.mode) {
|
|
|
+ if (led_visu.mode) {
|
|
|
if (led_visu.mode == VISU_SPECTRUM) {
|
|
|
led_visu.n = (led_visu.config < MAX_BARS) ? led_visu.config : MAX_BARS;
|
|
|
spectrum_limits(led_visu.bars, 0, led_visu.n, 0, 0.25);
|
|
@@ -1293,8 +1293,10 @@ static void ledv_handler( u8_t *data, int len) {
|
|
|
// reset bars maximum
|
|
|
for (int i = led_visu.n; --i >= 0;) led_visu.bars[i].max = 0;
|
|
|
|
|
|
- LOG_INFO("LED Visualizer mode %u with bars:%u max:%u style:%d", led_visu.mode, led_visu.n, led_visu.max, led_visu.style);
|
|
|
+ LOG_INFO("LED Visualizer mode %u with bars:%u max:%u style:%d gain:%u", led_visu.mode, led_visu.n, led_visu.max, led_visu.style, led_visu.gain);
|
|
|
} else {
|
|
|
+led_vu_clear();
|
|
|
+
|
|
|
LOG_INFO("Stopping led visualizer");
|
|
|
}
|
|
|
|