Skip to main content

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!

Comments

Popular posts from this blog

Blogs and RSS come to Microsoft.com

MS has just introduced their portal and it's pretty comprehensive. Nothing quite like learning that some people use AIM instead of MSN messenger, or that there really may be a need for supporting 4 monitors ( Cyrus Complains ) However, it's really a great sign that MS is serious about supporting the blogging community which seems to have um, exploded in size in the past year. Blogs and RSS come to Microsoft.com

Programmers vs. Developers vs. Architects

I received an email this morning from Brandon Savage 's newsletter. Brandon's a PHP guru (works at Mozilla) but his newsletter and books have some great overall perspectives for developers of all languages. However, this last one (What's the difference between developers and architects?) kind of rubs me the wrong way. Either that, or I've just missed the natural inflation of job descriptions. (maybe, it's like the change in terminology between Garbage man and Waste Engineer or Secretary and Office Administrator) So maybe it's just me - but I think there's still a big difference between Programmer, Developer and then of course, architect. The key thing here is that every role has a different perspective and every one of those perspectives has value. The original MSF create roles like Product Manager, Program Manager, Developer, Tester, etc - so every concept may pigeon hole people into different roles. But the statements Brandon makes are often distinction

FoxInCloud Stats

FoxInCloud sent this link a while back about their statistics regarding visits to their site: http://foxincloud.com/blog/2017/12/27/VFP-community-lessons-from-foxincloud-site.html What's interesting here is the breakdown of people. Yes, I think it's understandable that the Fox community is getting older. Another factor is the growth of the mobile and web environments taking over development. These environments really do push people towards the newer non-SQL or free SQL/hosted environments but more towards hosted storage options like Amazon and Google. A tool like FoxInCloud that helps MOVE existing applications to the cloud inherently competes with those environments. But FoxInCloud also allows developers to extend their application further by giving them a starting point using Javascript and the basic CSS (such as Bootstrap). If you're not rebuilding your application from scratch, it's certainly a great step forward. FoxPro VFP