Friday, December 31, 2004

Reading MP3/WMA Information in FoxPro

A recent post on a newsgroup was looking for a tool that would let them read MP3 tag information (artist, genre, etc). After doing some looking in the new VFP 9 "Fox Media Player" solution sample, it's simply a matter of working with the Windows Media Player COM component.

oPlayer = createobject("WMPlayer.OCX.7")
loItems = oPlayer.MediaCollection
loSong= loItems.add("c:\what time is it.mp3")
? loSong.duration
? loSong.getItemInfo("Artist")
? loSong.getItemInfo("Title")
? loSong.getItemInfo("Album")

Best of all, you can also set the information back again:

loSong.SetItemInfo("Artist","Kane Gang")

I used to rely on a variety of media tools to help catalog my music but using the WMPlayer OCX, I have placed them all into one big Fox table and from there, I update the tags, refresh my files all in a database format that I'm comfortable with.

The other benefit is that I know I'm changing the actual file instead of just some external database cache (like most players have). This makes my music collection work much better on my AudioTron or other Windows Media Center Extender devices.

There's a lot more to the WMPlayer control as well.

You can drop it onto a form and have your own player right in your application and then manage it programmatically.

CurrentPlaylist returns a collection of what's in the current playlist. There is no Add method here but instead AppendItem and InsertItem to place them at different locations in the player. These methods don't take strings to the music file though. They need to take song pointers.

loPlay= oPlayer.currentPlaylist
loSong = oPlayer.mediaCollection.add("music\what time is it.mp3")
loPlay.appendItem(loSong)

When controlling a song, you use the Controls property

oPlayer.Controls.Play && Play the song


FYI - the PlayState property tells you what's currently happening.

0 - Undefined
1 - Stopped
2 - Paused
3 - Playing
4 - ScanForward
5 - ScanReverse
6 - Buffering
7 - Waiting
8 - MediaEnded
9 - Transitioning
10 - Ready
11 - Reconnecting

Now you can manage your entire music library properly via VFP!

No comments: