QUOTE (SNAG @ Jun 25 2004, 06:00 AM)
Wil it be dependent on the program used to transfer the songs in? (ie, iTunes = Sound Check, foobar = RG)
Yes.
The soundcheck value, as far as the iPod is concerned, is simply a number from 0 to 4,294,967,295 (possibly less

). All foo_pod does is to take the RG value in dB, perform a conversion, and stick it in right place in the iPod's database. iTunes does the same thing, except it uses the SoundCheck value calculated by iTunes' SoundCheck algorithim, whatever that is. We don't know anything about the SoundCheck algorithim, except that it a) does something similar to ReplayGain, b) is much faster, and c) seems to be a little bit less accurate (this is just my opinion from looking at the values and comparing them).
For the most part, they are nearly identical in most cases, and there's only a few cases where they vary wildly from one another. In those cases, I've personally found the RG value to "sound right" as far as it goes. iTunes' SoundCheck is usually good enough, however. Anyway, foo_pod doesn't read or know about the SoundCheck value calculated by iTunes, as far as I know. It simply reads the RG value that foobar calculates, converts it, and sticks it in the soundcheck field in the iPod.
rexy is correct, BTW. Whichever one you used to update the iPod last will be the value used. However, and this is just speculation, iTunes may not change the soundcheck field of non-modified songs on the iPod if iTunes is running in a manual sync mode. It definitely will change it in an auto-sync mode.
The simple answer to this is not to use both iTunes and foo_pod at the same time. Stick to one or the other. With the Smart Playlists now under construction, this will be simpler to do.

On the Smart Playlist topic, I've kinda got a question for all ya'll that might help me out a bit:
I've been working on implementing the Smart Playlist functionality in the iPodDB code (which is what foo_pod is using) and have hit a minor snag. See, working with smart playlists is tricky because 1st and 2nd Gen iPod's don't support live updating of playlists on the iPod itself. That is, I can make a smart playlist on a 3rd gen and not worry about figuring out which songs go into it, because the iPod will figure it out, for the most part. 1st and 2nd gen's won't do this. So I've written code which will actually evaluate the smart playlist rules and such and calculate the songs for any given smart playlist, and write them into the proper places. This way, 1st and 2nd gens will work in the same way they work with iTunes. You'll have your playlists, but those smart playlists will only change when you actually sync the ipod to the computer (foo_pod, in this case).
The problem arises from something iTunes added to version 4.5. In 4.5 they added a new type of rule, namely the playlist rule. This rule lets you base a playlist on other playlists.
Example: I have two playlists, call them Adam and Bob. I can create a new smart playlist called Carol that will have rules such that any song in both Adam and Bob will be in Carol. Or I can create rules such that any song in *either* Adam or Bob will be in Carol. Whatever, the point being that I can base a playlist upon the contents of other playlists.
Since the playlist rule type doesn't support live update on the iPod anyway, I have to calculate the playlist in advance regardless of what type of iPod you have. But this gives rise to an ordering issue.. Since it's possible to base smart playlists on other smart playlists, I can have infinite recursion.. Adam depends on Bob, while Bob depends on Adam. There's no real simple way to detect this sort of problem. I can use flags to find out when it occurs, but the only graceful solution here is to stop processing and not populate the playlists in this case. I can have it return some kind of error, I guess, that foo_pod can read to can pop up a dialog telling you that you have an loop defined, but it won't be able to give much more info than that.
The question is, should I have it do backwards population of playlists and detect this looping error, or should I skip supporting the playlist rule entirely? The playlist rule is less than useful for 3rd gen owners, since it breaks live update (one of the nicer features of smart playlists), but 1st and 2nd gen owners don't have live update functionality on the iPod anyway and might feel differently about the matter.
The upside to supporting playlist rules is that it makes making smart playlists somewhat simpler in a lot of cases, the downside is that live update breaks and calculation of the playlist contents is going to be slow as hell for large smart playlists, increasing sync time by some large amount. Not to mention that it's going to add a quite a bit of code to the iPodDB objects (which I don't mind writing really, this is fun!

) . Or maybe there's a third option I'm overlooking. I'd like some input from the users on this one.. Do playlist-based rules matter to you?