Thursday, February 21st, 2008

CD Art Display

CD Art Display is a great program.  If you failed at the tutorial I posted on how to change your MSN picture to your currently playing album artwork, this program will do it all for you.  It also displays the current artwork and info for the currently playing track, finds artwork, lyrics, etc.  The display is skinnable, and can look amazing.  Head over and download this program.  I love it.

The lyric functionality doesn’t save the lyrics to iTunes directly (as far as I know).  So you can still use iTunes Lyric Downloader for that.  And if you want to fix your track information so it looks a bit better when you display it in CAD, try this.

(This also means I’m ending all my work on iTunes Displayer, since it’s crap compared to this program.)

Posted by admin | Filed in Music | Comment now »

 

Tuesday, February 19th, 2008

How to change your MSN Display Picture to iTunes’ Current Playing Album Art

Update: If you’d rather just download a program instead of writing your own to do this for you, take a look at CD Art Display.  It’s free to download, and will do even more than just show album art in your msn profile picture. 

This little howto is actually quite involved. I wasn’t quite sure what was possible with the new Live Messenger Addin capability, but as it turns out, it is quite difficult to bypass some of the barriers set up by the addin technology. If you are really intent on getting this set up, or are just curious about what I did to get it going, feel free to read on.

A note to those who aren’t interested in the programming side of this post: I’ll post the files you need to download throughout the howto, but these files are not really recommended for everyday use. The actual solution I’ve come to is a pretty odd workaround, though it does work, so feel free to give it a try if you’re brave. You’ll need to go through each step, but you can just download the files for #1 and #4.

What you’ll need:
-some knowledge of VB.Net and a visual studio version with vb.net
-itunes 7.x
-a bit of free time

Step 1: Set up Live Messenger to allow Addins

The new Live Messenger does have addin capabilities built in, but they are not enabled by default (they’re in beta I guess). To enable addins, you’ll have to edit your messenger registry entries. Go to Run, type “regedit” and hit enter. then browse to “HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger” and add a “DWORD” entry called “AddInFeatureEnabled” and change it’s value to 1. Now restart your Live Messenger and go to Options. There should be a tab called “Add-ins”. You’re Messenger is all set to go.

Step 2: Write your .dll file for the Addin

Open up visual studio and start a new Class Library. You’ll want to set up the project name right away, since your Class name has to be the same as the assembly name. Make sure your root namespace is empty. Add the MessengerClient.dll reference (browse to C:\Program Files\Windows Live\Messenger). Then you’ll want to go through and look at this code (download the .dll here):

Imports Microsoft.Messenger

Public Class MessengerAddin ‘<- *Important* this is your assembly name!!
Implements IMessengerAddIn
Public theMessenger As MessengerClient

Public Sub Initialize(ByVal messenger As Microsoft.Messenger.MessengerClient)

Implements Microsoft.Messenger.IMessengerAddIn.Initialize

