Help - Search - Members - Calendar
Full Version: foo_pod - Foobar2000 meets the iPod
Hydrogenaudio Forums > Hosted Forums > foobar2000 > 3rd Party Plugins - (fb2k)
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42
Aero
Version 0.7.7 is now available.

I believe I finally figured out and resolved the song copying problems that have existed since version 0.7.4.

If not, there is a new Verbose Debug Mode in the preferences that can be used to dump all sorts of debug information out to the Foobar console. Normally, you would want to leave it on Errors Only or Errors and Warnings, but if you suspect a foo_pod problem, change it to All Debug Messages and post the relevant portions here so I can get a better idea what is going on.

I also moved all of the context menu items into a "foo_pod" submenu, and explicitly indicate which playlist is to be ignored. But I still can't reproduce any problems with ignoring playlists, using either foo_ui_columns or the default UI. If someone can reproduce this, please post/PM/email the verbose log messages.

The window focus problem that occured when the progress dialogs closed should also be resolved.

I didn't add the POD_<metadata> thing yet...maybe in the next version.


From the Readme:
CODE
Version 0.7.7 - June 4, 2004
*  Finally fixed the file copy regression that occured in versions 0.7.4 - 0.7.6.

*  Added a "Verbose Debug Mode" preference item, which controls how much debug information
  foo_pod writes to the Foobar2000 console. "All Debug Messages" can be very verbose, so it
  should probably only be used if you suspect a problem with foo_pod and need to report debug
  information.

*  Moved all of the foo_pod context menu items to a foo_pod submenu.

*  Attempted to fix a problem reported where the window focus would be lost after the progress dialog
  closed.
SNAG
QUOTE (Aero @ Jun 6 2004, 02:06 AM)
Version 0.7.7 is now available.

I believe I finally figured out and resolved the song copying problems that have existed since version 0.7.4. 

If not, there is a new Verbose Debug Mode in the preferences that can be used to dump all sorts of debug information out to the Foobar console.  Normally, you would want to leave it on Errors Only or Errors and Warnings, but if you suspect a foo_pod problem, change it to All Debug Messages and post the relevant portions here so I can get a better idea what is going on.

I also moved all of the context menu items into a "foo_pod" submenu, and explicitly indicate which playlist is to be ignored.  But I still can't reproduce any problems with ignoring playlists, using either foo_ui_columns or the default UI.  If someone can reproduce this, please post/PM/email the verbose log messages.

The window focus problem that occured when the progress dialogs closed should also be resolved.

I didn't add the POD_<metadata> thing yet...maybe in the next version.


From the Readme:
CODE
Version 0.7.7 - June 4, 2004
*  Finally fixed the file copy regression that occured in versions 0.7.4 - 0.7.6.

*  Added a "Verbose Debug Mode" preference item, which controls how much debug information
  foo_pod writes to the Foobar2000 console. "All Debug Messages" can be very verbose, so it
  should probably only be used if you suspect a problem with foo_pod and need to report debug
  information.

*  Moved all of the foo_pod context menu items to a foo_pod submenu.

*  Attempted to fix a problem reported where the window focus would be lost after the progress dialog
  closed.

Yay~

All's solved!

Aero, probably this has been said for like a gazillion times, but really, GREAT WORK!! biggrin.gif
rexy
Yup; 0.7.7 fixes it. Indeed, great work. My iPod wouldn't have been the same without this. smile.gif
Still waiting for the alternate tagging thing but I have patience.
By the way, I was looking through the pod.h file and it looks really useful... I just got a couple of questions:
1. If I use sendHandleListToIPod will it, by itself, handle cases of transcoding and such? If not can you please make a sendHandleListToIPodEx or something of the sort?
2. Can you add the ability to make a listener that will get called when the iPod is mounted? As far as my own iPod works, it mounts itself when I dock it which is, I understand, how it is supposed to be, so a listener for when it mounts itself will be nice because then I can do some automatic syncing for specific things.

On another note, are smart playlists also smart when on the iPod? That is, does the iPod update them itself or are they updated by iTunes whenever it syncs? If it is the former, can you make foo_pod be able to script smart playlists into the iPod? If the latter then I guess I can, myself, use getHandleListFromIPod and createIPodPlaylist to do it. I tried adding a smart playlist into my iPod using iTunes to see where it adds it and how but all I could find anything except an entry in the iTunesDB exported xml but I didn't see evidence of some kind of criteria for the playlist.
Lew_Zealand
QUOTE (Lew_Zealand @ Jun 5 2004, 09:04 AM)
QUOTE (musicmusic @ Jun 5 2004, 05:34 AM)
Erm are you sure the confusion is not coming from the fact you shoved the command on the context menu with name "foo_pod: Select To Ignore This Playlist", which shows up when you right click playlists ?

I don't know why you don't put it into the main menu, and give it a saner name..

If I am missing something, please give a description of how you command eactly works..

The problem isn't with understanding which playlists are to be excluded (although I agree with you, the phrases used could be clearer).

I won't have time to do any heavy-duty testing today. I hope to have some answers tomorrow. I'll also make sure my colums_ui dll is current.

After doing a full uninstall of foobar, and reinstalling Case's latest special installer (which includes the Columns UI now) and foo_pod 7.7 it seems everything is working. I'm not clear on the exact cause. Possibly a combination of a corrupted db, and not really understanding what the menu options really mean.

btw, if "sync current playlist" means "remove everything except for current playlist", then that item could use a semantic overhaul.

Thanks again.
Lew_Zealand
On to other questions.

