Beruflich Dokumente
Kultur Dokumente
Create
Contests
Community
let's make
Login | Sign Up
8 Steps
Collection
Beat Sync is a single frequency audio spectrum volume meter. It can isolate
around a certain frequency ( I choose the bass ) and display it on a creative 8
segment LED bar graph. This is meant to be quite simple, yet allowing room for
more difficult upgrades. It is built around the Arduino Open Source Environment.
The circuitry is also quite simple.
So if you want to show off at your next house party or just make something cool to
add some visualization to music, lets go!
I Made it!
Favorite
Share
15,642 views
43 favorites
akcarl
Follow
15
More by akcarl
Tags: led
electric
music
audio
arduino
circuit
converted by Web2PDFConvert.com
Related
How to Make LEDs Flash
to Music with an Arduino
by Hyrulian
How to Make an LED
Ambient Mood Light: A
Beginner Tutorial
by elevenbytes
This Is Your Brain On
Music
by terranlune
Bass Responsive RGB
Leds using Arduino
by Bforcer
See More
Basic
- Arduino UNO (or similar)
- 8 Super Bright LEDs
- 8 Resistors
- Wire/Ribbon Cable
- 3.5 mm Female Connector
- Soldiering Equipment
- Poster Board
- X-acto Knife
- Audio Equipment
- Mini Breadboard
- Mini Blank Circuit Board
- Heat Shrink
converted by Web2PDFConvert.com
Additional
- 10 k Potentiometer
- Potentiometer Knob
- Colored PVC/Arcylic Film
- Diffuser
converted by Web2PDFConvert.com
The enclose is pretty much a shelf. It can be made out of wood, plastic, or
poster/cardboard. Then you can choose to glue the pieces together, make them
interlocking or nail/staple gun them. In the spirit of recycling and reusing, I have
found an interlocking cardboard design works well.
The dimensions are kind of up to your likes, whether you like squares or
rectangles. This design gives more rectangular segments but you can draw it out
before hand to see what it could look like.
1 - 8" * 24" (back)
2 - 4" * 24" (sides)
8 - 4" * 8" (dividers)
I left the one side uncut and had to ducktape the other(because I accidentally cut
it). It folds into nice 90 degree edges that way.
NOTE - The dividers have edges that extend past the 8" width to meet flush with the
sides. The sides also have notches cut into them. You should be able to figure out
a spacing that makes sense.
A laser cutter would work much better than blades or saws.
converted by Web2PDFConvert.com
The circuit is fairly simple although spread out when all said and done. The 8
LED's anode legs are connected to the Arduino's digital output pins(5-12) and the
grounds are joined together. -- Based on all rational electrical knowledge you
should put in current limiting resistors between each anode and the Arduino, but
because the LEDs are powered for such a short time, I believe it is simpler
without them. -The 3.5mm female audio connector's ground should be joined with the LED's
common ground and then to the Arduino. -- The ground on the audio connector
should be the furthest from the outside. -The Right or Left channel of the audio connector will be attached to one of the
Arduino's analog input pins.
Now for the code...
The breadboard and schematic view were done in Fritzing!
converted by Web2PDFConvert.com
The code relies on a Fast Fourier Transform Library, which can be found here.
The FFT, in short breaks down the audio signal into 14 frequency bands and from
that this project continues with the lowest. The bass... Then some if-else
statements to light up specific LEDs.
Here is the code as in Arduino 1.0.1
//
//
//
//
//
//
//
Beat Sync
A music visualiztion device.
Created by
Carl Smith
penguinmagic@hotmail.com
#include <fix_fft.h>
int led[] = {5,6,7,8,9,10,11,12};
int x = 0;
char im[128], data[128];
char data_avgs[14];
int i=0,val;
#define AUDIOPIN 3
void setup()
{
for (int i = 0; i <8; i++)
{
pinMode(led[i], OUTPUT);
}
Serial.begin(9600);
}
void loop()
converted by Web2PDFConvert.com
{
for (i=0; i < 128; i++){
val = analogRead(AUDIOPIN);
data[i] = val;
im[i] = 0;
};
fix_fft(data,im,7,0);
for (i=0; i< 64;i++){
data[i] = sqrt(data[i] * data[i] + im[i] * im[i]); // this gets the absolute value of the
values in the
//array, so we're only dealing with positive numbers
};
// remap
converted by Web2PDFConvert.com
}
for (int i = 5; i <8; i++)
{
digitalWrite(led[i], LOW);
}
}
else if (input > 4)
{
for (int i = 0; i <4; i++)
{
digitalWrite(led[i], HIGH);
}
for (int i = 4; i <8; i++)
{
digitalWrite(led[i], LOW);
}
}
else if (input > 3)
{
for (int i = 0; i <3; i++)
{
digitalWrite(led[i], HIGH);
}
for (int i = 3; i <8; i++)
{
digitalWrite(led[i], LOW);
}
}
else if (input > 2)
{
for (int i = 0; i <2; i++)
{
digitalWrite(led[i], HIGH);
}
for (int i = 2; i <8; i++)
{
digitalWrite(led[i], LOW);
}
}
else if (input > 1)
{
for (int i = 0; i <1; i++)
{
digitalWrite(led[i], HIGH);
}
for (int i = 1; i <8; i++)
{
digitalWrite(led[i], LOW);
}
}
else
{
for (int i = 0; i <8; i++)
{
digitalWrite(led[i], LOW);
}
}
}
First is to measure out the distance of the height and divide it by 9. That will be the
LED spacing and I use a safety pin to poke holes in the card board for the LEDs to
poke through.
Then bend the legs of the LEDs. MAKE SURE TO HAVE ANODES AND
CATHODES ON SAME SIDE
After making this design a few times, I have found a ribbon cable makes it easier to
keep track of pins between the different elements (refer to previous step in
circuity). I also used heat shrink to connect the wires and LEDs. The anodes all
used different wires on the ribbon cable and the ground (cathode) used a common
wire.
For simplicity I cut a mini circuit board to soldier the wire and headers into
because the ribbon cable is too fragile for the bread board.
converted by Web2PDFConvert.com
Load it all up and see if it works! Then add a base and insert the dividers. I have a
3.5 mm audio splitter plugged into the female audio connecter of the Beat Sync.
The audio source (computer or iPod) and the speakers are plugged into the female
end of the splitter. Also through a diffuser on the front to make it look better, a few
layers of wax paper works quite well.
converted by Web2PDFConvert.com
Step 7: Party On
Step 8: Extras
After you get the basic version working you can add a few extras to make it even
better.
1. An potentiometer can be added to and the values can be remapped (using map
func.) and the value can be the the high end of volume analyzed in this line of
code. (It would be an integer value in place of the 30)
// remap values
2. You may realize that there is some feed back in which ever channel is being
used from the audio sensing and the volume will be lower in the channel too. You
could use an op-amp to create a voltage follower.
3. Upgrade the diffuser to add some color. I have added some color to simulate the
max volume with yellow, orange and red. A fluorescent light cover (the industrial
type found in schools that are 4' long) have a diamond like pattern that looks good
too.
converted by Web2PDFConvert.com
I Made it!
Add Images
wannagomoon
Make Comment
4 months ago
Reply
can i ask you about the audio part? I don't really understand about audio
input/output. How can I input music signal to arduino? Do I must have
audio splitter? And I don't know about connecting between ipod and
3.5mm audio jack.
Ghild.Zero
2 years ago
Reply
10 months ago
Reply
2 years ago
Reply
wahahahaha
Ghild.Zero
Ghild.Zero
Ghild.Zero
BobThAK Ghild.Zero
1 year ago
Reply
1 year ago
Reply
akcarl (author)
BobThAK
I have only been able to use the Arduino_22 verison with the fix_fft
library. Hope that helps!
converted by Web2PDFConvert.com
humacao
1 year ago
Reply
having trouble with fix_fft.h header file. how is it included in the library?
How do I create an ".h" file?
abhijeet de
2 years ago
Reply
2 years ago
Reply
sable.07
what if I wanna change the channel, instead of using the bass frecuency,
what line of the code should I change?, It's a great project btw.
akcarl (author)
sable.07
2 years ago
Reply
sable.07
akcarl
2 years ago
Reply
akcarl (author)
sable.07
2 years ago
Reply
You really need an amplifier circuit for the mircophone, i've been
working on a code and a circuit to make it possible. This is one
option i've been trying https://www.sparkfun.com/products/9964?
please vote for this project on the LED contest! and rate it! :)
mintzrya
2 years ago
Reply
Nice project, I did a similar thing using a band-pass filter instead of a FFT
(hardware instead of software)
Just a tip for the code, you should be able to write:
void ledArray (int input) {
for (int i = 0; i < input; i++)
{
digitalWrite(led[i], HIGH);
}
for (int i = input; i <8; i++)
{
digitalWrite(led[i], LOW);
}
}
and save yourself some if statements!
akcarl (author)
mintzrya
2 years ago
Reply
converted by Web2PDFConvert.com
About Us
Find Us
Facebook
Who We Are
Advertise
Contact
Jobs
Help
Youtube
Twitter
Pinterest
Google+
Resources
Mobile
For Teachers
Artists in Residence
Gift Pro Account
Forums
Answers
Sitemap
Go Pro Today
We're Hiring!
Android
iOS
Windows
Tumblr
enter email
Join!
English
Terms of Service | Privacy Statement | Legal Notices & Trademarks | Mobile Site
converted by Web2PDFConvert.com