@@ -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// ////////////////////
66516636uint16_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// /////////////////////
67766745uint16_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// /////////////////////
71067043uint16_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
71667099uint16_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.
72127141uint16_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// ////////////////////
73197240uint16_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// ////////////////////
73467263uint16_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=
73867299uint16_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