Pages: [1]   Go Down
Author Topic: Music to vibration  (Read 910 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello,

I'm new to Arduino and I am currently trying to make a device that turns music from an mp3 player into vibrations (using small vibrating motors, about 5 of them, one for each frequency range), according to the different frequency ranges and their intensities (kinda like a spectrum analyzer, but with fewer frequency ranges). I've already connected an mp3 player to the arduino using the following circuit to get a ~2.5 V DC offset:
                        + 5V
                           |
                           <
                           > 10k
                           <
             220 uF     |
mp3-------) |---------------- Arduino A0
                           |
                           <
                           > 10k
                           <
                           |
                         Gnd

My questions are:
1. On the 0-1023 input range, the values go from around 490 to 530. Should I amplify the signal before feeding it to the arduino? If so, what circuit do you recommend?
2. How would I implement an FFT algorithm to get the intensity of each frequency range? I already tried elmchan's fft library but I can't get it to work.
3. I'm thinking about using PWM to control the vibration motors. Is this a good idea?

Thanks in advance!
Logged

Offline Offline
Edison Member
*
Karma: 5
Posts: 1730
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

If you are not against adding an ic, look into msgeq7
I haven't gotten to play with one, still shipping but it is basically a spectrum analyzer that outputs a multiplexed voltage for 7 channels of frequency
I think it would simplify your project to have an ic do all the hard work, you would just poll it for data and read that
like say use just 5  channels control 5 vibrator circuits directly, if pwm does work then map the analog 0/1023 to 0/255 for a simple solution
im planning on using it for a light orchestra sort of deal for a car, having leds go off in the sub for low frequencys, mid to mod range speaker and highs to my tweeter lights, I will probably map it to getbthe brightnesss according
here's the sparkfun page
 http://www.sparkfun.com/products/10024
They have it retired but I bought 5 brand new for 8.99 off ebay including shipping
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

That's a great ideia, hadn't thought of that. Just one more question: if i plug the msgeq7 output to arduino analog input, what kind of values would i be getting on the arduino and how would i use them to get the different frequency ranges?

Thanks for the reply!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I've found a site that explains pretty much everything ^^
http://skoba.no-ip.org/msgeq7/index.html

Thanks a lot for your reply, winner10920, it really helped me! smiley

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello!
I am working on a similar project. The link on the last reply is broken... does anyone have a cache or know of where that information can be found?
Thanks
Logged

Offline Offline
Edison Member
*
Karma: 5
Posts: 1730
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

if i helps here is some of my code from my projects, not commented perfectly but it should help you play around with it

* msqeq7_lcd_bargraph.pde (1.71 KB - downloaded 8 times.)
* msgeq73channel.ino (1.56 KB - downloaded 9 times.)
Logged

Manchester, NH
Offline Offline
Full Member
***
Karma: 0
Posts: 116
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

That link didn't work, but this (may be the same page) appears to work...
http://nuewire.com/info-archive/msgeq7-by-j-skoba/
Logged

Grand Rapids, MI, USA
Offline Offline
Sr. Member
****
Karma: 10
Posts: 282
Yes, I remember
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I suspect you may be going with the msgeq7, as it is a great fit for this application, but I hate to leave a good question unanswered. 

To get a good amount of resolution using the analog inputs on the Arduino you definitely want to amplify the signal. I did a project like this last year and I just used a fairly normal op amp.  I can look up the exact model if you want.  It was special in that it could run from one supply +5V instead  of +5 and -5V and drive close to either rail.  I think I amplified by about 10 to 20 times and I biased the center of the signal up to 2.5V.  If you don't do this you will get lots of distortion as half of the wave is below 0 on the ADC not to mention the op amp.

From there I would use the FHT library to do a 5 bin FFT and from there all you need to do is control the motors. 
Logged

Pages: [1]   Go Up
Jump to: