Skip to content

Commit e68375a

Browse files
committed
Remove repeating code to fetch audio data
1 parent ea608ce commit e68375a

File tree

3 files changed

+36
-135
lines changed

3 files changed

+36
-135
lines changed

wled00/FX.cpp

Lines changed: 27 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -6325,11 +6325,7 @@ uint16_t mode_ripplepeak(void) { // * Ripple peak. By Andrew Tuli
63256325
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
63266326
Ripple* ripples = reinterpret_cast<Ripple*>(SEGENV.data);
63276327

6328-
um_data_t *um_data;
6329-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6330-
// add support for no audio
6331-
um_data = simulateSound(SEGMENT.soundSim);
6332-
}
6328+
um_data_t *um_data = usermods.getAudioData();
63336329
uint8_t samplePeak = *(uint8_t*)um_data->u_data[3];
63346330
#ifdef ESP32
63356331
float FFT_MajorPeak = *(float*) um_data->u_data[4];
@@ -6416,11 +6412,7 @@ uint16_t mode_2DSwirl(void) {
64166412
int ni = (cols - 1) - i;
64176413
int nj = (cols - 1) - j;
64186414

6419-
um_data_t *um_data;
6420-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6421-
// add support for no audio
6422-
um_data = simulateSound(SEGMENT.soundSim);
6423-
}
6415+
um_data_t *um_data = usermods.getAudioData();
64246416
float volumeSmth = *(float*) um_data->u_data[0]; //ewowi: use instead of sampleAvg???
64256417
int volumeRaw = *(int16_t*) um_data->u_data[1];
64266418

@@ -6446,11 +6438,7 @@ uint16_t mode_2DWaverly(void) {
64466438
const int cols = SEGMENT.virtualWidth();
64476439
const int rows = SEGMENT.virtualHeight();
64486440

6449-
um_data_t *um_data;
6450-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6451-
// add support for no audio
6452-
um_data = simulateSound(SEGMENT.soundSim);
6453-
}
6441+
um_data_t *um_data = usermods.getAudioData();
64546442
float volumeSmth = *(float*) um_data->u_data[0];
64556443

64566444
SEGMENT.fadeToBlackBy(SEGMENT.speed);
@@ -6499,11 +6487,7 @@ uint16_t mode_gravcenter(void) { // Gravcenter. By Andrew Tuline.
64996487
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
65006488
Gravity* gravcen = reinterpret_cast<Gravity*>(SEGENV.data);
65016489

6502-
um_data_t *um_data;
6503-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6504-
// add support for no audio
6505-
um_data = simulateSound(SEGMENT.soundSim);
6506-
}
6490+
um_data_t *um_data = usermods.getAudioData();
65076491
float volumeSmth = *(float*) um_data->u_data[0];
65086492

65096493
//SEGMENT.fade_out(240);
@@ -6548,11 +6532,7 @@ uint16_t mode_gravcentric(void) { // Gravcentric. By Andrew
65486532
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
65496533
Gravity* gravcen = reinterpret_cast<Gravity*>(SEGENV.data);
65506534

6551-
um_data_t *um_data;
6552-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6553-
// add support for no audio
6554-
um_data = simulateSound(SEGMENT.soundSim);
6555-
}
6535+
um_data_t *um_data = usermods.getAudioData();
65566536
float volumeSmth = *(float*) um_data->u_data[0];
65576537

65586538
// printUmData();
@@ -6600,11 +6580,7 @@ uint16_t mode_gravimeter(void) { // Gravmeter. By Andrew Tuline.
66006580
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
66016581
Gravity* gravcen = reinterpret_cast<Gravity*>(SEGENV.data);
66026582

6603-
um_data_t *um_data;
6604-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6605-
// add support for no audio
6606-
um_data = simulateSound(SEGMENT.soundSim);
6607-
}
6583+
um_data_t *um_data = usermods.getAudioData();
66086584
float volumeSmth = *(float*) um_data->u_data[0];
66096585

66106586
//SEGMENT.fade_out(240);
@@ -6641,11 +6617,7 @@ static const char _data_FX_MODE_GRAVIMETER[] PROGMEM = "Gravimeter@Rate of fall,
66416617
// * JUGGLES //
66426618
//////////////////////
66436619
uint16_t mode_juggles(void) { // Juggles. By Andrew Tuline.
6644-
um_data_t *um_data;
6645-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6646-
// add support for no audio
6647-
um_data = simulateSound(SEGMENT.soundSim);
6648-
}
6620+
um_data_t *um_data = usermods.getAudioData();
66496621
float volumeSmth = *(float*) um_data->u_data[0];
66506622

66516623
SEGMENT.fade_out(224); // 6.25%
@@ -6668,11 +6640,7 @@ uint16_t mode_matripix(void) { // Matripix. By Andrew Tuline.
66686640
if (SEGLEN == 1) return mode_static();
66696641
// even with 1D effect we have to take logic for 2D segments for allocation as fill_solid() fills whole segment
66706642

6671-
um_data_t *um_data;
6672-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6673-
// add support for no audio
6674-
um_data = simulateSound(SEGMENT.soundSim);
6675-
}
6643+
um_data_t *um_data = usermods.getAudioData();
66766644
int volumeRaw = *(int16_t*)um_data->u_data[1];
66776645

66786646
if (SEGENV.call == 0) {
@@ -6700,11 +6668,7 @@ uint16_t mode_midnoise(void) { // Midnoise. By Andrew Tuline.
67006668
if (SEGLEN == 1) return mode_static();
67016669
// Changing xdist to SEGENV.aux0 and ydist to SEGENV.aux1.
67026670

6703-
um_data_t *um_data;
6704-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6705-
// add support for no audio
6706-
um_data = simulateSound(SEGMENT.soundSim);
6707-
}
6671+
um_data_t *um_data = usermods.getAudioData();
67086672
float volumeSmth = *(float*) um_data->u_data[0];
67096673

67106674
SEGMENT.fade_out(SEGMENT.speed);
@@ -6739,11 +6703,7 @@ uint16_t mode_noisefire(void) { // Noisefire. By Andrew Tuline.
67396703
CRGB::DarkOrange, CRGB::DarkOrange, CRGB::Orange, CRGB::Orange,
67406704
CRGB::Yellow, CRGB::Orange, CRGB::Yellow, CRGB::Yellow);
67416705

6742-
um_data_t *um_data;
6743-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6744-
// add support for no audio
6745-
um_data = simulateSound(SEGMENT.soundSim);
6746-
}
6706+
um_data_t *um_data = usermods.getAudioData();
67476707
float volumeSmth = *(float*) um_data->u_data[0];
67486708

67496709
if (SEGENV.call == 0) SEGMENT.fill(BLACK);
@@ -6767,11 +6727,7 @@ static const char _data_FX_MODE_NOISEFIRE[] PROGMEM = "Noisefire@!,!;;;01v;m12=2
67676727
///////////////////////
67686728
uint16_t mode_noisemeter(void) { // Noisemeter. By Andrew Tuline.
67696729

6770-
um_data_t *um_data;
6771-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6772-
// add support for no audio
6773-
um_data = simulateSound(SEGMENT.soundSim);
6774-
}
6730+
um_data_t *um_data = usermods.getAudioData();
67756731
float volumeSmth = *(float*) um_data->u_data[0];
67766732
int volumeRaw = *(int16_t*)um_data->u_data[1];
67776733

@@ -6808,11 +6764,7 @@ uint16_t mode_pixelwave(void) { // Pixelwave. By Andrew Tuline.
68086764
SEGMENT.fill(BLACK);
68096765
}
68106766

6811-
um_data_t *um_data;
6812-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6813-
// add support for no audio
6814-
um_data = simulateSound(SEGMENT.soundSim);
6815-
}
6767+
um_data_t *um_data = usermods.getAudioData();
68166768
int volumeRaw = *(int16_t*)um_data->u_data[1];
68176769

