Skip to main content
Topic: foo_pod - Foobar2000 meets the iPod (Read 1206921 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

foo_pod - Foobar2000 meets the iPod

Reply #75
Intersting.

I guess I don't get this problem as I don't use itunes or ipod service either.

Is there any standard way of mounting/unmounting an external HD?

foo_pod - Foobar2000 meets the iPod

Reply #76
Quote
Does anyone know of a reason why you would not want Enable Disk Mode enabled?

If you use iTunes for your syncing, and have Disk Mode enabled, then you have to manually eject the thing after the sync is done to be able to safely disconnect it. So I leave mine not enabled, since generally all I want to do is sync the thing. Of course, I'm not using foo_pod yet as I'm not yet fully comfortable with foobar as my music library system. Still working on it though.

But if you use foobar for all your music needs, then I see no real reason not to enable the Disk Mode.

Something that might help people experiencing the problem is to uninstall all Apple software related to the iPod. Music Match, any of the firmware upgrade stuff, the iPod Manager program that came on the iPod CD, iTunes, everything. Then reboot and try to dock the thing. I'd be a bit surprised if it didn't go directly into drive mode on, say, an XP machine without any of the Apple software on it. Then you can simply eject that drive letter to get the "OK to disconnect" screen and, hopefully, the eject functions in foo_pod will work just as well. Then you'd be golden, I think.

But if you have iTunes installed, then you will have the iPodService installed, and just leaving Disk Mode enabled in iTunes is probably a requirement.

foo_pod - Foobar2000 meets the iPod

Reply #77
Quote
If you use iTunes for your syncing, and have Disk Mode enabled, then you have to manually eject the thing after the sync is done to be able to safely disconnect it. So I leave mine not enabled, since generally all I want to do is sync the thing. Of course, I'm not using foo_pod yet as I'm not yet fully comfortable with foobar as my music library system. Still working on it though.

Yeah, we need to work on you a little more to break Apple's reality distortion field and bring you over to the Foobar side!

I guess that non-disk mode is an Apple propietary transfer mode that flushes any disk caches after every write, or at least prevents any OS interaction, so it is always safe to disconnect the iPod.

Quote
But if you have iTunes installed, then you will have the iPodService installed, and just leaving Disk Mode enabled in iTunes is probably a requirement.

One option that might work is (temporarily) disabling the IPod Service.  I have also started looking through the iPodService COM interface, and there are some interesting methods available, including Mount, Unmount, and IsMounted.  So it might be possible to use the IPodService to do a lot of things that only iTunes can currently do.

Stay tuned...


Update: Good news!  I was able to access iPodService's interface, so I can now force the iPod to mount, apparently even if it isn't in disk mode (I unmounted it, got the OK to disconnect checkmark, then mounted right away without removing and redocking it). 

I will try to get something posted later on tonight so people can test mount & sync.

foo_pod - Foobar2000 meets the iPod

Reply #78
Version 0.4 is now available.

More good stuff in the new version.  Most significantly is a iTunes-like Sync Playlist feature, which will add/remove files from the iPod so that it matches the current playlist.  Also, I was able to tap into the iPodService, so foo_pod will automatically mount the iPod if necessary (there is also a menu item for this).  There is also a context menu item that allows you to send only selected files to the iPod. 

Under the preferences, there are a few new settings - "Eject On Exit" will safely remove the iPod from the system at Foobar2000 exit.  You can also set the iPod's name, the owner's name, and control the disk mode setting.

From the Readme:

Version 0.4 - March 23, 2004
* Added full iTunes-like sync support.  This will transfer files to the iPod and delete
  files from it so that it matches the current playlist.  As this operation can involve
  deleting files, make sure your playlist is as you want your whole iPod before beginning.

* Added a context menu (right mouse button) that allows an easy way to send only the
  selected files in the current playlist to the iPod.

* Added several new preference items:
  - Eject On Exit will safely eject the iPod when Foobar2000 exits
  - iPod Name and iPod Owner's Names are just strings that you can set if you wish
  - Enable Disk Mode is the equivalent of iTunes' Enable Disk Mode option.  Unless
    you use iTunes and do not want this enabled, I recommend checking this option.

* Added a "Mount iPod" menu option. foo_pod will also try to mount the iPod before
  any iPod related activity, so you will probably only need to use this directly if
  there is a problem, and you do not have Enable Disk Mode checked.

foo_pod - Foobar2000 meets the iPod

Reply #79
I just wanted to add that I would appreciate a lot of testing of sync, since it is probably the most likely source of problems.  But also let me know about any mount iPod problems (or anything else, of course).

Also, there isn't much logging in this version and sometimes there can be long delays before the progress dialog appears.  I'll fix that in the next version.

foo_pod - Foobar2000 meets the iPod

Reply #80
Thank you Aero. You rule my socks!

foo_pod - Foobar2000 meets the iPod

Reply #81
Quote
Thank you Aero. You rule my socks!

Thanks.  It is better than smelling them!

foo_pod - Foobar2000 meets the iPod

Reply #82
I must say, as a person who purchased XPlay (back when HFS+ iPods were the only thing around), foo_pod rocks.  The eject/mount feature works perfectly - something Xplay hasn't been able to do in 2 years.

Technical feedback here:
WinXP Pro SP1
fb2k 0.8
foo_pod 0.4

I have a firewire CF card reader that is usually identified on my computer as the J: drive, and my iPod connected is the K: drive. 

If I attempt to manipulate the (foo_pod) playlist  (right-click, for example) and there is no card in the drive, I get an error "There is no disk in the drive. Please insert a disk into drive J:"  There are 3 buttons - Cancel, Try Again and Continue.  Choosing either "Cancel" or "Continue", I get the error a second time, and then it wil go away, and I can perform the action.  Clicking "Try again" repeatedly gives the same error message. 

If there is a card in the drive, I do not get this error.

Let me know if there is any additional feedback I can provide to solve this issue.

foo_pod - Foobar2000 meets the iPod

Reply #83
Quote
I must say, as a person who purchased XPlay (back when HFS+ iPods were the only thing around), foo_pod rocks.  The eject/mount feature works perfectly - something Xplay hasn't been able to do in 2 years.

I'm glad to hear that!  Maybe I should contact Mediafour and offer to work on XPlay for them (I used to work about 2 blocks from their offices)...

Quote
I have a firewire CF card reader that is usually identified on my computer as the J: drive, and my iPod connected is the K: drive. 

If I attempt to manipulate the (foo_pod) playlist  (right-click, for example) and there is no card in the drive, I get an error "There is no disk in the drive. Please insert a disk into drive J:"  There are 3 buttons - Cancel, Try Again and Continue.  Choosing either "Cancel" or "Continue", I get the error a second time, and then it wil go away, and I can perform the action.  Clicking "Try again" repeatedly gives the same error message. 

If there is a card in the drive, I do not get this error.

The quick answer is to go to foo_pod Preferences, and select "K:" under Force iPod Drive Letter.

The longer answer is that foo_pod locates an iPod by looking for an iPod specific file on all removable drives D: through  Z:.  So it is finding your removable Compact Flash drive J: before it finds the the iPod drive K:, and thus you are getting an error.  By forcing the drive letter in the Prefs, you bypass this search and foo_pod will always use drive K:. 

I was actually just thinking about drive letters last night while playing around with the iPodService interface, since there is a method for directly retreiving the iPod drive letter without doing this search.  So I will probably add the iPodService way as the default method of locating an iPod, and only fallback on my current method if the service is not available.

foo_pod - Foobar2000 meets the iPod

Reply #84
Loving the plugin, Aero. Unfortunately, the latest version crashes when I try to access the foo_pod preferences, either through the preferences menu or directly through the Components --> foo_pod menu. I'll PM you the log.

Also, I was wondering whether it was in the plans to allow the user to define custom TAGZ strings for artist/title/album.

foo_pod - Foobar2000 meets the iPod

Reply #85
I'm also getting a crash when accessing the preferences using foobar 0.8.1 beta 2. Will PM the log.

foo_pod - Foobar2000 meets the iPod

Reply #86
Quote
Loving the plugin, Aero. Unfortunately, the latest version crashes when I try to access the foo_pod preferences, either through the preferences menu or directly through the Components --> foo_pod menu. I'll PM you the log.

Thanks anathema & rufu for the logs.  If anyone else is experiencing the crash, try this test version and see if it helps.

I added some more checks related to the iPodService, and also some debugging information written to the Foobar console.  If you are still experiencing problems, please send me the part that either gives the iPodService version, or the "iPodService is not available" message.

Quote
Also, I was wondering whether it was in the plans to allow the user to define custom TAGZ strings for artist/title/album.

I'm still in the pre-planning stages for the Lua scripting support, but it will probably be something like this: There will be callbacks from foo_pod into the Lua script for various operations, like OnSyncStart(), OnFileTransfer(), OnAddFileToDB(), etc.  What you will be able to do is add a OnAddFileToDB() function that intercepts the file as it is being added to the iPod database, and modify the metadata. 

So if you wanted to format the artist and album for all Blues genre songs, the script might look something like:
Code: [Select]
function OnAddFileToDB(file)
 if file.GetGenre() == "Blues" then
   file.SetArtist("%tracknumber% - %_filename%")
   file.SetAlbum("%comment%")
 end
end

Any valid TAGZ format strings will be supported, so there will be quite a bit of flexibility and control over what  shows up on the iPod.

foo_pod - Foobar2000 meets the iPod

Reply #87
Quote
Version 0.4 is now available.

More good stuff in the new version.  Most significantly is a iTunes-like Sync Playlist feature, which will add/remove files from the iPod so that it matches the current playlist.

Ok, Sync didn't work for me.  I loaded the iPod playlist into Foobar, then just as a test I immediately did a Sync.  It wiped iPod clean (not just the db, it deleted all files).

Database was enabled in Foobar.  (Are the iPod-resident files inserted there?)

I had previously set the playlist for foo_pod to "iPod".  It is still set this way.

Also, fwiw, I am running the foo_tunes UI.

-Reardon

foo_pod - Foobar2000 meets the iPod

Reply #88
Quote
Ok, Sync didn't work for me.  I loaded the iPod playlist into Foobar, then just as a test I immediately did a Sync.  It wiped iPod clean (not just the db, it deleted all files).

Database was enabled in Foobar.  (Are the iPod-resident files inserted there?)

I had previously set the playlist for foo_pod to "iPod".  It is still set this way.

Also, fwiw, I am running the foo_tunes UI.

That is sort of a bug, but also sort of "as designed".  The problem is that you attempted to sync the files that were already on the iPod, and foo_pod's transfer function is designed to avoid copying files from the iPod to the same iPod.

When you synced the iPod playlist, it looked to foo_pod as you were syncing an empty playlist, so it did the correct thing and delete all files on the iPod so that it matched the playlist. 

Granted, that is not an expected or good behavior, so I will fix this in the next version.  Thanks for the report and sorry about wiping your iPod! :/

foo_pod - Foobar2000 meets the iPod

Reply #89
Quote
Quote
Ok, Sync didn't work for me.  I loaded the iPod playlist into Foobar, then just as a test I immediately did a Sync.  It wiped iPod clean (not just the db, it deleted all files).

Database was enabled in Foobar.  (Are the iPod-resident files inserted there?)

I had previously set the playlist for foo_pod to "iPod".  It is still set this way.

Also, fwiw, I am running the foo_tunes UI.

That is sort of a bug, but also sort of "as designed".  The problem is that you attempted to sync the files that were already on the iPod, and foo_pod's transfer function is designed to avoid copying files from the iPod to the same iPod.

When you synced the iPod playlist, it looked to foo_pod as you were syncing an empty playlist, so it did the correct thing and delete all files on the iPod so that it matched the playlist. 

Granted, that is not an expected or good behavior, so I will fix this in the next version.  Thanks for the report and sorry about wiping your iPod! :/

Maybe just a warning dialog will suffice?

foo_pod - Foobar2000 meets the iPod

Reply #90
Is the foo_pod source code available ?

foo_pod - Foobar2000 meets the iPod

Reply #91
Version 0.4.1 is now available.

This version fixes the Preferences crash reported by anathema & rufu, and improves sync so the problem experienced by reardon (syncing files from the iPod to the iPod) works correctly now.  I also changed the way foo_pod locates an iPod, so users like Lew_Zealand who have multiple removable drives probably won't have to use Force iPod Drive Letter.

Fixing the sync problem was a bigger deal than I orignally expected, but it forced me to make some good and necessary improvments that will improve it for everyone.  The next release will probably include playlist creation on the iPod as well as better progress dialogs, as well as fixes for any bugs that crop up.



From the Readme:

Version 0.4.1 - March 26, 2004
* Fixed a crash in Preferences reported by rufu and anathema.  Also fixed a related
  problem which might have caused the iPod Name and Owner's Name strings to be
  corrupted or empty.

* Changed the logic in detecting the iPod drive, so it should be more reliable now.

* Improved sync, so it is now safe to sync files even if they are located on the iPod.

foo_pod - Foobar2000 meets the iPod

Reply #92
Quote
Is the foo_pod source code available ?

Not currently.  foo_pod is still going through major internal revisions, so it wouldn't be very useful to release the source code yet.

But the source code for iPodDB (the real guts of foo_pod) is available at http://otto.homedns.org:8888/iTunes/iPodDB.zip or I can provide a copy.  As I have been adding features to foo_pod, I have been making improvements to iPodDB and sending the changes back to Otto42.

foo_pod - Foobar2000 meets the iPod

Reply #93
Quote
Quote
Is the foo_pod source code available ?

Not currently.  foo_pod is still going through major internal revisions, so it wouldn't be very useful to release the source code yet.

But the source code for iPodDB (the real guts of foo_pod) is available at http://otto.homedns.org:8888/iTunes/iPodDB.zip or I can provide a copy.  As I have been adding features to foo_pod, I have been making improvements to iPodDB and sending the changes back to Otto42.


It seems the link (Otto) is broken ....
BTW will foo_pod source code be available in the future?

foo_pod - Foobar2000 meets the iPod

Reply #94
Quote
It seems the link (Otto) is broken ....
BTW will foo_pod source code be available in the future?

I think Otto's URL is hosted on a DSL connected server, so it may not always be active.

I put a copy of what I have up at http://loodi.com/iPodDB.zip.  But understand that this is an unofficial version, and may be out of date with Otto42's latest code.  iPodDB.cpp and iPodDB.h are the main files - the rest are either helpers or example code (and quite likely aren't usable - I only use iPodDB.cpp/h in foo_pod).


As for the foo_pod source code - after it stablizes, I don't see a problem releasing the source code under a BSD style license (I'm not totally sure of the status of iPodDB, but from the ReadMe, it seems to be similiar).

