I'm working with a XNA game and I want my program to load music files from libary/music so I can play that music in the game. It would be great if the mediaplayer class could play a playlist of all the music in library/music.
Now, to your question:
To play an MP3, you need to pass an instance of a
MediaPlayer.Play. As I stated above, you usually get the instance of your song via the Content Pipeline, but I do see it has a FromUri method.
I have never used it before, and it may only work for the Silverlight framework on Windows Phone, but you can give it a try.If I had to guess, I would assume it would work like this. Keep in mind that the file will have to exist. If it doesn't you will get an error. If you are distributing this game, Use the Content Pipeline. It is much better.
Song song = Song.FromUri(new Uri("file:///C:/Users/Joe/Music/FinalCountdown.mp3")); MediaPlayer.Play(song);
I see there was a question on StackOverflow, and the answer looks like he is on a Windows PC. Maybe that will help get you there.
As a follow up on this other question you can load all the mp3s in a directory into a
Song list with:
var songs = Directory.EnumerateFiles(directory, "*.mp3") .Select(file => Song.FromUri(file, new Uri(file))) .ToList();
You can look in the Music folder by setting directory to the following:
string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
There's also a known bug where
Song.FromUri will throw an exception when trying to load a file that has spaces in its name. See this answer on stackoverflow for a workaround using reflection to call the internal constructor directly.