Пересмотрел пару серий оригинальной Футурамы для понимания анимации рта Бендера. Пришел к такому выводу: линий должно быть две, и изгибаться они должны симметрично относительно горизонтальной оси симметрии, быть как бы зеркально отраженными горизонтально. При отсутствии звука линии должны быть параллельными на расстоянии 2 пикселя друг от друга. Ход каждой линии по вертикали максимально составит четыре пикселя от линии, условно делящей 8 вертикальных пикселей пополам: четыре вниз и четыре вверх. Тогда это даст более зрелищный эффект, как по мне. По идее, реализация не должна быть сложной. Будет ли интересно такое сделать, возьмётся ли кто? Очевидно, в третьей версии YoRadio это касается вот этого куска кода, а точнее даже последних двух строк (кроме фигурных скобок) в файле bender.cpp:
void analyz0(uint8_t vol)
{
static uint16_t offs;
offs += 20 * vol / 100;
for (uint8_t i = 0; i < ANALYZ_WIDTH; i++)
{
int16_t val = inoise8(i * 50, offs);
val -= 128;
val = val * vol / 100;
val += 128;
val = map(val, 45, 255 - 45, 0, 7);
mtrx.dot(i, val);
}
}