VulcanoLE/src/VulcanoLE/Scripts/BassHistory.cpp

56 lines
1.6 KiB
C++

#include <VulcanoLE/Scripts/BassHistory.h>
#include <VulcanoLE/Colors/ColorHelper.h>
namespace VIZ {
BassHistory::BassHistory(AudioGrabber *pGrabber, Vulcan121 *pVulcan121) : VIZ(pGrabber, pVulcan121){
for (auto &item : map.key) {
item.a = 0;
}
m_history.resize(keyboardData.num_cols);
}
void BassHistory::onSetup() {
keyboard->sendToLEDs({ 0, 0, 0, 0 });
grabber->requestMode = AudioGrabber::ReqMode::FFT;
}
void BassHistory::onTick(float delta) {
auto data = grabber->fft.getData()->leftChannel;
auto val = 0.0;
for (int i = 1; i < 4; ++i) {
if (data[i] > val) {
val = data[i];
}
}
pushNew(val);
for (int i = 0; i < keyboardData.num_cols; ++i) {
auto col = keyboard->getColumn(i);
for (int j = 0; j < col->count; j++) {
auto& color = map.key[col->index[j]];
color.a = m_history[i];
auto newColor = Color::Generator::rgbFromHSV({
m_history[i] / 255 * 360,
1,
1
});
color.r = int16_t(newColor.r * 255);
color.g = int16_t(newColor.g * 255);
color.b = int16_t(newColor.b * 255);
}
}
keyboard->sendLedMap(map);
}
const char *BassHistory::name() {
return m_name.c_str();
}
void BassHistory::pushNew(double val) {
for (int i = 1; i < m_history.size(); ++i) {
m_history[i - 1] = m_history[i];
}
m_history[m_history.size()-1] = val;
}
}