Skip to content

Commit 8688777

Browse files
authored
Merge pull request wled#4103 from netmindz/FX-cleanup
Remove repeating code to fetch audio data
2 parents 198acee + 24ecf1a commit 8688777

File tree

1 file changed

+36
-135
lines changed

1 file changed

+36
-135
lines changed

wled00/FX.cpp

Lines changed: 36 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,15 @@ int8_t tristate_square8(uint8_t x, uint8_t pulsewidth, uint8_t attdec) {
7373
return 0;
7474
}
7575

76+
static um_data_t* getAudioData() {
77+
um_data_t *um_data;
78+
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
79+
// add support for no audio
80+
um_data = simulateSound(SEGMENT.soundSim);
81+
}
82+
return um_data;
83+
}
84+
7685
// effect functions
7786

7887
/*
@@ -6333,11 +6342,7 @@ uint16_t mode_ripplepeak(void) { // * Ripple peak. By Andrew Tuli
63336342
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
63346343
Ripple* ripples = reinterpret_cast<Ripple*>(SEGENV.data);
63356344

6336-
um_data_t *um_data;
6337-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6338-
// add support for no audio
6339-
um_data = simulateSound(SEGMENT.soundSim);
6340-
}
6345+
um_data_t *um_data = getAudioData();
63416346
uint8_t samplePeak = *(uint8_t*)um_data->u_data[3];
63426347
#ifdef ESP32
63436348
float FFT_MajorPeak = *(float*) um_data->u_data[4];
@@ -6424,11 +6429,7 @@ uint16_t mode_2DSwirl(void) {
64246429
int ni = (cols - 1) - i;
64256430
int nj = (cols - 1) - j;
64266431

6427-
um_data_t *um_data;
6428-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6429-
// add support for no audio
6430-
um_data = simulateSound(SEGMENT.soundSim);
6431-
}
6432+
um_data_t *um_data = getAudioData();
64326433
float volumeSmth = *(float*) um_data->u_data[0]; //ewowi: use instead of sampleAvg???
64336434
int volumeRaw = *(int16_t*) um_data->u_data[1];
64346435

@@ -6454,11 +6455,7 @@ uint16_t mode_2DWaverly(void) {
64546455
const int cols = SEGMENT.virtualWidth();
64556456
const int rows = SEGMENT.virtualHeight();
64566457

6457-
um_data_t *um_data;
6458-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6459-
// add support for no audio
6460-
um_data = simulateSound(SEGMENT.soundSim);
6461-
}
6458+
um_data_t *um_data = getAudioData();
64626459
float volumeSmth = *(float*) um_data->u_data[0];
64636460

64646461
SEGMENT.fadeToBlackBy(SEGMENT.speed);
@@ -6507,11 +6504,7 @@ uint16_t mode_gravcenter(void) { // Gravcenter. By Andrew Tuline.
65076504
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
65086505
Gravity* gravcen = reinterpret_cast<Gravity*>(SEGENV.data);
65096506

6510-
um_data_t *um_data;
6511-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6512-
// add support for no audio
6513-
um_data = simulateSound(SEGMENT.soundSim);
6514-
}
6507+
um_data_t *um_data = getAudioData();
65156508
float volumeSmth = *(float*) um_data->u_data[0];
65166509

65176510
//SEGMENT.fade_out(240);
@@ -6556,11 +6549,7 @@ uint16_t mode_gravcentric(void) { // Gravcentric. By Andrew
65566549
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
65576550
Gravity* gravcen = reinterpret_cast<Gravity*>(SEGENV.data);
65586551

6559-
um_data_t *um_data;
6560-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6561-
// add support for no audio
6562-
um_data = simulateSound(SEGMENT.soundSim);
6563-
}
6552+
um_data_t *um_data = getAudioData();
65646553
float volumeSmth = *(float*) um_data->u_data[0];
65656554

65666555
// printUmData();
@@ -6608,11 +6597,7 @@ uint16_t mode_gravimeter(void) { // Gravmeter. By Andrew Tuline.
66086597
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
66096598
Gravity* gravcen = reinterpret_cast<Gravity*>(SEGENV.data);
66106599

6611-
um_data_t *um_data;
6612-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6613-
// add support for no audio
6614-
um_data = simulateSound(SEGMENT.soundSim);
6615-
}
6600+
um_data_t *um_data = getAudioData();
66166601
float volumeSmth = *(float*) um_data->u_data[0];
66176602

66186603
//SEGMENT.fade_out(240);
@@ -6649,11 +6634,7 @@ static const char _data_FX_MODE_GRAVIMETER[] PROGMEM = "Gravimeter@Rate of fall,
66496634
// * JUGGLES //
66506635
//////////////////////
66516636
uint16_t mode_juggles(void) { // Juggles. By Andrew Tuline.
6652-
um_data_t *um_data;
6653-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6654-
// add support for no audio
6655-
um_data = simulateSound(SEGMENT.soundSim);
6656-
}
6637+
um_data_t *um_data = getAudioData();
66576638
float volumeSmth = *(float*) um_data->u_data[0];
66586639

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

6679-
um_data_t *um_data;
6680-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6681-
// add support for no audio
6682-
um_data = simulateSound(SEGMENT.soundSim);
6683-
}
6660+
um_data_t *um_data = getAudioData();
66846661
int volumeRaw = *(int16_t*)um_data->u_data[1];
66856662

66866663
if (SEGENV.call == 0) {
@@ -6708,11 +6685,7 @@ uint16_t mode_midnoise(void) { // Midnoise. By Andrew Tuline.
67086685
if (SEGLEN == 1) return mode_static();
67096686
// Changing xdist to SEGENV.aux0 and ydist to SEGENV.aux1.
67106687

6711-
um_data_t *um_data;
6712-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6713-
// add support for no audio
6714-
um_data = simulateSound(SEGMENT.soundSim);
6715-
}
6688+
um_data_t *um_data = getAudioData();
67166689
float volumeSmth = *(float*) um_data->u_data[0];
67176690

67186691
SEGMENT.fade_out(SEGMENT.speed);
@@ -6747,11 +6720,7 @@ uint16_t mode_noisefire(void) { // Noisefire. By Andrew Tuline.
67476720
CRGB::DarkOrange, CRGB::DarkOrange, CRGB::Orange, CRGB::Orange,
67486721
CRGB::Yellow, CRGB::Orange, CRGB::Yellow, CRGB::Yellow);
67496722

6750-
um_data_t *um_data;
6751-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6752-
// add support for no audio
6753-
um_data = simulateSound(SEGMENT.soundSim);
6754-
}
6723+
um_data_t *um_data = getAudioData();
67556724
float volumeSmth = *(float*) um_data->u_data[0];
67566725

67576726
if (SEGENV.call == 0) SEGMENT.fill(BLACK);
@@ -6775,11 +6744,7 @@ static const char _data_FX_MODE_NOISEFIRE[] PROGMEM = "Noisefire@!,!;;;01v;m12=2
67756744
///////////////////////
67766745
uint16_t mode_noisemeter(void) { // Noisemeter. By Andrew Tuline.
67776746

6778-
um_data_t *um_data;
6779-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6780-
// add support for no audio
6781-
um_data = simulateSound(SEGMENT.soundSim);
6782-
}
6747+
um_data_t *um_data = getAudioData();
67836748
float volumeSmth = *(float*) um_data->u_data[0];
67846749
int volumeRaw = *(int16_t*)um_data->u_data[1];
67856750

@@ -6816,11 +6781,7 @@ uint16_t mode_pixelwave(void) { // Pixelwave. By Andrew Tuline.
68166781
SEGMENT.fill(BLACK);
68176782
}
68186783

6819-
um_data_t *um_data;
6820-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6821-
// add support for no audio
6822-
um_data = simulateSound(SEGMENT.soundSim);
6823-
}
6784+
um_data_t *um_data = getAudioData();
68246785
int volumeRaw = *(int16_t*)um_data->u_data[1];
68256786

68266787
uint8_t secondHand = micros()/(256-SEGMENT.speed)/500+1 % 16;
@@ -6852,11 +6813,7 @@ uint16_t mode_plasmoid(void) { // Plasmoid. By Andrew Tuline.
68526813
if (!SEGENV.allocateData(sizeof(plasphase))) return mode_static(); //allocation failed
68536814
Plasphase* plasmoip = reinterpret_cast<Plasphase*>(SEGENV.data);
68546815

6855-
um_data_t *um_data;
6856-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6857-
// add support for no audio
6858-
um_data = simulateSound(SEGMENT.soundSim);
6859-
}
6816+
um_data_t *um_data = getAudioData();
68606817
float volumeSmth = *(float*) um_data->u_data[0];
68616818

68626819
SEGMENT.fadeToBlackBy(32);
@@ -6891,11 +6848,7 @@ uint16_t mode_puddlepeak(void) { // Puddlepeak. By Andrew Tuline.
68916848
uint8_t fadeVal = map(SEGMENT.speed,0,255, 224, 254);
68926849
unsigned pos = random16(SEGLEN); // Set a random starting position.
68936850

6894-
um_data_t *um_data;
6895-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6896-
// add support for no audio
6897-
um_data = simulateSound(SEGMENT.soundSim);
6898-
}
6851+
um_data_t *um_data = getAudioData();
68996852
uint8_t samplePeak = *(uint8_t*)um_data->u_data[3];
69006853
uint8_t *maxVol = (uint8_t*)um_data->u_data[6];
69016854
uint8_t *binNum = (uint8_t*)um_data->u_data[7];
@@ -6936,11 +6889,7 @@ uint16_t mode_puddles(void) { // Puddles. By Andrew Tuline.
69366889

69376890
SEGMENT.fade_out(fadeVal);
69386891

6939-
um_data_t *um_data;
6940-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
6941-
// add support for no audio
6942-
um_data = simulateSound(SEGMENT.soundSim);
6943-
}
6892+
um_data_t *um_data = getAudioData();
69446893
int volumeRaw = *(int16_t*)um_data->u_data[1];
69456894

69466895
if (volumeRaw > 1) {
@@ -6998,11 +6947,7 @@ uint16_t mode_blurz(void) { // Blurz. By Andrew Tuline.
69986947
if (SEGLEN == 1) return mode_static();
69996948
// even with 1D effect we have to take logic for 2D segments for allocation as fill_solid() fills whole segment
70006949

7001-
um_data_t *um_data;
7002-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7003-
// add support for no audio
7004-
um_data = simulateSound(SEGMENT.soundSim);
7005-
}
6950+
um_data_t *um_data = getAudioData();
70066951
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
70076952

70086953
if (SEGENV.call == 0) {
@@ -7035,11 +6980,7 @@ uint16_t mode_DJLight(void) { // Written by ??? Adapted by Wil
70356980
// No need to prevent from executing on single led strips, only mid will be set (mid = 0)
70366981
const int mid = SEGLEN / 2;
70376982

7038-
um_data_t *um_data;
7039-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7040-
// add support for no audio
7041-
um_data = simulateSound(SEGMENT.soundSim);
7042-
}
6983+
um_data_t *um_data = getAudioData();
70436984
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
70446985

70456986
if (SEGENV.call == 0) {
@@ -7071,11 +7012,7 @@ uint16_t mode_freqmap(void) { // Map FFT_MajorPeak to SEGLEN.
70717012
// Start frequency = 60 Hz and log10(60) = 1.78
70727013
// End frequency = MAX_FREQUENCY in Hz and lo10(MAX_FREQUENCY) = MAX_FREQ_LOG10
70737014

7074-
um_data_t *um_data;
7075-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7076-
// add support for no audio
7077-
um_data = simulateSound(SEGMENT.soundSim);
7078-
}
7015+
um_data_t *um_data = getAudioData();
70797016
float FFT_MajorPeak = *(float*)um_data->u_data[4];
70807017
float my_magnitude = *(float*)um_data->u_data[5] / 4.0f;
70817018
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
@@ -7105,11 +7042,7 @@ static const char _data_FX_MODE_FREQMAP[] PROGMEM = "Freqmap@Fade rate,Starting
71057042
///////////////////////
71067043
uint16_t mode_freqmatrix(void) { // Freqmatrix. By Andreas Pleschung.
71077044
// No need to prevent from executing on single led strips, we simply change pixel 0 each time and avoid the shift
7108-
um_data_t *um_data;
7109-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7110-
// add support for no audio
7111-
um_data = simulateSound(SEGMENT.soundSim);
7112-
}
7045+
um_data_t *um_data = getAudioData();
71137046
float FFT_MajorPeak = *(float*)um_data->u_data[4];
71147047
float volumeSmth = *(float*)um_data->u_data[0];
71157048

@@ -7164,11 +7097,7 @@ static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Speed,Sound e
71647097
// SEGMENT.speed select faderate
71657098
// SEGMENT.intensity select colour index
71667099
uint16_t mode_freqpixels(void) { // Freqpixel. By Andrew Tuline.
7167-
um_data_t *um_data;
7168-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7169-
// add support for no audio
7170-
um_data = simulateSound(SEGMENT.soundSim);
7171-
}
7100+
um_data_t *um_data = getAudioData();
71727101
float FFT_MajorPeak = *(float*)um_data->u_data[4];
71737102
float my_magnitude = *(float*)um_data->u_data[5] / 16.0f;
71747103
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1.0f; // log10(0) is "forbidden" (throws exception)
@@ -7211,11 +7140,7 @@ static const char _data_FX_MODE_FREQPIXELS[] PROGMEM = "Freqpixels@Fade rate,Sta
72117140
// Depending on the music stream you have you might find it useful to change the frequency mapping.
72127141
uint16_t mode_freqwave(void) { // Freqwave. By Andreas Pleschung.
72137142
// As before, this effect can also work on single pixels, we just lose the shifting effect
7214-
um_data_t *um_data;
7215-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7216-
// add support for no audio
7217-
um_data = simulateSound(SEGMENT.soundSim);
7218-
}
7143+
um_data_t *um_data = getAudioData();
72197144
float FFT_MajorPeak = *(float*)um_data->u_data[4];
72207145
float volumeSmth = *(float*)um_data->u_data[0];
72217146

@@ -7270,11 +7195,7 @@ uint16_t mode_gravfreq(void) { // Gravfreq. By Andrew Tuline.
72707195
if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed
72717196
Gravity* gravcen = reinterpret_cast<Gravity*>(SEGENV.data);
72727197

7273-
um_data_t *um_data;
7274-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7275-
// add support for no audio
7276-
um_data = simulateSound(SEGMENT.soundSim);
7277-
}
7198+
um_data_t *um_data = getAudioData();
72787199
float FFT_MajorPeak = *(float*)um_data->u_data[4];
72797200
float volumeSmth = *(float*)um_data->u_data[0];
72807201
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
@@ -7317,11 +7238,7 @@ static const char _data_FX_MODE_GRAVFREQ[] PROGMEM = "Gravfreq@Rate of fall,Sens
73177238
// ** Noisemove //
73187239
//////////////////////
73197240
uint16_t mode_noisemove(void) { // Noisemove. By: Andrew Tuline
7320-
um_data_t *um_data;
7321-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7322-
// add support for no audio
7323-
um_data = simulateSound(SEGMENT.soundSim);
7324-
}
7241+
um_data_t *um_data = getAudioData();
73257242
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
73267243

73277244
int fadeoutDelay = (256 - SEGMENT.speed) / 96;
@@ -7344,11 +7261,7 @@ static const char _data_FX_MODE_NOISEMOVE[] PROGMEM = "Noisemove@Speed of perlin
73447261
// ** Rocktaves //
73457262
//////////////////////
73467263
uint16_t mode_rocktaves(void) { // Rocktaves. Same note from each octave is same colour. By: Andrew Tuline
7347-
um_data_t *um_data;
7348-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7349-
// add support for no audio
7350-
um_data = simulateSound(SEGMENT.soundSim);
7351-
}
7264+
um_data_t *um_data = getAudioData();
73527265
float FFT_MajorPeak = *(float*) um_data->u_data[4];
73537266
float my_magnitude = *(float*) um_data->u_data[5] / 16.0f;
73547267

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

7389-
um_data_t *um_data;
7390-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7391-
// add support for no audio
7392-
um_data = simulateSound(SEGMENT.soundSim);
7393-
}
7302+
um_data_t *um_data = getAudioData();
73947303
uint8_t samplePeak = *(uint8_t*)um_data->u_data[3];
73957304
float FFT_MajorPeak = *(float*) um_data->u_data[4];
73967305
uint8_t *maxVol = (uint8_t*)um_data->u_data[6];
@@ -7445,11 +7354,7 @@ uint16_t mode_2DGEQ(void) { // By Will Tatam. Code reduction by Ewoud Wijma.
74457354
if (!SEGENV.allocateData(cols*sizeof(uint16_t))) return mode_static(); //allocation failed
74467355
uint16_t *previousBarHeight = reinterpret_cast<uint16_t*>(SEGENV.data); //array of previous bar heights per frequency band
74477356

7448-
um_data_t *um_data;
7449-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7450-
// add support for no audio
7451-
um_data = simulateSound(SEGMENT.soundSim);
7452-
}
7357+
um_data_t *um_data = getAudioData();
74537358
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
74547359

74557360
if (SEGENV.call == 0) for (int i=0; i<cols; i++) previousBarHeight[i] = 0;
@@ -7508,11 +7413,7 @@ uint16_t mode_2DFunkyPlank(void) { // Written by ??? Adapted by Wil
75087413
bandInc = (NUMB_BANDS / cols);
75097414
}
75107415

7511-
um_data_t *um_data;
7512-
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
7513-
// add support for no audio
7514-
um_data = simulateSound(SEGMENT.soundSim);
7515-
}
7416+
um_data_t *um_data = getAudioData();
75167417
uint8_t *fftResult = (uint8_t*)um_data->u_data[2];
75177418

75187419
if (SEGENV.call == 0) {

0 commit comments

Comments
 (0)