iTunes Library Manager



Show first post
This topic has been closed for further comments. You can use the search bar to find a similar topic, or create a new one by clicking Create Topic at the top of the page.

112 replies

ucdscott,

Import will fail if there are more than a combined 40000 tracks in your playlists.
Badge
Hello,

I'm using iTLM to import playlists from iTunes to Sonos. Unfortunately, iTLM no longer finds the new playlists that I have created in iTunes.

I've verified that iTLM is source library config is correct. What else can I try short of uninstall and reinstall?

Thanks,
Scott
Userlevel 2
Hi everybody,
Hi Daren,

Thanks for your software, it seems to be well created ! It works allmost perfect for me. When I Actualise my sonos library, I get all my playlists...empty !

For information, if I just copy paste the Itunes Library.xml, I get my playlists with mp3, but none is working (Wrong adress)--> Normal

So does anybody have the same problem?

Thx

elinono
Userlevel 3
Badge +7
Controlav

Last night I improved the integration of the Sonos indexer code into my app. I am calling RefreshShareIndex.

It works reliably but only once without stopping and starting the application. It basically discovers the Zones, kicks of the indexer and then disconnects from the Zones. Re-running the same code without restarting the app and the Zones are not discovered. My app is designed to stay running all the time but I dont want it to be permanently connected to Sonos all the time it is running. I just want it to connect and disconnect as and when required. I hope I can resolve this issue so I can include the indexer in my next release.

Thanks

Darren
Userlevel 7
Badge +23
Yes, the dtc manages to kick off a re-index, so it should be possible for you to do it also.

On the ContentDirectory UPnP service call RefreshShareIndex.
Userlevel 3
Badge +7
Buzz,

Here's a quote:
The matched tracks don't disappear if you turn off or unsubscribe from Match, as they're just plain m4a files.

From the following page:
http://forums.macrumors.com/showthread.php?t=1246300

Basically you can upgrade the quality of existing tracks by only paying for a single years subscription. This is going to be very useful for my wife's dad who has many scratched CD's that have ripped with poor quality as a result of lots of scratches.

Darren
DarrenLink,

I'm not an iTunes or cloud user.

If one later terminates the cloud service, does one retain rights to the updated tracks?
Userlevel 3
Badge +7
Hi everyone,

I have been having lots of fun with iTunes match over the last week or so. The service matched 11000 tracks out of my 12000 and I am now using the service to replace my iPod 128/192kbps MP3's with the iTunes store equivalents (256kbps AAC[.m4a files]). This can be done without any additional charges on top of the years subscription (£22). I've already downloaded a very high percentage of my matched tracks and have been storing these in a new share on my nas called music_icloud. For tracks that I have not purchased on CD (i.e. online purchases), I will be copying these to my Sonos share (in the same folder structure) and replacing the MP3's. I have kept my original iPod share unchanged so if I find any bad or poorly matched AAC files I can revert just those specific songs to the original MP3's. Any tracks that I have purchased on CD will remain on my Sonos share in Apple Lossless format (cd rips), without being replaced by the iTunes store files.

My workflow may change a great deal now that I am using iTunes match and iCloud. I am hoping new Cd's can simply be imported as Apple Lossless and then matched to the iTunes store. Once matched I believe I'll be able to move the Apple Lossless files to my Sonos share and then simply download the iTunes store 256kbps AAC files. I am adding tracks to my iPad 3 and my wife's new iPod touch via the cloud. No more syncing via iTunes and the cable. It's slow for bulk loading but its a lot nicer for picking out tracks. It's very convenient being able to play/download any tracks from the iTunes match library wherever you have a wifi connection. If you simply play an album directly from the "iTunes match cloud" the tracks are played and downloaded simultaneously. With a good wifi connection this works without the listener realising the tracks are coming from the cloud, and once played once they are on the device, for offline listening.

I may need to provide an update to my application to support matched tracks in iTunes. Matched tracks show up as "Matched AAC" files in the kind column in iTunes. If this format is stored as the kind in the iTunes XML file I will need to add this format as a recognised source file format in my application.

