33 lines
1.0 KiB
C++
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();
|
|
}
|
|
} |