mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2026-01-31 14:51:11 +03:00
imporve wavefom effect
This commit is contained in:
@@ -239,7 +239,7 @@ void led_vu_progress_bar(int pct, int bright) {
|
|||||||
* gain - brightness (0-100), rate - color change speed (0-100)
|
* gain - brightness (0-100), rate - color change speed (0-100)
|
||||||
* comet - alternate display mode
|
* comet - alternate display mode
|
||||||
*/
|
*/
|
||||||
void led_vu_spin_dial(int gain, int rate, bool comet)
|
void led_vu_spin_dial(int gain, int rate, int speed, bool comet)
|
||||||
{
|
{
|
||||||
if (!led_display) return;
|
if (!led_display) return;
|
||||||
|
|
||||||
@@ -270,17 +270,19 @@ void led_vu_spin_dial(int gain, int rate, bool comet)
|
|||||||
uint8_t gp = g * gain / LED_VU_MAX;
|
uint8_t gp = g * gain / LED_VU_MAX;
|
||||||
uint8_t bp = b * gain / LED_VU_MAX;
|
uint8_t bp = b * gain / LED_VU_MAX;
|
||||||
|
|
||||||
// set led color_
|
// set led color
|
||||||
led_strip_set_pixel_rgb(led_display, led_pos, rp, gp, bp);
|
speed++;
|
||||||
if (comet) {
|
if (comet) {
|
||||||
|
led_strip_clear(led_display);
|
||||||
led_strip_set_pixel_rgb(led_display, led_addr(led_pos-1), rp/2, gp/2, bp/2);
|
led_strip_set_pixel_rgb(led_display, led_addr(led_pos-1), rp/2, gp/2, bp/2);
|
||||||
led_strip_set_pixel_rgb(led_display, led_addr(led_pos-2), rp/4, gp/4, bp/4);
|
led_strip_set_pixel_rgb(led_display, led_addr(led_pos-2), rp/4, gp/4, bp/4);
|
||||||
led_strip_set_pixel_rgb(led_display, led_addr(led_pos-3), rp/8, gp/8, bp/8);
|
led_strip_set_pixel_rgb(led_display, led_addr(led_pos-3), rp/8, gp/8, bp/8);
|
||||||
led_strip_set_pixel_rgb(led_display, led_addr(led_pos-4), 0, 0, 0);
|
//led_strip_set_pixel_rgb(led_display, led_addr(led_pos-4), 0, 0, 0);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < speed; i++) {
|
||||||
|
led_strip_set_pixel_rgb(led_display, led_pos, rp, gp, bp);
|
||||||
|
led_pos = led_addr(++led_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
// next led
|
|
||||||
led_pos = led_addr(++led_pos);
|
|
||||||
|
|
||||||
led_strip_show(led_display);
|
led_strip_show(led_display);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ extern struct led_strip_t* led_display;
|
|||||||
uint16_t led_vu_string_length();
|
uint16_t led_vu_string_length();
|
||||||
void led_vu_progress_bar(int pct, int bright);
|
void led_vu_progress_bar(int pct, int bright);
|
||||||
void led_vu_display(int vu_l, int vu_r, int bright, bool comet);
|
void led_vu_display(int vu_l, int vu_r, int bright, bool comet);
|
||||||
void led_vu_spin_dial(int gain, int rate, bool comet);
|
void led_vu_spin_dial(int gain, int rate, int speed, bool comet);
|
||||||
void led_vu_spectrum(uint8_t* data, int bright, int length, int style);
|
void led_vu_spectrum(uint8_t* data, int bright, int length, int style);
|
||||||
void led_vu_color_all(uint8_t r, uint8_t g, uint8_t b);
|
void led_vu_color_all(uint8_t r, uint8_t g, uint8_t b);
|
||||||
void led_vu_data(uint8_t* data, uint16_t offset, uint16_t length);
|
void led_vu_data(uint8_t* data, uint16_t offset, uint16_t length);
|
||||||
|
|||||||
@@ -1084,14 +1084,12 @@ static void displayer_update(void) {
|
|||||||
|
|
||||||
// actualize led_vu
|
// actualize led_vu
|
||||||
if (led_display && led_visu.mode) {
|
if (led_display && led_visu.mode) {
|
||||||
// scale to correct rgb brightness
|
|
||||||
if (led_visu.mode == VISU_VUMETER) vu_scale(led_visu.bars, led_visu.max, meters.levels);
|
|
||||||
else spectrum_scale(led_visu.n, led_visu.bars, led_visu.max, meters.samples);
|
|
||||||
|
|
||||||
// run built in visualizer effects
|
// run built in visualizer effects
|
||||||
if (led_visu.mode == VISU_VUMETER) {
|
if (led_visu.mode == VISU_VUMETER) {
|
||||||
|
vu_scale(led_visu.bars, led_visu.max, meters.levels);
|
||||||
led_vu_display(led_visu.bars[0].current, led_visu.bars[1].current, led_visu.max, led_visu.style);
|
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) {
|
} else if (led_visu.mode == VISU_SPECTRUM) {
|
||||||
|
spectrum_scale(led_visu.n, led_visu.bars, led_visu.max, meters.samples);
|
||||||
uint8_t* led_data = malloc(led_visu.n);
|
uint8_t* led_data = malloc(led_visu.n);
|
||||||
uint8_t* p = (uint8_t*) led_data;
|
uint8_t* p = (uint8_t*) led_data;
|
||||||
for (int i = 0; i < led_visu.n; i++) {
|
for (int i = 0; i < led_visu.n; i++) {
|
||||||
@@ -1101,7 +1099,12 @@ static void displayer_update(void) {
|
|||||||
led_vu_spectrum(led_data, led_visu.max, led_visu.n, led_visu.style);
|
led_vu_spectrum(led_data, led_visu.max, led_visu.n, led_visu.style);
|
||||||
free(led_data);
|
free(led_data);
|
||||||
} else if (led_visu.mode == VISU_WAVEFORM) {
|
} else if (led_visu.mode == VISU_WAVEFORM) {
|
||||||
led_vu_spin_dial(led_visu.bars[1].current, led_visu.bars[(led_visu.n/2)+1].current * 50 / led_visu.max , led_visu.style);
|
spectrum_scale(led_visu.n, led_visu.bars, led_visu.max, meters.samples);
|
||||||
|
led_vu_spin_dial(
|
||||||
|
led_visu.bars[1].current,
|
||||||
|
led_visu.bars[(led_visu.n/2)+1].current * 50 / led_visu.max,
|
||||||
|
led_visu.bars[led_visu.n-2].current * 5 / led_visu.max,
|
||||||
|
led_visu.style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user