foo_pod - Foobar2000 meets the iPod

Reply #95
Quote
* Changed the logic in detecting the iPod drive, so it should be more reliable now.


editing post:  It actually still gives the error.

Aero, you can either reply via this thread or PM if you need more data.

foo_pod - Foobar2000 meets the iPod

Reply #96
I am slowly building a repro scenario for the "iPod is wiped" situation I've run into several times.

This morning doing a sync with the latest foo_pod I hit abort.  I think restarted the sync.  At the end, foo_pod thought the db was fine.  I cleared the playlist and reloaded, and everything looked good.  I used RealPlayer as well, just to sanity check.  Everything ok there as well.

But the player itself thinks everything as been wiped.  Oddly, there are two playlists on the device.  On-the-go, as expected.  And a blank pl just above On-the-go.

Maybe I could send you the db to check out?

EDIT: also should have noted that once it gets into this mode, iTunes can no longer see it.  iPodService sees it (given that some of the data I think you rely on from there is available in foo_pod, such as the "Owner Name").

-Reardon

foo_pod - Foobar2000 meets the iPod

Reply #97
Quote
I am slowly building a repro scenario for the "iPod is wiped" situation I've run into several times.

This morning doing a sync with the latest foo_pod I hit abort.  I think restarted the sync.  At the end, foo_pod thought the db was fine.  I cleared the playlist and reloaded, and everything looked good.  I used RealPlayer as well, just to sanity check.  Everything ok there as well.