Once I have got my new workflow process in order I plan to produce a PDF guide (from a word doc) showing how to set up Sonos in conjunction with iTunes, iTunes match and my application. I plan to describe every single step from initial setup to ripping and matching etc. Hopefully I can post this guide in conjunction with an update to my app. I have a holiday coming up very soon so this work may have to wait until I return.

So far I'd highly recommend using iTunes match. After my first years subscription I may cancel as I will have upgraded my entire library to the iTunes store files by that point and would only need the service for getting access to tracks in my "cloud library" when away from home. A big advantage of staying subscribed is that it provides another backup of all of my music (at least in iTunes store quality). Technically I would only really need to backup my Apple Lossless files, but for completeness I would backup the iTunes store files, to avoid re-downloading them using my slow/capped broadband connection.

I hope this is an interesting update for any existing or potential new users of my application

Cheers

Darren
I think I should be able to kick off the Sonos indexer without the need for the desktop controller to be open.

Yes, the dtc manages to kick off a re-index, so it should be possible for you to do it also.

It isn't covered in Sonos' only published api.

Mark Henkelis may have some insight. You could ping his thread at:
http://forums.sonos.com/showthread.php?t=14242


It's possible to programatically send keyboard shortcuts to an application but the Sonos desktop controller would need to be opened and made the active window in order to work.

Since the new 3.7 controller is rather slow to load I have added it into the registry so that it is an autostarted task.
Userlevel 3
Badge +7
Many thanks Rephlex and gsa999 for your positive feedback. I'm sure you have both left positive feedback previously? It's nice to give something back to the Sonos community and to know that it's still being used.

gsa999:
I am aware that videos arent handled by my application but as they are automatically ignored by Sonos anyway I didn't bother to fix it. I agree that it would be nice for the videos to be skipped and not processed at all. If you have a lot of videos it must be annoying to see all of them in the non transformed tracks list. I don't have any videos in my library so it's an issue I always forget about.

BarryM:
Thanks for your keyboard shortcut idea. It's an avenue I had not even considered. It's possible to programatically send keyboard shortcuts to an application but the Sonos desktop controller would need to be opened and made the active window in order to work. I think I should be able to kick off the Sonos indexer without the need for the desktop controller to be open.

Cheers

Darren
Userlevel 2
Badge +2
Hi Darren
I use the iTunes Library Manager virtually every day. Its brilliant.
Would be nice to exclude Videos that exist in the Itunes library though as these always come up as exceptions
I have asked them if anyone has any contacts at Sonos that could provide a sample C# .Net solution for kicking off the Sonos indexer reliably.

Trigger the keyboard shortcuts?
Alt M
M
Enter

Maybe your Dad could just use the above shortcuts? ... Although if he hits Ctrl M he mutes the zone, and you get a support call I suppose :)