I'm not clear on how the transcoder is supposed to work. Does it only work on mp3 and aac files? The question I'm really asking is this: If I have a playlist of flac files tagged with vorbis comments, will foo_pod encode them into .mp3 and put them onto my iPod?
Aero
QUOTE (rexy @ Jun 6 2004, 11:50 AM)
Yup; 0.7.7 fixes it. Indeed, great work. My iPod wouldn't have been the same without this. smile.gif
Still waiting for the alternate tagging thing but I have patience.
By the way, I was looking through the pod.h file and it looks really useful... I just got a couple of questions:
1. If I use sendHandleListToIPod will it, by itself, handle cases of transcoding and such? If not can you please make a sendHandleListToIPodEx or something of the sort?

Yeah. sending files to the iPod automatically obeys the current foo_pod preference settings, including transcoding. So you don't need to do anything special to handle files that should be transcoded, as long as the preference is set. Of course, there isn't a way to manage foo_pod's preferences from the Pod interface or control them outside of the foo_pod Preference dialog...

Basically, the Pod interface is a proof of concept - except for musicmusic's component, I'm not aware of anyone else that is using it. Eventually, I would like to split out foo_pod into the user interface and the Pod interface, but internally, it is not used by foo_pod at the moment. As more people (hopefully) use it, I will expand and flesh it out.

QUOTE
2. Can you add the ability to make a listener that will get called when the iPod is mounted? As far as my own iPod works, it mounts itself when I dock it which is, I understand, how it is supposed to be, so a listener for when it mounts itself will be nice because then I can do some automatic syncing for specific things.

I don't know of any way of detecting when the iPod is docked, other than via polling to see if there is an iPod available (e.g. Pod::getIPodRoot() returns non-zero). Actually, on second glance, there is a way to get iPod events from the iPodService. But you would still have to fall back on the polling method if iPodService wasn't available. I'll see about hooking up the iPodService event thing.

QUOTE
On another note, are smart playlists also smart when on the iPod? That is, does the iPod update them itself or are they updated by iTunes whenever it syncs? If it is the former, can you make foo_pod be able to script smart playlists into the iPod? If the latter then I guess I can, myself, use getHandleListFromIPod and createIPodPlaylist to do it. I tried adding a smart playlist into my iPod using iTunes to see where it adds it and how but all I could find anything except an entry in the iTunesDB exported xml but I didn't see evidence of some kind of criteria for the playlist.

Otto42 is the guy to talk to about smart playlists, but based on my limited understanding, smart playlists are basically a set of rules that are stored on the iPod, which the iPod itself uses to generate dynamic playlists. foo_pod and the underlying iPodDB don't fully support smart playlists, but I believe that you can set them up in iTunes (which stores them in the iTunesDB file on the iPod), and foo_pod will not destroy them.
Aero
QUOTE (Lew_Zealand @ Jun 6 2004, 01:49 PM)
btw, if "sync current playlist" means "remove everything except for current playlist", then that item could use a semantic overhaul.

Yes, sync (in general) is very powerful and equally confusing. It sounds like it is a good thing, but more often than not, it ends up unexpectedly deleting files from the iPod.

The general concept is that Sync{Current,All} Playlist(s) is that it will change the files on the iPod to match the playlist(s). This means adding and deleting files. Overall, I think most people would be better off using Send along with Delete Selected Files, as needed.

I'm open to suggestions on how to improve the sync terminology.
Aero
QUOTE (Lew_Zealand @ Jun 6 2004, 01:52 PM)
I'm not clear on how the transcoder is supposed to work.  Does it only work on mp3 and aac files?  The question I'm really asking is this: If I have a playlist of flac files tagged with vorbis comments, will foo_pod encode them into .mp3 and put them onto my iPod?

There are two ways that transcoding works, but they are basically the same idea.

The first is when foo_pod encounters a file format (such as FLAC) that the iPod can't play. When this happened, foo_pod checks the Transcoder preference settings. Right now, that looks like this:
  • Don't transcode
  • LAME (MP3) Good quality
  • LAME (MP3) High quality
  • LAME (MP3) Best quality
  • FAAC (AAC) Good quality
  • FAAC (AAC) High quality
  • FAAC (AAC) Best quality
along with the custom encoder setting, but we'll ignore that for now.

Say you have LAME high quality set - when it comes time to send the FLAC format file to the iPod, foo_pod will execute LAME and it will save a MP3 version of the song to the iPod. As long as you have something other than "Don't Transcode", foo_pod will attempt to transcode the unsupported song into either MP3 or AAC format. If Foobar can play the song, foo_pod can transcode it. Also, if Foobar understands the tagging format, it will be correctly stored on the iPod.


The second way transcoder works is for supported formats, meaning MP3 and AAC.
  • Transcode MP3 files over ___ kbps
  • Transcode AAC files over ___ kbps
Say you are transferring a bunch of MP3 files to the iPod. The files on your hard drive are probably encoded at a high bitrate for quality, but maybe you want something lower for the iPod so you can fit more songs on it. What you do is check the "Transcode MP3 files over ___ kbps" option, and specify the maximum bitrate at which you do not want MP3 files to be transcoded.

For example, say you have "Transcode MP3 files over 160kbps" checked, and attempt to transfer the following songs:

song1.mp3 (bitrate = 128kbps) -> not transcoded
song2.mp3 (bitrate = 160kbps) -> not transcoded
song3.mp3 (bitrate = 320kbps) -> transcoded
song4.m4a (bitrate = 140kbps) -> not transcoded

In this example, only song3.mp3 would be transcoded, using whatever transcoding setttings you are currently using (e.g LAME High quality), because it is the only MP3 file that is above 160kbps.


