56 lines
1.6 KiB
C++
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;
|
|
}
|
|
|
|
} |