68186770
uint8_t secondHand = micros()/(256-SEGMENT.speed)/500+1 % 16;
@@ -6844,11 +6796,7 @@ uint16_t mode_plasmoid(void) { // Plasmoid. By Andrew Tuline.
68446796
if (!SEGENV.allocateData(sizeof(plasphase))) return mode_static(); //allocation failed
68456797
Plasphase* plasmoip = reinterpret_cast<Plasphase*>(SEGENV.data);
68466798

6847-
um_data_t *um_data;
6848-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6849-
// add support for no audio
6850-
um_data = simulateSound(SEGMENT.soundSim);
6851-
}
6799+
um_data_t *um_data = usermods.getAudioData();
68526800
float volumeSmth = *(float*) um_data->u_data[0];
68536801

68546802
SEGMENT.fadeToBlackBy(32);
@@ -6883,11 +6831,7 @@ uint16_t mode_puddlepeak(void) { // Puddlepeak. By Andrew Tuline.
68836831
uint8_t fadeVal = map(SEGMENT.speed,0,255, 224, 254);
68846832
unsigned pos = random16(SEGLEN); // Set a random starting position.
68856833

6886-
um_data_t *um_data;
6887-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6888-
// add support for no audio
6889-
um_data = simulateSound(SEGMENT.soundSim);
6890-
}
6834+
um_data_t *um_data = usermods.getAudioData();
68916835
uint8_t samplePeak = *(uint8_t*)um_data->u_data[3];
68926836
uint8_t *maxVol = (uint8_t*)um_data->u_data[6];
68936837
uint8_t *binNum = (uint8_t*)um_data->u_data[7];
@@ -6928,11 +6872,7 @@ uint16_t mode_puddles(void) { // Puddles. By Andrew Tuline.
69286872

69296873
SEGMENT.fade_out(fadeVal);
69306874

6931-
um_data_t *um_data;
6932-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6933-
// add support for no audio
6934-
um_data = simulateSound(SEGMENT.soundSim);
6935-
}
6875+
um_data_t *um_data = usermods.getAudioData();
69366876
int volumeRaw = *(int16_t*)um_data->u_data[1];
69376877