Hopefully this clears up the situation a little. foo_pod could really use a single comprehensive document that lists all the features and examples on how to use them. Anyone interested in helping with some documentation? smile.gif
rexy
...now there are so many things to wait for in the next couple of versions. smile.gif

In other news, I think I found a bug: if you did set a transcoding preference (i.e. enabled transcoding) but didn't check any of the "transcode above bitrate X" options foo_pod will tell you that transcoding is disabled and that the transfer has failed if you just want to send an unsupported file (tested on ogg and wma). Now, if you check any of those options, even if it's not the corresponding one (corresponding meaning that if for example you selected lame then you would check "mp3's above bitrate X"), then it works without any problems. So right now I just set the bitrate threshold high enough to not affect anything to bypass this bug. Oh, and note that I didn't try custom encoding.

EDIT: Also, I'm still having focus problems... if foobar is in focus then when the process is done and the progress window closes then the window below foobar gets focus but if another window is in focus during the process and then it's done and the progress window closes then foobar steals the focus.

Another thing: can you make it show progress in foobar's status bar also?
Aero
QUOTE (rexy @ Jun 6 2004, 03:27 PM)
...now there are so many things to wait for in the next couple of versions. smile.gif

In other news, I think I found a bug: if you did set a transcoding preference (i.e. enabled transcoding) but didn't check any of the "transcode above bitrate X" options foo_pod will tell you that transcoding is disabled and that the transfer has failed if you just want to send an unsupported file (tested on ogg and wma). Now, if you check any of those options, even if it's not the corresponding one (corresponding meaning that if for example you selected lame then you would check "mp3's above bitrate X"), then it works without any problems. So right now I just set the bitrate threshold high enough to not affect anything to bypass this bug. Oh, and note that I didn't try custom encoding.

Huh. Good catch...I thought I had tested all combinations, but apparently I missed this one. It is fixed and will be posted shortly along with another attempt at fixing the focus problem.

QUOTE
Another thing: can you make it show progress in foobar's status bar also?

I don't believe there is a SDK function that allows access to the status bar. If the config var for the status bar format is publicly available, I guess I could temporarily replace it with $progress(), but that would be bordering on a hack.
Aero
Version 0.7.8 is now available.

This fixes the transcoding problem noted by rexy, and might also help with the progress dialog focus problem. Sorry about all of the recent transcoder related problems...


From the Readme:
CODE
Version 0.7.8 - June 6, 2004
*  One (hopefully) last tweak to the transcoder code.  It was not transcoding unsupported files
  unless both the MP3 and AAC transcode settings were enabled.

*  Another attempted fix to the progress dialog focus problem mentioned in 0.7.7
Lew_Zealand
QUOTE (Aero @ Jun 6 2004, 03:56 PM)
Version 0.7.8 is now available.

From the Readme:
CODE
Version 0.7.8 - June 6, 2004
*  One (hopefully) last tweak to the transcoder code.  It was not transcoding unsupported files
  unless both the MP3 and AAC transcode settings were enabled.

*  Another attempted fix to the progress dialog focus problem mentioned in 0.7.7

It has definitely solved the problems I experienced with focus changes and transcoding (in other words, it works now!). That's why I posed my question...I thought I was doing something wrong.

I've gotta agree with SNAG, your work on foo_pod is greatly appreciated.
Otto42
QUOTE (Aero @ Jun 5 2004, 09:58 AM)
QUOTE (neomoe @ Jun 5 2004, 02:49 AM)
I can see ratings-tag, can add ratings etc... the only thing is, the ratings which I apply in Foo_pod don't appear in iTunes. or is this a general problem of the iPod (2nd gen.) that such stuff cannot be applied on the iPod database?

I apparently don't fully understand how the iPod uses ratings, because I am writing the correct values to the iPodDB, but the ratings don't seem to show up on the iPod. I'll put this on my todo list...

Just wanted to verify these:

- You're treating the rating as a number from 0-100, in multiples of 20, correct? 1 star = 20, 2 stars = 40, etc...

- You're putting this value into the iPod_mhit.stars field.

Beyond that, there's nothing more to be done, AFAIK.
Aero
QUOTE (Otto42 @ Jun 6 2004, 07:06 PM)
Just wanted to verify these:

- You're treating the rating as a number from 0-100, in multiples of 20, correct? 1 star = 20, 2 stars = 40, etc...

- You're putting this value into the iPod_mhit.stars field.

Beyond that, there's nothing more to be done, AFAIK.

There must be something else, because I am correctly converting by the factor of 20. For example, I took an unrated song on my iPod and set the rating to 5 stars. I then docked the iPod and read the iTunesDB file in foo_pod, which reads Play Counts, sets the correct mhit.stars value to 100, deletes Play Counts, and saves the database back to the iPod.

So after doing all of this, I see a RATING metadata of 5 in Foobar, and when I dump out the iTunesDB files as XML, I correctly see <STARS>100</STARS>. So far, so good. But when I actually undock the iPod and check the rating, it is zero stars

I wonder if mhit->previous_rating is needed to be set as well? I don't currently do anything with it, so it is always 0.
Lew_Zealand
QUOTE (Aero @ Jun 6 2004, 01:34 PM)
QUOTE (Lew_Zealand @ Jun 6 2004, 01:49 PM)
btw, if "sync current playlist" means "remove everything except for current playlist", then that item could use a semantic overhaul.

Yes, sync (in general) is very powerful and equally confusing. It sounds like it is a good thing, but more often than not, it ends up unexpectedly deleting files from the iPod.

The general concept is that Sync{Current,All} Playlist(s) is that it will change the files on the iPod to match the playlist(s). This means adding and deleting files. Overall, I think most people would be better off using Send along with Delete Selected Files, as needed.

