Go Down

Topic: * MP3 Shield * - Rogue Robotics rMP3 (Read 48553 times) previous topic - next topic

ransol

Arduino Duemilanove (Windows XP and 7) Arduino-0021, 18

@ransol: I'm guessing that you downloaded the SerialBase version somehow, which should work with 0018 - but if you get 0021 installed, then get the "Arduino with Stream Core", you'll be set.

When you have it all installed, select "(Stream) Arduino Duemilanove or Nano w/ ATmega328" from Tools->Board.

b

petyrstretz

Are there enough pins left over to run a display, or maybe an RTC so this could be used as an alarm clock?

@petyrstretz: Our LEDHead has an RTC on board.  I've built a clock/mp3 player using the LEDHead and an rMP3.

I have a video of the spectrum analyzer display - in there you can see the POV (Persistence Of Vision) clock I've been working on.

[media]http://www.youtube.com/watch?v=DH8HDMvpXpU&feature=player_embedded#![/media]

@ around 1:40, you can see that I display the current time position of the song.  Right now, as the clock sits on my desk, it's playing music, showing the spectrum analyzer and the current time:




b

mowcius

Quote
Are there enough pins left over to run a display, or maybe an RTC so this could be used as an alarm clock?

It only uses two pins (serial) for main control so there are plenty of left over pins for anything you want to add.  :)

petyrstretz

I guess I know what the Christmas present to myself is gonna be this year. ;D  Thanks!

ransol

Thanks bhagman,
My fault, I was selecting the wrong board.

(I also discovered the Arduino preferences file in the process. Now, I can get my Arduino 21 to open when I double click pde files)  

y0shiy0shi

bhagman and/or mowcius,

wondering if you can help me with some basic questions regarding the rMP3 unit before i purchase. I need to do two things using mp3 decoding with a new Arduino Uno processor:

1) From reading all the information on the website and on this forum, I know that there are digital triggers (on the arduino or rMP3 unit) to trigger tracks to play immediately. Can I trigger tracks to play at discrete positions immediately? Say, have a pushbutton tied to the arduino that when pressed, code sends a command to the rMP3 tell it to play track '/test.mp3' at 02:30:12.. or something like that.

2) I read in the beta documentation that there is now a new query command to have the rMP3 return the current running track position. I would like to have an LCD readout display this info, but do I really need to query the unit every second, or is there a mode I can set to have it send this info out to me. Also, more important than the LCD readout, I need to trigger digital outputs on the arduino at timed intervals. rather than track that time in my code (where it can get our of sync if something happens to the rMP3 playback), I would like to base this timing off of the actual data. Much like the daft punk lyrics demo I checked out, I simply need triggers based on track position. I don't understand exactly how the lyrics file works and how the triggers are being generated.

Any help is appreciated, I hope to order the shield tomorrow at some point. Thanks

@y0shiy0shi:

1) You could use the controller to trigger playback at specific positions in a track.  The controller would need to do something like this (pseudocode):

Code: [Select]
wait for trigger();
playfile(filename);
playpause();  // pause
jump(newtime);  // jump to new position (in seconds)
playpause();  // play


I can help you with specifics when you get down to it.

2) The lyrics example has the controller start a 1/100th second timer at the beginning of the song.  Then the controller can check that time for triggering other events.  Does that make sense?

e.g. (Pseudocode again)

Code: [Select]
playfile(filename);
starttimer();  // start 1/100th second timer (10s of milliseconds)
wait_until(timer == sometime);
do_something();
wait_until(timer == someothertime);
do_somethingelse();


Again, I can help you with detail on that.

b

y0shiy0shi

In your code, the timing is based off of a code driven timer on the arduino triggered at the same time you triggered the start of playback on the rMP3. I sort of need a more secure way of generating the triggers, preferably realtime based on the actual MP3 players track progress. Because I want to deploy this in a live event, I only want the triggers to be actuated on the actual timecode of the song. If something happened to the rMP3 that affected the playback, I dont want the triggers to go off. i guess it wouldn't be so bad to poll with the new beta command every second to get the actual timestamp, it just seems like a lot of communication

mowcius

Quote
it just seems like a lot of communication

Well it would be less communication than the spectrum visualiser!

I would not have thought there would be any issue there.

Mowcius

@y0shiy0shi: The issue is that you can't get any more accurate information from the decoded mp3 data.  The decoder only provides 1 second semi-accurate information.

If you want to get hyper-accurate, then you could directly map file positions from the mp3 file, then query the mp3 file position as it plays (FC I 4 is the low-level command, use the RogueSD command: RogueSDCommandObject.getfileinfo(4) - the MP3 file plays from file handle 4).

It's a bit overkill, IMO, though.  If you have some sort of playback issue, there are probably bigger problems afoot.

Using a timer on the controller is considerably easier and more accurate than you think.

FYI: I've been running 2 of our MP3 units (1 uMP3 and 1 rMP3) non-stop for more than 6 months (the uMP3 unit has been running non-stop for over 1 year!) without hiccups.  The uMP3 unit displays data (i.e. constant status queries) on an LCD (it's played well over 130000 songs back to back).  The rMP3 module is on the POV clock/player - and has been running for over 6 months non-stop (playing songs and displaying spectrum analyzer data).

b

y0shiy0shi

Thx for all the fast replies. Just to keep you updated, i have already placed my order and will definitely let you guys know how it turns out. I will play around with the accuracy of keeping time on the arduino. Insure it will be fine. Actually, now that I'm thinking of it, how many digital output triggers are available once the rmp3 uses it's required digital pins? I might need some sort of expansion bus of digital I/o's. Does this exist? I have an UNO. Thanks again.

mowcius

Well the rMP3 itself has 8 digital trigger inputs for playing songs.

The shield only uses 2 digital pins (6 and 7) for serial communication s0 on the Uno you would have a minimum of 16 digital pins (analog 0-5 included) which could be used as input/output.

Obviously as you say, some kind of multiplexer/port expander etc could be used to gain additional inputs/outputs if required.

Something like the centipede shield/mux shield etc might be what you are after.

Mowcius

LB01

Hi all,

I would like to use my rMP3 to read an MP3 stream from an internet radio.  The idea is that I will just have to power the arduino to listen to the radio instead of having to switch on my computer (lengthy + higher power consumption).

My problems are:
- can the rMP3 write on the SSD card while it is playing, and can it do that fast enough to use it as a buffer?
- How can I program a client for streaming? I can probably find some docs about MP3 streaming but that will probably take me ages to understand, so is there a code somewhere that I can re-use?

I am quite new to C++ so any help would be greatly appreciated!
For notice, I have an rMP3 shield, ethernet shield (w/o SSD card) and arduino duemilanove.

Go Up