69386878
if (volumeRaw > 1) {
@@ -6990,11 +6930,7 @@ uint16_t mode_blurz(void) { // Blurz. By Andrew Tuline.
69906930
if (SEGLEN == 1) return mode_static();
69916931
// even with 1D effect we have to take logic for 2D segments for allocation as fill_solid() fills whole segment
69926932

6993-
um_data_t *um_data;
6994-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6995-
// add support for no audio
6996-
um_data = simulateSound(SEGMENT.soundSim);
6997-
}
6933+
um_data_t *um_data = usermods.getAudioData();
69986934
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
69996935

70006936
if (SEGENV.call == 0) {
@@ -7027,11 +6963,7 @@ uint16_t mode_DJLight(void) { // Written by ??? Adapted by Wil
70276963
// No need to prevent from executing on single led strips, only mid will be set (mid = 0)
70286964
const int mid = SEGLEN / 2;
70296965

7030-
um_data_t *um_data;
7031-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7032-
// add support for no audio
7033-
um_data = simulateSound(SEGMENT.soundSim);
7034-
}
6966+
um_data_t *um_data = usermods.getAudioData();
70356967
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
70366968

70376969
if (SEGENV.call == 0) {
@@ -7063,11 +6995,7 @@ uint16_t mode_freqmap(void) { // Map FFT_MajorPeak to SEGLEN.
70636995
// Start frequency = 60 Hz and log10(60) = 1.78
70646996
// End frequency = MAX_FREQUENCY in Hz and lo10(MAX_FREQUENCY) = MAX_FREQ_LOG10
70656997

7066-
um_data_t *um_data;
7067-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7068-
// add support for no audio
7069-
um_data = simulateSound(SEGMENT.soundSim);
7070-
}
6998+
um_data_t *um_data = usermods.getAudioData();
70716999
float FFT_MajorPeak = *(float*)um_data->u_data[4];
70727000
float my_magnitude = *(float*)um_data->u_data[5] / 4.0f;
70737001
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
@@ -7097,11 +7025,7 @@ static const char _data_FX_MODE_FREQMAP[] PROGMEM = "Freqmap@Fade rate,Starting
70977025
///////////////////////
70987026
uint16_t mode_freqmatrix(void) { // Freqmatrix. By Andreas Pleschung.
70997027
// No need to prevent from executing on single led strips, we simply change pixel 0 each time and avoid the shift
7100-
um_data_t *um_data;
7101-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7102-
// add support for no audio
7103-
um_data = simulateSound(SEGMENT.soundSim);
7104-
}
7028+
um_data_t *um_data = usermods.getAudioData();
71057029
float FFT_MajorPeak = *(float*)um_data->u_data[4];
71067030
float volumeSmth = *(float*)um_data->u_data[0];
71077031

@@ -7156,11 +7080,7 @@ static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Speed,Sound e
71567080
// SEGMENT.speed select faderate
71577081
// SEGMENT.intensity select colour index
71587082
uint16_t mode_freqpixels(void) { // Freqpixel. By Andrew Tuline.
7159-
um_data_t *um_data;
7160-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7161-
// add support for no audio
7162-
um_data = simulateSound(SEGMENT.soundSim);
7163-
}
7083+
um_data_t *um_data = usermods.getAudioData();
71647084
float FFT_MajorPeak = *(float*)um_data->u_data[4];
71657085
float my_magnitude = *(float*)um_data->u_data[5] / 16.0f;
71667086
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1.0f; // log10(0) is "forbidden" (throws exception)
@@ -7203,11 +7123,7 @@ static const char _data_FX_MODE_FREQPIXELS[] PROGMEM = "Freqpixels@Fade rate,Sta
72037123
// Depending on the music stream you have you might find it useful to change the frequency mapping.
72047124
uint16_t mode_freqwave(void) { // Freqwave. By Andreas Pleschung.
72057125
// As before, this effect can also work on single pixels, we just lose the shifting effect
7206-
um_data_t *um_data;
7207-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7208-
// add support for no audio
7209-
um_data = simulateSound(SEGMENT.soundSim);
7210-
}
7126+
um_data_t *um_data = usermods.getAudioData();
72117127
float FFT_MajorPeak = *(float*)um_data->u_data[4];
72127128
float volumeSmth = *(float*)um_data->u_data[0];
72137129

@@ -7262,11 +7178,7 @@ uint16_t mode_gravfreq(void) { // Gravfreq. By Andrew Tuline.
72627178
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
72637179
Gravity* gravcen = reinterpret_cast<Gravity*>(SEGENV.data);
72647180

7265-
um_data_t *um_data;
7266-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7267-
// add support for no audio
7268-
um_data = simulateSound(SEGMENT.soundSim);
7269-
}
7181+
um_data_t *um_data = usermods.getAudioData();
72707182
float FFT_MajorPeak = *(float*)um_data->u_data[4];
72717183
float volumeSmth = *(float*)um_data->u_data[0];
72727184
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
@@ -7309,11 +7221,7 @@ static const char _data_FX_MODE_GRAVFREQ[] PROGMEM = "Gravfreq@Rate of fall,Sens
73097221
// ** Noisemove //
73107222
//////////////////////
73117223
uint16_t mode_noisemove(void) { // Noisemove. By: Andrew Tuline
7312-
um_data_t *um_data;
7313-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7314-
// add support for no audio
7315-
um_data = simulateSound(SEGMENT.soundSim);
7316-
}
7224+
um_data_t *um_data = usermods.getAudioData();
73177225
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
73187226

73197227
int fadeoutDelay = (256 - SEGMENT.speed) / 96;
@@ -7336,11 +7244,7 @@ static const char _data_FX_MODE_NOISEMOVE[] PROGMEM = "Noisemove@Speed of perlin
73367244
// ** Rocktaves //
73377245
//////////////////////
73387246
uint16_t mode_rocktaves(void) { // Rocktaves. Same note from each octave is same colour. By: Andrew Tuline
7339-
um_data_t *um_data;
7340-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7341-
// add support for no audio
7342-
um_data = simulateSound(SEGMENT.soundSim);
7343-
}
7247+
um_data_t *um_data = usermods.getAudioData();
73447248
float FFT_MajorPeak = *(float*) um_data->u_data[4];
73457249
float my_magnitude = *(float*) um_data->u_data[5] / 16.0f;
73467250

@@ -7378,11 +7282,7 @@ static const char _data_FX_MODE_ROCKTAVES[] PROGMEM = "Rocktaves@;!,!;!;01f;m12=
73787282
uint16_t mode_waterfall(void) { // Waterfall. By: Andrew Tuline
73797283
// effect can work on single pixels, we just lose the shifting effect
73807284

7381-
um_data_t *um_data;
7382-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7383-
// add support for no audio
7384-
um_data = simulateSound(SEGMENT.soundSim);
7385-
}
7285+
um_data_t *um_data = usermods.getAudioData();
73867286
uint8_t samplePeak = *(uint8_t*)um_data->u_data[3];
73877287
float FFT_MajorPeak = *(float*) um_data->u_data[4];
73887288
uint8_t *maxVol = (uint8_t*)um_data->u_data[6];
@@ -7437,11 +7337,7 @@ uint16_t mode_2DGEQ(void) { // By Will Tatam. Code reduction by Ewoud Wijma.
74377337
if (!SEGENV.allocateData(cols*sizeof(uint16_t))) return mode_static(); //allocation failed
74387338
uint16_t *previousBarHeight = reinterpret_cast<uint16_t*>(SEGENV.data); //array of previous bar heights per frequency band
74397339

7440-
um_data_t *um_data;
7441-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7442-
// add support for no audio
7443-
um_data = simulateSound(SEGMENT.soundSim);
7444-
}
7340+
um_data_t *um_data = usermods.getAudioData();
74457341
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
74467342

74477343
if (SEGENV.call == 0) for (int i=0; i<cols; i++) previousBarHeight[i] = 0;
@@ -7500,11 +7396,7 @@ uint16_t mode_2DFunkyPlank(void) { // Written by ??? Adapted by Wil
75007396
bandInc = (NUMB_BANDS / cols);
75017397
}
75027398

7503-
um_data_t *um_data;
7504-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7505-
// add support for no audio
7506-
um_data = simulateSound(SEGMENT.soundSim);
7507-
}
7399+
um_data_t *um_data = usermods.getAudioData();
75087400
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
75097401

75107402
if (SEGENV.call == 0) {

wled00/fcn_declare.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ class UsermodManager {
326326
void handleOverlayDraw();
327327
bool handleButton(uint8_t b);
328328
bool getUMData(um_data_t **um_data, uint8_t mod_id = USERMOD_ID_RESERVED); // USERMOD_ID_RESERVED will poll all usermods
329+
um_data_t *getAudioData();
329330
void setup();
330331
void connected();
331332
void appendConfigData();

wled00/um_manager.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ bool UsermodManager::getUMData(um_data_t **data, uint8_t mod_id) {
2323
}
2424
return false;
2525
}
26+
um_data_t* UsermodManager::getAudioData() {
27+
um_data_t *um_data;
28+
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
29+
// add support for no audio
30+
um_data = simulateSound(SEGMENT.soundSim);
31+
}
32+
return um_data;
33+
}
2634
void UsermodManager::addToJsonState(JsonObject& obj) { for (unsigned i = 0; i < numMods; i++) ums[i]->addToJsonState(obj); }
2735
void UsermodManager::addToJsonInfo(JsonObject& obj) { for (unsigned i = 0; i < numMods; i++) ums[i]->addToJsonInfo(obj); }
2836
void UsermodManager::readFromJsonState(JsonObject& obj) { for (unsigned i = 0; i < numMods; i++) ums[i]->readFromJsonState(obj); }

0 commit comments

Comments
 (0)