I'm open to suggestions on how to improve the sync terminology.

I might recommend the word "replace" instead of "sync", since file copying or deletion is really happening in one direction (it's not as if a file could be on your iPod, and not your computer, unless you were connecting it to two different boxes).

Therefore, the options could be labeled something like "Replace all iPod music with current playlist" and "Replace all iPod music with all playlists".

Even that might be a bit verbose, though. I'm open to suggestions as well.
Otto42
QUOTE (Aero @ Jun 6 2004, 06:33 PM)
There must be something else, because I am correctly converting by the factor of 20.  For example, I took an unrated song on my iPod and set the rating to 5 stars.  I then docked the iPod and read the iTunesDB file in foo_pod, which reads Play Counts, sets the correct mhit.stars value to 100, deletes Play Counts, and saves the database back to the iPod.

So after doing all of this, I see a RATING metadata of 5 in Foobar, and when I dump out the iTunesDB files as XML, I correctly see <STARS>100</STARS>.  So far, so good.  But when I actually undock the iPod and check the rating, it is zero stars

I wonder if mhit->previous_rating is needed to be set as well?  I don't currently do anything with it, so it is always 0.

I've never figured out what previous_rating was for. I know it's there, and I know iTunes put the old rating there, but I can change it all I like and nothing happens.

Check the iTunesDB file with a hex editor and look at that field. Maybe I'm writing it incorrectly in the mhit.write() function. Because I can manually edit it in the iTunesDB using a hex editor and the changes show up just fine on my iPod.
Otto42
QUOTE (rexy @ Jun 6 2004, 09:50 AM)
On another note, are smart playlists also smart when on the iPod? That is, does the iPod update them itself or are they updated by iTunes whenever it syncs?

Yes and no.

Any iPod running 2.0 software and up (any iPod with a dock connector) is smart in most (not all) cases. That is, the smart playlist, on the iPod, will indeed change to reflect different things without the help of the computer.

Any iPod running 1.x software (any iPod without a dock connector) is not smart in the slightest. The smart playlist is built by iTunes and then fixed in position on the iPod. The iPod cannot change it without resyncing to iTunes.

The rules for the smart playlist do indeed get saved on the iPod, in a somewhat annoyingly obscure manner. Newer iPods use those rules and will change the contents of the playlist in real time.

Example: A smart playlist with the rule "Last Played is not in last two weeks" will have a bunch of songs in it. You play some songs from that playlist, then stop, leave the playlist to play something else, and come back to that playlist. All the songs you played are no longer in that playlist, and you never connected the thing to a computer. Newer iPods can do this. Older iPods get the songs for that playlist in the same way as every other playlist, they just read a list of songs out of the iTunesDB file. They don't adjust it dynamically.

There are a few cases using the newer iTunes/iPod software where this breaks down. If a smart playlist relies on the "Playlist" or "Grouping" fields, then the playlist will no longer be smart on the iPod. Those haven't been fully implemented, I guess.

The current version of foo_pod using the iPodDB classes will preserve the smart playlist information made using iTunes, but it cannot create or understand smart playlists on it's own. There's support in the iPodDB classes, but it's buggy, and I haven't gotten around to repairing the problems yet. I believe that support is disabled in foo_pod because it's so buggy... I will fix it one of these days... Really... wink.gif
rexy
QUOTE
The rules for the smart playlist do indeed get saved on the iPod, in a somewhat annoyingly obscure manner. Newer iPods use those rules and will change the contents of the playlist in real time.

Can you be more specific as to how and where it stores it? Not too specific as hex offsets but more like if it's in the db or in some other file.
QUOTE
There are a few cases using the newer iTunes/iPod software where this breaks down. If a smart playlist relies on the "Playlist" or "Grouping" fields, then the playlist will no longer be smart on the iPod. Those haven't been fully implemented, I guess.

What are these "Playlist" and "Grouping" fields anyway?
QUOTE
The current version of foo_pod using the iPodDB classes will preserve the smart playlist information made using iTunes, but it cannot create or understand smart playlists on it's own. There's support in the iPodDB classes, but it's buggy, and I haven't gotten around to repairing the problems yet. I believe that support is disabled in foo_pod because it's so buggy... I will fix it one of these days... Really... wink.gif

Please do fix it. It would be awsome not having to work through iTunes to do smart playlists.
Mike Giacomelli
QUOTE (Aero @ Jun 6 2004, 02:56 PM)
Version 0.7.8 is now available.

This fixes the transcoding problem noted by rexy, and might also help with the progress dialog focus problem.  Sorry about all of the recent transcoder related problems...


From the Readme:
CODE
Version 0.7.8 - June 6, 2004
*  One (hopefully) last tweak to the transcoder code.  It was not transcoding unsupported files
  unless both the MP3 and AAC transcode settings were enabled.

*  Another attempted fix to the progress dialog focus problem mentioned in 0.7.7

Very nice. I like how this project is coming along.
Otto42
QUOTE (rexy @ Jun 6 2004, 09:48 PM)
Can you be more specific as to how and where it stores it? Not too specific as hex offsets but more like if it's in the db or in some other file.

It's in the DB. If you understand the format of the DB file, it's in the type 50,51, and 52 MHODs under the MHYP for the playlist. Just before the first MHIP in the playlist. It uses some fairly wacky encoding too. I've worked out most of it, but some parts still elude me. And I haven't figured out all the constants, but that's easy enough to do.

QUOTE (rexy @ Jun 6 2004, 09:48 PM)
What are these "Playlist" and "Grouping" fields anyway?

The grouping field is a new text field they added to iTunes. Essentially, it's just a text field and you can do whatever you like with it. It doesn't get saved into the song file's tag itself, and you can use it as criteria for a smart playlist.

The playlist is a new criteria available to smart playlists.. Essentially it lets you use other playlists as criteria.. So if I made a smart playlist that says "Length is greater than 5 minutes" and "Playlist is 'some_other_playlist'", then I'd get a list of songs that are longer than 5 minutes and also are in some_other_playlist. If I later add songs to some_other_playlist and they are longer than 5 minutes, then they'd get added to this smart playlist as well. It basically just lets you use other playlists as the base to select from. Or as the base not to select from.. You can also create unions by selecting multiple playlists and then the songs are the songs that both of those playlists have in common.. That sort of thing.

QUOTE (rexy @ Jun 6 2004, 09:48 PM)
Please do fix it. It would be awsome not having to work through iTunes to do smart playlists.

I would, but I got a new job a month or two ago, and free time is limited. Sorry, I'll get around to it. Really. smile.gif
ronyzyz1
QUOTE (Otto42 @ Jun 7 2004, 11:33 PM)
QUOTE (rexy @ Jun 6 2004, 09:48 PM)
Please do fix it. It would be awsome not having to work through iTunes to do smart playlists.

I would, but I got a new job a month or two ago, and free time is limited. Sorry, I'll get around to it. Really. smile.gif

Wee! :-D
rexy
Otto42, I'll be waiting smile.gif . Oh, and congratulations on your new job... you sound happy about it.

Other than that, after successfully using pod.h to make a menu item in foobar to sync my iPod with Rainlendar with some help from Aero (thanks again, Aero) I noticed something was missing from pod.h: a function to bring up the progress window. So, in the next revision of pod.h, along with the mount event, can you also include a funtion to bring up the progress window? I would like it to allow me to update the progress bar and the status text and to either specify a default animation (like IPODTOFOO or FOOTOIPOD) or let me specify a custom animation, though the custom animation option is not that important and you can omit it if dealing with all those annoying resource handles is too much of a hassle, I just thought it would be a nice feature for stuff that don't really correspond to the existing animations.
somasatellite
For some reason I've been having context menu problems. I can look under the foo_pod group and see all of the options that should be there when I right click, but they are not showing up. I understand they only appear when the ipod is connected, so it may have something to do with that. With this version, I get a warning in the console that there isn't an ipod connected, and it's repeated about four times - yet I can still load the ipod songs to the foo_pod playlist. So for some reason it seems to be not recognizing the ipod at first, and refusing to put up the context menu items.
Aero
QUOTE (somasatellite @ Jun 8 2004, 07:30 AM)
For some reason I've been having context menu problems. I can look under the foo_pod group and see all of the options that should be there when I right click, but they are not showing up. I understand they only appear when the ipod is connected, so it may have something to do with that. With this version, I get a warning in the console that there isn't an ipod connected, and it's repeated about four times - yet I can still load the ipod songs to the foo_pod playlist. So for some reason it seems to be not recognizing the ipod at first, and refusing to put up the context menu items.

I have noticed that too - it usually occurs if you undock and dock the iPod after starting up Foobar. I'll see if I can narrow down the cause and fix it.
Aero
QUOTE (rexy @ Jun 7 2004, 05:44 PM)
Other than that, after successfully using pod.h to make a menu item in foobar to sync my iPod with Rainlendar with some help from Aero (thanks again, Aero) I noticed something was missing from pod.h: a function to bring up the progress window. So, in the next revision of pod.h, along with the mount event, can you also include a funtion to bring up the progress window? I would like it to allow me to update the progress bar and the status text and to either specify a default animation (like IPODTOFOO or FOOTOIPOD) or let me specify a custom animation, though the custom animation option is not that important and you can omit it if dealing with all those annoying resource handles is too much of a hassle, I just thought it would be a nice feature for stuff that don't really correspond to the existing animations.

What I really need is a progress callback, so you can handle the progress however you wish. For the first pass, I will probably just add a parameter so you can enable the built-in progress dialogs.
Aero
Version 0.8 is now available.

This version implements rexy's idea for an alternate set of metadata, just for the iPod. There is a new preference item, Alternate Metadata Prefix, which (if set) is prepended to the regular group of metadata that is used by the iPod - TITLE, ARTIST, ALBUM, GENRE, COMMENT, COMPOSER, and TRACKNUMBER.

For example, if you set it to POD_, foo_pod will look for POD_ARTIST and fallback to ARTIST if it is not available.

Another new feature is that foo_pod will add transcoder related metadata to the files it transcodes - transcoder and settings, transcoded time, original codec, original bitrate, along with the ReplayGain and EAC technical info.

To deal with some of the sync user problems, foo_pod will now inform the user how many files will be deleted from the iPod, and offer a way to stop the sync before anything is changed.

Finally, the Pod interface was updated with new functions and arguments to control whether the progress dialogs will be shown.


From the Readme:
CODE
Version 0.8 - June 9, 2004
*  Added a preference item to append to certain metadata items, which allows the user to use
  a second set of metadata items for the iPod while not distrubing the regular metdata.

  The following metadata items are supported: TITLE, ARTIST, ALBUM, GENRE, COMMENT, COMPOSER, and TRACKNUMBER

  For example, if the Alternate Metadata Prefix setting is "POD_" and "POD_ARTIST" is set, the
  artist field on the iPod will be the value from POD_ARTIST.  Otherwise, it will fallback to ARTIST.

*  Updated the Pod interface with function to enumate the list of iPod playlists, return a metadb_handle_list
  of an iPod playlist, repair the iPod database, and exporting the database in XML format.

*  Syncing will now ask the user before deleting any files on the iPod, and allow the user to cancel the
  sync if that is not what they expected.

*  The foo_pod context menu items are now displayed whether the iPod is mounted or not.

*  When transcoding, foo_pod now writes out the following metadata to the transcoded files:
    ReplayGain metadata
  Exact Audio Copy metadata
    TRANSCODER - a description of the transcoder and settings
 TRANSCODED_DATE - timestamp when the file was transcoded
 ORIGINAL_CODEC - the codec of the source file
 ORIGINAL_BITRATE - the original bitrate
SNAG
Got a problem here with 0.8:

I encountered this problem when I had my iPod plugged in (but not docked), and I attempted to open foobar.

I mass selected some files, and I tried to right click for the context menu.

It generated a whole list of warnings, saying that a iPod is not connected. It sorta slowed foobar, and I could see that iPodService.exe was using some CPU cycles. I had to kill iPodService.exe before everything was ok.

EDIT: After iPodService was killed, the whole slew of warnings pop out whenever I right click.

EDIT2: I realise that this happens now irregardless of whether the iPod is plugged in or not. So I guess it has nothing to do with the iPod at all...

CODE
WARNING (foo_pod) : Couldn't find an iPod
WARNING (foo_pod) : Couldn't find an iPod
WARNING (foo_pod) : Couldn't find an iPod
WARNING (foo_pod) : Couldn't find an iPod
WARNING (foo_pod) : Couldn't find an iPod
WARNING (foo_pod) : Couldn't find an iPod
WARNING (foo_pod) : Couldn't find an iPod
WARNING (foo_pod) : Couldn't find an iPod
Otto42
I recently noticed that the iPodService has a whole lot of undocumented functionality available via the COM interface. IPodService.iPodManager as I recall. Looks like you can register applications to the iPodservice and do events and such. Looks like it'd be possible to register foobar to the iPodservice and have it automatically start foobar when you connected the iPod. This could eliminate iTunes entirely from the picture if it's causing issues. We just grab the iPodService away from it and force the iPodService to use foobar instead.

You can get the iPodService without installing iTunes, BTW. Just install the iPod Firmware Updater. It installs the iPodService as well, I think.

Only problem I see is that the interface is undocumented. It looks reasonably simple though. Some minor confusion in some of the calls, but mostly looks feasible.
Aero
QUOTE (Otto42 @ Jun 9 2004, 09:22 AM)
I recently noticed that the iPodService has a whole lot of undocumented functionality available via the COM interface. IPodService.iPodManager as I recall. Looks like you can register applications to the iPodservice and do events and such. Looks like it'd be possible to register foobar to the iPodservice and have it automatically start foobar when you connected the iPod. This could eliminate iTunes entirely from the picture if it's causing issues. We just grab the iPodService away from it and force the iPodService to use foobar instead.

You can get the iPodService without installing iTunes, BTW. Just install the iPod Firmware Updater. It installs the iPodService as well, I think.

Only problem I see is that the interface is undocumented. It looks reasonably simple though. Some minor confusion in some of the calls, but mostly looks feasible.

I have been using the interface for quite awhile now, Otto. But thanks for noticing!
Edit: I actually emailed you on March 22 and told you about the iPodService interface... wink.gif

And yes, there is a way to register and set the launch application, although I couldn't get it working when I tried it with version 10. I believe it just sets a registry value in HKLM\SOFTWARE\Apple Computer, Inc.\iPod\RegisteredApps, but it has been a long time since I have looked into this.

The problem with using the updater (other than it is a 25MB download just to get a 400kB file!) is that the updater installer doesn't register iPodService as a Windows service. I could do that manually, but honestly, iPodService mostly just gets in the way. foo_pod works just as good without it, and other than automatically launching an application when the iPod is attached, it really doesn't do anything useful as far as foo_pod is concerned.

Getting the EDeviceStatus might be useful, but I don't understand COM well enough yet to set up the dispinterface handler in foo_pod, and I would still need equivalent backup code for the case when iPodService isn't available.
Aero
QUOTE (SNAG @ Jun 9 2004, 06:58 AM)
I encountered this problem when I had my iPod plugged in (but not docked), and I attempted to open foobar.

I mass selected some files, and I tried to right click for the context menu.

It generated a whole list of warnings, saying that a iPod is not connected. It sorta slowed foobar, and I could see that iPodService.exe was using some CPU cycles. I had to kill iPodService.exe before everything was ok.

What do you mean by plugged in but not docked? Did your iPod screen say it was charging or "Ok t o disconnect" instead of "Do Not Disconnect"?

Which version of foo_pod are you using? foo_pod 0.8 has a change so that it doesn't check for an iPod before displaying the context menu. I'm not able to reproduce the problem with 0.8, so give it a try and see if it helps.

Edit: Nevermind...I see you are using 0.8.
Otto42
QUOTE (Aero @ Jun 9 2004, 09:36 AM)
I have been using the interface for quite awhile now, Otto.  But thanks for noticing! 
Edit: I actually emailed you on March 22 and told you about the iPodService interface... wink.gif

Hah! Yeah, I guess that didn't click with me at the time. I'm kinda new to COM, really. I only noticed it because I was checking out some of the iTunes COM interface stuff. Some things in there not in their documentation, although sadly they look like they're pretty uninteresting things for the most part.
.zolder
Hi again! smile.gif I'm sorry if this has already been asked

Fed up with manually managing the content of my iPod i decided to start using the sync option. I first tried to sync one playlist only. My iPod completely erased its HD. Okay no problem, that could have something to do with syncing for the first time.
I played around a bit and it seems to me things are not working properly. What I did:

- completely erased all data from iPod
- made 2 playlists. both contain 2 albums (4 different albums in total)
- synced one of the playlists
- checking... yes, they show up when i say "load ipod songs to playlist"
- Sync all playlists... (beeing asked if i really want to delete 97 files.. i guess so..??. the 2 albums i uploaded in step 3 didnt contain 97 files anyway..)...... Transferring files...
- Hmmmm all files are there... I swear, i did this on a larger scale and everything got removed... (Multiple times!)

Well gonna post this anyway because of the "delete 97 files" msg



I hope i make myself clear. it is a bit of a weird situation.`
.zolder
Next try because my reprduction in my last post differred from the actions in which i encountered problems.

- Delete everything
- Make 2 playlists with 2 albums each
- Sync all playlists (Want to delete 97 files? ehhhh yes?) Transferring
- Add a fifth album to one of the playlists
- Sync selected playlist (the playlist with album #5, obviously) (Want to delete 120 files? well if that's what it takes smile.gif *YES* Transferring files
- Okay now i should have 5 albums on my iPod.. checking. nope, i only have the 3 albums from the playlist i synced... where are the 2 others from that other playlist?!?!


hope you can do something with this info smile.gif



---> EDIT: I was thinking.. could it be so simple that i just have to select "NO" when i'm beeing asked about deleting files?! laugh.gif

okay your reply underneath explains smile.gif thanks, sorry for troubling you
Aero
QUOTE (.zolder @ Jun 9 2004, 12:16 PM)
Hi again! smile.gif I'm sorry if this has already been asked

Fed up with manually managing the content of my iPod i decided to start using the sync option. I first tried to sync one playlist only. My iPod completely erased its HD. Okay no problem, that could have something to do with syncing for the first time.
I played around a bit and it seems to me things are not working properly. What I did:

- completely erased all data from iPod
- made 2 playlists. both contain 2 albums (4 different albums in total)
- synced one of the playlists
- checking... yes, they show up when i say "load ipod songs to playlist"
- Sync all playlists... (beeing asked if i really want to delete 97 files.. i guess so..??. the 2 albums i uploaded in step 3 didnt contain 97 files anyway..)...... Transferring files...
- Hmmmm all files are there... I swear, i did this on a larger scale and everything got removed... (Multiple times!)

Well gonna post this anyway because of the "delete 97 files" msg

I definitely need to make users sign an informed consent disclaimer before allowing them to sync... smile.gif


Sync means "make the iPod match what is being synced", which means copying and deleting files from the iPod. In your case, you synced a single playlist, which means that it (correctly) deleted everything on your iPod that wasn't in that playlist. Don't worry - nobody seems to understand how sync works, but it really isn't that complicated.

When you got the "97 files" message, it meant that there were 97 songs on your iPod that didn't match the current playlist, and were about to be deleted.

Basically, I would recommend avoiding sync unless you really understand what it does (in the next version, I'm going to disable sync by default and make the user go to the preferences to enable it). Just use send playlist to copy files to the iPod and Delete Selected files when you want to clean things up.
.zolder
thanks for explaining smile.gif consider copying your reply into a txt file in the zip or something. i have a feeling i won't be the last to ask.
Now you explained, i totally see what's going on smile.gif
Lew_Zealand
QUOTE (Aero @ Jun 9 2004, 11:27 AM)
I definitely need to make users sign an informed consent disclaimer before allowing them to sync... smile.gif

Again, I suggest the word "replace" carries more of a connotation that something is going to dissappear before your new files are added, over the word "sync".
Aero
QUOTE (Lew_Zealand @ Jun 9 2004, 12:47 PM)
Again, I suggest the word "replace" carries more of a connotation that something is going to dissappear before your new files are added, over the word "sync".

Except that it really is a sync(hronization) of one or more playlists and the iPod. Maybe "replace" is more accessible term, though.

I'm about ready to post 0.8.1, which might fix SNAG's problem and also disables sync by default. In order to use it, you have to read and agree to a fairly lengthy message which explains sync. Hopefully that will either inform users or steer them toward Send, instead.
Otto42
Sync is the same term iTunes uses and it does the exact same thing. I don't really see the problem here.. If you sync the iPod to something, you make the iPod contain that something and nothing else. Seems straightforward enough to me.
rexy
Another great release, Aero! I'm really enjoying the alternative tags feature.
One thing, though, I looked at the new pod.h and I didn't notice anything to do with the progress window... Maybe you accidently didn't include the latest version of pod.h...
QUOTE
Finally, the Pod interface was updated with new functions and arguments to control whether the progress dialogs will be shown.
Aero
QUOTE (rexy @ Jun 9 2004, 09:56 PM)
Another great release, Aero! I'm really enjoying the alternative tags feature.
One thing, though, I looked at the new pod.h and I didn't notice anything to do with the progress window... Maybe you accidently didn't include the latest version of pod.h...

Thanks!

Are you sure you have the latest pod.h from foo_pod 0.8?

virtual int sendHandleListToIPod(const metadb_handle_list &handleList, const bool showProgress = false) = 0;

and so on and so forth.
rexy
Oh. Sorry about that, I wasn't looking well enough... I just scanned through looking for new methods and/or attributes. Thanks for pointing that one out. It's a great addition... but it's not quite what I looked forward for... I was hoping for something more flexible. That is, I wanted to be able to bring it up and update it regardless of the existing functionalities. So, for example, I could use it for things such as my Rainlendar syncer which actually only uses the getIPodRoot method and from there simply employs file streams. I just wanted a progress window to match foo_pod.
Aero
Version 0.8.1 is now available.

Not much new in this version, but as I mentioned earlier, the sync features are now disabled by default, since they are often understood. To enable sync, go to the Preferences dialog and check the Enable Sync checkbox.

Also, I removed some unnecessary warning messages when the iPod is not found, which should help with the problem SNAG reported.


From the Readme:
CODE
Version 0.8.1 - June 10, 2004
*  Sync Current Playlist and Sync All Playlists are now disabled by default.  In order to use them,
  you must go to the Preferences and check the Enable Sync checkbox.  Doing this will present a
  dialog that explains what sync is and what sync does.

*  Removed an unnecessarily verbose warning when foo_pod was unable to find an iPod.
Aero
QUOTE (rexy @ Jun 10 2004, 12:10 AM)
Oh. Sorry about that, I wasn't looking well enough... I just scanned through looking for new methods and/or attributes. Thanks for pointing that one out. It's a great addition... but it's not quite what I looked forward for... I was hoping for something more flexible. That is, I wanted to be able to bring it up and update it regardless of the existing functionalities. So, for example, I could use it for things such as my Rainlendar syncer which actually only uses the getIPodRoot method and from there simply employs file streams. I just wanted a progress window to match foo_pod.

I'm actually just using Microsoft's IProgressDialog class. It is very easy to use and, while it has its quirks, it works well enough.
SNAG
QUOTE (Aero @ Jun 9 2004, 10:37 PM)
Version 0.8.1 is now available.

Not much new in this version, but as I mentioned earlier, the sync features are now disabled by default, since they are often understood.  To enable sync, go to the Preferences dialog and check the Enable Sync checkbox. 

Also, I removed some unnecessary warning messages when the iPod is not found, which should help with the problem SNAG reported.


From the Readme:
CODE
Version 0.8.1 - June 10, 2004
*  Sync Current Playlist and Sync All Playlists are now disabled by default.  In order to use them,
  you must go to the Preferences and check the Enable Sync checkbox.  Doing this will present a
  dialog that explains what sync is and what sync does.

*  Removed an unnecessarily verbose warning when foo_pod was unable to find an iPod.

When it's docked in, there's a checkmark, and a "OK to disconnect" text.

Anyway, my problem has been solved in 0.8.1... Cool!

EDIT: Not sure what happened... but 0.8.1 corrupted my DB file. Had to do a repair. smile.gif I did a repair, and tried again, but it was OK...

Shall try to replicate the problem again (or was it a one time freaky affair?)
ndrake
The progress on this plugin is fantastic, how did I ever use my ipod before it??

I must be missing something. I just updated from 0.6x to the latest, and now everytime I start foobar I get an error message popping up in the console that ipodService is not available. That's because I don't have it installed. Can there be an option for foo_pod to not check for ipodservice, and just not use it, so that I don't have to close that message window every time I start the program? Sure I'm not the only one who can live without the ability to change the name of my ipod. smile.gif I was certain there used to be an option to disable use of ipodservice, but I can't find anything to that effect now.

Thanks for the plugin.
Aero
QUOTE (ndrake @ Jun 10 2004, 11:03 AM)
The progress on this plugin is fantastic, how did I ever use my ipod before it??

I must be missing something.  I just updated from 0.6x to the latest, and now everytime I start foobar I get an error message popping up in the console that ipodService is not available.  That's because I don't have it installed.  Can there be an option for foo_pod to not check for ipodservice, and just not use it, so that I don't have to close that message window every time I start the program? Sure I'm not the only one who can live without the ability to change the name of my ipod. smile.gif I was certain there used to be an option to disable use of ipodservice, but I can't find anything to that effect now. 

Thanks for the plugin.

Thanks!

Yes, the iPodService warning is a mistake. I will remove the warning in the next version, although one workaround for now is to go to the Foobar console, then the Options button, and uncheck "Popup on Warnings".

FYI, there are 3 levels of severity when it comes to the Foobar console: info, warning, and error. Errors always causes the console to be shown, Warnings are optional, and Info never makes it pop up. My mistake was that the iPodService message was a warning, when it should have been an info (since as you pointed out, it is perfectly acceptable to run foo_pod without have the iPodService installed).
ndrake
great, thank you!! I can live with it for now until the next version is released, otherwise I'll forget I changed the warning setting and I like to get some of the popups (like mpeg re-sync, I don't know if that is a warning or error).
Ralluph
I think I found a small bug on the foo_pod preferences screen. On this screen there is a white border around the active pane and the active tab. This happens only when I select foo_pod in the tree on the left, all the other menus appear without this border.
Screenshot:

I'm running foobar 0.8.2 with foo_pod and foo_ui_columns on WinXP Pro. I removed foo_ui_columns and this doesn't fix the problem, so foo_ui_columns seems to have nothing to do with it.
Aero
QUOTE (Ralluph @ Jun 13 2004, 02:41 AM)
I think I found a small bug on the foo_pod preferences screen. On this screen there is a white border around the active pane and the active tab. This happens only when I select foo_pod in the tree on the left, all the other menus appear without this border.

Thanks for the bug report! I have fixed this and it will be in the next release.
SNAG
Strangely enough... the "Cannot Find an iPod" problem still exists in 0.8.1. Only thing is that it's a harmless message right now (it will not hang foobar or anything, and it's only visible when the console is enabled.)

CODE
INFO (foo_pod) : Couldn't find an iPod
INFO (foo_pod) : Couldn't find an iPod
INFO (foo_pod) : Couldn't find an iPod


But oh well. If it doesn't crash it, it's not really a problem...
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2009 Invision Power Services, Inc.