VulcanoLE/src/VulcanoLE/Scripts/Loudness.cpp

33 lines
1.0 KiB
C++

#include <VulcanoLE/Scripts/Loudness.h>
namespace VIZ {
Loudness::Loudness(AudioGrabber *pGrabber, Vulcan121 *pVulcan121) : VIZ(pGrabber, pVulcan121) {}
void Loudness::on_setup() {
keyboard->send_led_to({ 0, 0, 0, 0 });
grabber->requestMode = AudioGrabber::ReqMode::PEAK;
usleep(100000);
}
void Loudness::on_tick() {
auto data = Vulcan121::createEmptyLEDMap();
float val = grabber->getLoudness();
val = val > 1.0f ? 1.0f : val;
double newVal = (val + lastVal) * 0.5;
int maxCol = newVal * 24;
for (int col = 0; col < maxCol; ++col) {
for (int i = 0; i < keyboardData.num_rows; ++i) {
auto index = col * i;
if (col >= maxCol - 1) data[ 0 ].key[ index ] = { 255, 0, 0, 100 };
else data[ 0 ].key[ index ] = { 0, 0, 255, 80 };
}
}
// delete map! ;)
lastVal = val;
keyboard->send_led_map(data, true);
}
const char *Loudness::name() {
return m_name.c_str();
}
}