Barry (who handles his 86 year old Mum's PC support)
Badge
I for one am still using it simply to copy the Library to my NAS. A great little application and I'm very grateful for it.
Userlevel 3
Badge +7
I had a quick chat with www.simplysonos.co.uk over lunch today about buying two Play 3's as a retirement present for my dad. I have asked them if anyone has any contacts at Sonos that could provide a sample C# .Net solution for kicking off the Sonos indexer reliably. I hope they are able to come back with something. I'll then be able to incorporate it in a new release. It's a much needed missing piece to my app. I will make it an optional feature of course. It'll probably be disabled by default but easy to turn on.

I have rather neglected this thread since last summer and haven't made any changes to the application since the last release.

I must work out how to do a poll to get an idea of how many people may be using my application. I have absolutely no idea and would love to know !!! There have been over 20,000 views of this thread but I may have scared a lot of people off giving it a go with all of the geek talk. I should create a simple "best practice / step by step" guide for how to use it. For anyone living near Ashford, Kent, UK I could provide some help with library set up and hands on training.

Fingers crossed for the technical help from SimplySonos.

Darren
Userlevel 3
Badge +7
Hi Durwin,

I am very pleased to hear that my app is working well for you.

The iTunes .itl or .itdb files are the main database files for iTunes. The XML file is updated/derived from the main database files each time iTunes is closed. If you create a new empty iTunes library it is possible to import an XML file to recover the full library but the import takes a while for a large library. I recommend that you back up all of the files.

From my mp3 iTunes XML file I can generate my lossless version (pointing to my apple lossless files) using my app and then import that file into a new iTunes empty library to create the equivalent lossless version of my library. This won't work for Flac files however as iTunes cannot import or play them.

Having multiple libraries can be handy but switching libraries could be easier. You may consider creating separate Windows user accounts for yourself and your wife. Each user profile will have their own iTunes library files under My Music and you will not need to worry about switching iTunes libraries as you start iTunes.

If you are interested in learning C# I could send you my Class that reads in the XML file, manipulates it and re-saves it. As iTunes ignores the XML files upon startup you will need to re-import a modified XML file into a blank iTunes library to see your modifications.

One feature of my app that I haven't really talked about is the ability to create a new XML file with stripped out track user data such as play counts and ratings. You may wish to create an XML file with this information stripped out before importing your library into a new blank iTunes library for your wife.

Thanks for your feedback.

Darren
Userlevel 2
Badge
Thanks for the reply Darren, sorry I only just thought of checking this forum now! I decided in the end that I wanted to re-rip my library as it had developed over several years and I'd changed MP3 encoders, bit-rates, formatting of ID tags etc - this gives me a good excuse to start again! I decided to keep the existing files as they were, and created new \Music\HQ and \Music\LQ folders. I'm putting the newly-ripped FLACs into the HQ folder and new MP3s into the LQ folder, then deleting the originals wherever they may be. The new HQ stuff goes to my Sonos-indexed share on the NAS, along with all the older versions; the LQ just goes to a another share for backups (and into my iTunes library).

As time goes on it all gets neater and neater in the Sonos music library, its all good fun! Eventually I'll be left with some folders in my older structure, and will have to work out where they came from and what to do with them! I set up the transform rules (convert MP3 to FLAC, else leave as MP3) and they work fine now over the whole music folder, so that's great, plus of course I get to select which playlists to bring across to avoid hitting the maximum. It all works great!

I never looked at the "Add New iTunes Library" option till, now, so that makes sense rather than re-code for my suggestion - thing is, I haven't looked at multiple iTunes libraries before but I think that may be useful. I manage my wife's iPod along with my iPod & iPhone, all from one library at the moment. My whole system is based on song ratings, only 3+ gets on my iPhone due to space limits, 2+ on my iPod. My wife just has her music in one playlist, not all of it stuff I would like and I'm always worried she will start rating her songs, causing me problems with my iPhone sync!! Plus I have other playlists for songs not listened to for a while, but of course, her stuff wouldn't show in that because she listens to them! I presume multiple libraries would sort this out, but I'm so nervous to mess around with it in case it all goes wrong - I guess I have backups of the whole iTunes folder so I could try it out...

Is the "iTunes Music Library.xml" the sole source for iTunes, would just that file alone let me recover from an iTunes screwup? I don't know what the .itl or .itdb files do...

Just rambling now, I'm inspired to learn how to code a VB program to read the XML file and give me a more accurate rating of my albums, its annoying that iTunes doesn't properly sort my albums by rating - e.g. it just lumps all the 4* albums by album name I think - you can see in the XML the album rating is either 20/40/60/80/100. I used to program a long time ago, done a little VB recently so I should be able to manage it...

Thanks again,
-Durwin
Userlevel 3
Badge +7
Durwin,

Many thanks for providing feedback for my application. Below are my responses

just wanted to say I've come across your program for the first time, as I've hit the limit of 40,000 tracks in iTunes Playlists on the Sonos system (lots of nested Playlist folders and I don't want to restructure them!) A quick Google search and I was led here... I've successfully used your application to cherry-pick the playlists I want and that is working great, so thanks, you solved my problem!

That's great news. I'm glad this part of the application solved your playlists problem. Nested playlists (i.e. playlists in folders) really eat into the Sonos memory, especially if Smart Playlists are used. I like having the flexibility so that only my favorite/most used playlists are imported into my Sonos system. I have a lot of unused playlists in my iTunes library that I really should delete but don't want to as I spent ages creating them all!!!


I tried to play around a bit with the transformation rules, specifically I put in transforms just for one sub folder, as I wanted to test. I ended up getting nothing in my playlists except tracks listed in my transformation, so looks like its all or nothing?!


You are correct. The application is designed to transform all paths in your iTunes library that are not indexed by Sonos to paths that are indexed by Sonos. In my setup my last rule is a catch all rule that transforms MP3's in Z:\Music (local PC drive) to MP3's in S:\Music (Sonos share \\nas\sonos mapped as a network drive [S:\]). For each track the first rule that finds an alternative equivalent is used. If none of the rules are able to find an alternative, the path is changed to something like 'track not found' (i.e. an invalid path)


I also have a suggestion if you are still developing this program, don't know if its easy or not: When you deselect the "Define transformation rules" box, it would be useful if it doesn't remove all the existing rules, but rather was a toggle on/off button within the code itself - that would make it easier to test without having to re-define the rules each time...


I understand your issue but there is an existing alternative for testing different configurations. The application supports multiple iTunes libraries so you can have a different configuration for each library for your household. For testing you can create a test configuration by going to Library -> Add New iTunes Library. This will create an additional configuration tab and you can specify the same source Library as in your original configuration. Use the first tab for your playlist cherry-picking configuration and use the second tab for your test configuration. You can give each configuration/tab a description. I'd prefer to keep the interface the way it is as I feel it's good that the whole transformation rules section is not visible for users who do not require them. It's quite an advanced feature that takes some getting used to, and not everyone wishes to use it or see it. I would probably implement your request if I had the time but unfortunately work is very busy at the moment!!!


My big issue (not for you to solve!) is that I currently store all my music on my PC, mostly in MP3 but I've started re-ripping in FLAC - with 400+ CDs, its going to take a while! Its under ..\Music\MP3 and ..\Music\FLAC I then mirror everything to my NAS drive for the Sonos controller to pick up. This also functions as a useful backup location just in case... I edit the Tags so the FLAC albums have a leading < character in the Albumname. Then I get both showing seperately in Sonos. The way your transform rules work, I will have to change my folder structure so that I have a folder for "Highest quality" stuff (lossless & lossy where there is no lossless equivalent) and one for MP3s only. Then the HQ stuff will get backed up to the Sonos share and the LQ stuff will have to get backed up to another non-Sonos share. Would really like to create a ..\Music\LQ and ..\Music\HQ folder structure but don't fancy updating 10K+ tracks in iTunes! Ughh.... I really need to plan this!
-Durwin


For simplicity and backup purposes, I would like to have complete local MP3 and lossless folders that are both mirrored to my NAS and indexed by Sonos. Unfortunately if you have the same track in both formats the Sonos indexer will pick up both files and you will end up with duplicates in your Sonos library. I therefore maintain my Sonos share manually (rather than mirroring) so that it only contains the highest quality version of each track. For backup purposes I regularly mirror both my local setup and my nas Sonos share to a backup drive that is not indexed by Sonos.

As I have recently upgraded my 250 Gb NAS to a 2Tb one I may use your suggestion going forward and mirror everything from my local drive to my NAS. (i.e. complete MP3 folder, and folder containing just the highest quality version of each track). Your post has certainly given me some food for thought.

If you have C:\Music at the moment for your MP3's and your iTunes library uses all of these you could do the following:

1) Copy C:\Music to C:\Music (LQ)
2) Create a new configuration in my app to replace C:\Music with C:\Music (LQ) for all tracks and generate a new iTunes.xml file locally
3) Create a new empty iTunes library (hold shift key down as you double click on iTunes and keep it held down until you get the option to create a new library). Then import the generated iTunes.xml that points to your tracks in C:\Music (LQ)
4) Scrap your original iTunes library, but only once your are fully happy!!!!! Be very careful!!!
5) Rename C:\Music to C:\Music (HQ)
6) Gradually replace the MP3's within C:\Music (HQ) with their FLAC equivalents as you rip them
7) Mirror both folders to separate shares on your NAS (perhaps with Robocopy) but only index the HQ share.