But the player itself thinks everything as been wiped.  Oddly, there are two playlists on the device.  On-the-go, as expected.  And a blank pl just above On-the-go.

Do you think the problem is related to cancelling the sync (or have you experienced problems without cancelling)?  In theory, it should be possible to cancel at any point and resume the sync later.

I have seen the blank playlist situation as well, and it usually means that the iTunesDB file is corrupted (which is why it looks like all of your songs were wiped out)...although it could also mean that the hidden playlist that the iPod requires was not written correctly.  Actually the more I think about this, if "Load iPod Songs To The foo_pod Playlist" works, but the files don't appear on the iPod, then it is almost definitely a hidden playlist problem. 

FYI: the hidden playlist is a special playlist that contains all the songs on the iPod - without this list, even though the songs are on the iPod, the iPod 'About' indicates that there are songs, and the iTunesDB is ok, the iPod won't display any songs.

Quote
Maybe I could send you the db to check out?

Yeah, I would like to see the iTunesDB file where this is happening to see.  Please send it to foopod(at)argz.com.  Just in case you don't know, the iTunesDB files is located at iPod_Control\iTunes\iTunesDB.

Quote
EDIT: also should have noted that once it gets into this mode, iTunes can no longer see it.  iPodService sees it (given that some of the data I think you rely on from there is available in foo_pod, such as the "Owner Name").

