Skip to content

Commit 84480f8

Browse files
author
Red Team
authored
Mirrored Visualizer
1 parent f6876fa commit 84480f8

File tree

1 file changed

+78
-8
lines changed

1 file changed

+78
-8
lines changed

music_visualizer_sparkfun_spectrum_shield.ino

Lines changed: 78 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <FastLED.h>
22

3-
// Arduino Music Visualizer 0.2
3+
// Arduino Music Visualizer 0.3
44

55
// This music visualizer works off of analog input from a 3.5mm headphone jack
66
// Just touch jumper wire from A0 to tip of 3.5mm headphone jack
@@ -12,7 +12,7 @@
1212

1313
// LED LIGHTING SETUP
1414
#define LED_PIN 6
15-
#define NUM_LEDS 250
15+
#define NUM_LEDS 100 // 250
1616
#define BRIGHTNESS 64
1717
#define LED_TYPE WS2811
1818
#define COLOR_ORDER GRB
@@ -32,6 +32,7 @@ int audio_input = 0;
3232
int freq = 0;
3333

3434
// STANDARD VISUALIZER VARIABLES
35+
int midway = NUM_LEDS / 2; // CENTER MARK FROM DOUBLE LEVEL VISUALIZER
3536
int loop_max = 0;
3637
int k = 255; // COLOR WHEEL POSITION
3738
int decay = 0; // HOW MANY MS BEFORE ONE LIGHT DECAY
@@ -92,7 +93,7 @@ CRGB Scroll(int pos) {
9293
// THE ORIGINAL FUNCTION WENT BACKWARDS
9394
// THE MODIFIED FUNCTION SENDS WAVES OUT FROM FIRST LED
9495
// https://github.com/NeverPlayLegit/Rainbow-Fader-FastLED/blob/master/rainbow.ino
95-
void rainbow()
96+
void singleRainbow()
9697
{
9798
for(int i = NUM_LEDS - 1; i >= 0; i--) {
9899
if (i < react)
@@ -103,6 +104,21 @@ void rainbow()
103104
FastLED.show();
104105
}
105106

107+
// FUNCTION TO MIRRORED VISUALIZER
108+
void doubleRainbow()
109+
{
110+
for(int i = NUM_LEDS - 1; i >= midway; i--) {
111+
if (i < react + midway) {
112+
leds[i] = Scroll((i * 256 / 50 + k) % 256);
113+
leds[(midway - i) + midway] = Scroll((i * 256 / 50 + k) % 256);
114+
}
115+
else
116+
leds[i] = CRGB(0, 0, 0);
117+
leds[midway - react] = CRGB(0, 0, 0);
118+
}
119+
FastLED.show();
120+
}
121+
106122
void readMSGEQ7()
107123
// Function to read 7 band equalizers
108124
{
@@ -118,11 +134,8 @@ void readMSGEQ7()
118134
}
119135
}
120136

121-
void loop()
137+
void convertSingle()
122138
{
123-
//int audio_input = analogRead(audio1); // ADD x2 HERE FOR MORE SENSITIVITY
124-
readMSGEQ7();
125-
126139
if (left[freq] > right[freq])
127140
audio_input = left[freq];
128141
else
@@ -139,8 +152,36 @@ void loop()
139152
Serial.print(" -> ");
140153
Serial.println(pre_react);
141154
}
155+
}
156+
157+
void convertDouble()
158+
{
159+
if (left[freq] > right[freq])
160+
audio_input = left[freq];
161+
else
162+
audio_input = right[freq];
163+
164+
if (audio_input > 80)
165+
{
166+
pre_react = ((long)midway * (long)audio_input) / 1023L; // TRANSLATE AUDIO LEVEL TO NUMBER OF LEDs
167+
168+
if (pre_react > react) // ONLY ADJUST LEVEL OF LED IF LEVEL HIGHER THAN CURRENT LEVEL
169+
react = pre_react;
142170

143-
rainbow(); // APPLY COLOR
171+
Serial.print(audio_input);
172+
Serial.print(" -> ");
173+
Serial.println(pre_react);
174+
}
175+
}
176+
177+
// FUNCTION TO VISUALIZE WITH A SINGLE LEVEL
178+
void singleLevel()
179+
{
180+
readMSGEQ7();
181+
182+
convertSingle();
183+
184+
singleRainbow(); // APPLY COLOR
144185

145186
k = k - wheel_speed; // SPEED OF COLOR WHEEL
146187
if (k < 0) // RESET COLOR WHEEL
@@ -154,5 +195,34 @@ void loop()
154195
if (react > 0)
155196
react--;
156197
}
198+
}
199+
200+
// FUNCTION TO VISUALIZE WITH MIRRORED LEVELS
201+
void doubleLevel()
202+
{
203+
readMSGEQ7();
204+
205+
convertDouble();
206+
207+
doubleRainbow();
208+
209+
k = k - wheel_speed; // SPEED OF COLOR WHEEL
210+
if (k < 0) // RESET COLOR WHEEL
211+
k = 255;
212+
213+
// REMOVE LEDs
214+
decay_check++;
215+
if (decay_check > decay)
216+
{
217+
decay_check = 0;
218+
if (react > 0)
219+
react--;
220+
}
221+
}
222+
223+
void loop()
224+
{
225+
//singleLevel();
226+
doubleLevel();
157227
//delay(1);
158228
}

0 commit comments

Comments
 (0)