I hope the above suggestion helps.

Regards

Darren
Userlevel 2
Badge
Darren, just wanted to say I've come across your program for the first time, as I've hit the limit of 40,000 tracks in iTunes Playlists on the Sonos system (lots of nested Playlist folders and I don't want to restructure them!) A quick Google search and I was led here... I've successfully used your application to cherry-pick the playlists I want and that is working great, so thanks, you solved my problem!

I tried to play around a bit with the transformation rules, specifically I put in transforms just for one sub folder, as I wanted to test. I ended up getting nothing in my playlists except tracks listed in my transformation, so looks like its all or nothing?! I also have a suggestion if you are still developing this program, don't know if its easy or not: When you deselect the "Define transformation rules" box, it would be useful if it doesn't remove all the existing rules, but rather was a toggle on/off button within the code itself - that would make it easier to test without having to re-define the rules each time...

My big issue (not for you to solve!) is that I currently store all my music on my PC, mostly in MP3 but I've started re-ripping in FLAC - with 400+ CDs, its going to take a while! Its under ..\Music\MP3 and ..\Music\FLAC I then mirror everything to my NAS drive for the Sonos controller to pick up. This also functions as a useful backup location just in case... I edit the Tags so the FLAC albums have a leading < character in the Albumname. Then I get both showing seperately in Sonos. The way your transform rules work, I will have to change my folder structure so that I have a folder for "Highest quality" stuff (lossless & lossy where there is no lossless equivalent) and one for MP3s only. Then the HQ stuff will get backed up to the Sonos share and the LQ stuff will have to get backed up to another non-Sonos share. Would really like to create a ..\Music\LQ and ..\Music\HQ folder structure but don't fancy updating 10K+ tracks in iTunes! Ughh.... I really need to plan this!

Anyway, I hope your situation is better than last time you posted, thanks again and good luck!
-Durwin
Userlevel 3
Badge +7
Gblasius,

The msi file is a Windows installation file. Ultimately it extracts to an exe file that has been compiled using the Microsoft .Net 2.0 framework. It was written in C# using Visual Studio 2008.

I'll have a think about your other suggestion. With your naming convention the program would work (at least under windows) but any filenames that are not an exact match would need to be manually renamed. Any tracks in your source library where a destination equivalent cannot be found are written to the non mapped tracks report. It would be useful to improve the auto-mapping feature when the filenames are not an exact match. Thanks for your thoughts.

Darren
Userlevel 2
I believe my file names begin thus (04)TRACKNAME.FLAC.

Where the track number is in parens....however, there are probably some which use spaces as a delineator, and some which use hyphens!

don't know if your program would recognize these, but as a suggestion, perhaps you could give the user the chance to name the template (ala Exact Audio Copy).

Regarding 1 - I have a windows emulator, so perhaps your application would work...but to be sure - what is an file with extension .msi?

Really appreciate your help, this is exactly what I need (I hope)!!
Userlevel 3
Badge +7
gblasius,

Unfortunately my apllication is currently only compatible with Windows. I have done some inital research into creating a Mac version but it would be very difficult to develop as I do not have a Mac myself.

Regarding your other question, I have created a feature in my app that will attempt to match filenames if the source and destination filenames begin with the track number followed by a space and there are subsequent differences in the filenames.

Let me explain...

Say you have a local file called
Z:\Music\Darren\Artists\Beatles, The\Albums\Revolver\03 I'm Only Sleeping.mp3
but the high quality version on the nas was named:
\\nas\sonos\Music\Darren\Artists\Beatles, The\Albums\Revolver\03 Im Only Sleeping.m4a (without the quote in I'm) ...my application would suggest that the two files were the same track and will give you the option of renaming the destination track so that's it's filename (minus the extension) matches the source filename. Alternatively you can choose not to rename the destination track and match the two files anyway. Once the files are matched and are in the track mapping cache file you will not to re-map the two tracks again. If the source and destination filenames are identical after ignoring the extensions, the tracks will me mapped automatically without any prompts.

If you have a destination track that is located on your nas in a completely different directory structure to the source file you could always add an entry to the track mapping data manually. The track mapping data is simply a csv file that can be manually edited. For simplicity however I'd recommend keeping your directory structure the same wherever possible.

Unfortunately if the low quality and high quality version of a track have tagging differences, my application will not spot this and will not alter the tags. Other than promting where necessary to rename files, my program does not modify your audio files. I generate my MP3's from the Apple Lossless version after perfecting my tagging so that both copies have identical tagging information.

Darren
Userlevel 3
Badge +7
Claes,

When you run my application under Windows it will need to produce paths that are accesible from Windows.

You have stated that your test MP3 on your nas is at the following location (from your MAC)

Volumes/media/Musik/CDs/test_song.mp3

but windows will not be able to locate the track at this path.

Can you access your test mp3 using the following path (where nasdevicename is the device name of your nas)?

\\nasdevicename\media\Musik\CDs\test_song.mp3

If so you may have success using the following rules:

search: Users\macpro\Music
replace with: \\nasdevicename\media\Musik

If this doesn't work, I'll take a look at my code to identify the problem.

My music is on a Z drive on my windows PC so my rules are simply:

search: Z:\Music
replace with: \\nas\sonos\Music

Notice that backslashes (\) are used in my rules but the path that is written within the XML file will have forwardslahes (/)

Darren
Userlevel 2
Hi Darren,

I have a problem that seems to be fixable with your ingenious software. After some initial trial and (mostly) error I 'm not sure I do things correctly and I'm therefore asking for some help.

My setup is similar to your setup with two separate places for storing my music files. The original music files (mp3) and the iTunes library are place on my laptop and a copy of these is placed on my NAS. I have not gone through the effort to make lossless copies yet so for the moment I just want to have my zoneplayer (ZP90) to use the music files and playlist in the iTune Library.xml mirrored on my NAS.

The only hiccup is that my laptop is a Mac and I can therefore not run your software on it. I do however have a PC at home as well so I thought I could simply copy the MacBook iTunes Library.xml on to my PC and run it through your software.

Since I only want to import into the ZP some of the iTunes playlist I only select the source library (the iTunes Library.xml now placed on my PC) and the iTunes Library.xml place on my NAS (viewable to the ZP). I then click the radio button "Choose playlists to include in output file" and tick the box "Choose playlists upon processing" and select the playlists I want converted.

In my overly optimistic mind I thought that the paths to the files in the selected playlists would be exchanged by the new path on my NAs regardless of the initial path but there seems to be more to it than that and obviously the output was not what I suspected (i.e nil).

Is there any way I could do it differently and make it work with my pc-mac-nas setup?

Even if I have not yet made it work myself I thank you for making this software which must save a lot of people so much time, sweet and pain.

Cheers,
Claes
Userlevel 3
Badge +7
Hi,

It's been a while since I last posted but tonight I have produced a guide for structuring both lossey and lossless music for use with my app.

The guide is at:
http://www.darrenlink.talktalk.net/ituneslibrarymanager/tutorials/MusicStructureGuide.pdf

I have made a few changes recently to the application itself but unfortunately I have not had the time to fully complete all changes and to fully test them. Many apologies to those waiting for a promised update.

Darren
Badge +9
I think this is a bit off topic so perhaps a mod could move it, but the answer that seems bulky but would work immediately would be to audio line output from the computer you are using itunes on into an audio input on any sonos player. Then any 1 or more of your sonos players (that one or others) can access the line input as the audio source and play whatever it is you are commanding itunes to play.

I do have to ask though, why? is it mainly because you like the interface better on itunes than whatever sonos controller you are using? or an actual feature? I ask because I used itunes a ton before but just import everything into sonos now, even my itunes smart playlists.