This still sounds like a corrupt iTunesDB file, since the Owner Name is stored in the NVRAM, not the db file.

foo_pod - Foobar2000 meets the iPod

Reply #98
Great plugin! 
But I really hope you add a feature to create playlists on the iPod as well. That would be the greatest...

Solaris

foo_pod - Foobar2000 meets the iPod

Reply #99
Quote
Great plugin! 
But I really hope you add a feature to create playlists on the iPod as well. That would be the greatest...

Solaris

Thanks!

I have already implemented iPod Playlist creation, which will be released in 0.5 as soon as I redo the progress dialogs and look into reardon's sync problem.

There are 3 new preference items related to playlists.  One just enables sending playlists to the iPod, another enables automatically creating randomized playlists, and the last allows a user-defined TAGZ format for sorting songs in the playlists. 

If you enable sending playlists (enabled by default), when you do a Send or Sync Playlist, foo_pod will also create a playlist on the iPod with the same name and file order as the Foobar playlist..  That is pretty straightforwad - if you have a playlist on Foobar named "My Songs", Send/Sync Playlist will copy the necessary files to the iPod and create a "My Songs" playlist that matches the Foobar playlist.

If you enable Randomized playlist creation, foo_pod will also automatically create a "rnd_My Songs" playlist on the iPod, containing the same list of songs as "My Songs", but in a random order.  I like this feature because I can leave the iPod's shuffle mode disabled, and just select the randomized playlist when I would normally have used shuffle.

The third mode is a user customizable TAGZ format string, which allows the user to create playlists sorted by artist, title, or any other valid TAGZ format.  For example, setting the format to "%title%", will create a "usr_My Songs" playlist with the songs sorted by title.

Finally, I added Send All/Sync All Playlists features, which automatically sends/syncs up all Foobar playlists, rather than one at a time.  It is pretty slick, and as soon as I take care of the progress and reardon's sync problem, I'll post 0.5.

 
SimplePortal 1.0.0 RC1 © 2008-2019