Me.theMessenger = messenger
Me.theMessenger.AddInProperties.Creator = “SkyCapitan”
Me.theMessenger.AddInProperties.Description = “iTunes Art plugin!”
Me.theMessenger.AddInProperties.FriendlyName = “SkyCapitan’s Addin”
Me.theMessenger.AddInProperties.PersonalStatusMessage = TimeOfDay & ” - Sky’s not listening to music….”
Me.theMessenger.AddInProperties.Url = New Uri(”http://svankruistum.com”)

Dim systime As New System.Timers.Timer()
systime.Interval = 5000 ‘This will check our config file every 5 seconds to see if the track has changed
systime.Enabled = True
AddHandler systime.Elapsed, AddressOf OnTimedEvent

End Sub
Public Sub OnTimedEvent()

On Error Resume Next ‘in case the config file is not “0″ or an artist_ or album combination
Dim tempin As String
Dim jpeg As String
Dim oRead As System.IO.StreamReader
Dim oWrite As System.IO.StreamWriteroRead = New System.IO.StreamReader(”C:\art\config.txt”)
tempin = oRead.ReadLine

If tempin = “0″ Then

oRead.Close() ‘Nothing new we have to do

Else

jpeg = tempin
‘Change the picture
Me.theMessenger.AddInProperties.UserTile = System.Drawing.Image.FromFile(”C:\art\” & jpeg & “.jpg”)
oRead.Close()
‘Change the config file back to “0″
oWrite = New System.IO.StreamWriter(”C:\art\config.txt”)
oWrite.Write(”0″)
oWrite.Close()

End If

End Sub

End Class

A large part of this code is courtesy of a blog post at Nick’s .NET Travels, found here. His example sets up a few other Messenger Events that you might like to explore. There is a lot of opportunity for some interesting addins.
The addin should be operational at this point, but another problem lies with MSN’s strict sandbox for addins…

Step 3: Set up your MessengerAddin.dll to allow the System reference

The code above needs to access the system namespace for a few reasons: get the art file, check the config file, and use the system timer. Due to the sandbox restrictions in place by MSN Messenger, we need to register the addin on our system.

To do this, first you must sign your file. This is done under Project Properties -> signing. Sign the addin and add a password of your choice.

Next, you’ll need to save and build the class library. Then browse to the location of the built .dll file. Now you need to drag and drop the file into your C:\WINDOWS\assembly folder.

Open up MSN, and try enabling your addin. Everything should work (though you don’t have the artwork and the appropriate config file yet).

Step 4: Create a program to save your artwork and config file

After creating a few past itunes programs, I just had to edit a few lines in my itunes displayer program. If you don’t want to create your own program, here is an adjusted version of itunes_displayer for you to run. This isn’t really ideal, since a popup jumps up every track change, etc. here’s some code (it’s vb6, not vb.net) that might help you to set it up:

‘Declarations
‘Allows us to communicate with the running iTunes application
Dim WithEvents iTunes As iTunesApp
Dim Track As iTunesLib.IITTrack

‘iTunes play event
Private Sub iTunes_OnPlayerPlayEvent(ByVal iTrack As Variant)

‘Find the current track
Set Track = iTunes.CurrentTrack

Dim Art1 As iTunesLib.IITArtworkCollection
Dim Art2 As iTunesLib.IITArtwork
Set Art1 = Track.Artwork

If Art1.Count > 0 Then

Set Art2 = Art1.Item(1)
Art2.SaveArtworkToFile (”C:\art\” & Track.Artist & ” - ” & Track.Album & “.jpg”)
Open “C:\art\config.txt” For Output As #5
Print #5, Track.Artist & ” - ” & Track.Album
Close #5

End If

End Sub

Either way, you’ll need the artwork and the config file one way or another.

Now all you need to do is run the itunes_displayer program (or your own alternative), and then enable the addin! Hope it works out for you!

A few notes:

-Your messenger picture does not change in real time for everyone. When you have an active conversation open, the person might see your picture change. If not, it won’t always be apparent to others that your picture is changing.
-I had to make all the files and such because despite the signed dll and assembly folder move, the sandbox still doesnt let me open an itunes reference from within the addin. If anyone knows a more efficient way to do this, i’d love to hear it!!

Posted by admin | Filed in Music, Programming | Comment now »

 

Tuesday, February 19th, 2008

How to change your MSN Display Picture to iTunes’ Current Playing Album Art

Update: If you’d rather just download a program instead of writing your own to do this for you, take a look at CD Art Display.  It’s free to download, and will do even more than just show album art in your msn profile picture. 

This little howto is actually quite involved. I wasn’t quite sure what was possible with the new Live Messenger Addin capability, but as it turns out, it is quite difficult to bypass some of the barriers set up by the addin technology. If you are really intent on getting this set up, or are just curious about what I did to get it going, feel free to read on.

A note to those who aren’t interested in the programming side of this post: I’ll post the files you need to download throughout the howto, but these files are not really recommended for everyday use. The actual solution I’ve come to is a pretty odd workaround, though it does work, so feel free to give it a try if you’re brave. You’ll need to go through each step, but you can just download the files for #1 and #4.

What you’ll need:
-some knowledge of VB.Net and a visual studio version with vb.net
-itunes 7.x
-a bit of free time

Step 1: Set up Live Messenger to allow Addins

The new Live Messenger does have addin capabilities built in, but they are not enabled by default (they’re in beta I guess). To enable addins, you’ll have to edit your messenger registry entries. Go to Run, type “regedit” and hit enter. then browse to “HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger” and add a “DWORD” entry called “AddInFeatureEnabled” and change it’s value to 1. Now restart your Live Messenger and go to Options. There should be a tab called “Add-ins”. You’re Messenger is all set to go.

Step 2: Write your .dll file for the Addin

Open up visual studio and start a new Class Library. You’ll want to set up the project name right away, since your Class name has to be the same as the assembly name. Make sure your root namespace is empty. Add the MessengerClient.dll reference (browse to C:\Program Files\Windows Live\Messenger). Then you’ll want to go through and look at this code (download the .dll here):

Imports Microsoft.Messenger

Public Class MessengerAddin ‘<- *Important* this is your assembly name!!
Implements IMessengerAddIn
Public theMessenger As MessengerClient

Public Sub Initialize(ByVal messenger As Microsoft.Messenger.MessengerClient)

Implements Microsoft.Messenger.IMessengerAddIn.Initialize

Me.theMessenger = messenger
Me.theMessenger.AddInProperties.Creator = “SkyCapitan”
Me.theMessenger.AddInProperties.Description = “iTunes Art plugin!”
Me.theMessenger.AddInProperties.FriendlyName = “SkyCapitan’s Addin”
Me.theMessenger.AddInProperties.PersonalStatusMessage = TimeOfDay & ” - Sky’s not listening to music….”
Me.theMessenger.AddInProperties.Url = New Uri(”http://svankruistum.com”)

Dim systime As New System.Timers.Timer()
systime.Interval = 5000 ‘This will check our config file every 5 seconds to see if the track has changed
systime.Enabled = True
AddHandler systime.Elapsed, AddressOf OnTimedEvent

End Sub
Public Sub OnTimedEvent()

On Error Resume Next ‘in case the config file is not “0″ or an artist_ or album combination
Dim tempin As String
Dim jpeg As String
Dim oRead As System.IO.StreamReader
Dim oWrite As System.IO.StreamWriteroRead = New System.IO.StreamReader(”C:\art\config.txt”)
tempin = oRead.ReadLine

If tempin = “0″ Then

oRead.Close() ‘Nothing new we have to do

Else

jpeg = tempin
‘Change the picture
Me.theMessenger.AddInProperties.UserTile = System.Drawing.Image.FromFile(”C:\art\” & jpeg & “.jpg”)
oRead.Close()
‘Change the config file back to “0″
oWrite = New System.IO.StreamWriter(”C:\art\config.txt”)
oWrite.Write(”0″)
oWrite.Close()

End If

End Sub

End Class

A large part of this code is courtesy of a blog post at Nick’s .NET Travels, found here. His example sets up a few other Messenger Events that you might like to explore. There is a lot of opportunity for some interesting addins.
The addin should be operational at this point, but another problem lies with MSN’s strict sandbox for addins…

Step 3: Set up your MessengerAddin.dll to allow the System reference

The code above needs to access the system namespace for a few reasons: get the art file, check the config file, and use the system timer. Due to the sandbox restrictions in place by MSN Messenger, we need to register the addin on our system.

To do this, first you must sign your file. This is done under Project Properties -> signing. Sign the addin and add a password of your choice.

Next, you’ll need to save and build the class library. Then browse to the location of the built .dll file. Now you need to drag and drop the file into your C:\WINDOWS\assembly folder.

Open up MSN, and try enabling your addin. Everything should work (though you don’t have the artwork and the appropriate config file yet).

Step 4: Create a program to save your artwork and config file

After creating a few past itunes programs, I just had to edit a few lines in my itunes displayer program. If you don’t want to create your own program, here is an adjusted version of itunes_displayer for you to run. This isn’t really ideal, since a popup jumps up every track change, etc. here’s some code (it’s vb6, not vb.net) that might help you to set it up:

‘Declarations
‘Allows us to communicate with the running iTunes application
Dim WithEvents iTunes As iTunesApp
Dim Track As iTunesLib.IITTrack

‘iTunes play event
Private Sub iTunes_OnPlayerPlayEvent(ByVal iTrack As Variant)

‘Find the current track
Set Track = iTunes.CurrentTrack

Dim Art1 As iTunesLib.IITArtworkCollection
Dim Art2 As iTunesLib.IITArtwork
Set Art1 = Track.Artwork

If Art1.Count > 0 Then

Set Art2 = Art1.Item(1)
Art2.SaveArtworkToFile (”C:\art\” & Track.Artist & ” - ” & Track.Album & “.jpg”)
Open “C:\art\config.txt” For Output As #5
Print #5, Track.Artist & ” - ” & Track.Album
Close #5

End If

End Sub

Either way, you’ll need the artwork and the config file one way or another.

Now all you need to do is run the itunes_displayer program (or your own alternative), and then enable the addin! Hope it works out for you!

A few notes:

-Your messenger picture does not change in real time for everyone. When you have an active conversation open, the person might see your picture change. If not, it won’t always be apparent to others that your picture is changing.
-I had to make all the files and such because despite the signed dll and assembly folder move, the sandbox still doesnt let me open an itunes reference from within the addin. If anyone knows a more efficient way to do this, i’d love to hear it!!

Posted by admin | Filed in Music, Programming | 4 Comments »

 

Tuesday, January 29th, 2008

iTunes Album Art Feature

So I decided to finally cave in and sign up for an iTunes account, if only to enable the album art search feature. The first thing I noticed about the iTunes album art was that the art was all relatively good quality. All the images I would have found using an amazon search program, or similar sorts of applications were about half the size and quality of art from the iTunes search feature. So, I decided to erase all my album art for my collection and start fresh with the iTunes cover art search. Originally, I wrote another VB app that deletes the artwork for an entire playlist (just a quick modification to my lyrics search app). But there is a faster way:

1. Select all the songs for which you’d like to delete the album art.

2. Press Ctrl+I (or right click and show info)

3. Select the checkbox next to the blank artwork and press ok. The artwork for these tracks will be deleted.

If you already have iTunes art for most of your songs and would like to just delete the non-iTunes artwork, try this application. I modified it to just delete non-iTunes artwork.

Posted by admin | Filed in Programming | Comment now »