Hydrogenaudio Forums

Hosted Forums => foobar2000 => 3rd Party Plugins - (fb2k) => Topic started by: Aero on 2004-02-29 09:26:25

Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-02-29 09:26:25
*** October 3, 2006: The latest version is 0.9.9o (http://www.loodi.com/foo_pod.zip) - read about it in this post (http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=19156&view=findpost&p=437611)***

If you are new to foo_pod, skip to the end of the forum for the latest development and discussion, as foo_pod has advanced quite a bit from this initial post...


http://www.tinkafoo.com/log/foo_pod.html (http://www.tinkafoo.com/log/foo_pod.html) is an excellent source of information about foo_pod, and might save you 8+ hours reading this forum trying to find the answer to a commonly asked foo_pod question.








foo_pod.zip (http://www.loodi.com/foo_pod.zip)

Here is my initial release of a Foobar 0.8 component to interface with an Apple iPod.  The current version (0.1) only supports read access to an iPod - namely, reading the iPod database file and building a Foobar playlist containing all of the songs contained on the iPod.

Is this useful?  Maybe...   

By building a playlist of all of the songs, you could take your iPod to a friend's computer and play the music and copy songs off of the iPod (by dragging the song from the playlist to a directory or the Desktop), without any additional software.  This component might also be useful for people with home theater PCs - leave the iPod dock on the HTPC, sync up on your main computer, and playback directly from the iPod on the HTPC.

To use foo_pod, make sure your iPod is connected to your computer and is visible as a drive in My Computer (very important), and select Components/foo_pod/Load iPod to foo_pod Playlist.  There are a few preference settings, but unless the automatic detection doesn't work, you probably won't need to change anything.

Anyway, let me know how this works out on different computers/iPods, and what features people would like to see.  I would like to get Foobar->iPod writing working, but I'm pretty happy with EphPod (http://www.ephpod.com/), so we'll see what happens with that.  Eventually, I would like to do something like Anapod (http://www.redchairsoftware.com/anapod/).  I actually have written a component that handles HTTP access/streaming and is more functional than Anapod, but I never updated it from Foobar 0.6...


Special thanks go to Otto42 and his excellent iPod classes (http://otto.homedns.org:8888/iTunes/iPodDB.zip). foo_pod relies heavily on Otto42's code, with some minor modifications (Otto42 - remind me to send some diffs).  Also, on another thread (http://www.hydrogenaudio.org/forums/index.php?showtopic=16344), Scream mentioned that there is source code available for the Winamp5 plugin.  I haven't tried that plugin yet, but I wouldn't mind taking a look at the source, especially for supporting write access (the posted link appears to be dead).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-02-29 18:20:45
Coolness!

Aero, I tried to download the modified iPodDB classes you sent me via email, but the link didn't work. If I could get ahold of the modified classes you've made, I could work in some other changes. In particular, I've modified the iPodDB classes to include support for the BPM field, and better support for the mhod types. I've also got a small start going on write support.

And frankly, I'd love to get rid of the hard coded limits on song numbers and such, and if you'd done that, it'd be awesome.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-02-29 20:26:53
Any chance you could figure out how the Ipod's soundcheck feature works and allow foobar to write replaygain info in sound check form?

Edit:  Wow this will be really handy for backing up my Ipod before i tinker with it
Title: foo_pod - Foobar2000 meets the iPod
Post by: Sid59 on 2004-02-29 20:28:56
a great step forward in bridging the iPod and foobar2000.

I can really get excited when foo_tunes / foo_pod work seemlessly to provide a similar experience to iTunes.

right now, i alternate between iTunes and foobar to play the music i want to hear. i only use iTunes when i want to configure a playlist or bump up the ratings of some songs and such.

Good JOB!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-02-29 20:42:20
Quote
Any chance you could figure out how the Ipod's soundcheck feature works and allow foobar to write replaygain info in sound check form?

Yeah, probably. I'm 95% sure that it's one of the fields in the iTunesDB. Probably one of the "unknowns" I have in there already. Then again, maybe not. In any case, I'll check it out after I get the writing capability working. With Aero's changes, it's going to be slightly easier for me to get the write stuff into the classes. I've already got his changes and mine integrated, now I'm just finishing off the write code that I started a couple weeks ago and never got back around to. I should have it working, at least partially, in a day or two.

The thing about adding write capability is that there's a *ton* of fields in the iPod that I just don't know what they mean. When I wrote all the read stuff, I simply left out a lot of those. But now trying to write them out, I don't know if I can set them to nulls or not. So I'm having to go back into the parsing code and add a lot of unknown entries just so that I can write them back out to the resulting file. It's a bit annoying, but it'll make for a lot of capability, even if you don't know what 50% of that capability actually does.

Anyway, once I have all the fields actually being read, then it should be a simple matter of looking at what iTunes says is the "gain" on the track and finding which field in the iTunesDB corresponds to that. Then one could just write the correct entry into the newly found "gain" field and voila, sound check works. Neat, huh?
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-03-01 00:11:21
Excellent excellent excellent! I am extremely happy to see this project take off.

One feature that I've been looking for in other iPod interfaces is the simple ability to sync my iPod with a directory - I wanted all of this database stuff to happen behind the scenes, so I could just synchronize quickly with my Music folder (which is updated regularly with new CDs I purchase) and be on my way.

Perhaps this brings me a step closer to such a program. I can't wait to see what you come up with! I'm tired of iTunes slowness.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-01 00:21:00
Wow.

Great Job!!!


Itunes Sound Check:
iTunes creates an entry the comments field. It has some weird character header followed a set of numbers which i guess adjusts the volume on the ipod.

I personally couldn't have written a ipod plugin, so props to you on that. But with enough work we can easily surpass Ephpod and eventually Itunes.

Some new features such as:Personally, as i have said in many other threads, Foobar needs a full database like other database mp3 software (iTunes, Media Center 9/10) before a iPod plugin can be made that rivals iTunes. But if want an Ephpod killer, you're nearly there. I would rather see foo_pod go all the way and kill the need of iTunes on my PC. Thanks, and good luck with more of this plugin development. If you need someone to help test it out. I have a 20gb 3rd gen that i can work with.

~Xecter.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-01 00:23:40
Got writing fully implemented. It's still untested though, so it's probably broken somewhere. Still needs some work in other words. At the moment, I'm trying to get it such that reading and then immediately writing the iTunesDB (going through my code of course) will produce a 100% identical file. Then I know it's working properly and everything is being parsed and recreated correctly.

And man, I looked and looked for where the gain for the soundcheck might be being stored, and I am at a total loss. It's just confusing as hell in there. Anybody know how Mac's tend to store floating point values? That might help. I know that the songs in iTunes show a value of "-4.3 dB" and similar for the "volume" when I do a Get Info, but I don't understand audio enough to understand what, exactly, that means. Somehow, iTunes has to tell the iPod how much to raise the volume for Sound Check mode. But I don't know what kind of data it would pass across to let it do that.

Furthermore, it may not be in the iTunesDB. I know for an absolute fact that when iTunes does its volume scan on an M4A/AAC file, it adds a tag to the file that seems to have something to do with the volume. Perhaps the sound check data is in the files themselves, and the iPod then uses that accordingly. If so, then it's a matter of changing the file tags appropriately. I don't know if it adds anything like that to MP3's though, I haven't checked.

Edit: Ahh.. okay, if it is in the file comment tag then it's something that will have to be added to whatever foobar plugin handles the tagging of the files themselves. Of course, that means figuring out the format of itunes weird tag.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-01 00:34:54
Otto42:

my music collection on my ipod is both mp3 and AAC.

Add a new un-soundchecked mp3 to iTunes, let it scan, then load it up in Foobar. Get Info in foobar.

For example, my new Korn CD has these things in the comment field.

Code: [Select]
iTunNORM:  000028A5 0000273A 0000730F 000069AD 000186CE 0001119E 00008000 00008000 00002710 00002710


I assume this is the soundcheck data. A way is needed to create these fields via replaygain values.

I think the reason it writes it in the comments field is because when you add new fields to ID3v2 tags it has to rewrite the file and i guess the programmers of itunes found a way around it by just writing it in the comments field.

Now, AAC files on the other hand have a fields called "ITUNNORM" followed by soundcheck stuff.

Looks something like this in foobar
Code: [Select]
%ITUNNORM% =  000002B9 0000027C 00002278 000019E0 000194BF 00018F16 00006E3D 00006E3E 00018870 00018F16



I have no idea what these numbers mean. But i know where to find them. =P
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-01 00:59:15
Quote
Add a new un-soundchecked mp3 to iTunes, let it scan, then load it up in Foobar. Get Info in foobar.

For example, my new Korn CD has these things in the comment field.

Code: [Select]
iTunNORM:  000028A5 0000273A 0000730F 000069AD 000186CE 0001119E 00008000 00008000 00002710 00002710

Okay.. That's really weird. I checked loads of my files and couldn't find that in there. So I removed one of them from the library then added it back to the library. Voila, it added that field. But the problem with that is that the file already had a COMM field in the ID3v2. Now it has 2 of them, the previous one and a new one immediately following that one. Freakin' odd, that is.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-03-01 01:58:59
I don't think the Ipod knows what a file tag is.  From what i gather its all handled by iTunes.  WHich makes sense since the Ipod needs to load as quickly as possible while using as little of its meager processor and battery as possible.  I'd guess that those tags are just for compatability with other iTunes clients and as a backup incase the user formats or otherwise loses itunes's db.

About the numbers themselves, perhaps the gain values are stored as integers?  That would make sense since I think the ipod's processor is int only.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-01 03:56:54
Quote
I don't think the Ipod knows what a file tag is.  From what i gather its all handled by iTunes.  WHich makes sense since the Ipod needs to load as quickly as possible while using as little of its meager processor and battery as possible.  I'd guess that those tags are just for compatability with other iTunes clients and as a backup incase the user formats or otherwise loses itunes's db.

About the numbers themselves, perhaps the gain values are stored as integers?  That would make sense since I think the ipod's processor is int only.

Got me man. It's quite possible it's in the iTunesDB file. There's still a heck of a lot of unknown's in the MHIT records. Could easily be one of them.



In any case, I'm done with the writing portion of the classes. They work. I've gotten them to the point where I can feed an iTunes created iTunesDB file from my own iPod, parse it, regenerate it from the structures in memory, and write it back out to a file, and have absolutely no differences in the resulting file from the original. Which tells me that it's correctly generating the file, more or less. Obviously, if you change the structures incorrectly, you get incorrect results, but that's not the classes fault.

Here's the new classes: http://otto.homedns.org:8888/iTunes/iPodDB.zip (http://otto.homedns.org:8888/iTunes/iPodDB.zip)

I also included the test program. It's pretty self explanatory. Feed it an iTunesDB, get back an iTunesDB.new. If iTunes originally made the thing, then the resulting iTunesDB.new should be identical, minus your changes to the objects in memory.

Also added is a whole lot of new fields, including everything in the file that didn't look like it was just null padding. Have fun.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-01 04:17:28
Im pretty sure Mike is right here. Everything on the ipod is handled via the Database. And im sure it writes to the file because sometimes things crash and burn. So its there. It doesn't really matter.


So we found the SoundCheck thing on the actual files. Thats a start, gives Otto here something to tinker with. =P

Also the iPod is int only (thats why we'll never see APE support on it, or any of those fancy codecs), but that doesn't mean the SoundCheck has to be. iTunes does all the scanning and voluming changing before hand, and simply writes a volume delta to the database.....which leads me to the next point....

Otto did u find where the database has the soundcheck stuff?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-01 04:47:32
Quote
Otto did u find where the database has the soundcheck stuff?

There's 16 unknown fields in the MHIT right now (The MHIT is what describes a "song" to the iPod). And it could only be part of those fields. And I don't know the exact format of what I'm looking for. And I don't know what value it would be even if I knew the format it was in.

So, gimme some time.

Edit: The field in the MHIT designated "unk3" in my iPodDB classes seems to correspond to the first 4 bytes in that iTunNORM comment that is added to the song's tags.

Example:
The file I tested got this comment added to it:
iTunNORM 000016A2 000015EB 00006656 0000719A 0001D4D7 0001D4D7 00008000 00008000 00004E20 00004E20

The unk3 field in the iTunesDB for that particular song's MHIT entry has "00 00 16 A2" in it, after the bytes are reversed (everything in the file gets byte reversed like this, it's not unusual).

So if you can tell me how 000016A2 corresponds to that file's Get Info volume of -7.6dB, then we're getting somewhere.

Edit2: Confirmed! Did the same thing with another file.
iTunNORM 00000BF7 00000BD8 00002080 000024DA 00015FBE 00015FBE 000078E9 00007A33 000222E0 000222E0

Synched with the iPod. unk3 now contains "00 00 0B F7" after byte reversal. Get Info shows a -4.9dB Volume on this one.

None of the other stuff in that iTunNORM can seemingly be found anywhere in the file where it would make any sense. So if that iTunNORM is related to the Sound Check, it seems as if only the first four bytes are necessary. Maybe that's the amount that it pumps up the volume in some way? I could try setting unk3 really high for a song and seeing if the iPod plays it back super loud... Still, that only tells us what to change, not how much to change it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-03-01 05:31:35
Great work.  I'll also start looking through the db, but I think you're about a million times more likely to understand this then me
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-01 05:39:55
That is definitely it. When I changed that particular unk3 field from 0x0BF7 to 0x7BF7, the song got a *lot* quieter when the sound check was on. I'm going to play around with it and see what I can find, but that's definitely where the trick is.

I'll probably rename unk3 to something else once it's worked out what the field represents. I can't think of why it would get quieter as the value gets larger. And I tried to avoid going above 0x8000 thinking it might be a signed value. I'll mess around with it some more.

Still, if anybody knows ReplayGain really well, it would help if you could drop in your input on how much volume equates to what sort of change.. We're going to need some way of calibrating this to determine how much to change it for what gain value needs to be applied. I don't grasp audio and gain well enough to really know what the hell I'm doing here.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rufu on 2004-03-01 09:24:39
Good work so far!

I know you've already found the soundcheck info in iTunesDB, but I'll post this anyway. 

http://www.ringom.no/espen/ipod/ (http://www.ringom.no/espen/ipod/)

This guy has come up with a untility for adjusting these fields.

Hope this is of some help.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-01 16:59:47
Quote
Good work so far!

I know you've already found the soundcheck info in iTunesDB, but I'll post this anyway. 

http://www.ringom.no/espen/ipod/ (http://www.ringom.no/espen/ipod/)

This guy has come up with a untility for adjusting these fields.

Hope this is of some help.

Actually, I've seen that utility before. He's not adjusting the Sound Check field. He's adjusting the Volume Adjustment field. Kinda hard to explain the difference, but here goes.

The Sound Check field, or "unk3" as it's labeled in my code at the moment, is set by iTunes as part of the volume scan.  The purpose of this field is to sorta normalize the volume across multiple songs somehow. You can't adjust this field yourself within iTunes. If you turn Sound Check on and off, you'll hear the effect that this field has turn on and off.

The Volume Adjustment field you *can* adjust from within iTunes. If you do a Get Info on any song, there's a slider where you can manually adjust the volume of a song, on a per song basis. Basically you can add 10%, 20%, that sort of thing. Anyway, this volume change is applied whether Sound Check is turned on or not. The purpose is to boost the volume above normal volume manually. This field is labeled "volume" in my code at the moment.

Two separate fields. One is activated by sound check and has some weird scale that I haven't worked out yet. The other is global and always on and has a scale from -100 to 100 or something like that.

Obviously, we'd like to use the right field for the right purpose.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-03-01 18:55:44
Here's another feature request:

My music collection has APEv2 and ID3v1 tags, but the iPod only understands ID3v1. However, it seems that when foo_pod reads from the iPod, the APEv2 tags are no longer either there or recognized.

Does iTunes really remove APE tags when copying files to the iPod? If so, it is possible to support keeping these tags when using foo_pod to write files to the iPod (in the near future, hopefully).

Thanks for a great component!
Title: foo_pod - Foobar2000 meets the iPod
Post by: kode54 on 2004-03-01 18:59:15
iPod/iTunes supports ID3v2, and apparently also supports UTF-16 encoded text.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-01 19:24:50
iTunes reads my ID3v2 tags perfectly fine.

Personally, the main reason i want a Database/iPod plugin for Foobar so i can finally use my player with APEv2 tags rather than crappy id3v2.

Otto:
Nice to hear that you have made some progress.

I will be watching this development very closely, and try to help as much as possible.

Keep up the good work Otto!
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-03-01 19:32:52
I meant out of ID3v1 and APEv2 (the two formats I use), iPod only reads ID3v1
Title: foo_pod - Foobar2000 meets the iPod
Post by: kode54 on 2004-03-01 19:45:32
Yes, I know.

I thought the iPod handled all metadata through its internal database, so which tags are on the files should not matter, unless you're going to erase your local copies and import everything back from the player at a later time.
Title: foo_pod - Foobar2000 meets the iPod
Post by: danZ on 2004-03-01 20:20:00
Quote
I meant out of ID3v1 and APEv2 (the two formats I use), iPod only reads ID3v1

I don't think the iPod using any tags and relies on its database for this information.  When I first got my iPod I noticed that I got different results with different applications (XPlay, ephPod, iTunes) so I think it is up to the PC (mac) side application to do whatever it wants as long as it builds a valid iPod database to put on the device.

I would think the foo_pod will fill in the database by asking foobar for particular meta_data and won't care where the data originated (id3v1,v2,etc.)

Correct me if I'm wrong, Aero.

My questions about foo_pod are how you plan to handle syncing the iPod once write is added to the code base.

Will it be realtime as you add/remove songs to the foo_pod playlist, on demand by a context menu or main menu choice, or something else.  Is on the fly possible or does the database have to be entirely rebuilt for every change and then entirely copied to the iPod?

Anyway, if I can get songs on/off my iPod without all the other applications I'll be more then happy.

Thanks for the efforts so far.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-01 21:13:08
The iPod doesn't understand any tags whatsoever. Not ID3, not APE, nothing. All of the data the iPod knows is contained within the iTunesDB file.

iTunes and other programs build that iTunesDB file by using ID3 or what have you tags. So, if foobar understands APE tags, and if foobar is building the iTunesDB... QED. You can build the iTunesDB using any info you want from any source you want. That's what the iPodDB classes I wrote do. They let you read an iTunesDB into memory, modify it, write it back out. Or, in theory, you could build the class/object structure in memory from scratch and then write that out as a valid iTunesDB file. I'm working on a way to make that *much* simpler to do, as right now building a DB from scratch is a PITA.

Addition: iTunes doesn't modify the songs before copying them to the iPod. It may modify them when you add them to the iTunes library itself or when you change the tags using iTunes, but the process of synching the iPod just copies the files over in their current state. It's the iTunesDB that controls the rest.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-03-01 22:07:31
Quote
Addition: iTunes doesn't modify the songs before copying them to the iPod. It may modify them when you add them to the iTunes library itself or when you change the tags using iTunes, but the process of synching the iPod just copies the files over in their current state. It's the iTunesDB that controls the rest.

This does not make sense. I have an MP3 file tagged with APEv2 and ID3v1. I then transfer it to the iPod using iTunes - I did not enter any tag editing facility in iTunes or anything. When I double click on the file on the iPod disk drive (Not using foo_pod), it now only has the ID3v1 tag intact.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-01 22:48:26
Quote
Quote
Addition: iTunes doesn't modify the songs before copying them to the iPod. It may modify them when you add them to the iTunes library itself or when you change the tags using iTunes, but the process of synching the iPod just copies the files over in their current state. It's the iTunesDB that controls the rest.

This does not make sense. I have an MP3 file tagged with APEv2 and ID3v1. I then transfer it to the iPod using iTunes - I did not enter any tag editing facility in iTunes or anything. When I double click on the file on the iPod disk drive (Not using foo_pod), it now only has the ID3v1 tag intact.

iTunes might strip off the APEv2 tags that it can't handle, but that doesn't really affect foo_pod or anything else (other than a good reason not to use iTunes...).

I think the point that Otto42 and others are trying to make is that the iPod itself does not read tags (of any format) - the only metadata that the iPod knows about is what is in iTunesDB.  It is the responsibility of the transfer program to build this database file, so it reads in whatever metadata that it understands from the audio files.  Since foo_pod is built on top of Foobar, it will be able to handle any metadata format that Foobar can read.  And it definitely will not modify the songs!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-01 23:10:16
This just occured to me just as i was reading about the tag handling...


I listen to alot of electronica and i have many albums that are compliations mixed by a single DJ. This makes it kinda hard to browse my ipod. If we could make custom iTunesDB, could we also make it so that the ipod browses via custom metafields?


Example:
Artist: Chicane
Title : Don't Give Up
Track: 1 of 20
Disc: 1 of 2
Album: Ministry of Sound: Trance Nation 3
Mixed by Ferry Corsten

etc.

If i load this on the Ipod, the track lists under Artist Chicane, and the album, Ministry of Sound... then Track 1, Don't give up.

I think it would be much easier for me if i could browse like this:
CD_Artist: Ferry Corsten -> Album: Ministry of Trance 3 -> Disc 1 -> Track 1, then on the now playing screen you would be a nice filled data:

Don't Give Up
Chicane
Ministry of Sound Trance Nation 3
<<bar>>

instead of the bloated set i have now....

Chicane - Don't Give Up
Ferry Corsten
Ministry of Sound ....
<< BAR >>


Just an idea. Im not sure how creative you can get in the database.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-01 23:23:13
Quote
I listen to alot of electronica and i have many albums that are compliations mixed by a single DJ. This makes it kinda hard to browse my ipod. If we could make custom iTunesDB, could we also make it so that the ipod browses via custom metafields?

One thing that I plan on adding to foo_pod is support for scripting (probably Lua). 

So you could likely script what you are looking to do.  For example, in your script, if the song is in Playlist "Electronica", then build the artist metadata from these fields.

Something like:

if pod_GetPlaylist() == "Electronica" then
  pod_SetTitleFormat("%artist% - %title%")
  pod_SetArtistFormat("%comment%")
  pod_SetAlbumFormat("%album%")
end


I'm not sure if I'm understanding exactly how you want your data formatted, and this is just an example, but hopefully you see what I'm getting at.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-01 23:48:36
Ya something like that.

I was just wondering, since everything is controlled via database, we could just relabel everything that the ipod displays.


So, instead of browsing the normal ipod way

Artist -> Album -> Track

we could do something like

CD Aritst / Artist - > Album -> Tracks


ALSO! We can finally organize the bloody lists alphabetically, not by tracknumber!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-02 00:11:05
Quote
I was just wondering, since everything is controlled via database, we could just relabel everything that the ipod displays.


So, instead of browsing the normal ipod way

Artist -> Album -> Track

we could do something like

CD Aritst / Artist - > Album -> Tracks

Well, you can't change the basic labels that the iPod displays, but if you mean Browse->Artists, then display the "artists" as CD Artist / Artists, then yes, that should be easy to do.  All the iPod is doing is going through its list of songs and building an unique list of "artists".  Since we can send whatever string we want for the "artist" (or "album", "title", "genre", "composer", etc.), it will be possible to format the data as you want - not just as how it is in the file.


Quote
ALSO! We can finally organize the bloody lists alphabetically, not by tracknumber!

I'm not sure how the iPod internally sorts the songs, but if it does order them based on tracknumber and since the tracknumber is just another bit of data that we can control, it will be possible to make fake tracknumbers so that the songs end up sorted alphabetically.

foo_pod with scripting is definitely going to be a power user/control freak's interface, while most of the other programs I have seen (iTunes, Anapod, XPlay, and to a lesser extent, Ephpod) try to make the transfer process as simple and non-customizable as possible.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-03-02 00:13:44
Man this will be so sweet.

I'm going to change the title formatting to %tracknumber%. %title%. It will be schweet.

Aero, stop wasting your time posting here and spooning danZ, and get to work on this component stat! 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-02 00:44:38
Quote
Quote
Addition: iTunes doesn't modify the songs before copying them to the iPod. It may modify them when you add them to the iTunes library itself or when you change the tags using iTunes, but the process of synching the iPod just copies the files over in their current state. It's the iTunesDB that controls the rest.

This does not make sense. I have an MP3 file tagged with APEv2 and ID3v1. I then transfer it to the iPod using iTunes - I did not enter any tag editing facility in iTunes or anything. When I double click on the file on the iPod disk drive (Not using foo_pod), it now only has the ID3v1 tag intact.

Then you've discovered something I can't reproduce.. When I was using MP3Gain, the gain got saved in an APEv2 tag, if I'm not mistaken. When I checked the files on the iPod, they never were any different from files on the main hard drive.

To the best of my knowledge, you've got to be mistaken.

Edit: iTunes may very well remove the APEv2 tag when you add it to the iTunes library though. I've not tested that.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-02 00:49:07
Quote
I'm not sure how the iPod internally sorts the songs, but if it does order them based on tracknumber and since the tracknumber is just another bit of data that we can control, it will be possible to make fake tracknumbers so that the songs end up sorted alphabetically.

Actually, if you simply leave the track numbers blank in the iTunesDB (set both tracknum and totaltracks to zero), I believe that it will sort alphabetically by track title. I may be mistaken though.

Also, it does indeed use the CD number as well when ordering. So if you have proper tracknumber and a multi CD set with the CD num as 1, 2, etc, then you get all the tracks from CD1, in order, followed by all the tracks from CD2. Very nice for multi disc sets where you care about order.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-02 03:37:51
Ya, it defaults to alphabetical when theres are no track numbers present.


You know, I wish those fat cats at Apple released a SDK for the damn ipod. That would be sick.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-02 13:55:07
Okay, I added a whole lot of stuff to the iPodDB classes. Hopefully this stuff will make it easier for one to build an iTunesDB from scratch or at least easier to modify an existing one. Bunch of functions relating to tracklists, playlists, tracks, strings in tracks, etc, etc. I've emailed them to Aero for comment and revision and such, but if anyone else wants to take a gander and offer some input, the classes are here. Same place as before: http://otto.homedns.org:8888/iTunes/iPodDB.zip (http://otto.homedns.org:8888/iTunes/iPodDB.zip) .

These classes are rapidly becoming very complicated. I think that's a good sign.

I'm going to start working on adding classes for the Play Counts file, in order to allow some kind of support for that functionality in foo_pod, and also a class to support the new On The Go playlist download feature of the latest iPod firmware (2.1).

Edit: Hmm. Well, that was surprisingly easy to add. Took about an hour, after I had some breakfast. Okay, now it supports reading the Play Counts file, and reading/writing the OTGPlaylist file. Not that you'd ever need to write an OTGPlaylist file though. Dunno if it would use it even if you did. Oh well.

I'm kinda out of stuff to add to iPodDB now.  Maybe I'll go experiment with that soundcheck field some more.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-02 18:55:48
Otto42 thats some great news. I think now that we have a SDK sorta thing going, a database GUI needs to be build just like on the ipod, which would make it extremely easy to load stuff on the ipod.

So we built a foundation, lets build a house. 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-02 20:34:12
Quote
Otto42 thats some great news. I think now that we have a SDK sorta thing going, a database GUI needs to be build just like on the ipod, which would make it extremely easy to load stuff on the ipod.

So we built a foundation, lets build a house. 

Well, possibly the easiest metaphor is the one of playlists. It's a big list of tracks. The iPod makes this into kind of an extreme case, as every song on the iPod *must* be in a playlist, and to accomplish this, it makes one default "hidden" playlist which contains every single track in the track list. Any playlists you add yourself come after this one.

So it'd be possible to make a playlist called "iPod", for example, and when you synced, everything in that playlist would be sent to the iPod. If there was some way to have playlists contain other playlists, this could be used to put other playlists on the iPod. Or something. I don't fully know the extent of foobar's metaphors and structures in this regard, so I'm not really qualified to talk about it. I tried to read the foobar SDK, but it gave me a headache.

In any case, I'm going to try to decipher smart playlists on the iTunes/iPod now. With that, maybe some method of scripting that foobar has for building automatic playlists (does it have such a thing?) can be adapted to produce smart playlists that actually work on the iPod as well. And it'll give me something that'll take a few days to figure out.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-03-03 00:38:58
Ya i understand the ipod playlist action. But it still works from a database, and works best with iTunes. iTunes is entirely a databased driven program. I am interested in this kind of implementation for both the ipod plugin and Foobar. Plus, it would also be nice too see who what would browsing would be like on the ipod before loading up like 18 gigs worth of songs; you know, making sure all the tags are consistent. Cuz it seperates very distinctly, like DJ Tiesto, and DJ Tiësto are different artists.

=/
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-03 01:23:39
Quote
Ya i understand the ipod playlist action. But it still works from a database, and works best with iTunes. iTunes is entirely a databased driven program. I am interested in this kind of implementation for both the ipod plugin and Foobar. Plus, it would also be nice too see who what would browsing would be like on the ipod before loading up like 18 gigs worth of songs; you know, making sure all the tags are consistent. Cuz it seperates very distinctly, like DJ Tiesto, and DJ Tiësto are different artists.

I doubt that foo_pod is ever going to be a full featured as iTunes.  Ultimately, it will probably just be an easy way to sync a playlist, and maybe allow for some scripting control of the process. 

If you need to review your music tags before syncing, you might want to consider the quite excellent ID3-TagIt (http://www.id3-tagit.de/english/index.htm).  Otherwise, Foobar's playlist display and MassTagger are pretty good as well.
Title: foo_pod - Foobar2000 meets the iPod
Post by: gandalf44 on 2004-03-03 02:26:51
So far the best part about foo_pod is simply the fact that it allows me to convert all my iTunes Music Store purchases to flac, mp3, etc.  Before, I had to burn a CD-RW of my purchases within iTunes, then rip to flac or whatever.  Now I can just use the diskwriter......extremely cool......
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-03 17:13:07
Got the barest beginnings of smart playlist support in there. It can read smart playlists into memory and parse them, but I still don't know what half of the values in there mean. But that's just a matter of trial and error with iTunes. It can't write changes to the thing yet though, because I haven't done enough testing to start that portion of it.

But at least it'll be able to read the rules for creating smart playlists. Whether or not that can be translated into something foobar can use is another matter.

Got more smartlist stuff added. What a major PITA smart playlists are. Very powerful, that much I can see, but still, yikes.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-03 19:12:13
Quote
So far the best part about foo_pod is simply the fact that it allows me to convert all my iTunes Music Store purchases to flac, mp3, etc.  Before, I had to burn a CD-RW of my purchases within iTunes, then rip to flac or whatever.  Now I can just use the diskwriter......extremely cool......

Hey, that's a really good idea!  I hadn't thought of using Diskwriter - in fact, I recently transcoded some .m4p files myself, but I played them in iTunes and captured the audio live from the mixer.  You made my day knowing that I played a tiny little part in sticking it to The Man (http://www.riaa.org)! 


Quick status update on foo_pod:  Otto42 and I (mostly Otto42) have been working hard at getting the iPodDB library complete and ready to use.  Last night, I was able to add a song to the database, write it out, and read it back in again.  So basically, I have everything I need to be able to transfer a playlist from Foobar2000 to the iPod.  Hopefully I can have it ready for widespread testing within a day or two.,
Title: foo_pod - Foobar2000 meets the iPod
Post by: gandalf44 on 2004-03-04 02:09:41
I was curious about something......how is foo_pod actually able to play the iTunes Music store m4p files?  I thought that's why you need the iTunes applications, because you were allowed up to 3 computers (or 3 different instances of iTunes app on different machines) to play the files?

Not that I am complaining, for I am thrilled that I can use my purchased music in something else besides iTunes, especially for transcoding thru diskwriter (and eventually writing back to to Ipod). 

I was just curious how it works....
Title: foo_pod - Foobar2000 meets the iPod
Post by: kode54 on 2004-03-04 02:23:45
DRM support was added to MP4FF some time before the 0.8 release. foo_input_std will decode M4P files on the system they were licensed for.
Title: foo_pod - Foobar2000 meets the iPod
Post by: gandalf44 on 2004-03-04 02:47:57
Ahhh....I see.  Without telling me to look at the source code :-D, can you explain in layman's terms how that was accomplished?  Does foo_input_std look at the actual M4P file? 

If you know of a pointer where this has alreadt been explained let me know....just curious.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-04 04:10:21
Quote
Ahhh....I see.  Without telling me to look at the source code :-D, can you explain in layman's terms how that was accomplished?  Does foo_input_std look at the actual M4P file? 

If you know of a pointer where this has alreadt been explained let me know....just curious.

I explained how it could be done somewhere around here, but I can't find the post.

Short version:
- The M4P files are encrypted. To decrypt them, you need the key.
- iTunes gets the key when it "authorizes" and stores it in a file on the hard drive.
- But iTunes encrypts that file using info already on your machine, like the Windows Product Key and such.
- But DVD-Jon (the norweigan hacker who cracked CSS and got sued for it) also worked out how to decrypt that file and get the key and released how to do it as open source.
- And now several programs, including foobar, realplayer 10, etc... can get that key directly from iTunes storage location and decrypt the file and play it, and some can even create an unencrypted MP4/M4A from it (look on Google for a program called M4P2MP4.EXE... I'd post a direct link or link to more info, but doing so would violate rule 9 of these forums).
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-03-06 05:05:36
Any progress on the Soundcheck/RG implimentation? 

Also, what are you looking at the database with?  My hexeditor doesn't seem to make much sense of it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-06 06:16:57
Quote
Any progress on the Soundcheck/RG implimentation?

Haven't had the time to look seriously at it. Understand that I'm currently in the process of getting a new job, getting a new apartment, planning the move, and I'm also taking a 10 day vacation at the beach this next week. Been busy.

Quote
Also, what are you looking at the database with?  My hexeditor doesn't seem to make much sense of it.

Generally, I look at it with a hex editor. Of course, it's a lot like looking at the Matrix... I've gotten to where I don't even see the hex anymore...

Start here if you want to understand the format of the file: http://otto.homedns.org:8888/itunes/iTunesDB.html (http://otto.homedns.org:8888/itunes/iTunesDB.html) . However, my entire site will go down for at least 3 weeks beginning on the 11th, so I'd check it out soon and possibly make a copy of anything you want to keep.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-08 11:07:27
Another quick status update:  tonight, I was able to transfer a complete Foobar playlist of songs to my iPod.  Currently, the sync is really just a replace - so there is still work to be done, but the hardest part is already implemented.

On the first major test, I was able to transfer 501 songs (2.45GB) in 224 seconds.  That is approximately 11.2MB/sec, which is phenomenal since the same machine only transfers at  9-9.5MB/sec with EphPod.      The final product will be slower, since it will need to detect duplicate songs and everything else that sync'ing implies, but I was really impressed with this first trial.

Next up will be to add code to detect duplicate songs, as well as the ability to delete files from the iPod when they aren't in the current playlist in Foobar.  I am also considering a better way to transfer files from the iPod, and organizing them into a directory tree.  Then I'll add Lua scripting support, along with some more unusual ideas I have been coming up with.  Like an iPod to iPod sync - this would be a quick way to duplicate one iPod to another, or copy missing files so that both iPods would have the same set of songs.
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-03-08 12:29:28
Wow, this is going to be a great plugin! 
I am using EphPod at the moment, but I will absolutely switch to foo_pod when its out...

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: danZ on 2004-03-08 17:46:15
Quote
Then I'll add Lua scripting support, along with some more unusual ideas I have been coming up with.  Like an iPod to iPod sync - this would be a quick way to duplicate one iPod to another, or copy missing files so that both iPods would have the same set of songs.

I guess when you get the big bucks for doing foobar components you can afford to have 2 iPods

Seriously, though, my plugin uses Lua and so do a couple others.  I compile Lua into my component but I'm not sure about the other ones.  I wonder if PP would consider adding the latest version of lua  to the mainline release so that all of the components (and the core code if he's interested) could use the same, standard, lua scripting code and interface.  And/or we should all try to use the latest version compiled into a shared DLL since it appears the dlls have to be in the foobar folder vs. the components folder (maybe there is a way around that?).  I would have to upgrade my component to lua 5.0 but that shouldn't be a huge problem.  I could even build the dll unless you can already get the 5.0 distro in a windows DLL.

Looking forward to testing the write to iPod stuff.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-10 09:56:42
foo_pod version 0.2 (http://loodi.com/foo_pod.zip) is now available. 

This is the first version that supports writing songs to an iPod.  Write support is still a little rough in the user interface department, but I have yet to lose data or corrupt my iPod with this version, so I believe it is ready for general testing. 

Just to make sure, there is a Debug menu under the foo_pod Component menu.  If you are worried that foo_pod might mess up your iPod, select the Backup menu item before using foo_pod for the first time.  If something does happen, you can select the Restore item to recover the database file saved by Backup.


From the readme:

foo_pod is a interface between an Apple iPod and Foobar2000 version 0.8.  As of Version 0.2, foo_pod allows reading and limited writing to an iPod. 

The write support currently is append only - meaning that it will copy files to the iPod, but doesn't yet support removing files.  It also doesn't detect duplicate files yet, although one way to get around this is to read the iPod's database into Foobar using the "Load iPod Songs To..." menu item, add the new songs, select Playlist/Remove Duplicates, then transfer the playlist to the iPod using "Send Current Playlist To iPod".  foo_pod does not transfer playlist items that are from the iPod, so this should work.

In this version, there is no progress dialog or way to cancel a transfer.  Information about the transfer is written out to the Foobar2000 console upon completion.  The next version will have a progess dialog as well as a way to abort the transfer.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rufu on 2004-03-10 20:51:51
Great work, it really looks like this is moving forward.  I got the following error message when loading the iPod playlist:

Quote
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 77C43108h
Access violation, operation: read, address: 0289FE8Eh
Call path:
WinMain=>app_mainloop=>menu command: "Components/foo_pod/foo_pod:Load iPod Songs To foo_pod Playlist"
This is the first crash logged by this instance.
Code bytes (77C43108h):
77C430C8h:  24 95 F0 31 C4 77 8B FF F7 D9 FF 24 8D A0 31 C4
77C430D8h:  77 8D 49 00 8B C7 BA 03 00 00 00 83 F9 04 72 0C
77C430E8h:  83 E0 03 2B C8 FF 24 85 F8 30 C4 77 FF 24 8D F0
77C430F8h:  31 C4 77 90 08 31 C4 77 28 31 C4 77 50 31 C4 77
77C43108h:  8A 46 03 23 D1 88 47 03 4E C1 E9 02 4F 83 F9 08
77C43118h:  72 B6 FD F3 A5 FC FF 24 95 F0 31 C4 77 8D 49 00
77C43128h:  8A 46 03 23 D1 88 47 03 8A 46 02 C1 E9 02 88 47
77C43138h:  02 83 EE 02 83 EF 02 83 F9 08 72 8C FD F3 A5 FC
Stack (0012EC98h):
0012EC78h:  00B2F8C8 77FA88F0 77F521E0 0000005A
0012EC88h:  00B2D238 C0000005 00B2D214 00B2D224
0012EC98h:  0221FC74 000001B6 0268FF90 013482D5
0012ECA8h:  026908E4 0221FE2A 00680065 00000214
0012ECB8h:  0268FF90 0221F8DC 00000021 00000004
0012ECC8h:  00000000 00000002 00000000 01349121
0012ECD8h:  026908D8 00000008 00000000 01C44C84
0012ECE8h:  021ABB76 00000398 0268FCD8 00000003
0012ECF8h:  0268FF90 0268FCE8 0268FF90 0012ED5C
0012ED08h:  01356DD7 FFFFFFFF 01348847 0268FD18
0012ED18h:  00000060 021ABB76 00000000 01C27AC0
0012ED28h:  0268FCB0 00000001 00000000 00073D0A
0012ED38h:  01346222 00073D66 0012EE10 01F90020
0012ED48h:  0012EE0C 0021BAF6 00000004 021ABB76
0012ED58h:  0012EE10 0012F03C 01356CE4 FFFFFFFF
0012ED68h:  01345C67 021ABB16 01F90020 77C5ACE0
0012ED78h:  002BD750 0134BB06 01F90020 77D46AE9
0012ED88h:  01359BE0 0012F920 00010011 0134265E
0012ED98h:  0012EE3C 77D46AE9 01359BE0 00000000
0012EDA8h:  71997568 DCBAABCD 00000000 0012EE04
Registers:
EAX: 00000001, EBX: 00680065, ECX: 00680064, EDX: 00000003
ESI: 0289FE8B, EDI: 02D10945, EBP: 0012ECA0, ESP: 0012EC98
Crash location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "memcpy" (+000001F8h)

Loaded modules:
foobar2000                       loaded at 00400000h - 00451000h
ntdll                            loaded at 77F50000h - 77FF7000h
kernel32                         loaded at 77E60000h - 77F46000h
USER32                           loaded at 77D40000h - 77DCC000h
GDI32                            loaded at 77C70000h - 77CB0000h
ADVAPI32                         loaded at 77DD0000h - 77E5D000h
RPCRT4                           loaded at 78000000h - 78086000h
ole32                            loaded at 771B0000h - 772D1000h
COMCTL32                         loaded at 71950000h - 71A34000h
msvcrt                           loaded at 77C10000h - 77C63000h
SHLWAPI                          loaded at 70A70000h - 70AD5000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F5000h
SHELL32                          loaded at 773D0000h - 77BC2000h
foo_abx                          loaded at 008D0000h - 008DA000h
foo_ac3                          loaded at 008E0000h - 008F0000h
foo_albumlist                    loaded at 008F0000h - 008FA000h
foo_ape                          loaded at 00900000h - 0091F000h
foo_apl                          loaded at 00920000h - 0092A000h
foo_bitcompare                   loaded at 00930000h - 00938000h
foo_burninate                    loaded at 00940000h - 0094B000h
VERSION                          loaded at 77C00000h - 77C07000h
foo_cdda                         loaded at 00950000h - 0095E000h
foo_clienc                       loaded at 00960000h - 0096B000h
foo_console                      loaded at 00970000h - 00978000h
foo_convolve                     loaded at 00980000h - 009AB000h
foo_dbsearch                     loaded at 009B0000h - 009C6000h
foo_diskwriter                   loaded at 009D0000h - 009E2000h
WINMM                            loaded at 76B40000h - 76B6C000h
foo_dsp_crossfade                loaded at 00A70000h - 00A77000h
foo_dsp_crossfeed                loaded at 00A80000h - 00A86000h
foo_dsp_extra                    loaded at 00A90000h - 00AA5000h
foo_dsp_nogaps                   loaded at 00AB0000h - 00AB7000h
foo_dsp_pause                    loaded at 00AC0000h - 00AC7000h
foo_dsp_skip_silence             loaded at 00AD0000h - 00AD7000h
foo_dsp_soundtouch               loaded at 00AE0000h - 00AEB000h
MSVCP60                          loaded at 55900000h - 55961000h
foo_dynamics                     loaded at 00AF0000h - 00AF7000h
foo_faac                         loaded at 00B00000h - 00B33000h
foo_festalon                     loaded at 00B40000h - 00C7F000h
foo_flac                         loaded at 00C80000h - 00C96000h
foo_flaccer                      loaded at 00CA0000h - 00CB6000h
foo_freedb                       loaded at 00CC0000h - 00CEE000h
WS2_32                           loaded at 71AB0000h - 71AC4000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_history                      loaded at 00CF0000h - 00CFE000h
foo_id3v2                        loaded at 00D00000h - 00D26000h
foo_input_std                    loaded at 00D30000h - 00DC9000h
MSACM32                          loaded at 77BE0000h - 77BF4000h
foo_lame                         loaded at 00DD0000h - 00DD9000h
foo_lpac                         loaded at 00DE0000h - 00DE7000h
lpac_codec_api                   loaded at 00DF0000h - 00DFA000h
lpaccodec                        loaded at 00E00000h - 00E29000h
foo_masstag                      loaded at 01050000h - 01060000h
foo_matroska                     loaded at 01060000h - 0109F000h
foo_mod                          loaded at 010A0000h - 010A9000h
BASS                             loaded at 010B0000h - 0110A000h
foo_monkey                       loaded at 01110000h - 0112E000h
foo_mpcenc                       loaded at 01130000h - 01138000h
foo_mpeg4u                       loaded at 01140000h - 01169000h
foo_nero                         loaded at 01170000h - 01180000h
MFC42                            loaded at 73DD0000h - 73EC2000h
foo_nez                          loaded at 01180000h - 011AC000h
foo_null                         loaded at 011B0000h - 011B7000h
foo_ofr                          loaded at 011C0000h - 011EE000h
foo_oggpreview                   loaded at 01200000h - 012FD000h
foo_output_std                   loaded at 01300000h - 01309000h
foo_out_dsound_ex                loaded at 01310000h - 01319000h
DSOUND                           loaded at 51080000h - 510D6000h
foo_out_ks                       loaded at 01330000h - 0133B000h
SETUPAPI                         loaded at 76670000h - 76757000h
foo_pod                          loaded at 01340000h - 0135D000h
MSVCIRT                          loaded at 01360000h - 01370000h
foo_psf                          loaded at 01370000h - 0141B000h
foo_read_http                    loaded at 01420000h - 01429000h
foo_rgscan                       loaded at 01430000h - 0143B000h
foo_scheduler                    loaded at 01440000h - 0144C000h
foo_search_ex                    loaded at 01450000h - 01458000h
foo_shn                          loaded at 01460000h - 0146E000h
foo_shuffle                      loaded at 01570000h - 0157E000h
foo_sid                          loaded at 01580000h - 015C7000h
foo_spc                          loaded at 015D0000h - 015DF000h
foo_speex                        loaded at 015E0000h - 015F8000h
foo_stfu                         loaded at 01600000h - 01607000h
foo_tfmx                         loaded at 01610000h - 01619000h
foo_toolame                      loaded at 01620000h - 01633000h
foo_tunes                        loaded at 01640000h - 016B4000h
uxtheme                          loaded at 5AD70000h - 5ADA4000h
MSCTF                            loaded at 74720000h - 74764000h
foo_ui_std                       loaded at 01770000h - 01787000h
foo_unpack                       loaded at 01790000h - 017C1000h
OLEAUT32                         loaded at 77120000h - 771AB000h
foo_vis_manager                  loaded at 017D0000h - 017D8000h
foo_vis_simple_spectrum          loaded at 017E0000h - 017EA000h
foo_vis_vu_meter                 loaded at 017F0000h - 017F8000h
foo_vorbisenc                    loaded at 01800000h - 018FA000h
foo_wavpack                      loaded at 01900000h - 0190B000h
foo_wma                          loaded at 01910000h - 01929000h
WMVCore                          loaded at 08530000h - 0872D000h
WMASF                            loaded at 07260000h - 07299000h
foo_xa                           loaded at 01930000h - 01941000h
CLBCATQ                          loaded at 76FD0000h - 77048000h
COMRes                           loaded at 77050000h - 77115000h
appHelp                          loaded at 75F40000h - 75F5F000h
cscui                            loaded at 76620000h - 7666E000h
CSCDLL                           loaded at 76600000h - 7661B000h
mslbui                           loaded at 605D0000h - 605D8000h
imagehlp                         loaded at 76C90000h - 76CB2000h
DBGHELP                          loaded at 6D510000h - 6D58D000h

Stack dump analysis:
Address: 013482D5h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01349121h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01356DD7h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01348847h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01346222h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01356CE4h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01345C67h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 0134BB06h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 77D46AE9h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "SetCursor" (+00000000h)
Address: 01359BE0h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 0134265Eh, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 77D46AE9h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "SetCursor" (+00000000h)
Address: 01359BE0h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 71997568h, location: "COMCTL32", loaded at 71950000h - 71A34000h
Symbol: "Ordinal384" (+00022876h)
Address: 71997568h, location: "COMCTL32", loaded at 71950000h - 71A34000h
Symbol: "Ordinal384" (+00022876h)
Address: 77D43B1Fh, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 77D43B4Fh, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 77D43B33h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 77D44A0Fh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "MBToWCSEx" (+00000153h)
Address: 77D449FDh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "MBToWCSEx" (+00000141h)
Address: 77D9C3A4h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 0135742Ch, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 013573CCh, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 00440073h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 77C73187h, location: "GDI32", loaded at 77C70000h - 77CB0000h
Symbol: "ExtTextOutW" (+00000568h)
Address: 77C730C9h, location: "GDI32", loaded at 77C70000h - 77CB0000h
Symbol: "ExtTextOutW" (+000004AAh)
Address: 77CAC020h, location: "GDI32", loaded at 77C70000h - 77CB0000h
Address: 77C731C6h, location: "GDI32", loaded at 77C70000h - 77CB0000h
Symbol: "GetTextExtentPointW" (+00000000h)
Address: 77C731DDh, location: "GDI32", loaded at 77C70000h - 77CB0000h
Symbol: "GetTextExtentPointW" (+00000017h)
Address: 77D47510h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "SendMessageTimeoutW" (+000004F0h)
Address: 77D47562h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DrawTextExW" (+00000040h)
Address: 77D473FEh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "SendMessageTimeoutW" (+000003DEh)
Address: 77D48477h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetDlgItem" (+000003BBh)
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)
Address: 77F51C78h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Address: 77F58A3Ah, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+00000E8Ch)
Address: 77C2AC14h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001A9h)
Address: 77C2AC19h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001AEh)
Address: 77C33EB0h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "except_handler3" (+00000000h)
Address: 77C12048h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "__non_rtti_object::`vftable'" (+00000C60h)
Address: 0134FDB3h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 0134D95Bh, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 77D46AE9h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "SetCursor" (+00000000h)
Address: 01345074h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01359BE0h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01356A6Ah, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01344B9Ah, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01357214h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01357214h, location: "foo_pod", loaded at 01340000h - 0135D000h
Address: 01359BE0h, location: "foo_pod", loaded at 01340000h - 0135D000h

Version info:
foobar2000 v0.8
UNICODE
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-03-10 22:56:11
Quote
foo_pod version 0.2 (http://loodi.com/foo_pod.zip) is now available. 

Worked first time.  You may want to note that it requires that you put your iPod in "drive" mode via iTunes the first time before using foo_pod.

-Reardon
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-03-10 23:21:49
Quote
foo_pod version 0.2 (http://loodi.com/foo_pod.zip) is now available. 

Whoops.  Spoke to soon.  My iPod got blanked? 

I did "Load iPod songs to ... Playlist".  I added a few songs.  Then I "Sent Current Playlist to iPod".  It seemed to work.  I asked WinXP to undock the iPod (iTunes has been turned off).  It undocked properly.

When I navigated on the iPod itself, however, it was blanked completely.

I had backed up the db and just restored it.  But the restore doesn't seem to work.  It appears to have a corrupted db or something, because after undocking it freezes up for about 30 seconds.  Then it shows a blank db.

Thoughts?

-Reardon
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-10 23:30:27
Quote
Quote
foo_pod version 0.2 (http://loodi.com/foo_pod.zip) is now available. 

Whoops.  Spoke to soon.  My iPod got blanked? 

I did "Load iPod songs to ... Playlist".  I added a few songs.  Then I "Sent Current Playlist to iPod".  It seemed to work.  I asked WinXP to undock the iPod (iTunes has been turned off).  It undocked properly.

When I navigated on the iPod itself, however, it was blanked completely.

I had backed up the db and just restored it.  But the restore doesn't seem to work.  It appears to have a corrupted db or something, because after undocking it freezes up for about 30 seconds.  Then it shows a blank db.

Thoughts?

-Reardon

Sorry? 

Hopefully the backup worked, but for whatever reason, the restore didn't.  Try this:

In Windows Explorer (My Computer), go to your iPod's drive, then navigate to iPod_Control\iTunes.  There should be an iTunesDB and iTunesDB.foo_pod there - delete iTunesDB, and rename or copy iTunesDB.foo_pod to iTunesDB.  If you backed up before running foo_pod, then iTunesDB.foo_pod should be the one created by iTunes or whatever you used.
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-03-11 00:42:19
Hmm.  Its actually pretty bad.  I tried just recovering the db (as you described) but that failed.  The hard drive started clicking like it had a bad block.

So I reformatted and started over.  iTunes worked fine.  Sync'ed 12GB of music.

Tried foo_pod.  Added one track.  Updated the ipod.  When I did this WinXP started reporting USB level (same error on 1394 interface) bad block errors. (these always take the form of timeout errors followed by bad block reports).

Given this repro'd twice, and iTunes had no issues, I think there is some bad interaction between foo_pod and the device itself.  Perhaps there is some of proprietary bus sync command that gets sent via the IPodService?

EDIT: I misread the events in the eventlog.  They bad block occured earlier.  Now I can't figure out what happened.  The updates are not working, but it continues to read fine.  Each time I start iTunes it seems to undo the foo_pod changes.

I am still concerned about the bad block errors.  This may in fact just be a bad disk.

-Reardon
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-11 02:03:36
Quote
Hmm.  Its actually pretty bad.  I tried just recovering the db (as you described) but that failed.  The hard drive started clicking like it had a bad block.

So I reformatted and started over.  iTunes worked fine.  Sync'ed 12GB of music.

Tried foo_pod.  Added one track.  Updated the ipod.  When I did this WinXP started reporting USB level (same error on 1394 interface) bad block errors. (these always take the form of timeout errors followed by bad block reports).

Given this repro'd twice, and iTunes had no issues, I think there is some bad interaction between foo_pod and the device itself.  Perhaps there is some of proprietary bus sync command that gets sent via the IPodService?

EDIT: I misread the events in the eventlog.  They bad block occured earlier.  Now I can't figure out what happened.  The updates are not working, but it continues to read fine.  Each time I start iTunes it seems to undo the foo_pod changes.

I am still concerned about the bad block errors.  This may in fact just be a bad disk.

I'm sorry to hear about your iPod's drive, but I am 100% sure it wasn't (directly) caused by foo_pod.  All foo_pod is doing is copying song files to the iPod and generating the iTunesDB file, just like iTunes does.  If the iPod is still under warranty, I'd recommend sending it back ASAP.

There might be some interaction between iTunes and foo_pod that is causing the database problem, though.  Personally, I can't stand iTunes and other than trying it out a few times, I have used EphPod and now foo_pod, exclusively...I eat my own dogfood!  The problem is that the iTunesDB file format is not documented by Apple, so every 3rd party program writes the file a little differently than iTunes.

I will try syncing with iTunes tonight and see if I can reproduce the database problem.  Although if I understand iTunes correctly, it forces a sync from the tunes library to the iPod, so any songs not in the iTunes library will be deleted from the iPod.  So if you add songs from foo_pod, then sync with iTunes, iTunes will see the foo_pod songs as out of sync files and delete them.

Someone correct me if I'm not understanding iTunes correctly, but I think this is probably the problem you are experiencing.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-11 02:35:09
Quote
Although if I understand iTunes correctly, it forces a sync from the tunes library to the iPod, so any songs not in the iTunes library will be deleted from the iPod.  So if you add songs from foo_pod, then sync with iTunes, iTunes will see the foo_pod songs as out of sync files and delete them.

Someone correct me if I'm not understanding iTunes correctly, but I think this is probably the problem you are experiencing.

Yes, anything off in the f## directories that isn't what iTunes thinks is supposed to be there, assuming you're doing automatic syncing, gets zapped during the sync.

And there's nothing funky about how any program accesses the iPod. When the iPod is in drive mode (which it has to be to be able to talk to it at all), it's basically just an external drive. There's nothing special you do to talk to it. You create files on a drive letter in a certain directory. That's it. The "Do No Disconnect" shows up whenever the iPod is "mounted" as a drive, and the "Ok to Disconnect" shows up whenever it's connected to a computer but not currently "mounted". Simple as that. There's nothing special to it, and no way that iTunes can do anything special to it other than simple mounting and unmounting and writing files.

Thought for the future Aero: Add mount and unmount capabilities to foo_pod so that it mounts when you need it to do so and unmounts when you don't need it to be mounted. Just an idea. I'm not sure exactly how to do it under windows, but it'd be cool though. Would also eliminate the need for iTunes or Apple software to be installed to enable drive mode.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-11 03:07:06
Quote
Yes, anything off in the f## directories that isn't what iTunes thinks is supposed to be there, assuming you're doing automatic syncing, gets zapped during the sync.


"isn't what iTunes thinks is supposed to be there" == an MHIT entry in the iPod's iTuneDB file for which iTunes doesn't have a matching song for in its library?


Quote
Thought for the future Aero: Add mount and unmount capabilities to foo_pod so that it mounts when you need it to do so and unmounts when you don't need it to be mounted. Just an idea. I'm not sure exactly how to do it under windows, but it'd be cool though. Would also eliminate the need for iTunes or Apple software to be installed to enable drive mode.


I looked into adding unmount functionality, and it doesn't look like it be too difficult.  I want it simply because it would be cool to have a global hotkey (or multimedia key) that unmounted the iPod - I am always having to turn on my monitor just to unmount the iPod, or risk foobar'ing it up by just undocking.

I'm not sure about the drive mode, though.  My iPod has always Just Worked in drive mode, without having to make any changes in iTunes.  Plus, can't you force drive mode by holding down the Previous and Next keys?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-11 06:24:51
Quote
"isn't what iTunes thinks is supposed to be there" == an MHIT entry in the iPod's iTuneDB file for which iTunes doesn't have a matching song for in its library?


Assuming nothing has changed, then yes. However, you gotta remember that during an autosync, it's rebuilding the iTunesDB itself. So anything you added to the iPod using any other program will go away because the newly built iTunesDB won't have your songs in it, unless they're in iTunes library as well.

Essentially, it reads the useful data off the iPod (last played time, stars, playcount, otgplaylist). Then it erases the Playcounts and OTGPlaylist files. Then reads in the existing iTunesDB, and redoes all the MHIT records to correspond with the songs it thinks are supposed to be on the thing. That is, MHITs not in the iTunes library get removed, and MHITs that are in the library but not in the iTunesDB get added. Then it goes and checks every file in the f## dirs and deletes any without a matching MHIT. Any MHITs that don't have a matching file on the iPod get that file copied to the right place. Finally, the playlists get erased from the iTunesDB and rebuilt entirely from iTunes list of playlists.

That's a conceptual thing though... it may do it in a different order or something, but that's the gist of it. An automatic iTunes Sync does everything it has to do to make the iPod's contents identical to the iTunes Library.

Edit: Ahh, I see what you're asking. You want to know if it'll delete something in there that the iPod doesn't know about with an MHIT entry. I'm not certain, but I think it will. It's easy to test, drop a file in the f01 directory without changing the iTunesDB, then do a sync. I think iTunes will kill it, but I'm not 100% certain on that.

Quote
I looked into adding unmount functionality, and it doesn't look like it be too difficult.  I want it simply because it would be cool to have a global hotkey (or multimedia key) that unmounted the iPod - I am always having to turn on my monitor just to unmount the iPod, or risk foobar'ing it up by just undocking.

I'm not sure about the drive mode, though.  My iPod has always Just Worked in drive mode, without having to make any changes in iTunes.  Plus, can't you force drive mode by holding down the Previous and Next keys?

Yeah, you can force drive mode, but as you can tell, the "drive mode" thing is really on the iPod firmware side of things. It goes into drive mode automatically when you connect it to a computer, regardless of what's on the computer. Unmounting it (which is the same as right clicking its drive letter and doing "Eject") will punch it back out of drive mode. Someone with iTunes or the iPod Manager software installed will get their iPod kicked back out of drive mode nearly automatically if they don't have "Enable Disk Mode" turned on. The reason you'd want a mount command is what if someone has the thing unmounted and decides to try to sync. It'd be nice to be able to mount the thing, if it's not already mounted, and sync, and then unmount again.

If I'm not mistaken, because the iPod is simply looking like an external drive, you should be able to not have any software installed (not iTunes, not the iPod Manager, nothing) and be able to hook it up and see it as a drive letter just fine. Then ejecting it will unmount it. All these software programs do is make it more seamless, in that it'll start iTunes automagically, iTunes will sync automagically, etc, etc.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-12 00:31:27
More info on SoundCheck:

Okay, I did some experimenting. Near as I can tell, the soundcheck field in the iTunesDB (which is identical to the first number in the iTunNORM comment that we've seen) is essentially telling the iPod how much to reduce the volume of the song when Sound Check is enabled. I've not seen a case where iTunes puts in a number that noticably increases the volume, and I have not tried to do so myself as of yet.

To determine the value of this field, I picked a bunch of songs in iTunes, and did a "Get Info" on them to get what that screen has as the "Volume" field. This is a number expressed in dB there. I do not exactly know what it means, but still, there's a pretty blatent relationship between this number and both the actual volume of the song and the number that iTunes puts into the soundcheck field.

The lower this number is, the louder the song is. So a "volume" of -8.6dB is an extremely loud song. Loudest I found in a quick search of my library. Songs with larger numbers are quieter. +1.5dB was the largest I found.

To show the relationship, I found the info in the soundcheck field for each song that I looked up (9 of them). Here's the results:
dB number followed by soundcheck field
+1.5 000002ca
+1.2 000002f9
+0.3 0000039d
-1.1 000002fb
-2.1 0000050b
-4.3 00000a72
-6.0 00000f65
-7.6 000016a2
-8.6 00001c75

As you can clearly see, as the volume numbers get smaller, the soundcheck field increases. Here's the same data with the hex converted to decimal:

1.5   714
1.2   761
0.3   925
-1.1   763
-2.1   1291
-4.3   2674
-6   3941
-7.6   5794
-8.6   7285

I graphed the data in excel, and while it's not enough to be sure, it looks like some kind of logarithmic expansion. I figure the weirdness around the low end is due to iTunes being funky.

Look, I'm out of my depth here. I don't know enough about what I'm doing to know what any of this means. All I really know is that if you increase the number in the sound check field, the volume on the iPod gets smaller when sound check is on. But as to correlating this to the value that MP3Gain gives you for any given file, I have no idea on what to do next. Somebody else who knows this stuff should probably take a whack at it. I'm going on vacation for 10 days now. See ya.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-03-12 07:43:19
As someone who spends way too much time trying to fit trendlines to bad lab data, I thought I'd take a look.

Heres your data with an exponential trendline:

(http://www.u.arizona.edu/~mikeg/soundcheck.PNG)

Not a great fit.

However if we graph the positive and negative gains independantly and assume a linear relationship (which would be logical given the precision available), its a nearly perfect fit, but we have too few data points to draw any conclusions.  Anyone want to try their hand at getting more?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-18 09:21:56
Version 0.3.1 (http://loodi.com/foo_pod.zip) is now available.

This version adds some good stuff, such as a smarter "Send Playlist" that detects duplicate files that are already on the iPod, an Eject iPod menu item, a "Delete All Songs" features, and progress dialogs so you can monitor and cancel lengthy operations.

This release should also improve reliability when sending songs to the iPod, and fixes the crash reported by rufu (related to smart playlists).

Upcoming versions will have a real iTunes-like sync functionality, Lua scripting, and speed improvements, as well as support for building iPod playlists.  I'm also open to feature suggestions and bug reports.  The Eject iPod should work with all iPod versions, but it has only been tested with 3rd generation iPods, so I would appreciate feedback from 1st and 2nd generation owners.

Edit - Updated to 0.3.1 after the original posting of 0.3. 

Notes from the Readme:

Version 0.3.1 - Mar 18, 2004
* Minor change from 0.3 - don't transfer file formats that the iPod can't play. 
  These are only MP3, AAC (.m4a and .m4p), and WAV.  AIFF isn't currently supported
  by foo_pod, due to a problem with Foobar's detection of AIFF.

Version 0.3 - Mar 18, 2004
* Improved reliability when writing to the iPod, hopefully reducing the
  number of things that could go wrong resulting in a loss of iPod data.
* "Send Playlist To iPod" now detects duplicate files, so sending the
  same file won't result in two copies on the iPod.
* Added an "Eject iPod", which allows you to safely remove the iPod from
  the computer.
* Added a "Delete All iPod Music" feature, which deletes all music on the
  iPod, as well as the iTunesDB file. 
* Added progress dialogs, with cancel support, to "Send Playlist" and "Delete All".
* Fixed a foo_pod crash related to smart playlists (thanks for your help, rufu).
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-03-21 16:27:26
Very good.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mixmixmix on 2004-03-22 04:17:41
working well for me; thanks HEAPS!

i don't suppose any of you have any good ideas on a skin for my ipod? getting scratched
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-22 06:57:39
Quote
working well for me; thanks HEAPS!

i don't suppose any of you have any good ideas on a skin for my ipod? getting scratched

Thanks for the report!  It was a little quiet before you and Mike G posted, so I was wondering if no one was using foo_pod, or no one was having any problems!

I have only tried one iPod skin, but I really like Speck's iPod Skin (http://www.speckproducts.com/ipodskinsnew/singleindex.htm).  The fit isn't perfect like the exo2 (http://www.iskinprotect.com/exo2.html) (or so I hear), but is cheap (3 pack of skins for $30 at Fry's) and the best feature is that the bottom is hinged so you can dock the iPod without removing the skin.  I added 3rd party belt clip (http://www.theclip.com/mall/ultraclip.asp) and a piece of clear plastic on the screen, so now the case is nearly perfect.  I have also read accounts of people of modifying the exo2 case so that the bottom part hinges like the Speck case.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mixmixmix on 2004-03-22 10:18:55
sound good...but the website wants to charge 25.95 for shipping to australia - ouch....
ill have to look into getting one here or something.

anyway i suppose this is getting a bit too offtopic so ill go play with foo_pod some more

Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-03-22 15:38:54
Cool pugin, I've been using it for a few days now with no problems.

I hope someone works out how to convert replaygain info into soundcheck info.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-22 20:13:47
Quote
As someone who spends way too much time trying to fit trendlines to bad lab data, I thought I'd take a look.

Heres your data with an exponential trendline:

(http://www.u.arizona.edu/~mikeg/soundcheck.PNG)

Not a great fit.

However if we graph the positive and negative gains independantly and assume a linear relationship (which would be logical given the precision available), its a nearly perfect fit, but we have too few data points to draw any conclusions.  Anyone want to try their hand at getting more?

Sorry it took so long to reply. Been on vacation.

I can get as many data points as you want, but it's a bit of a laborious process for each one. I'm currently moving though and won't have internet for a while, so give me a few days on it. Think weekend or so.

Anyway, looking at your graph, I'd say that the curve there is a very good fit, given the fact that iTunes is likely *rounding* the dB number that it displays on the Get Info window. I mean, I would round it if I was programming the thing.  Given this, that means that the data points can easily slide left/right on the graph a little bit.. Given that there's so much more precision in the SoundCheck field itself (ranging all the way from 0x2ca to 0x1c75, so far), then this seems somewhat more likely to me.

For starters, let's assume that the numbers are rounded to the nearest 0.1 dB. That means a 8.6 number is within 8.55 to 8.64. Now it seems like the curve you drew hits every single one of the data points, except for the anomoly at -1.1...

Looking closer at it, you might be right about the positive vs. negative info... Looking at the negatives only, it looks like a pretty good, and slightly different, curve if you assume it hits 0,0.

Edit: Just a thought, but is there any way to actually measure the sound volume using the iPod itself? Perhaps using the line output on the dock? Really, we don't have to stick to iTunes' curves and sound profiles and what have you. What we really need is to adjust the volume according to the ReplayGain data, and to do that, we really need to know the volume change that occurs due to the value in the SoundCheck field. What iTunes says the volume of the song is is irrelevant, what matters is how much the iPod changes the volume based on the data in the soundcheck field. Knowing that an iTunes volume change of -8.6dB = 1c75 is fine and dandy, if ReplayGain tels us that we need to throttle the volume down by -8.6dB, but we're then assuming that iTunes knows the iPod's sound characteristics. It'd just be nice to actually measure the blamed thing, I mean.
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-03-22 20:19:38
Been using 3.1 for several days, haven't had any further corruption problems.  Thanks for moving this thing along.

A few suggestions:
1) Rather than requiring usage of iTunes to switch the iPod to drive mode, do this yourself.  Of course I have no idea how this is done.

2) Would love to see playlist building/sync, glad to know its on your radar.

3) Perhaps the iPod playlist&db should be visible only when its connected, ala iTunes?  I haven't thought thru this long...maybe having it always viewable is a nice feature.

4) Deletion... I presume you are doing this as part of "full sync"?

5) Long term: you've done a nice job here, this could perhaps become the hub of generic device sync with profiles for iPod, Creative players, etc.

6) Sort of new to it, but curious: what will Lua support enable?

-Reardon
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-22 23:36:06
Quote
Been using 3.1 for several days, haven't had any further corruption problems.  Thanks for moving this thing along.

A few suggestions:
1) Rather than requiring usage of iTunes to switch the iPod to drive mode, do this yourself.  Of course I have no idea how this is done.

Ditto!  Actually, I have never had to use iTunes to put my iPod into drive mode, so I guess I don't really understand the problem.  If anyone knows of source code to do this or more information about how iTunes works, I would appreicate a pointer to it.


Quote
2) Would love to see playlist building/sync, glad to know its on your radar.

Yeah, this should be easy (thanks to Otto42!).  I haven't used playlists much on my iPod, so this wasn't a priority until after I got read, write, and sync working.  Basically, I expect that the Foobar created iPod playlists will take the name of the Foobar playlist, and the order of songs.  So you should be able to create as many playlists as you want, and foo_pod will be able to determine if the files already exist on the iPod and transfer them, otherwise just create and populate the playlist on the iPod.


Quote
3) Perhaps the iPod playlist&db should be visible only when its connected, ala iTunes?  I haven't thought thru this long...maybe having it always viewable is a nice feature.

It will probably be an option for the foo_pod specific playlist to open/close automatically when the iPod is present.


Quote
4) Deletion... I presume you are doing this as part of "full sync"?

I actually already have full sync working, and it is sweet.  Of course, this is coming from someone that has almost no experience with iTunes, so it probably won't be a big deal to everyone else.  I'm just doing some final testing now to make sure it is reliable (no problems so far). 

In 0.3, I added the "Delete All iPod Music" feature, so it is already possible to delete files, albeit in a rather heavy handed manner.  Playlist Sync will make file transfer/deleting practically transparent to the Foobar user.


Quote
5) Long term: you've done a nice job here, this could perhaps become the hub of generic device sync with profiles for iPod, Creative players, etc.

Start up a "Buy Aero a xxx player" collection, and I'll consider it!   

I implemented this for the iPod since:
So to add support for additional players, I would want the majority of those requirements met.


Quote
6) Sort of new to it, but curious: what will Lua support enable?

Everything!  I intend that all functions of foo_pod will be customizable via Lua scripting.  A couple of examples off the top of my head:

1. You could write a script that detects when the iPod is docked, start a sync of a playlist or directory, then eject the iPod afterwards.

2. As discussed in earlier posts, you will be able to dynamically modify the metadata as it is being put into the iTunesDB file.  So if you want the album field to show up as the artist on the iPod, you could easily do that.

3. It will make it possible to easily do smart playlists.  For example, you could automatically create playlists based on genre, or any other attribute of the songs. 

Lua is really just going to make it easy for power users to do whatever they want on the iPod, just by writing simple scripts.  It will take a little bit of work to add to foo_pod, so Lua support is probably my lowest priority right now, although when it is implemented, it will really make foo_pod a unique iPod utility.


Thanks for your comments!
Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-03-23 00:02:44
I'm not sure if this is what you mean, but to put the ipod into disk mode without itunes you can hold down menu + play/pause to reboot the ipod and then old down the skip forward and skip backwards keys as the ipod is reloading.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-23 00:23:40
Quote
I'm not sure if this is what you mean, but to put the ipod into disk mode without itunes you can hold down menu + play/pause to reboot the ipod and then old down the skip forward and skip backwards keys as the ipod is reloading.

I'm not sure, but Otto42 had some insight in an earlier post:
Quote
Yeah, you can force drive mode, but as you can tell, the "drive mode" thing is really on the iPod firmware side of things. It goes into drive mode automatically when you connect it to a computer, regardless of what's on the computer. Unmounting it (which is the same as right clicking its drive letter and doing "Eject") will punch it back out of drive mode. Someone with iTunes or the iPod Manager software installed will get their iPod kicked back out of drive mode nearly automatically if they don't have "Enable Disk Mode" turned on. The reason you'd want a mount command is what if someone has the thing unmounted and decides to try to sync. It'd be nice to be able to mount the thing, if it's not already mounted, and sync, and then unmount again.

If I'm not mistaken, because the iPod is simply looking like an external drive, you should be able to not have any software installed (not iTunes, not the iPod Manager, nothing) and be able to hook it up and see it as a drive letter just fine. Then ejecting it will unmount it. All these software programs do is make it more seamless, in that it'll start iTunes automagically, iTunes will sync automagically, etc, etc.

So I'm guessing that problems people have with the iPod not auto-mounting are due to using iTunes (without the disk mode option enabled) or the iPod Service switching the iPod out of disk mode.  Since I don't use either iTunes or the iPod Service, I never experience this problem, although if I understand Otto42 correctly, the solution is to just set Enable Disk Mode in iTunes.  Does anyone know of a reason why you would not want Enable Disk Mode enabled?
Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-03-23 00:48:27
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?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-03-23 02:18:54
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-23 02:56:27
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-23 20:39:35
Version 0.4 (http://loodi.com/foo_pod.zip) 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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-23 20:48:47
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-03-23 23:55:20
Thank you Aero. You rule my socks!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-24 00:27:34
Quote
Thank you Aero. You rule my socks!

Thanks.  It is better than smelling them!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-03-24 00:33:44
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-24 03:10:45
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: anathema on 2004-03-24 16:50:55
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rufu on 2004-03-24 16:56:26
I'm also getting a crash when accessing the preferences using foobar 0.8.1 beta 2. Will PM the log.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-24 20:13:00
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 (http://loodi.com/foo_pod_041a.zip) 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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-03-24 21:18:31
Quote
Version 0.4 (http://loodi.com/foo_pod.zip) 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
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-25 00:37:18
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! :/
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-03-26 20:33:22
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?
Title: foo_pod - Foobar2000 meets the iPod
Post by: NEMO7538 on 2004-03-26 21:29:13
Is the foo_pod source code available ?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-26 22:21:27
Version 0.4.1 (http://loodi.com/foo_pod.zip) 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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-26 22:25:38
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 (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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: NEMO7538 on 2004-03-26 23:15:27
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 (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?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-26 23:31:43
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 (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).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-03-27 01:28:45
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-03-31 07:08:56
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
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-03-31 13:25:22
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-02 16:46:14
Great plugin! 
But I really hope you add a feature to create playlists on the iPod as well. That would be the greatest...

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-02 17:16:06
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-02 17:27:31
Quote
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. . .

I almost can`t wait to check out the new version!
The default playlist creating is just what I wanted, but I guess I will check out the others methods as well.

I guess EphPod will be leaving my computer pretty soon. 

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-02 17:59:53
Is it possible to use all of foo_pod's features without first installing iTunes (to get the IpodService)?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-02 18:07:44
Quote
Is it possible to use all of foo_pod's features without first installing iTunes (to get the IpodService)?

If you don't have the iPodService installed, you can't do the following:

* Use the Mount feature (which should be ok, since the iPod should auto mount when you connect it to the computer if the service is not installed).
* Use the iPod Name, Owner's Name, and Disk Mode preference items.

Otherwise, foo_pod doesn't require iPodService or iTunes to be installed, and never will.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-03 11:50:51
Will these features be available in the future? Will foo_pod give me an error message if I don't have IpodService installed?

By the way, I'm hoping to see foo_pod 0.5 released today, as I am leaving for 2 week vacation tomorrow, and I'd like a fresh iPod to go.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-03 20:56:07
Quote
Will these features be available in the future? Will foo_pod give me an error message if I don't have IpodService installed?

No, there won't be an error message - the features that require iPodService will simply be grayed out / unavailable. 

iPodService is also packaged with the iPod Updater utility, and while that version doesn't work with foo_pod at the moment, it might be possible to avoid having to install iTunes but still be able to utilize iPodService features. 

But the main thing to remember is that the iPodService features are just icing on the cake - the core foo_pod functionality (read, send/sync, etc.) will never require iPodService.  I only have iTunes on one of my computers, and that is just to create test iTunesDB files and test out the iPodService features in foo_pod.

Quote
By the way, I'm hoping to see foo_pod 0.5 released today, as I am leaving for 2 week vacation tomorrow, and I'd like a fresh iPod to go.

No 0.5 today, although I am getting close.  I might put a preview version online so you can enjoy your vacation with playlists!     

Everything seems to working well, other than there are currently no progress dialogs in the program at all.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-03 20:59:10
Don't worry, I'll live
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-04 01:57:23
Quote
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.

Yep. Now it's on a cable modem and should be semi-always on for the forseeable future. Move is complete, as far as that goes.

What I'm saying is that the link is active again. Sorry about the inconvience.

However, there's still bugs in the code that I'm working on tracking down, and stuff I need to add to get the code up to date with what foo_pod has, so don't take anything as the latest version at the moment. Just be aware that if you want to develop something using the iPodDB code, that you're developing with something that's constantly under refinement. Aero's input on this has been invaluable in making something that works really well and is improving quite rapidly, or at least would be improving if I hadn't been on vacation for 10 days followed by a move to a new town and 10 more days of no internet access...

As for licensing, I don't much care what license it'll be under. BSD/GPL/something along those lines. Whatever is easiest. I know that foobar itself requires GPL or something for its plugins, methinks. I haven't looked into it deeply. Anyway, I consider the code there so that people can do whatever they want with it... just be kind enough to send me the changes you make so I can make it better and more useful. I've seen a lot of crappy code out there to work with the iPod's formats, and mostly it seemed to be quick hack type stuff, which is why it's so crappy. I just thought that a reasonably well designed piece of code to deal with the iPod's file formats would significantly improve the state of the software out there and maybe help give rise to something better. So I tried to make a clean object-oriented type library for it. Aero gave me a reason to continue working on it after I finished the initial functionality. So much of the code that I write in my free time goes nowhere, so it's pretty cool to have someone using something I wrote, sort of thing.

foo_pod is neat. Yes, I've finally tried it out.  Still gotta get the hang of foobar itself though. Don't have a good grip on it for anything beyond simple tasks yet.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-05 01:03:13
Just a quick note - I am pretty close to posting 0.5.  The only holdups are the progress dialogs and reardon's data loss problem (empty playlist and either no songs, or only a handful of songs).  I am experiencing the same problem as reardon, but I have been unable to narrow down the cause and the problem is fairly infrequent, so I am leaning towards releasing 0.5 with this known problem and hope that someone can find a simple test case that reproduces the bug. 

One other new feature that will interest a lot of posters is a ReplayGain -> Sound Check conversion.  I'm using Otto42's data and Mike Giacomelli's analysis (http://www.hydrogenaudio.org/forums/index.php?showtopic=19156&view=findpost&p=192903) to do the conversion.

As usual, Sound Check is completely undocumented, and as far as I know, there are no other programs that handle Sound Check besides iTunes.  But from some quick tests that I tried, it seems to be working as expected.  For example, I ReplayGain'ed two albums - Aerosmith's Honkin' On Bobo (-11.93dB...damn!) and Robert Johnson's The Complete Recordings (-4.47 dB).  Without Sound Check enabled, Bobo sounded obviously much louder at the same iPod volume.  With Sound Check enabled and my ReplayGain -> Sound Check conversion, both albums sounded to me like they were about the same apparent volume on iPod.  The conversion algorithm will only improve with more data, but I believe that it is good enough now for general testing.

Since I am fairly new to ReplayGain, I would like some feedback on how people use it.  In the conversion function, I currently search for album RG, and use that if it is available.  Otherwise I look for track RG, and if that isn't found, I disable sound check.    Is this good enough, or should I put an option in the preferences like this:

ReplayGain -> Sound Check Conversion:
(o) Disable    (*) Prefer Album Gain  (o) Prefer Track Gain

Also, would people be interested in an overall preamp volume feature in foo_pod?  It would be a slider that would boost or lower the volume for all songs, in addition to whatever Sound Check does.  I haven't tried it, but I understand that this is what EUPod does, in order to boost the volume for European volume limited iPods.


Edit:Comments are still welcomed, but I have already implemented the RG prefs and Preamp as discussed above.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ExUser on 2004-04-05 06:59:18
Quote
As for licensing, I don't much care what license it'll be under. BSD/GPL/something along those lines. Whatever is easiest. I know that foobar itself requires GPL or something for its plugins, methinks. I haven't looked into it deeply. Anyway, I consider the code there so that people can do whatever they want with it...

BSD is the "optimal" license for foobar2000 plugins and related code. It sounds most like your design motives anyhow.

BSD License (http://www.opensource.org/licenses/bsd-license.php)
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-05 07:36:21
I use ReplayGain for ALL my tracks, so beeing able to transfer them to the iPod would be great. For my sake this would be enough for me:
Quote
Search for album RG, and use that if it is available. Otherwise look for track RG, and if that isn't found, disable sound check.
An overall preamp setting would also be a nice feature. I use EUpod for that at the moment..
Please release version 0.5 soon, so we could test the new playlist feature!   

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-05 08:33:18
Quote
I use ReplayGain for ALL my tracks, so beeing able to transfer them to the iPod would be great. For my sake this would be enough for me:

I just got back from a walk, on which I had my first "real world" experience with Replay Gain/Sound Check, and all I can say is Replay Gain rulez!   

At first, I was playing around with Sound Check just to see what the difference was, and it was ok.  After awhile, I forgot that I had left Sound Check on and I was just listening to music.  By chance (shuffle on), there was a Honkin' On Bobo (-11.93dB) song followed by a Robert Johnson song (-4.47 dB).  Both were at similar, comfortable volume levels.  Then I remembered Sound Check, and nearly blew my eardrums out when I turned it off and went back to the Aerosmith song! 

So I can see why there are a lot of people who use Replay Gain, and I imagine there will be a few happy iPod/foo_pod users soon! 

Quote
An overall preamp setting would also be a nice feature. I use EUpod for that at the moment..
Please release version 0.5 soon, so we could test the new playlist feature!

I implemented it identically to iTunes (and apparently EUpod) : a -100% to 100% slider.  I have no idea what those values translate to in decibels, but it is there.


I have posted a 0.5 preview version (http://loodi.com/foo_pod_0.5_preview.zip) so people can play around with playlists, Replay Gain, and the Preamp features.  Preamp is completely untested, there are no progress dialogs, and foo_pod is nearly as likely to wipe your iPod as it is to do anything useful.

Let me know if you have any problems with blank playlists and other data loss problems, but for the preview version, unless you can reliably reproduce the steps and recreate the problem, you should just wipe the iPod (use the Delete All Songs And Playlists feature) and reload it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-05 11:52:03
Aero, thanks a lot for the preview version! 
I`m at work now, but will definately give it real test as soon as I get home. I will report back later on.

But, can I request one feature to be added?
I would really like a "Send/Sync all selected Playlists to iPod", in addition to the current choices.
In the foo_pod preferences set which playlist to sync (ex. General, Favorites, Rock), then use the menu to Send/Sync these playlists to iPod.

The reason are that I have 6 playlists in foobar2000, but only 4 or them have files compatible with the iPod. The others are FLAC files and radio streams...

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-05 14:18:27
Quote
But, can I request one feature to be added?
I would really like a "Send/Sync all selected Playlists to iPod", in addition to the current choices.

Send/Sync All is already in there!    New in 0.5.

Quote
In the foo_pod preferences set which playlist to sync (ex. General, Favorites, Rock), then use the menu to Send/Sync these playlists to iPod.

The reason are that I have 6 playlists in foobar2000, but only 4 or them have files compatible with the iPod. The others are FLAC files and radio streams...

That's not a bad idea, but foo_pod will only transfer audio files that the iPod can play (.mp3, .mp4/.m4p, WAV*), so you can  sync your other playlists without harm.  Maybe it will create a blank playlist...I don't think I have tested that, but I know it won't transfer unsupported formats.  I'm not sure about the streams, though.  I might have to add a check that only local files are transferrerd.

I was also thinking of adding an exclusion playlist option, so you could populate a playlist of songs that you do *not* want transferred to the iPod.  Prefs are getting pretty crowded...


* AIFF is also supported by the iPod, but Foobar doesn't report AIFF files as such, so foo_pod sees them as an unknown codec and doesn't send them.
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-05 15:48:00
Aero, I have some good news and some bad news! 

* The good news is that the new playlist creation and ReplayGain functions seems to work as they should.
At least when I use "Send/Sync current playlist to iPod". Great!

* The bad news is that when I use the "Send all playlists to iPod" foobar2000 hangs up totally (Not responding, have to kill it trough Task Manager). As you said it does not transfer unsupported files, but it tries to transfer my radio stream playlist files..
Quote
INFO (Foo_Pod) : iPodService is not available
INFO (CORE) : startup time: 320 ms
ERROR (Foo_Pod) : Error #2 copying 205.188.234.65:8022/ to h:
ERROR (Foo_Pod) : Error #2 copying 205.188.234.65:8020/ to h:
ERROR (Foo_Pod) : Error #2 copying 205.188.234.68:8006/ to h:
ERROR (Foo_Pod) : Error #2 copying 205.188.234.4:8028/ to h:
ERROR (Foo_Pod) : Error #2 copying 205.188.234.161:8030/ to h:
ERROR (Foo_Pod) : Error #2 copying 205.188.234.65:8018/ to h:
ERROR (Foo_Pod) : Error #2 copying 193.201.220.87:8000/ to h:
ERROR (Foo_Pod) : Error #2 copying 194.140.112.114:8000/ to h:
ERROR (Foo_Pod) : Error #2 copying 212.23.3.22:8000/ to h:
ERROR (Foo_Pod) : Error #2 copying 213.161.200.21:8100/ to h:
ERROR (Foo_Pod) : Error #2 copying 213.73.255.244:8000/ to h:
ERROR (Foo_Pod) : Error #123 copying 64.236.34.97:5190/stream/1065 to h:\iPod_Control\Music\F17\1065
ERROR (Foo_Pod) : Error #123 copying 64.236.34.97:80/stream/1065 to h:\iPod_Control\Music\F15\1065
INFO (Foo_Pod) : 0 files copied (0.00 MB) to the iPod in 0.40 seconds (0.00 MB/s)
It creates an empty playlist on my iPod, but thats all...
The sollution to create a playlist exclusion list is maybe the way to go?
If you find space for it in the preferences window! 

I really appreciate what you done with this component so far!


Edit:
I tried with a playlist with 1 FLAC file and it copied it and created the playlist, but obviously iPod crashed when I tried to play it.
Quote
INFO (Foo_Pod) : iPodService is not available
INFO (CORE) : startup time: 461 ms
INFO (Foo_Pod) : 1 file copied (22.79 MB) to the iPod in 2.51 seconds (9.07 MB/s)


Edit #2:
I just experienced foobar2000 crashes when copying files to an empty iPod!
Maybe you can reproduce this: First "Delete all iPod music and Playlists", then copy a file or playlist to the iPod. foo_pod warn you with 'Unable to read the iTunes DB file....' , click Yes, iPod hd spins up and foobar2000 exits instantly.

More info: If I use foo_pod 0.4.1 to add one (1) file to the iPod, then switch to 0.5 the same happends. But when I add 36 tracks/1 playlist with 0.4.1, then switch to 0.5 no more crashes.  Strange thing! 

Crash reproduced 3 times.
I can post the long crash log if needed!

Using Windows XP Pro and foobar2000 0.8.

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: rufu on 2004-04-05 17:54:29
I'm having problems with the 0.5 preview.  I used the "Delete All iPod Music and Playlists" then tried Sync All Playlists, and got this error message "Unable to read iTunesDB file.  If you have a new or freshly formatted iPod, this is not an error. Do you want to continue?".  I clicked Yes and which point foobar promptly crashed.  I then tried formatting my iPod using the iPod firmware updater, tried again and it still crashed.  I've tried using any of the transfer ablities of foo_pod and this happens for all of them.  Here's one of the error logs:

Quote
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 0141712Fh
Access violation, operation: read, address: 00000000h
Call path:
WinMain=>app_mainloop=>menu command: "Components/foo_pod/22| Sync Current Playlist"
This is the first crash logged by this instance.
Code bytes (0141712Fh):
014170EFh:  50 57 E8 5A E3 FF FF 8B F0 33 C0 89 45 EC 89 45
014170FFh:  F0 89 45 F4 89 45 F8 8D 44 36 02 83 C4 08 3D 00
0141710Fh:  10 00 00 77 0F 83 C0 03 24 FC E8 B2 71 00 00 89
0141711Fh:  65 10 EB 0C 50 8D 4D EC E8 B4 07 00 00 89 45 10
0141712Fh:  8A 07 8B DE 8B 75 10 C7 45 08 00 00 00 00 84 C0
0141713Fh:  74 75 85 DB 74 71 8D 4D FC 53 51 57 E8 60 FA FF
0141714Fh:  FF 83 C4 0C 85 C0 74 5F 3B C3 77 5B 03 F8 2B D8
0141715Fh:  8B 45 FC 85 C0 76 50 3D 00 00 10 00 73 49 3D 00
Stack (0012E044h):
0012E024h:  00BBD274 43000000 00000000 00000000
0012E034h:  00BBD5E8 77CD3E16 77CD3E1F 0000E4DA
0012E044h:  0141711E 02B123D8 77C2C1BB 02B56780
0012E054h:  00000000 00000000 00000000 00000000
0012E064h:  0012E074 00000000 0140274A 00000000
0012E074h:  02B123D8 0012E044 00000001 00000000
0012E084h:  FFFFFFFF 02B56780 0151CA90 00000000
0012E094h:  0012ED3C 4066E544 0000AC44 00000000
0012E0A4h:  0041D4DB 02B123D8 00000000 014202CC
0012E0B4h:  02B565C0 0000009C 0000009C 00000000
0012E0C4h:  0000008B 534D743E 01C3D82D 73AC1E32
0012E0D4h:  01C414D3 014202CC 02B568C0 0000009C
0012E0E4h:  0000009C 00000000 00000084 014202CC
0012E0F4h:  00000000 00000000 00000000 00000000
0012E104h:  00000000 014202CC 02B1A420 00000035
0012E114h:  00000035 00000000 00000024 014202CC
0012E124h:  00000000 00000000 00000000 00000000
0012E134h:  00000000 0012EC94 0141E5C3 00000020
0012E144h:  01404904 0151CA90 02B56780 0012ED3C
0012E154h:  00000000 01FCCD4C 00000001 66000000
Registers:
EAX: 0141711E, EBX: 02B56780, ECX: 00000000, EDX: 5DA70069
ESI: 00000000, EDI: 00000000, EBP: 0012E068, ESP: 0012E044
Crash location: "foo_pod", loaded at 01400000h - 01438000h

Loaded modules:
foobar2000                       loaded at 00400000h - 00451000h
ntdll                            loaded at 77CC0000h - 77D75000h
kernel32                         loaded at 77E60000h - 77F50000h
USER32                           loaded at 77D80000h - 77E11000h
GDI32                            loaded at 773E0000h - 77425000h
ole32                            loaded at 774D0000h - 7760D000h
msvcrt                           loaded at 77C10000h - 77C68000h
ADVAPI32                         loaded at 77F50000h - 77FEB000h
RPCRT4                           loaded at 77340000h - 773D1000h
COMCTL32                         loaded at 4D6C0000h - 4D7AC000h
SHLWAPI                          loaded at 772D0000h - 7731E000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F9000h
SHELL32                          loaded at 7C800000h - 7D010000h
foo_abx                          loaded at 008D0000h - 008DC000h
foo_ac3                          loaded at 008E0000h - 008F1000h
foo_albumlist                    loaded at 00900000h - 0090A000h
foo_ape                          loaded at 00910000h - 00935000h
foo_apl                          loaded at 00940000h - 0094A000h
foo_bitcompare                   loaded at 00950000h - 00958000h
foo_burninate                    loaded at 00960000h - 0096C000h
VERSION                          loaded at 77C00000h - 77C08000h
foo_cdda                         loaded at 00970000h - 0097E000h
foo_clienc                       loaded at 00980000h - 0098B000h
foo_console                      loaded at 00990000h - 00997000h
foo_convolve                     loaded at 009A0000h - 009EF000h
foo_dbsearch                     loaded at 009F0000h - 00A06000h
foo_diskwriter                   loaded at 00A10000h - 00A22000h
WINMM                            loaded at 76B40000h - 76B6D000h
foo_dsp_crossfade                loaded at 00AB0000h - 00AB7000h
foo_dsp_crossfeed                loaded at 00AC0000h - 00AC6000h
foo_dsp_extra                    loaded at 00AD0000h - 00AE5000h
foo_dsp_nogaps                   loaded at 00AF0000h - 00AF7000h
foo_dsp_pause                    loaded at 00B00000h - 00B07000h
foo_dsp_skip_silence             loaded at 00B10000h - 00B17000h
foo_dsp_soundtouch               loaded at 00B20000h - 00B2B000h
MSVCP60                          loaded at 76080000h - 760E6000h
foo_dynamics                     loaded at 00B30000h - 00B37000h
foo_faac                         loaded at 00B40000h - 00B73000h
foo_festalon                     loaded at 00B80000h - 00CBF000h
foo_flac                         loaded at 00CC0000h - 00CD6000h
foo_flaccer                      loaded at 00CE0000h - 00CF6000h
foo_freedb                       loaded at 00D00000h - 00D2E000h
WS2_32                           loaded at 71AB0000h - 71AC7000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_history                      loaded at 00D30000h - 00D3E000h
foo_id3v2                        loaded at 00D40000h - 00D6E000h
foo_input_std                    loaded at 00D70000h - 00E0F000h
MSACM32                          loaded at 77BE0000h - 77BF5000h
foo_lame                         loaded at 00E10000h - 00E19000h
foo_looks                        loaded at 00E20000h - 00E8D000h
gdiplus                          loaded at 4D120000h - 4D2C3000h
foo_lpac                         loaded at 00EA0000h - 00EA7000h
lpac_codec_api                   loaded at 00EB0000h - 00EBA000h
lpaccodec                        loaded at 00EC0000h - 00EE9000h
foo_masstag                      loaded at 01110000h - 01120000h
foo_matroska                     loaded at 01120000h - 0115F000h
foo_mod                          loaded at 01160000h - 01169000h
BASS                             loaded at 01170000h - 011CA000h
foo_monkey                       loaded at 011D0000h - 011EE000h
foo_mpcenc                       loaded at 011F0000h - 011F8000h
foo_mpeg4u                       loaded at 01200000h - 01229000h
foo_nero                         loaded at 01230000h - 01240000h
MFC42                            loaded at 73DD0000h - 73ECD000h
foo_nez                          loaded at 01240000h - 0126C000h
foo_null                         loaded at 01270000h - 01277000h
foo_ofr                          loaded at 01280000h - 012AE000h
foo_oggpreview                   loaded at 012C0000h - 013BD000h
foo_output_std                   loaded at 013C0000h - 013C9000h
foo_out_dsound_ex                loaded at 013D0000h - 013D9000h
DSOUND                           loaded at 73F10000h - 73F6A000h
foo_out_ks                       loaded at 013F0000h - 013FB000h
SETUPAPI                         loaded at 779A0000h - 77A96000h
foo_pod                          loaded at 01400000h - 01438000h
OLEAUT32                         loaded at 77120000h - 771AC000h
MSVCIRT                          loaded at 01440000h - 01451000h
foo_psf                          loaded at 01560000h - 0160B000h
foo_quicktag                     loaded at 01610000h - 01619000h
foo_read_http                    loaded at 01620000h - 01629000h
foo_rgscan                       loaded at 01630000h - 0163B000h
foo_scheduler                    loaded at 01640000h - 01652000h
foo_search_ex                    loaded at 01660000h - 01668000h
foo_shn                          loaded at 01670000h - 0167E000h
foo_shuffle                      loaded at 01680000h - 0168E000h
foo_sid                          loaded at 01690000h - 016D7000h
foo_spc                          loaded at 016E0000h - 016EF000h
foo_speex                        loaded at 016F0000h - 01708000h
foo_stfu                         loaded at 01710000h - 01717000h
foo_tfmx                         loaded at 01720000h - 01729000h
foo_toolame                      loaded at 01730000h - 01743000h
foo_ui_columns                   loaded at 01750000h - 01772000h
foo_ui_std                       loaded at 01780000h - 01797000h
foo_unpack                       loaded at 017A0000h - 017D1000h
foo_vis_manager                  loaded at 017E0000h - 017E8000h
foo_vis_simple_spectrum          loaded at 017F0000h - 017FA000h
foo_vis_vu_meter                 loaded at 01800000h - 01808000h
foo_vorbisenc                    loaded at 01810000h - 0190A000h
foo_wavpack                      loaded at 01910000h - 0191B000h
foo_wma                          loaded at 01920000h - 01939000h
WMVCore                          loaded at 01940000h - 01B49000h
wmidx                            loaded at 4DF90000h - 4DFB9000h
WMASF                            loaded at 59A10000h - 59A4B000h
msdmo                            loaded at 736B0000h - 736B7000h
WININET                          loaded at 771B0000h - 77252000h
CRYPT32                          loaded at 77B00000h - 77B95000h
MSASN1                           loaded at 77BA0000h - 77BB1000h
urlmon                           loaded at 769C0000h - 76A50000h
MPR                              loaded at 71B20000h - 71B32000h
MSVFW32                          loaded at 755B0000h - 755D1000h
WSOCK32                          loaded at 71AD0000h - 71AD9000h
DRMClien                         loaded at 01B50000h - 01B9F000h
foo_xa                           loaded at 01BB0000h - 01BC1000h
uxtheme                          loaded at 5AD70000h - 5ADA7000h
MSCTF                            loaded at 74720000h - 7476B000h
Powrprof                         loaded at 74AD0000h - 74AD7000h
CLBCATQ                          loaded at 77610000h - 776BF000h
COMRes                           loaded at 77050000h - 77115000h
msi                              loaded at 74810000h - 74A72000h
USERENV                          loaded at 76620000h - 766D2000h
xpsp2res                         loaded at 03220000h - 034AF000h
SXS                              loaded at 75E90000h - 75F3F000h
mslbui                           loaded at 605D0000h - 605D9000h
imagehlp                         loaded at 76C90000h - 76CB8000h
DBGHELP                          loaded at 5D090000h - 5D131000h

Stack dump analysis:
Address: 0141711Eh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 77C2C1BBh, location: "msvcrt", loaded at 77C10000h - 77C68000h
Symbol: "free" (+00000000h)
Address: 0140274Ah, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 0041D4DBh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 0141E5C3h, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 01404904h, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 77CD1C91h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlFreeHeap" (+00000100h)
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 019FF0E5h, location: "WMVCore", loaded at 01940000h - 01B49000h
Symbol: "WMCreateProfileManager" (+0001862Fh)
Address: 014207A0h, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 77CCE9FEh, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "NtOpenFile" (+00000000h)
Address: 77CD0DB6h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlNtStatusToDosError" (+0000002Fh)
Address: 77CD0DBBh, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlNtStatusToDosError" (+00000034h)
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 77CCF819h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "ZwQueryPortInformationProcess" (+00000068h)
Address: 014202CCh, location: "foo_pod", loaded at 01400000h - 01438000h
Address: 77E77195h, location: "kernel32", loaded at 77E60000h - 77F50000h
Symbol: "FindFirstFileExW" (+00000345h)
Address: 77CD27C6h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlAllocateHeap" (+00000386h)
Address: 77CD281Ah, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlAllocateHeap" (+000003DAh)
Address: 77CD2557h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlAllocateHeap" (+00000117h)
Address: 77DB24D2h, location: "USER32", loaded at 77D80000h - 77E11000h
Symbol: "GetClipboardOwner" (+000000F1h)
Address: 77D8AC58h, location: "USER32", loaded at 77D80000h - 77E11000h
Symbol: "IsWindowVisible" (+00000033h)
Address: 77D8AC53h, location: "USER32", loaded at 77D80000h - 77E11000h
Symbol: "IsWindowVisible" (+0000002Eh)
Address: 5AD74F4Bh, location: "uxtheme", loaded at 5AD70000h - 5ADA7000h
Symbol: "DrawThemeBackgroundEx" (+0000114Ch)
Address: 0175C662h, location: "foo_ui_columns", loaded at 01750000h - 01772000h
Address: 01766563h, location: "foo_ui_columns", loaded at 01750000h - 01772000h
Address: 77D8857Ah, location: "USER32", loaded at 77D80000h - 77E11000h
Address: 0175C662h, location: "foo_ui_columns", loaded at 01750000h - 01772000h
Address: 77D88896h, location: "USER32", loaded at 77D80000h - 77E11000h
Symbol: "GetWindowLongW" (+000000CCh)
Address: 77CD2100h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlFreeHeap" (+0000056Fh)
Address: 77CD1C91h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlFreeHeap" (+00000100h)
Address: 77CD1CA9h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "RtlFreeHeap" (+00000118h)
Address: 77DB24D2h, location: "USER32", loaded at 77D80000h - 77E11000h
Symbol: "GetClipboardOwner" (+000000F1h)
Address: 77CCF819h, location: "ntdll", loaded at 77CC0000h - 77D75000h
Symbol: "ZwQueryPortInformationProcess" (+00000068h)

Version info:
foobar2000 v0.8.1 beta 3
UNICODE


Replay gain should be good once I get to listen to it    Being able to choose which playlist to sync with the iPod would be good.  Finially, once all that is working, may be you can start thinking about Smart Playlists, though I get the feeling that they could be difficult to implement.
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-04-05 22:16:22
Feature Request:

Is there any way for you to make meta-variables available, such as sync-state, for text formatting?  I am just thinking of how to easily recreate the sync-state stuff from iTunes.  Something like %__ipod_resident%?

+Reardon
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-04-05 23:41:10
Quote
Just a quick note - I am pretty close to posting 0.5.  The only holdups are the progress dialogs and reardon's data loss problem (empty playlist and either no songs, or only a handful of songs).  I am experiencing the same problem as reardon, but I have been unable to narrow down the cause and the problem is fairly infrequent, so I am leaning towards releasing 0.5 with this known problem and hope that someone can find a simple test case that reproduces the bug. 

One other new feature that will interest a lot of posters is a ReplayGain -> Sound Check conversion.  I'm using Otto42's data and Mike Giacomelli's analysis (http://www.hydrogenaudio.org/forums/index.php?showtopic=19156&view=findpost&p=192903) to do the conversion.

As usual, Sound Check is completely undocumented, and as far as I know, there are no other programs that handle Sound Check besides iTunes.  But from some quick tests that I tried, it seems to be working as expected.  For example, I ReplayGain'ed two albums - Aerosmith's Honkin' On Bobo (-11.93dB...damn!) and Robert Johnson's The Complete Recordings (-4.47 dB).  Without Sound Check enabled, Bobo sounded obviously much louder at the same iPod volume.  With Sound Check enabled and my ReplayGain -> Sound Check conversion, both albums sounded to me like they were about the same apparent volume on iPod.  The conversion algorithm will only improve with more data, but I believe that it is good enough now for general testing.

Since I am fairly new to ReplayGain, I would like some feedback on how people use it.  In the conversion function, I currently search for album RG, and use that if it is available.  Otherwise I look for track RG, and if that isn't found, I disable sound check.    Is this good enough, or should I put an option in the preferences like this:

ReplayGain -> Sound Check Conversion:
(o) Disable    (*) Prefer Album Gain   (o) Prefer Track Gain

Also, would people be interested in an overall preamp volume feature in foo_pod?  It would be a slider that would boost or lower the volume for all songs, in addition to whatever Sound Check does.  I haven't tried it, but I understand that this is what EUPod does, in order to boost the volume for European volume limited iPods.


Edit:Comments are still welcomed, but I have already implemented the RG prefs and Preamp as discussed above.

Outstanding!  I've wanted someone to do this for ages, and been bitching about it for nearly as long

Send me whatever numbers you got, I'll throw them into excel and see if anything looks about right.  No promises though.

Also, any chance you could make a "write sound check values to text option" in your componet?  That way anyone could create values.  I have no idea how much effort that would involve, but it would be sort of cool.

Edit:  playing with the plugin now.  Is there anyway at all to see the souncheck values written by the plugin?

Edit2:  Using .5 I get a 1kb database file no matter what when i sync my playlist.  Any reason why?  All the files are on my Ipod and show up when i load the playlist into foobar off my Ipod.

I'll try .4.

Edit3:  Ah I see the problem is the ipod earased all its files.  Good thing I saved them all to disk before playing with it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-04-06 00:39:44
Heres some feedback for you:

www.u.arizona.edu/~mikeg/failure_00000003.txt
www.u.arizona.edu/~mikeg/failure_00000004.txt

Crashes every time with .5 when I try and sync my whole collection (several thousand AACs).  Smaller syncs seem to work pretty well though.  At least i can duplicate it.

Heres the playlist I tried to sync:

www.u.arizona.edu/~mikeg/ipod.fpl

Edit:  .4 seems to work fine.  Any reason I don't get the cool sync screen with .5? 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-06 04:08:18
I have posted a new 0.5 preview version (http://loodi.com/foo_pod_0.5_previewredux2.zip)  (0.5 preview redux).
Edit:Redux had a problem with Sound Check, so I updated the link to the latest version, Redux ^ 2... 

It fixes the crash that solaris, rufu, and Mike Giacomelli reported.  The cause was a typo in my replay gain code which caused a null pointer to be dereferenced.  The kicker is that it only was triggered if you tried to send/sync a song that didn't have replay album gain - and I just got done doing album gain on all of my songs, so I didn't see it.  Thanks to everyone who reported it!

I also fixed solaris' problem with syncing streaming audio URLs (foo_pod only handles local files now, so it should be safe to sync any playlist item).  I also (re)fixed the codec detection code, so foo_pod really will only transfer MP3, AAC, and WAV files now.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-06 04:15:52
Quote
Is there any way for you to make meta-variables available, such as sync-state, for text formatting?  I am just thinking of how to easily recreate the sync-state stuff from iTunes.  Something like %__ipod_resident%?

You mean write the "__ipod_resident" metadata out to the files as they are copied to the iPod?  Yeah, I can add that, but I can see how it would out of date if you copied the files from the iPod back to the computer.  This would be a good use of Lua scripting.

BTW, what is the iTunes sync-state feature?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-06 04:31:46
Quote
Also, any chance you could make a "write sound check values to text option" in your componet?  That way anyone could create values.  I have no idea how much effort that would involve, but it would be sort of cool.

Yeah, I can do that.  I was planning to do something similar (output the filename, and replay gain and sound check values in a comma delimited format) just for testing and refining the sound check algorithm.

But it is esoteric enough that I don't think it will go into a regular version of foo_pod.  I'll probably just comment it out of the regular build and supply a special version for whomever wants it.

Quote
Edit:  playing with the plugin now.  Is there anyway at all to see the souncheck values written by the plugin?

Not yet (see above).

Quote
Edit2:  Using .5 I get a 1kb database file no matter what when i sync my playlist.  Any reason why?  All the files are on my Ipod and show up when i load the playlist into foobar off my Ipod.

I'll try .4.

Edit3:  Ah I see the problem is the ipod earased all its files.  Good thing I saved them all to disk before playing with it.

Did you do a sync on a small-ish playlist?  The thing with sync is that it changes the iPod to match the playlist(s), so if you have 40GB of music on your iPod and 1 song in a Foobar playlist then do a sync, foo_pod will delete all of the music and transfer the 1 song. 

One way to avoid this is to always have the iPod (foo_pod) playlist (created by "Load iPod To ..." feature in foo_pod) open.  foo_pod sees the files already on the iPod, and is smart enough to not transfer from the iPod to the iPod, but it also won't delete the files since they are part of the sync.

Basically, sync is fairly dangerous since it is easy to end up with less than you expected.  But it is also the easiest way to avoid having old files build up on your iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-06 07:10:32
Quote
Edit:  .4 seems to work fine.  Any reason I don't get the cool sync screen with .5? 

Those are the progress dialogs that I keep complaining about.  I didn't really like how there were internally implemented in 0.4, and in the process of fixing them, I made them worse. 

But I'm glad someone appreciates my amateur animation skillz!


Edit: I forgot to mention this earlier, but I did some analysis of iTunes' Sound Check creation vs. what I am doing in foo_pod.  The results were encouraging - using the current algorithm, the difference between iTunes and foo_pod was less than 10% for the most common range of gains (meaning that what foo_pod is doing is basically correct and gives about the right volumes).  For very quiet songs (+3dB and greater), the difference was from up to 28%, so Mike G and I are currently working with some better data to improve that.
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-06 07:35:47
Bugs fixed! 
foo_pod now says "Unsupported file:" for all my radio strams and FLAC files. Then continues on with the supported files (AAC and MP3).
It creates empty playlists for the unsupported filetypes though, but that does not bother me much.
The crash problem with copying files to an empty iPod is gone as well!

Great work Aero!

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-06 08:17:57
Quote
Bugs fixed! 
foo_pod now says "Unsupported file:" for all my radio strams and FLAC files. Then continues on with the supported files (AAC and MP3).
It creates empty playlists for the unsupported filetypes though, but that does not bother me much.
The crash problem with copying files to an empty iPod is gone as well!

Great work Aero!

Hold off on those acolades for a little bit...I just realized that Sound Check is broken in Preview Redux... 

I was also going to fix your empty playlist problem, but forgot.  I fixed it in Redux ^ 2, though.

So if you were one of the handful of people that downloaded Redux, please delete it and download Preview Redux ^ 2 (http://loodi.com/foo_pod_0.5_previewredux2.zip) instead.
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-06 08:44:13
I just downloaded and tested 0.5 Preview Redux ^ 2.
Sound Check seem to be back now, at least I heard a difference in sound volume when turning the iPod`s Sound Check On/Off! 

It no longer created an empty playlist for my unsupported FLAC files, but it created an empty playlist for my radio streams.
So it seems like you partially fixed it. 

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-06 11:42:41
Just got an idea for a feature!

You know how many people complain about how the iPod uses tags to organize music, as opposed to directory structure? Well, knowing the iPod's playlists-within-playlists format, it should be trivial to emulate such a feature, right?

For every directory, make a playlist. For every directory in each directory, make another playlist in the appropriate playlist. Then put files in them, and so on. Would be cool.

Also, I'm looking forward to improved progress dialogs (I don't care much for the current animations - I prefer foobar2000's other very minimalist progress dialogs  ) and to custom TagZ formatted titles - Need tracknumbers here baby.

Woot!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-06 15:31:12
Quote
You know how many people complain about how the iPod uses tags to organize music, as opposed to directory structure? Well, knowing the iPod's playlists-within-playlists format, it should be trivial to emulate such a feature, right?

For every directory, make a playlist. For every directory in each directory, make another playlist in the appropriate playlist. Then put files in them, and so on. Would be cool.

That is a good idea and it would be nice, but I don't think it is technical possible.  For one, I don't believe that you can do playlists within playlists.  Someone correct me if I'm wrong, but from my understanding of the iTunesDB format, there is no way for a playlist to contain anything except for songs.

What I believe you could do is use one of the Main Menu Browse items (such as Composer), to fake a directory tree structure.

For example, if you had the following structure, you could get it to show up on the iPod by using the Composer field, shown in parenthesis:
Code: [Select]
c:
  \mp3  (c)
    song1.mp3     (mp3)
    song2.mp3     (mp3)
     \album1          (mp3)
       song3.mp3  (album1)
       song4.mp3  (album1)
     \album2          (mp3)
       song5.mp3  (album2)


Which should appear on the iPod as:
Code: [Select]
mp3
  ----->
            song1
            song2
            album1/   (slash added to make it clear that it is a dir)
            album2/

Hmm...I'm just making this up as I type, but it is crazy enough that it just might work!  I'll look into implementing it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-04-06 23:54:32
Here the Updated Ipod SC info:



Heres the data if anyone else is interested (hopefully Areo doesn't mind):

http://www.u.arizona.edu/~mikeg/RG vs. iTunes dB.xls (http://www.u.arizona.edu/~mikeg/RG%20vs.%20iTunes%20dB.xls)
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-04-06 23:55:56
Quote
You mean write the "__ipod_resident" metadata out to the files as they are copied to the iPod?  Yeah, I can add that, but I can see how it would out of date if you copied the files from the iPod back to the computer.  This would be a good use of Lua scripting.

BTW, what is the iTunes sync-state feature?

No, I meant can it be written or somehow held by foobar itself (I don't understand the interaction between foobar, ui_columns, and the foobar db).  Its not useful inside the files.

iTunes has the nice little progress graphics when syncing.  Rather than throwing up a modal dialog, it just grays out items in the playlist until they are synced.

+Reardon
Title: foo_pod - Foobar2000 meets the iPod
Post by: rufu on 2004-04-07 00:30:50
Quote
Quote

You mean write the "__ipod_resident" metadata out to the files as they are copied to the iPod?  Yeah, I can add that, but I can see how it would out of date if you copied the files from the iPod back to the computer.  This would be a good use of Lua scripting.

BTW, what is the iTunes sync-state feature?

No, I meant can it be written or somehow held by foobar itself (I don't understand the interaction between foobar, ui_columns, and the foobar db).  Its not useful inside the files.

iTunes has the nice little progress graphics when syncing.  Rather than throwing up a modal dialog, it just grays out items in the playlist until they are synced.

+Reardon

May be if foo_pod wrote a "synced to ipod" tag, people could then create UIs whiched shows this graphically, the same way people display whether or not a file has replay gain info.  The only problem would be how to make sure this info is accurate, for example if you didn't sync a song the next time how would you go back and change the tag?  The way this is done in iTunes is that when the iPod is connected a new playlist is created showing the current content of the iPod then any new files added to the library since the last sync are added to this playlist and greyed out as they are transferred over.  That is unless you tell it not to sync certain songs, so instead of a "synced to ipod" tag it would be a "don't sync" tag.

The method I've thought up to emulate a similar behavour in foobar would be to have foo_pod automatically create a playlist of current songs on the iPod, and then sync this with a pre-defined "library" playlist in foobar (or could you use the foobar database?).  The only question is how do you handle displaying what playlists are present on the iPod?

Do you have it automatically create all the playlists present on the iPod in foobar?  What if these playlists contain songs not present on the PC?

Do you have all the playlists in foobar transferred to the iPod?  If not, how do you choose which ones are and how do you display this in foobar?  (The best way I can think of doing this would be to give all those syncing with the iPod little iPod icons in their tabs)

Also how are smart playlists and on-the-go playlists going to be handled?  I get the feeling smart playlists could be a real problem, but it is one of the features I really like 

I'm guessing that this is going to be the hard part.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-07 01:57:52
Quote
y=1002*e^(-.2303x)

Good fit. However, whenever you see a 2303 in an exponential function like that, you're probably using e when you should be using 10. ln 10 = 2.303, sort of thing. That's one of those bits in math class that stuck with me.

I'm betting this is the function they're actually using for the conversion:
y=1000 * 10 ^ (-.1x)


Edit: Hot damn! Thought about it a bit, and starting looking up power formulas. And BINGO! We have a winner!

milliWatts = 10 ^ ( dBm / 10 )
milliWatts * 1000 = Watts.

So, the answer I was looking for, at last: The value in the Sound Check field is expressed in Watts. The dB value that iTunes displays is expressed in dBm, which is decibels relative to 1 milliWatt of power. It's negated, but there it is.

On reflection, this makes sense. It's probably using the Watts value in the SoundCheck field to adjust the output power at the preamp stage, sort of thing.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-07 02:18:30
Quote
Also how are smart playlists and on-the-go playlists going to be handled?  I get the feeling smart playlists could be a real problem, but it is one of the features I really like  

I'm guessing that this is going to be the hard part.

I don't think foobar has any way to define anything similar to a "smart playlist" as of yet, no? I've worked out a great deal of the smart playlist structure in the iTunesDB (although bits and pieces of it still elude me), and feel fairly confident in being able to make simple smart playlists for the iPod. None of the code is in iPodDB yet, but it's not too difficult.

But only 3rd gen iPods and up (any iPod running 2.0 or up code) actually use the smart playlist tags in the iTunesDB, from what I can tell.. They rebuild the smart playlist themselves from the data they are given. They do it in semi-real time too, meaning that if you have a list based on, say, last played time, then when you play a song on the iPod, it goes away from that playlist, after you exit that smart playlist and come back to it. Without syncing to iTunes. Essentially, the iPod rebuilds the smart playlist from its data at the time that you tell it to play that playlist.

1st and 2nd gens only change the smart playlist on a sync with iTunes, and then all that's really happening is that iTunes puts the proper songs in the playlist, according to the rules of the smart playlist. In other words, it's only smart on one end, not smart on both ends.

Making one end smart (foobar) requires changes to foobar only. Making both ends smart requires more significant changes, but not that much harder. The key for doing both ends is to make the smart playlist support in foobar compatible with the iPod's smart playlist fields from the beginning, which probably eliminates using some form of advanced scripting, which would be difficult to convert to a form that will fit in iTunesDB's smart playlist fields.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-07 07:50:40
Quote
I'm betting this is the function they're actually using for the conversion:
y=1000 * 10 ^ (-.1x)

I think you're right - that is almost definitely the equation that describes the relationship between iTunes Sound Check dB value (x) and the Sound Check value (y), as written to the iTunesDB file.

Here is a question for anyone - is it better to emulate the Sound Check values that iTunes writes for a given song, or just use one of the functions to convert Replay Gain's value?

The problem is that while Replay Gain and iTunes generally calculate about the same gain for a song, sometimes they are slightly different and that difference is magnified by the exponent resulting in Sound Check values that are up to 20%-30% different.

I was originally trying to find an algorithm or algorithms that mapped what Replay Gain calculates to match that iTunes' value.  But now that there is some understanding of the basis behind how Sound Check is really calculated and used, I'm thinking that it is best just to use the straight RG values and trust that it does a better job than iTunes.

Not that any of this really matters...the difference is small enough for most gain values that I doubt anyone could tell the difference.  The current algorithm seems to work great, at least in my experience, all of the songs sound identically loud with SoundCheck enabled.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-07 08:21:00
Quote
May be if foo_pod wrote a "synced to ipod" tag, people could then create UIs whiched shows this graphically, the same way people display whether or not a file has replay gain info.  The only problem would be how to make sure this info is accurate, for example if you didn't sync a song the next time how would you go back and change the tag?  The way this is done in iTunes is that when the iPod is connected a new playlist is created showing the current content of the iPod then any new files added to the library since the last sync are added to this playlist and greyed out as they are transferred over.  That is unless you tell it not to sync certain songs, so instead of a "synced to ipod" tag it would be a "don't sync" tag.

Yeah, keeping a synced metadata item up-to-date is rather problematic.  There would need to be a really good reason to implement it.

Quote
Do you have it automatically create all the playlists present on the iPod in foobar?  What if these playlists contain songs not present on the PC?

I don't currently create Foobar playlists from those on the iPod.  I could add the ability to display the iPod playlists, just like there is the ability to display all of the iPod songs in the foo_pod playlist.  Since the playlist items would point to the files on the iPod itself, there would be no problem if the files didn't exist on the PC.

Quote
Do you have all the playlists in foobar transferred to the iPod?  If not, how do you choose which ones are and how do you display this in foobar?  (The best way I can think of doing this would be to give all those syncing with the iPod little iPod icons in their tabs)

There are two ways to transfer Foobar playlists to the iPod - Send/Sync Current Playlist and Send/Sync All Playlists.  There is no current way to only sync some of the open playlists.  I could add the ability to exclude playlists (that was brought up before when foo_pod tried to sync playlists containing streaming audio URLs), but that would be a pretty low priority item for me to add at this point since it is possible to accomplish the goal by just send/sync'ing the desired playlists directly.

The default UI doesn't even have icons in the tabs, so I don't know how I could add status indicators to the tabs themselves.

Quote
Also how are smart playlists and on-the-go playlists going to be handled?  I get the feeling smart playlists could be a real problem, but it is one of the features I really like

Smart Playlists, at least the little I know of them, would seem to be pretty hard to add to the current Foobar based interface.  Also, as Otto mentioned, the backend code might not be completely ready to handle smart playlists.  So I'm afraid this is another lower priority at the moment.
Title: foo_pod - Foobar2000 meets the iPod
Post by: kl33per on 2004-04-07 16:57:38
I don't know if this is possible, but if you could somehow have option to copy either the AlbumGain or TrackGain (obviously not both) values to the DB, that'd be fantastic (not having AlbumGain is the only thing that really bugs me about SoundCheck, might as well be normalizing).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-07 17:10:12
Quote
I don't know if this is possible, but if you could somehow have option to copy either the AlbumGain or TrackGain (obviously not both) values to the DB, that'd be fantastic (not having AlbumGain is the only thing that really bugs me about SoundCheck, might as well be normalizing).

I believe what you are asking for is already in Preview Redux^2, and will be in the next version, 0.5.  There is a preference item that controls how Replay Gain -> Sound Check is calculated - disable, prefer album gain, or prefer track gain. 

Disable is self-explanitory.  Prefer album gain means that if album gain is available, it is used.  Otherwise the Sound Check value is determined from the track gain, or disabled if not available.  Prefer track gain is just the opposite.

Is that what you were looking for?

Edit: There might be some confusion about the terminology as well.  When I refer to Sound Check, I'm referring to the mechanism on the iPod which adjusts the volume based on a per-song value stored in the iTunesDB file. 

There is also Sound Check in iTunes, which calculates the gain - the equivalent of Foobar's Replay Gain support.  foo_pod uses the Replay Gain information, if available, and translates it into a Sound Check values used on the iPod, which as I mention above, is user configurable to prefer album or track gains.
Title: foo_pod - Foobar2000 meets the iPod
Post by: kl33per on 2004-04-07 17:19:56
Doh, just installed the Redux 2 version (had 0.4 installed with 0.8.1 Beta 3) and just came back here to delete my post, sorry.  It has exactly the functionality I wanted (nice work on the quick reply to).
Title: foo_pod - Foobar2000 meets the iPod
Post by: herr klang on 2004-04-09 01:13:13
(hopefully) simple feature request:  to better emulate a real media library, i keep one playlist filled with everything i've got in the database (hopefully with future extensions of playlistgen this will be automatically updated).. but i do have a substantial amount of other playlists that i'd like to keep synced. if there was a way to exclude playlists from the sync, this could be done in one click, and that would be well excellent

this could be done either in the config screen, or if that's hairy to implement, you could just have some manner of user-editable tagz test condition on the playlist name to allow/disallow syncing of a playlist.

man that'd be awesome.

oh, and unrelated: it seems to be par for the course for many foobar actions, but how plausible is it to make foo_pod not block when syncing? i've got a 30gb pod, and syncs can take a while
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-09 03:11:06
Quote
I think you're right - that is almost definitely the equation that describes the relationship between iTunes Sound Check dB value (x) and the Sound Check value (y), as written to the iTunesDB file.

Here is a question for anyone - is it better to emulate the Sound Check values that iTunes writes for a given song, or just use one of the functions to convert Replay Gain's value?

The problem is that while Replay Gain and iTunes generally calculate about the same gain for a song, sometimes they are slightly different and that difference is magnified by the exponent resulting in Sound Check values that are up to 20%-30% different.

I was originally trying to find an algorithm or algorithms that mapped what Replay Gain calculates to match that iTunes' value.  But now that there is some understanding of the basis behind how Sound Check is really calculated and used, I'm thinking that it is best just to use the straight RG values and trust that it does a better job than iTunes.

Not that any of this really matters...the difference is small enough for most gain values that I doubt anyone could tell the difference.  The current algorithm seems to work great, at least in my experience, all of the songs sound identically loud with SoundCheck enabled.

Well, the dB value that iTunes or RG figures is bound to be different because they're essentially different algorithims.. Rather than try to convert from one to the other, just calculate the Sound Check based directly on the RG dB value (whichever one you prefer) and go with that.

In theory, the conversion to the Sound Check value isn't actually changing anything, it's just expressing the amount of volume change in another format (microWatts). So since RG probably does a better job at calculating the actual volume change needed, I'd say to simply convert it using that function and stick it in there. It'll likely work better than iTunes Sound Check does. RG is a bit more robust, methinks.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-09 05:18:17
Quote
(hopefully) simple feature request:  to better emulate a real media library, i keep one playlist filled with everything i've got in the database (hopefully with future extensions of playlistgen this will be automatically updated).. but i do have a substantial amount of other playlists that i'd like to keep synced. if there was a way to exclude playlists from the sync, this could be done in one click, and that would be well excellent

I could add a context menu item to enable/disable a playlist.  I'm not sure if  you can interface directly with a playlist/playlist tab, but I could set up a handler to add/remove a playlist name to a list of excluded playlist and save that list so it persists when you restart Foobar. 

Quote
oh, and unrelated: it seems to be par for the course for many foobar actions, but how plausible is it to make foo_pod not block when syncing? i've got a 30gb pod, and syncs can take a while

Unfortunately, Foobar is pretty unfriendly to multithreaded components.

From playlist.h:
Code: [Select]
//important: playlist engine is SINGLE-THREADED. call any APIs not from main thread and things will either blow up or refuse to work. all callbacks can be assumed to come from main thread.

There are ways around this restriction, but they are messy and time consuming to implement.  You could always run 2 instances of Foobar - one for regular playback and one for foo_pod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-04-11 00:37:07
Would it be possible to add a way to convert files and then place the output onto the Ipod?

I'd like to be able to highlight a flac file, hit one command and have that file converted to AAC and then placed on the Ipod without needing any further attention.  Can a plugin do this or would peter need to be involved?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-11 02:29:12
Quote
Would it be possible to add a way to convert files and then place the output onto the Ipod?

I'd like to be able to highlight a flac file, hit one command and have that file converted to AAC and then placed on the Ipod without needing any further attention.  Can a plugin do this or would peter need to be involved?

Hmm...it will take some thought to figure out the best way to do what you are asking.

It would be nice to have a general facility in foo_pod to be able to automatically transcode any iPod unsupported audio format into MP3 or AAC, and transparently send/sync those along with the regular supported files.  Currently, foo_pod just displays a console warning and ignores the unsupported files.  It could also theoretically extended to transcode any file, so you could have your big 320kbps MP3s on your hard drive, but transcode them to tiny 128kbps AAC when copying them to the iPod.  Obviously, transcoding will greatly slow down the transfer process, but it would be a good feature to have in foo_pod.

It seems like DiskWriter would be perfect for this task.  I'm not sure how controllable it is from another component, but assuming it can be programmatically controlled, it shouldn't be too hard to add transparent transcoding to foo_pod.



On  a side note, I'm wrapping up work on  0.5.  I finally was able to reproduce and fix the "blank playlist" data loss problem that reardon posted about.  I also fixed a problem that cropped up recently where Send Selected To iPod copied files but didn't add them to the database, so they didn't appear on the iPod.  I also just fixed the Preamp feature, so it actually works now.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-04-11 02:34:30
Quote
Would it be possible to add a way to convert files and then place the output onto the Ipod?

I won't even pretend to be a programmer, but it sounds like you're looking for an auto-syncing smart playlist feature.  The conversion process (as you know) is already fairly automated, so the missing piece would be a way for foo_pod to know that new files needed to be added from some specific playlist, and to actually do that. 

I'm hopeful Aero, Otto, and anyone else working on foo_pod will eventually be able to do this, but getting the intermediary steps working would have to come first.

Keep up the great work guys - I just started testing using ReplayGain/SoundCheck on my (1st gen) iPod...and it absolutely rocks.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-12 04:33:57
Version 0.5 (http://loodi.com/foo_pod.zip) is now available.


Well, here it is.  I readded the progress dialogs and fixed all of the major known bugs since 0.4.1 and Previews.  If you're upgrading from 0.4.x, playlists, Replay Gain/Sound Check, and the preamp are going to be the big new features.  For those of you that have been using the Preview versions, fixing reardon's dataloss, making the preamp work, and of course, the progress dialogs are worth checking out.


From the Readme:

Version 0.5 - April 11, 2004
* Added the ability to create iPod playlists.  When one of the Send/Sync Playlist
  features are used, foo_pod will optionally (see Preferences) create an identical
  playlist on the iPod, as well as optionally create a randomized playlist and/or
  a playlist sorted according to a user defined TAGZ string.

*  iPod database creation should be faster and safer than previous versions.

*  Fixed a data loss problem where files on the iPod would appear to be deleted.
  The problems also caused a playlist with no name to appear in the Playlist
  display.

*  Improved the progress dialog dialogs.

*  Fixed the megabytes per second statistics displayed on the Foobar console after
  copying files to the iPod.

*  Improved the sync algorithm, so that it is better able to detect multiple files.
  This means that you can send any files to the iPod, and it should be able to
  determine which ones actually need to be transferred.

*  Implemented a translation between Replay Gain values and the values used by the
  Sound Check feature on the iPod.  There are 3 new preferences dealing with Replay
  Gain - disable, Prefer Album Gain, and Prefer Track Gain.  Prefer Album Gain will
  cause foo_pod to search for album gain on any transferred files and use that value,
  otherwise it will attempt to use track gain, and finally display Sound Check for
  that file.

*  Added better detection of invalid iPod format songs, such as FLAC and streaming
  audio URLs. 

*  foo_pod will now retry several times to mount the iPod, hopefully reducing the
  problem of it not finding a recently connected iPod.

*  Added a Preamp preference item.  This will raise the volume of all songs by the
  percentage shown by the slider.  This is apparently what EUpod does, and is
  equivalent to the volume feature in iTunes.  iPods apparently do not support
  negative values, so even though iTunes allows the user to reduce the volume,
  this does not have an effect on the iPod, so foo_pod only allows volume increases.
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-12 09:34:39
Great!
Have done some simple tests and no problems detected. 

Solaris
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-12 12:05:55
I'm looking forward to testing the new version when I get home. Meanwhile, I think I've supplied you with enough ideas for 0.6?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-12 15:43:07
Quote
I'm looking forward to testing the new version when I get home. Meanwhile, I think I've supplied you with enough ideas for 0.6?

Oh yeah,I forgot to mention, but I tested the idea of implementing a directory browse mode, and the results weren't encouraging.  I was able to build the directory structure and have it appear under the Composer browse option, but the next level down from Composer is album view. 

So you would see:
Code: [Select]
dir1/
   ------> All
              Album 1
              Album 2
dir2/
   ------> All
              Album 3


That's not to say that it is impossible to do a directory structure, but I can't think of a way to make it work on the iPod at the moment.  However, it seems likely that the iPod is just too hardcoded to make it doable.
Title: foo_pod - Foobar2000 meets the iPod
Post by: dragonfin on 2004-04-12 18:06:14
Great work!

I have only one problem. I have some songs with Asian characters in the file names.  I can upload them to my iPod using foo_pod, and all the tags display correctly. But my iPod won’t play them. If I upload those files using iTunes, they all work fine. It looks like that iTune automatically renames those files with foreign characters on the iPod. Could you add this feature to foo_pod? Thank you. 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-12 18:20:42
Quote
I have only one problem. I have some songs with Asian characters in the file names.  I can upload them to my iPod using foo_pod, and all the tags display correctly. But my iPod won’t play them. If I upload those files using iTunes, they all work fine. It looks like that iTune automatically renames those files with foreign characters on the iPod. Could you add this feature to foo_pod?

So the songs are showing as expected up on the iPod, but when you attempt to play them, the iPod just moves on to the next song?

I have noticed that iTunes renames some files that contain only ASCII characters, but I haven't tested either iTunes or foo_pod with filenames containing other characters.  I'll test it tonight and see if I can reproduce the problem and find a simple mapping that the iPod will tolerate.
.
Title: foo_pod - Foobar2000 meets the iPod
Post by: dragonfin on 2004-04-12 18:28:35
Quote
So the songs are showing as expected up on the iPod, but when you attempt to play them, the iPod just moves on to the next song?


Yes, the iPod just skips those song. If I load the iPod songs to the iPod Playlist in foobar, they all play fine in foobar.

Thanks!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-12 18:36:46
Quote
Yes, the iPod just skips those song. If I load the iPod songs to the iPod Playlist in foobar, they all play fine in foobar.

Yeah, that sounds like the iPod just can't read certain filenames.  It will be easy to convert those to something safer.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-13 17:26:43
Quote
Quote
I'm looking forward to testing the new version when I get home. Meanwhile, I think I've supplied you with enough ideas for 0.6?

Oh yeah,I forgot to mention, but I tested the idea of implementing a directory browse mode, and the results weren't encouraging.  I was able to build the directory structure and have it appear under the Composer browse option, but the next level down from Composer is album view. 

So you would see:
Code: [Select]
dir1/
   ------> All
              Album 1
              Album 2
dir2/
   ------> All
              Album 3


That's not to say that it is impossible to do a directory structure, but I can't think of a way to make it work on the iPod at the moment.  However, it seems likely that the iPod is just too hardcoded to make it doable.

Well the iPod does not read tags from the files, right? So just write the next directory level as the Album field in the database...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-13 20:13:55
Quote
Well the iPod does not read tags from the files, right? So just write the next directory level as the Album field in the database...

Even if I did modify the Album field (which would mess up the display for the Browse/Artist and Browse/Album), I don't see how you can do support more than 1 level of directories.

The order goes like this:
Code: [Select]
Artists:            Artist->Album->Song
Albums:         Album->Song
Composers: Composer->Album->Song

If you had a file like c:\mp3\the_artist\the_album1\disc1\01 - song.mp3, you could set {Composer} = MP3/, {Album} = the_artist/, and then what?
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-13 20:58:22
I don't know, but I bet it's possible. 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-14 00:47:35
Quote
I don't know, but I bet it's possible. 

Not using these fields it's not.

The correct way to do this would be to use the notes reader feature. It's more or less designed for creating semi-custom interfaces for the iPod.

Here's the gist of it:
-You have text files. These files contain a semi-fakey form of HTML. Basically, you can define links, titles, some very minor formatting, etc.
-Links can point to either other text files or to songs or playlists or whatever.

So you create a series of text files and link files and things in such a way as to provide the structure you want.

Here's a complete rundown of everything the notes format supports: http://developer.apple.com/hardware/ipod/ipodnotereader.pdf (http://developer.apple.com/hardware/ipod/ipodnotereader.pdf)

It's more than enough to build any type of hierachial interface you like.

It even supports a "museum mode", where if you want that to be the *sole* interface to the thing, you can make it so. Not that most people would want that, but still...

Note that this will only work on newer iPods, running 2.0 software and up.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-14 01:06:08
Hey Aero, any possibility of supporting the Play Counter plugin for syncing purposes? I can help with describing how the playcount works on the iPod's files in greater detail if needs be.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Xecter on 2004-04-14 02:48:08
Quote
Quote
I don't know, but I bet it's possible. 

Not using these fields it's not.

The correct way to do this would be to use the notes reader feature. It's more or less designed for creating semi-custom interfaces for the iPod.

Here's the gist of it:
-You have text files. These files contain a semi-fakey form of HTML. Basically, you can define links, titles, some very minor formatting, etc.
-Links can point to either other text files or to songs or playlists or whatever.

So you create a series of text files and link files and things in such a way as to provide the structure you want.

Here's a complete rundown of everything the notes format supports: http://developer.apple.com/hardware/ipod/ipodnotereader.pdf (http://developer.apple.com/hardware/ipod/ipodnotereader.pdf)

It's more than enough to build any type of hierachial interface you like.

It even supports a "museum mode", where if you want that to be the *sole* interface to the thing, you can make it so. Not that most people would want that, but still...

Note that this will only work on newer iPods, running 2.0 software and up.

wow.....


thats awesome.


With that text browser you can make anything, including the playlists to go with them. Thats awesome.


That's about as close as we are gonna get to it. Unless apple releases a SDK for the ipod. THen we could do whatever we want.
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-14 02:58:00
It's a shame that it's only for the 2.0 firmware. I suppose foo_pod could make it available depending on the ipod's firmware. I'm very pleased with this plugin so far. A wonderful collaborative work which I will use many-a-time.    Quick question - is there a way to select tracks to delete instead of deleting them from the playlist then syncing? Also, in the future it would be great if foo_pod would be able to edit the info of the songs via masstager.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-14 05:19:46
Quote
Hey Aero, any possibility of supporting the Play Counter plugin for syncing purposes? I can help with describing how the playcount works on the iPod's files in greater detail if needs be.

Is that data stored in iPod_Control\iTunes\Play Counts?

I saw the posting for the Play Counter (http://www.hydrogenaudio.org/forums/index.php?showtopic=20719&) component, but I haven't downloaded it or done any more than just scan the forum.  From the initial post, it looks like all it would take is some glue that reads the play count from the iPod, and writes some metadata tags in the iPod files. 

I haven't done anything with non-iTunesDB file data so far, but I'll consider adding the Play Counter support.  I'll hit you up for details when I'm ready to work on it!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-14 05:26:10
Quote
The correct way to do this would be to use the notes reader feature. It's more or less designed for creating semi-custom interfaces for the iPod.

Here's the gist of it:
-You have text files. These files contain a semi-fakey form of HTML. Basically, you can define links, titles, some very minor formatting, etc.
-Links can point to either other text files or to songs or playlists or whatever.

So you create a series of text files and link files and things in such a way as to provide the structure you want.

Interesting - thanks for the info! 

I actually had a passing thought about the Notes feature, since I remember reading about someone who is selling games that use it, but I had no idea that it could interface with the songs.  I'm doubly surprised that there is actually official documentation for it!   

I'm feeling inspired after reading that PDF file.  Now I just need some spare time to do something with that inspiration!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-14 05:45:13
Quote
Quick question - is there a way to select tracks to delete instead of deleting them from the playlist then syncing?

Nope.  The best way to delete songs from the iPod is to do the following:

1. Do the "Load iPod Songs to foo_pod Playlist" command from the foo_pod menu.
2. Delete and/or reorder the songs in the foo_pod playlist to your satisfaction.
3. Run "Sync Current Playlist" on the foo_pod playlist.

What you are doing is syncing the files that are already on the iPod, minus the ones you deleted.  foo_pod will notice that songs are already on the iPod, and simply delete the ones that are no longer in the list. 

This isn't the fastest operation in the world, but I have done some post-0.5 work that will speed this up considerably.  My goal for 0.5.1 (or whatever the next version) is to optimize foo_pod's slowest parts. 

Syncing in this case is slow mainly because it has to rebuild the whole database.  I could provide a way (context menu item) to remove the individual songs without having to rebuild the database.  I'll add it to my "features to add" list.


Quote
Also, in the future it would be great if foo_pod would be able to edit the info of the songs via masstager.

I'm not sure what you mean by having foo_pod edit the song info via masstagger.  Could you provide a little more info about what you are asking?
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-04-14 10:34:22
sorry, perhaps I did not get something, but is there a way to copy songs from the ipod to the hd similar/equal to ephpod's?
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-14 11:01:52
Yay! Thanks Otto!
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-14 13:49:00
Quote
Quote
Also, in the future it would be great if foo_pod would be able to edit the info of the songs via masstager.

I'm not sure what you mean by having foo_pod edit the song info via masstagger.  Could you provide a little more info about what you are asking?

For example, yesterday I wanted to change the genre of a few bands on the ipod, loaded them into masstagger, and changed the field. But when I disconnected my ipod nothing was changed. I suppose I should've synced the playlist before disconnecting. I thought it was directly editing the songs/db on the ipod. I'll give it another try today
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-14 15:38:10
Quote
sorry, perhaps I did not get something, but is there a way to copy songs from the ipod to the hd similar/equal to ephpod's?

You should be able to access the iPod files just like any others in Foobar.  For example, you can drag a file out of the playlist and drop it in a folder.  Or right click and drag it to a folder.

That will simply copy the file with the same filename as on the iPod.  foo_pod doesn't directly have any support for building directory structures, like Ephpod and what you are probably asking for.  You might be able to use DiskWriter  to create directories to your preference - I believe there is a null DiskWriter component that will just copy the file from one folder (the iPod) to another (your hard drive).  I might be wrong about that, but it wouldn't be too difficult to create a little program that would just accept DiskWriter input and write it out to a file.

If no one has written such a program and you can't get it working some other way, let me know and I can whip something up.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-14 15:46:41
Quote
Quote
I'm not sure what you mean by having foo_pod edit the song info via masstagger.  Could you provide a little more info about what you are asking?

For example, yesterday I wanted to change the genre of a few bands on the ipod, loaded them into masstagger, and changed the field. But when I disconnected my ipod nothing was changed. I suppose I should've synced the playlist before disconnecting. I thought it was directly editing the songs/db on the ipod. I'll give it another try today

Masstagger should work on the iPod files - if not, it really is a Masstagger problem.

One thing that might have happened is you updated the files on the iPod, but didn't touch your local hard drive's files, then did a sync.  foo_pod will notice that the files don't match, and delete the out of sync files on the iPod and replace them with the hard drive versions (I don't check for the case where the iPod files are newer than the hard drive).

I would recommend that you update your local hard drive's files with Masstagger, *then* do a sync to transfer them to the iPod.  Otherwise, you will lose any changes whenever you do a sync.  foo_pod only currently supports a one way sync (computer to iPod) like iTunes, although I might look into doing full sync (ala a Palm PDA) at some point.
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-14 16:56:58
Okay, so instead of loading the foo_pod playlist, then masstagging, you're suggesting to use explorer to find the music folder in the ipod, then load into masstager and update those? I'm not sure if i have this right
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-14 17:11:10
Quote
Okay, so instead of loading the foo_pod playlist, then masstagging, you're suggesting to use explorer to find the music folder in the ipod, then load into masstager and update those? I'm not sure if i have this right

No, that would be doing the same thing. 

What you should do is modify the original files on your hard drive - the ones that you transferred to the iPod.  Then when you sync them, the Masstagger'ed files will be sent to the iPod. 

There is nothing wrong with running Masstagger on the iPod files (say in the foo_pod playlist), but like I said before, when you sync them with your local files, the local files will overwrite your changes.
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-14 18:06:27
I don't have the original files on my harddisk - they're only on the ipod. You're saying that I can use the masstagger on the foo_pod playlist, which isn't working for me, so I must be overlooking something terribly obvious
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-14 19:21:32
Quote
I don't have the original files on my harddisk - they're only on the ipod. You're saying that I can use the masstagger on the foo_pod playlist, which isn't working for me, so I must be overlooking something terribly obvious

Huh.  Well, it should work, because to Foobar, the iPod is just another hard drive.  In fact, I just ran a quick test and it worked as expected.

I did the following:

1. Load iPod to foo_pod playlist
2. Selected a song from the foo_pod playlist, right clicked and selected Masstagger->Edit Tags
3. For my test, I just added a new tag, and clicked Run
4. Checked the file Properties and verified that the new tag was in the file, even after clicking Reload From File.
5. Disconnected the iPod, connected it, reloaded the foo_pod playlist, and verified that the tag was still there.

Are you getting any sort of error from Masstagger, or anything on the Foobar console?
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-14 20:46:53
That's interesting, I did the same exact thing as you laid out, but when I disconnect the ipod and reload the foo_pod playlist, the files are back to where they were. No error either. It's not a big deal though - I can always take the music off the ipod, retag, then resync.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-14 21:46:02
Quote
That's interesting, I did the same exact thing as you laid out, but when I disconnect the ipod and reload the foo_pod playlist, the files are back to where they were. No error either. It's not a big deal though - I can always take the music off the ipod, retag, then resync.

Maybe you have foobar2000's database turned on, and you have failed to click "Reload info from files" after reloading the iPod songs into foobar2000?

Also, you say "the files are back where they are" - The files aren't supposed to move when using the masstagger? Only the tags are changed...
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-15 00:09:53
Quote
Maybe you have foobar2000's database turned on, and you have failed to click "Reload info from files" after reloading the iPod songs into foobar2000?

The database is disabled.

Quote
Also, you say "the files are back where they are" - The files aren't supposed to move when using the masstagger? Only the tags are changed...

I don't remember saying this, and I never expected the files to move. Just tagged. I'll figure this out eventually, I feel as though I'm taking the thread too far off track.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-15 00:20:11
Quote
Quote
Also, you say "the files are back where they are" - The files aren't supposed to move when using the masstagger? Only the tags are changed...

I don't remember saying this, and I never expected the files to move. Just tagged. I'll figure this out eventually, I feel as though I'm taking the thread too far off track.

Quote
That's interesting, I did the same exact thing as you laid out, but when I disconnect the ipod and reload the foo_pod playlist, the files are back to where they were. No error either.
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-15 02:43:41
Quote
Quote
That's interesting, I did the same exact thing as you laid out, but when I disconnect the ipod and reload the foo_pod playlist, the files are back to where they were. No error either.

Sorry, I should've been more specific. I meant the tags were back to where they were. From the foo_pod playlist I changed the genre of an album, disconnected the ipod, reconnected and reloaded the foo_pod playlist, and the tags were back to where they were before.

Edit: Odd, it's working now! Well, at least it works  Sorry about the waste of posts.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-15 04:42:09
Quote
Is that data stored in iPod_Control\iTunes\Play Counts?

I saw the posting for the Play Counter (http://www.hydrogenaudio.org/forums/index.php?showtopic=20719&) component, but I haven't downloaded it or done any more than just scan the forum.  From the initial post, it looks like all it would take is some glue that reads the play count from the iPod, and writes some metadata tags in the iPod files. 

I haven't done anything with non-iTunesDB file data so far, but I'll consider adding the Play Counter support.  I'll hit you up for details when I'm ready to work on it!

Yeah, here's the gist of it:

When you sync, you have to do the following:

1. Read the Play Counts file off the iPod. This contains all the play counts and such since the last time you synched. Everything "new" in other words. There's a class I wrote at the bottom of the iPodDB stuff specifically for parsing this file. It can't write the file, but then you'll never need to write to that file.

2. Add/merge that data into foobar's database.

3. DELETE the Play Counts file off the iPod. Or rename it to .bak or something. This is important, you want to clear that file so you don't get dupe counts.

4. When you build the new iTunesDB file, make sure to include the Play Counts info as well as the timestamps and such in the proper fields that are there for them. This is so smart playlists (if and when) will work correctly on 2.0 and up iPod's.

And that's pretty much that.

Edit: Part 2 is trickier than it seems. The Play Counts file is basically linked to the existing iTunesDB in such a way that the first song entry in Play Counts corresponds to the first song entry in the iTunesDB, and so on. So you'll need to have some way to work out which song in the foobar database corresponds to each song entry that already exists in the current iTunesDB in order to add the new playcount to the right place, update the last played time, etc. If you can sync though, you probably have a good idea of how to figure this out already.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-15 05:02:59
Quote
Interesting - thanks for the info! 

I actually had a passing thought about the Notes feature, since I remember reading about someone who is selling games that use it, but I had no idea that it could interface with the songs.  I'm doubly surprised that there is actually official documentation for it!  

I'm feeling inspired after reading that PDF file.  Now I just need some spare time to do something with that inspiration!

If possible, I'd write something allow people to create their own text file templates which you then run through and fill in with the proper information. I know Foobar is all about customization, so this is probably the best option.

Like... err.. I don't know the details about foobar's supported scripting methods, but something like this, maybe (total psuedocode, I'm making it up as I go along):

template.txt
:foreach (%artist%) in all
:begin
<a href=%artist%.txt>%artist%</a>
:create %artist%.txt from artist_template.txt
:end

artist_template.txt
:foreach (%album%) in %artist%
:begin
<a href=%album%.txt>%album%</a>
:create %album%.txt from album_template.txt
:end

And so forth... Some kind of meta language where you can define loops and such, kinda similar to PHP's methods. There's probably something already in foobar you can do this with, I simply haven't delved in enough to figure it out yet.

Just keep in mind that there's a 4K limit on *any* note file. So you'll have to put in forward/back type links at the beginning/end of every file that goes over that limit and split accordingly. It gets tricky.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-15 05:18:13
Quote
If possible, I'd write something allow people to create their own text file templates which you then run through and fill in with the proper information. I know Foobar is all about customization, so this is probably the best option.

Like... err.. I don't know the details about foobar's supported scripting methods, but something like this, maybe (total psuedocode, I'm making it up as I go along):

...

And so forth... Some kind of meta language where you can define loops and such, kinda similar to PHP's methods. There's probably something already in foobar you can do this with, I simply haven't delved in enough to figure it out yet.

Lua (http://www.lua.org/) scripting is on the long term list of features to implement in foo_pod,  so when I add scripting and when I do something with Notes, I'll make sure that the Notes creation is controllable from Lua.  In fact, other than providing the Foobar->Lua glue, I probably will do all of the Note support in Lua scripts, since my past experience with similiar situations has shown that scripting is always easier to maintain than a compiled language.

When I got to the 4kB limit portion of the Notes documentation, it really took the wind out of my sails.  Without the limitation, it would be easy to completely customize the iPod GUI and do whatever you wanted with it.  With the 4kB, that pretty much rules out most really useful GUI replacement features.  Who would want to browse a directory structure, and have to press Select to go to the next page?  Once you add in the pseudo-HTML overhead, I doubt that you could get more than 30-40 directories in a single Notes file.
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-04-15 12:46:49
Quote
QUOTE (neomoe @ Apr 14 2004, 03:34 AM)
sorry, perhaps I did not get something, but is there a way to copy songs from the ipod to the hd similar/equal to ephpod's?


You should be able to access the iPod files just like any others in Foobar. For example, you can drag a file out of the playlist and drop it in a folder. Or right click and drag it to a folder.

That will simply copy the file with the same filename as on the iPod. foo_pod doesn't directly have any support for building directory structures, like Ephpod and what you are probably asking for. You might be able to use DiskWriter to create directories to your preference - I believe there is a null DiskWriter component that will just copy the file from one folder (the iPod) to another (your hard drive). I might be wrong about that, but it wouldn't be too difficult to create a little program that would just accept DiskWriter input and write it out to a file.

If no one has written such a program and you can't get it working some other way, let me know and I can whip something up.

wll, i've looked for such a nuul_diskwriter plugin, but couldn't find anything.. just to drag the files in a certain folder works, but there could be a nicer way, i guess 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-16 02:36:16
Quote
When I got to the 4kB limit portion of the Notes documentation, it really took the wind out of my sails.  Without the limitation, it would be easy to completely customize the iPod GUI and do whatever you wanted with it.  With the 4kB, that pretty much rules out most really useful GUI replacement features.  Who would want to browse a directory structure, and have to press Select to go to the next page?  Once you add in the pseudo-HTML overhead, I doubt that you could get more than 30-40 directories in a single Notes file.

If you just want a folder type structure, then you don't necessarily have to do it entirely in that fakish HTML method. That's what the ".link" and ".linx" file type is all about. It'll support an actual folder structure that way.

If you put actual folders inside the notes folder, they show up with the arrow on the right side, like a subfolder. Then you can have subdirectories of things.

If you have a file ending in .link, then it goes directly to the first link inside that file. Consider it to be like a symbolic link on a unix-like system.

If you have a file ending in .linx, then it *appears* to be a folder, with the right arrow and everything, and that folder contains the links in the linx file itself.

So if you want to do a folder hierarchy, you can use a combination of these. The limitation here is that you have a maximum of 1000 entries on any folder or linx file.

Look, try it yourself. It's easy to work out. Just create your files in the Notes folder on the iPod. You can create any entire interface you like and never create one actual .txt file, sort of thing. Just link files and folders or linx files. The only disadvantage of this method is that it's displayed in the big font (just like all the other iPod screens) and not in the smaller font that it uses for displaying text files.

Example:
The Notes folder contains the folders Adam and April.
Adam contains Bob.link and Bill.linx.
Bob.link just contains:
<title>Play the Bob Playlist</title>
<a href="ipod:music?playlist=Bob">foo</a>
Bill.linx contains:
<title>Songs by Bill</title>
<a href="ipod:music?song=Bill's First Song">Bill's First Song</a>
<a href="ipod:music?song=Bill's Second Song>Bill's Second Song</a>

April contains a bunch of .link files, each pointing to one song, similar to Bob.link above, except pointing to a song and not a playlist.

When you look at this on the iPod, you can easily see the differences. The First screen has two choices: Adam and April. Both are folders.

Enter April and you see all the Songs by April. Select any of them, and hear that song. The thing is that you can have up to 1000 link files in there in this manner, and thus have up to 1000 entries under that folder.

Enter Adam, and you see "Play the Bob Playlist" and "Songs By Bill". "Songs by Bill" looks like a folder, "Play the Bob Playlist" does not. Select "Songs by Bill" and get a list of songs by Bill. Unfortunately, this is limited to the 4k limit, as it's a single linx file. But this would be fine for, say, a single album. It'd be preferable, in fact, because it loads a bit quicker than a folder with a lot of files in it. It'll also cache for quicker access on the second try. The "Play the Bob Playlist" just starts up a playlist.

Note that all of these, when they start playing songs, go to the Now Playing screen. Hitting the menu button goes back into the notes where you just came from, while it continues to play. It's just like the Browse interface in that manner. But you do have some control. Don't want a particular link to go to the Now Playing Screen? Add <meta name="Now Playing" content="false"> to any link file and voila, it won't go there anymore.

You really can create a nice interface. You do have to work around the limitations somewhat, but the 4k limit is not as limited as you might think, because you can get around it.

Additional:
Want to replicate an existing folder structure to the Notes exactly? Do this:
-Create the exact same folder structure on the iPod, in the Notes folder.
-For every song (MP3, AAC, WAV, AIFF), create a .link file with the following in it:
<title>%songname%</title>
<a href="ipod:music?song=%songname%">%songname%</a>

Want to speed that up a bit? Drop back a folder from the actual songs and create a .linx file instead, where it'll fit into a 4k structure.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-04-16 05:13:40
I may be in the minority, but I have no interest in browsing my iPod by directory.  The tag-based structure that exists right now works great for me.

I'm also a little worried that development based on 2.0 firmware will freeze out us Gen 1 iPod owners.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-16 15:52:01
Quote
I may be in the minority, but I have no interest in browsing my iPod by directory.  The tag-based structure that exists right now works great for me.

I'm also a little worried that development based on 2.0 firmware will freeze out us Gen 1 iPod owners.

I'm not sure why you think non 3G iPod owners would be shut out.  A Notes based directory browser (if implemented...it will take me weeks to wade through Otto's last post... ) would be optional for everyone.   

You should be complaining to Steve Jobs and encouraging him to do a better job supporting older iPods!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-16 23:01:37
Quote
A Notes based directory browser (if implemented...it will take me weeks to wade through Otto's last post... )

<frink> Oh for crying out glaven... </frink>

Here you go. Unzip this sucker into your notes folder on your iPod. It's a demo of exactly what I outlined last night.

Note that the playlists and songs and such won't work unless you modify the proper files to point to songs you actually have and such.

http://otto.homedns.org:8888/itunes/notesdemo.zip (http://otto.homedns.org:8888/itunes/notesdemo.zip)

I may just write a simple command line tool to do this sort of thing. I can see where it'd be handy.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-18 22:30:11
This is going to be great. Having done playlist syncs, soundcheck, etc etc, almost all iTunes features are emulated. Now starts the really cool stuff - New, innovative, incredibly useful stuff that we can tune to our liking.

Needless to say, I'm looking forward to it 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-19 03:09:56
Here's a very early test version of a program to create notes type structures from directory structures.

It has some big time limitations though.. Hey, I only coded it up in a few hours, and only to try it out and see how it would work, sort of thing. But somebody might be interested, so here it is.

http://otto.homedns.org:8888/iTunes/dir2note.zip (http://otto.homedns.org:8888/iTunes/dir2note.zip)

Simple usage:
dir2note <path to a drive or directory to create the notes> <path to a directory of Mp3s>

So, like this:
dir2note i: g:\mp3s
Simple. It'll create an i:\Notes directory and then copy the directory structure from g:\mp3s into it, replacing MP3 files with *.link files as it goes. The upshot of this is that if "i:" is your iPod, you get a bunch of notes that will mimic the directory structure of the MP3's on your machine.

dir2note -clear i: g:\mp3s
Same as above, but it'll delete everything in i:\Notes first. Be very careful here...

dir2note -clear i: NONE
Clears i:\notes only.. doesn't do anything else.. Not entirely useful given that you could do deltree just as easily, but what the hey...

Notes:
-Don't put trailing \'s on directory names.
-If a dir has spaces in it, surround that path in quotes
-FULL PATHS ONLY. This is important.
-It only works for MP3's right now.
-It only reads ID3 tags. Sorry to all the APE tag users, but I use ID3 tags and anyway it's only a preliminary version. Once the idea is fleshed out, and it's put into foo_pod, then you'll be able to enjoy.

Anyway, this is only for testing purposes, I don't recommend using it at all in any way on any machine anywhere ever, and if you hose all your files, that's your problem. Backup anything you run it on before running it on them. It's a demo only. Capish?

With this program, I uncovered one major limitation, BTW. When it says 1000 notes, it means it. 1000 notes, maximum. So forget being able to have one link file for every song (which this program, in fact, does). I'll have to use .linx files instead, methinks. Anyway, I don't recommend trying to put your entire directory structure in there, sort of thing. It won't work, yet. But, you can put several directories in by a series of commands. Like:

dir2note i: "g:\mp3s\audioslave"
dir2note i: "g:\mp3s\Weird Al"
dir2note i: "g:\mp3s\Soundtracks"

and so forth.. As long as you don't use -clear, it'll leave what's there there.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-19 09:19:08
Version 0.5.1 (http://loodi.com/foo_pod.zip) is now available.


This release is mostly focused on performance.  I profiled the entire application and optimized the most critical sections.  I haven't measured the whole foo_pod to 0.5, but it is obviously much faster  - the two slowest portions, other than file transfer, of a typical send/sync are now 10x to 100x faster than in 0.5!.  There is one other major area that needs to be optimized, so there are still some easy speed improvements to come.

I also added experimental filename escaping for non-Latin based languages, so let me know if Asian filenames (for example) now work with 0.5.1.


From the Readme:
Version 0.5.1 - April 19, 2004
*  Optimized several critical sections, resulting in much better overall performance.

*  Added filename escaping for Asian and other non-European symbol filenames.  Even though foo_pod handles such filenames correctly, the iPod itself can not play them.
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-19 15:39:15
I'm having problems with 0.5.1. Foobar crashes when I try to send files to the ipod. Right away an error window comes up saying there's a visual c++ runtime error. Then after I click OK, foobar terminates. For the interim, where would I find 0.5?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-19 15:47:24
Quote
I'm having problems with 0.5.1. Foobar crashes when I try to send files to the ipod. Right away an error window comes up saying there's a visual c++ runtime error. Then after I click OK, foobar terminates. For the interim, where would I find 0.5?

Version 0.5 can be found here (http://loodi.com/foo_pod_0.5.zip).
Title: foo_pod - Foobar2000 meets the iPod
Post by: dragonfin on 2004-04-19 15:51:47
Quote
I'm having problems with 0.5.1. Foobar crashes when I try to send files to the ipod. Right away an error window comes up saying there's a visual c++ runtime error. Then after I click OK, foobar terminates. For the interim, where would I find 0.5?


I am having the same problem. Foobar crashes when writing the iTunesDB database file.

(http://www14.brinkster.com/joeqin/images/rterr.png)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-19 16:09:19
Ok, I've pulled 0.5.1 (although it is still available here (http://loodi.com/foo_pod_0.5.1.zip) if you want to test it), and I'll take a look at the crash later tonight.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 07:49:07
Version 0.5.2 (http://loodi.com/foo_pod.zip) is now available.

This version should fix the crash that somasatellite and dragonfin reported.  Otherwise, it is identical to 0.5.1.
Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-04-21 16:28:54
Just to report that version 0.52 crashes foobar when writing the db. No error messages are given,  foobar just shuts down.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 16:34:38
Quote
Just to report that version 0.52 crashes foobar when writing the db. No error messages are given,  foobar just shuts down.

Feck! 

To those experiencing crashes (it works for me...honest!), which OS are you running?  Also, does it work for anyone?
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-21 16:51:21
Hi Aero. I just experienced a crash on my first try as well.
The files transfered normally, but foobar2000 closed with the following message when it was going to write the db file.
Using Windows XP Pro SP1a!

Edit: Deleted LONG crash log.
Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-04-21 16:53:22
I'm also using xp pro sp1.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 16:56:55
Weird.  Ok, I've pulled 0.5.2 and replaced it with 0.5 again.  I'll try fixing it again later tonight.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-21 17:36:07
I have a question:

I was wondering how foo_pod distinguishes between files when synchronizing with the iPod. The reason I am asking is because I do not enable foobar2000's database, the only way to see differences would be in something like filename or tags.

It would be a little odd recognizing files during a sync from their tags because I have some dupes in my collection (from soundtracks etc). This leads me to believe that foo_pod must store the original filename (and path?) on the iPod? So if I was to move some files to a new destination and sync again, would foo_pod delete the files on the iPod, and then transfer the moved files to the iPod again?

I'm just trying to get this straight in my head. 
Title: foo_pod - Foobar2000 meets the iPod
Post by: dragonfin on 2004-04-21 17:46:34
Quote
To those experiencing crashes (it works for me...honest!), which OS are you running?  Also, does it work for anyone?

I am using Win XP pro too.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-21 17:54:12
Quote
It would be a little odd recognizing files during a sync from their tags because I have some dupes in my collection (from soundtracks etc). This leads me to believe that foo_pod must store the original filename (and path?) on the iPod? So if I was to move some files to a new destination and sync again, would foo_pod delete the files on the iPod, and then transfer the moved files to the iPod again?

I'm just trying to get this straight in my head. 

I don't know exactly which one of the many methods we discussed he's using to do it, but the iTunesDB file doesn't contain any place to put the original path and filename. So I'm fairly certain that that isn't it.

It's probably a combination of filesize and tags in some manner.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 18:08:40
Quote
I was wondering how foo_pod distinguishes between files when synchronizing with the iPod. The reason I am asking is because I do not enable foobar2000's database, the only way to see differences would be in something like filename or tags.

It would be a little odd recognizing files during a sync from their tags because I have some dupes in my collection (from soundtracks etc). This leads me to believe that foo_pod must store the original filename (and path?) on the iPod? So if I was to move some files to a new destination and sync again, would foo_pod delete the files on the iPod, and then transfer the moved files to the iPod again?

foo_pod currently uses a number factors to determine if a local file (i.e. on your hard drive) matches a file on the iPod.

First, it compares the file sizes.  This is very simple, but remarkably powerful in eliminating non-matching files.  As an example, out of approximately 7000 files I use for testing, there are maybe two files that have the same file size.  File size also passively detects metadata changes, since such changes would usually result in a change in file size.

Next, foo_pod compares the file's creation and modification dates.  Again, it is extremely rare to find any files with precisely the same dates.  But since it could theoretically happen, foo_pod also compares several metadata tags, such as artist and title. 

So only if files meet all of the above criteria are they considered to be a match.  I could calculate a hash of each file, but that would be unusably slow.  I believe that the odds of a false match are so low that this quicker method is preferable.


Getting back to your question, the location on the hard drive has no effect on foo_pod's matching algorithm, and it doesn't require that any path information is stored on the iPod.  Even two copies of the same song aren't really duplicates unless they were created/modified at the same time, have the same filesize, and similar metadata.  If all of that is true, then they are probably identical copies.  In any event, foo_pod will only copy one of them to the iPod, and any duplicates will just be pointers to the one copy.  That is how you can have the same song in multiple playlists, for example.

Anyway, I had to put a lot of thought into how to implement a sync matching algorithm, and I'm very happy with how it turned out in foo_pod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-21 18:48:56
Quote
Quote
To those experiencing crashes (it works for me...honest!), which OS are you running?  Also, does it work for anyone?

I am using Win XP pro too.

Yeah, same crash with 0.5.2. I'm using xp pro as well.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 18:52:55
Since I have been unable to reproduce the crash, I prepared a debug version of foo_pod 0.5.2 to help narrow down the cause. 

If you are experiencing the crash while writing the iTunesDB file and would like to help, please download foo_pod_debug.zip (http://loodi.com/foo_pod_debug.zip) and try to reproduce the crash.  This version of foo_pod writes some debug information to c:\foo_pod.txt, so after the crash, either post or PM me that file.

Thanks!
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-21 18:58:38
Quote
Since I have been unable to reproduce the crash, I prepared a debug version of foo_pod 0.5.2 to help narrow down the cause. 

If you are experiencing the crash while writing the iTunesDB file and would like to help, please download foo_pod_debug.zip (http://loodi.com/foo_pod_debug.zip) and try to reproduce the crash.  This version of foo_pod writes some debug information to c:\foo_pod.txt, so after the crash, either post or PM me that file.

Thanks!

Thanks for your persistance in trying to solve this issue. With the debug version I got the same error, and one line was written in the foo_pod.txt:

Code: [Select]
78799467: iTunes.bak --> 'C:\Program Files\foobar2000\\iTunesDB.bak'
Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-04-21 19:00:55
From debug version:

12309189: iTunes.bak --> 'F:\Program Files\foobar2000\\iTunesDB.bak'
Title: foo_pod - Foobar2000 meets the iPod
Post by: dragonfin on 2004-04-21 19:05:35
4100295: iTunes.bak --> 'E:\Program Files\foobar2000\\iTunesDB.bak'
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-21 19:16:00
Wow that sounds great - Exactly what I was hoping for.

Thanks Aero...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 19:22:23
pnjman & dragonfin: Thanks!  Interesting...that isn't where I expected it would fail.  If you (or anyone one else) wouldn't mind, please test out foo_pod_debug2.zip (http://loodi.com/foo_pod_debug2.zip).  There is a chance that it might fix the crash, but if not, it will provide more detailed information about what is going wrong.
Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-04-21 19:25:59
Using the debug2 version foobar now crashes as soon as I select send file to ipod.

From log:

12309189: iTunes.bak --> 'F:\Program Files\foobar2000\\iTunesDB.bak'
13797029: Writing iTunesDB file
13797029: iTunesDB --> 'g:\iPod_Control\iTunes\iTunesDB'
13797029: iTunes.bak --> 'F:\Program Files\foobar2000\iTunesDB.bak'
Title: foo_pod - Foobar2000 meets the iPod
Post by: dragonfin on 2004-04-21 19:28:24
Quote
pnjman & dragonfin: Thanks!  Interesting...that isn't where I expected it would fail.  If you (or anyone one else) wouldn't mind, please test out foo_pod_debug2.zip (http://loodi.com/foo_pod_debug2.zip).   There is a chance that it might fix the crash, but if not, it will provide more detailed information about what is going wrong.

Crashed again.

5343293: Writing iTunesDB file
5343293: iTunesDB --> 'j:\iPod_Control\iTunes\iTunesDB'
5343293: iTunes.bak --> 'E:\Program Files\foobar2000\iTunesDB.bak'
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 19:43:23
Thanks again!  I'm getting closer, and seem to have to problem narrowed down to one function.  I have one more version to test - foo_pod_debug3.zip (http://loodi.com/foo_pod_debug3.zip).. 

Again, there is a chance that this will fix the crash, but it definitely will narrow down the problem if it doesn't fix it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-04-21 19:49:34
Using debug3 it's still crashing as soon as I select send file.

From log:

15246663: Writing iTunesDB file
15246663: iTunesDB --> 'g:\iPod_Control\iTunes\iTunesDB'
15246663: iTunes.bak --> 'F:\Program Files\foobar2000\iTunesDB.bak'
15246663: Populating default playlist
15246663: Populating now
15246663: Populating done
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 20:04:56
foo_pod_debug4.zip (http://loodi.com/foo_pod_debug4.zip)

Last one for awhile, I promise.  This will narrow the crash down to a single line of code.
Title: foo_pod - Foobar2000 meets the iPod
Post by: dragonfin on 2004-04-21 20:07:55
Quote
Last one for awhile, I promise.  This will narrow the crash down to a single line of code.

Debug 4 works great.  My ipod can play all my asian songs now! Awesome!
Title: foo_pod - Foobar2000 meets the iPod
Post by: pnjman on 2004-04-21 20:08:23
Sucsses!!!!!!!!!!! It works. Thank you.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 20:11:59
Quote
Debug 4 worked!

Cool!      I didn't want to sound like a broken record, but I was hoping that #4 would be the lucky build. 

Unfortunately, I'm not totally sure why what I changed suddenly stopped working in 0.5.1.  I'll need to examine that further, but since it looks good, I'll remove the debug stuff and release it as 0.5.3.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-21 20:29:25
Version 0.5.4 (http://loodi.com/foo_pod.zip) is now available.

This version actually does fix the crash reported in 0.5.1 and 0.5.2.  Thanks again to dragonfin, pnjman, and somasatellite for putting up with the bug and all of the debug builds to figure out exactly what was wrong!

Edit:  I was able to determine why 0.5.1 and 0.5.2 were crashing, and found a similar piece of code that could crash in the same way.  I have no evidence that such a crash will occur, but since the other bug was so tedious to track down, I decided to fix the problem and release 0.5.4.  If you have 0.5.3, you probably should upgrade just in case.
Title: foo_pod - Foobar2000 meets the iPod
Post by: dragonfin on 2004-04-21 20:34:03
Thank you, Aero. Great work! 
Title: foo_pod - Foobar2000 meets the iPod
Post by: krmathis on 2004-04-21 20:48:36
Looks good. Glad you guys nailed it! 
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-21 21:25:50
Wonderful community! 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Scream on 2004-04-22 02:16:28
take a look at mlipod (or ml_ipod cant remember the exact name) on sourceforge, or gtkpod. lots of code you may wanna see
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 03:22:19
Quote
take a look at mlipod (or ml_ipod cant remember the exact name) on sourceforge, or gtkpod. lots of code you may wanna see

Thanks for the pointers - I hadn't heard about mlipod (http://cvs.sourceforge.net/viewcvs.py/mlipod/ml_ipod/) before. 

gtkpod is, AFAICT, just a C++ version of the Perl scripts in GnuPod (http://www.gnu.org/software/gnupod/).  From what I have read, it is probably the 2nd most complete iPod library implementation (behind Otto's iPodDB).

Except for mlipod, I have looked at nearly every open source iPod library out there, and Otto's is by far and away the cleanest and best code out there.    Most of the others are obvioulsly hacked together, and lack the basic understanding of the complete iTunesDB file. 

For example, I found a Winamp 5 plugin the other day, and I was curious about what, if any, features I could implement (read: steal  ) from it.  Actually, it is called ml_ipod.dll, but I it isn't the same code as the above link, or it was based on an earlier version.  So I was browsing through the code, and it was clear that it was, quite simply, crap.  This one line of code from ml_ipod.dll sums up my impression:
Code: [Select]
while(*p) *(d++)=(unsigned char)*(p++); //FUCKO: totally gay utf16 to utf8 conversion


Not only is the code completely wrong, but when you see comments like that, you know that it was written by some snot nosed 15 year old hacker (in the worst sense of the word).

Anyway, I'll get off my soap box now, but the main point is that iPodDB rulez, and there is little, if anything, that any of the other projects could add to it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-22 05:19:40
Quote
take a look at mlipod (or ml_ipod cant remember the exact name) on sourceforge, or gtkpod. lots of code you may wanna see

I have looked at them all. I've got well over a dozen source codes that are all supposed to read or write the iPod's files. I drew my beginning knowledge of the iTunesDB file from them.

However, I've experimented and tested and worked at getting all the details down much better than any of those projects. I can easily state that the iPodDB classes I wrote, and which Aero has hugely helped me to refine with usage, are far more capable than any other freely available code out there for writing and reading the iTunesDB file format. Only iTunes has more capability, and that's only because they know what all the fields mean.

Okay, so the iPodDB classes lack a bit of ease of use functionality, but then you can easily wrap them in something if you want simple to work with. It's not necessary to do so, but it can be done easily enough.

The only thing I'm lacking that anybody else has is smart playlist functionality, (gtkpod, I think? I don't recall offhand). But that's only because I want to do a better and more complete job. The one I looked at was.. well.. a bit of a hack job. It didn't define it very well, for certain. I can reverse engineer the thing from files produced by iTunes easily enough, but it's a PITA, and frankly I've not had time to do it properly yet.
Title: foo_pod - Foobar2000 meets the iPod
Post by: jarsonic on 2004-04-22 06:01:45
Quote
Quote
take a look at mlipod (or ml_ipod cant remember the exact name) on sourceforge, or gtkpod. lots of code you may wanna see

Thanks for the pointers - I hadn't heard about mlipod (http://cvs.sourceforge.net/viewcvs.py/mlipod/ml_ipod/) before. 

gtkpod is, AFAICT, just a C++ version of the Perl scripts in GnuPod (http://www.gnu.org/software/gnupod/).  From what I have read, it is probably the 2nd most complete iPod library implementation (behind Otto's iPodDB).

Except for mlipod, I have looked at nearly every open source iPod library out there, and Otto's is by far and away the cleanest and best code out there.    Most of the others are obvioulsly hacked together, and lack the basic understanding of the complete iTunesDB file. 

For example, I found a Winamp 5 plugin the other day, and I was curious about what, if any, features I could implement (read: steal  ) from it.  Actually, it is called ml_ipod.dll, but I it isn't the same code as the above link, or it was based on an earlier version.  So I was browsing through the code, and it was clear that it was, quite simply, crap.  This one line of code from ml_ipod.dll sums up my impression:
Code: [Select]
while(*p) *(d++)=(unsigned char)*(p++); //FUCKO: totally gay utf16 to utf8 conversion


Not only is the code completely wrong, but when you see comments like that, you know that it was written by some snot nosed 15 year old hacker (in the worst sense of the word).

Anyway, I'll get off my soap box now, but the main point is that iPodDB rulez, and there is little, if anything, that any of the other projects could add to it.

Actually, I know the guy who wrote it, heh.  He's actually a decent programmer, though I haven't seen his code.  I dunno.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 06:42:23
Quote
Actually, I know the guy who wrote it, heh.  He's actually a decent programmer, though I haven't seen his code.  I dunno.

I'm sure he is a great guy and I don't mean to pick on him, but I can't understand why someone would put something like that out for public distribution.  Especially these days, where your entire online history is just a Google search away.  Every time I start a contract or do an interview, the client either comes right out and says they have googled my past work or you know they have based on their questions.  I'd hate to be this guy going into an interview in 5 years and have someone bring this code up.

Anyway, we're totally off topic now.  Getting back to foo_pod, I've started working on transcoding support, so FLAC/OGG/WMA/etc. files will be able to be transparently transcoded to MP3 or AAC, and sent to the iPod.  I'm also working on the one last major performance issue.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Will Fisher on 2004-04-22 07:50:20
Quote
So I was browsing through the code, and it was clear that it was, quite simply, crap.  This one line of code from ml_ipod.dll sums up my impression:
Code: [Select]
while(*p) *(d++)=(unsigned char)*(p++); //FUCKO: totally gay utf16 to utf8 conversion


Not only is the code completely wrong, but when you see comments like that, you know that it was written by some snot nosed 15 year old hacker (in the worst sense of the word).

I personally got rid of that line of code, and now the internationalisation support for ml_ipod is as good as the rest of winamp (that is, if your windows code page is set correctly, you can view text in your languages charset perfectly).

(I won't comment on you calling Christophe a 15 year old snot nosed hacker. Save to say that I totally disagree with you).

Will Fisher
Title: foo_pod - Foobar2000 meets the iPod
Post by: xdeadbeef on 2004-04-22 07:52:55
Quote
Quote
Actually, I know the guy who wrote it, heh.  He's actually a decent programmer, though I haven't seen his code.  I dunno.

I'm sure he is a great guy and I don't mean to pick on him, but I can't understand why someone would put something like that out for public distribution.  Especially these days, where your entire online history is just a Google search away.  Every time I start a contract or do an interview, the client either comes right out and says they have googled my past work or you know they have based on their questions.  I'd hate to be this guy going into an interview in 5 years and have someone bring this code up.

Anyway, we're totally off topic now.  Getting back to foo_pod, I've started working on transcoding support, so FLAC/OGG/WMA/etc. files will be able to be transparently transcoded to MP3 or AAC, and sent to the iPod.  I'm also working on the one last major performance issue.

Umm, well I may have written the comment (Though I think a friend wrote the actual code), I forget, but I appreciate your concern for my image, but the reality is that I'm not planning on going to interview for a job anytime soon, and if I was, I would simply explain that that comment was to explain that that code was sub-par and lacking, and that I am very capable of using the word that twice twice in a row in a sentence, without causing real issue. Thanks, Justin.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Christophe on 2004-04-22 07:58:04
Aero:

You've been SERVED.

-Christophe
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-22 15:23:26
Quote
Aero:

You've been SERVED.

-Christophe

That's lovely. It was a fairly sophomoric line of code and surely makes it harder to take your project seriously. Possibly you can prove the community wrong and help out with foo_pod. More collective knowledge is always good.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 15:34:21
Well, now that everyone has had their say and I have been SERVED, I suggest we get back to foo_pod discussions...
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-22 15:37:12
Quote
Quote
Aero:

You've been SERVED.

-Christophe

That's lovely. It was a fairly sophomoric line of code and surely makes it harder to take your project seriously. Possibly you can prove the community wrong and help out with foo_pod. More collective knowledge is always good.

Actually, it is a wonderful allusion to a recent episode of South Park.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Paya on 2004-04-22 16:57:45
Very cool plug-in, Aero! Thanks a lot!!  I'd like to add that this plug-in was the reason I finally went out and bought an iPod. This is the best iTunes replacement... EVER!!! 

I've only got one thing, though...

I can't seem to play songs that have characters like:

(Nelly Furtado) Força
(Gyllene Tider) Det Är Över Nu

As far as I can tell from the changelog, this should be corrected by version 0.5.1 with character escaping? Or is that only for strictly non-european characters (as ç, ä and ö are european characters... )?

Other than that, thanks for a plug-in that just makes foobar that much better...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 17:06:48
Quote
Very cool plug-in, Aero! Thanks a lot!!  I'd like to add that this plug-in was the reason I finally went out and bought an iPod. This is the best iTunes replacement... EVER!!!  

I've only got one thing, though...

I can't seem to play songs that have characters like:

(Nelly Furtado) Força
(Gyllene Tider) Det Är Över Nu

As far as I can tell from the changelog, this should be corrected by version 0.5.1 with character escaping? Or is that only for strictly non-european characters (as ç, ä and ö are european characters... )?

Thank you for your kind words! 

You should try foo_pod version 0.5.4 (http://loodi.com/foo_pod.zip) and see if that fixes your problem.

The situation is that the iPod doesn't handle certain filenames, which as you have experienced, includes filenames with some non-English characters.  So even though foo_pod was handling them correctly, I had to add the filename espcaing to allow the songs to be played on the iPod.

dragonfin reported that 0.5.4 filename escaping fixed the problem with Asian character containing filenames, so I would expect that it would also fix European filenames as well, but if it doesn't, send me the filename(s) that don't work and I'll see about adjusting the escaping algorithm.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Paya on 2004-04-22 17:14:17
Thanks for the quick reply!

I can tell you, that every day I get home from work, I check to see if you've made a new version... which means I've already tried 0.5.4... and it doesn't work...

Anyways, here are some examples of characters that don't work:

ç, ä, ö, å

Those are the only ones I've tested. I would suspect that the danish characters æ and ø don't work either...

You don't need the whole filename, do you? If so, I can just post them...

Thanks again! 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 17:18:36
Quote
I can tell you, that every day I get home from work, I check to see if you've made a new version... which means I've already tried 0.5.4... and it doesn't work...

Anyways, here are some examples of characters that don't work:

ç, ä, ö, å

Those are the only ones I've tested. I would suspect that the danish characters æ and ø don't work either...

You don't need the whole filename, do you? If so, I can just post them...

No, I can create some test cases with those characters and see if I can reproduce the problem.  I'll try to test it out tonight.

Maybe I should ask Christophe and friends for their solution...

Edit:I actually looked, and they work around the filename problem by duplicating what gtkpod does and copy songs to the iPod with a dummy filename (e.g. ml_ipod12345.mp3).  That is definitely the easiest solution, but I was hoping to keep as much of the original filename as possible. 

Maybe I should escape the filenames down to straight ASCII (no non-English characters), but add a metadata tag to the file with the original, unmolested filename?  That way, with the right program (like a future version of foo_pod), you could copy files off of the iPod and retreive the correct filenames.
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-04-22 17:22:26
Quote
Thanks for the quick reply!

I can tell you, that every day I get home from work, I check to see if you've made a new version... which means I've already tried 0.5.4... and it doesn't work...

Anyways, here are some examples of characters that don't work:

ç, ä, ö, å

Those are the only ones I've tested. I would suspect that the danish characters æ and ø don't work either...

You don't need the whole filename, do you? If so, I can just post them...

Thanks again! 

That's odd, because on my ipod i've found that some of those characters work. Björk works fine, as does the æ in Sigur Ros's Agætis Byrjun. Though I haven't tried these in foo_pod yet, these were loaded months ago with ephpod. Though Aero mentioned that it doesn't have to do with foo_pod, but rather with the ipod itself. I'm using a 10gig gen. 2 ipod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 17:32:10
Quote
That's odd, because on my ipod i've found that some of those characters work. Björk works fine, as does the æ in Sigur Ros's Agætis Byrjun. Though I haven't tried these in foo_pod yet, these were loaded months ago with ephpod. Though Aero mentioned that it doesn't have to do with foo_pod, but rather with the ipod itself. I'm using a 10gig gen. 2 ipod.

Ephpod is probably doing filename espcaing, and you just didn't notice since you normally don't  see filenames on the iPod.

I posted this above as an Edit, but I think what I'm going to do is convert all filenames to straight ASCII or do what gtkpod/mli_pod are doing, but include a metadata tag in the file on the iPod which contains the original filename.  That way, it will be possible to copy the files off of the iPod and retreive the correct filename.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Marinmo on 2004-04-22 17:39:51
Note I do not own an Ipod, but a small suggestion comes to mind, don't know if it's possible to do, but here goes:

In filename, replace the ç, ä, ö, å with c, a, o, a respectively, while keeping the id3 tag (because Ipod use those, right?) intact with ç, ä, ö, å letters? Can Ipod display those? If so, problem seems solved to me?

Oh, and I didn't read the whole thread before posting this, so flame me if this has already been suggested.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 18:14:19
Quote
Note I do not own an Ipod, but a small suggestion comes to mind, don't know if it's possible to do, but here goes:

In filename, replace the ç, ä, ö, å with c, a, o, a respectively, while keeping the id3 tag (because Ipod use those, right?) intact with ç, ä, ö, å letters? Can Ipod display those? If so, problem seems solved to me?

That is a good idea, but it is a little more complicated than that.  For example, what if you have 2 songs: â.mp3 and ä.mp3.  If you just strip off the accent, you would end up with duplicate filenames (which isn't necessarily an error, but it could be depending on the situation).  And I can't even begin to think how to escape non-Latin characters, like Hebrew, Arabic, or Asian glyphs!

What I am currently doing is just randomly picking a character and inserting that in place of the non-ASCII character.  Another solution would be to use URI style escaping such as %3f , or simply just not using the original filenames at all.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Paya on 2004-04-22 18:18:37
Oh no, it's a good idea... I'm just inclined to think like Aero; it would be rather cool if you could keep the original filename intact. If you can't, tough luck, but, you know... it's just one of those things...

By the way... I myself have tested Sigur Rós... doesn't work either...

Actually, the iPod can't even show the letter ý in Ný Batteri!! I haven't seen that before!!
Title: foo_pod - Foobar2000 meets the iPod
Post by: kalmark on 2004-04-22 18:21:30
Quote
In filename, replace the ç, ä, ö, å with c, a, o, a respectively, while keeping the id3 tag (because Ipod use those, right?) intact with ç, ä, ö, å letters? Can Ipod display those? If so, problem seems solved to me?

Actually, this idea is preatty good - my Thomson portable works with this idea, as you can transfer any filename with any accented characters (latinic letters only, I think) and it displays them converted to the defult english alphabet - the original filename does not change when viewed e.g. in Total Commander. So it's kind of an intelligent behaviour on the side of the player, sad that iPod does not do this.

Aero, maybe you could append a number at the end of the converted filenames - so e.g. "Kispál és a borz - Szívrablás" would be "Kispal es a borz - Szivrablas - 1" or something, and the next track with the same name could be "Kispal ...  - 2". This way the name could be preserved.

[span style='font-size:8pt;line-height:100%']The example is in Hungarian, in case you were wondering.

edit: added some clarification
[/span]
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 19:11:06
Quote
Aero, maybe you could append a number at the end of the converted filenames - so e.g. "Kispál és a borz - Szívrablás" would be "Kispal es a borz - Szivrablas - 1" or something, and the next track with the same name could be "Kispal ...  - 2". This way the name could be preserved.

The problem is that while is easy for a human to look at "á" and see that it should be translated to "a", it is hard for a computer to do so.  I'm sure there are probably libraries available that can do the translation (if anyone knows of a good one written in C or C++, please point me to it), but this is getting pretty complicated for a device that theoretically doesn't even care about filenames.

I am going focus on getting something working, first of all, so everyone can play their songs on the iPod.  Then I'll see about making it nice.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rufu on 2004-04-22 19:20:22
May be the best thing to do is to just hash out any unusuable characters, as I'm pretty sure everyone will have the correct info in the tags if they are planning to use the files on an iPod.

The only problem would be if you wanted to copy the files from the iPod to the PC, but this could be gotten round by renaming the files based on the tags.

Just my 2 cents.
Title: foo_pod - Foobar2000 meets the iPod
Post by: kalmark on 2004-04-22 19:32:21
Yep, you're right, but you know the string for a filename, and you can parse it, right? So if you get to a character which is of a not supported character code, you simply look up in a character table you created to see what you have to write instead of the not supported character. Let's see some pseudo-code (maybe java style, you'll surely get it)
Code: [Select]
while (filename.hasNext())
{
      char i = filename.next();
      if (i < charcodemin &&  i > charcodemax)
      {
              int code = (int) i;
              while (substitutelist.hasNext())
              {
                     struct newcode=substitutelist.next()
                     if code = newcode.unsupported
                     {
                             outfile.NamesetNextChar(newcode.supported);
                              break;
                      }
               }
       }
      else outfile.NamesetNextChar(code);
}


I hope this is about right and makes sense  But this is possible to make! As my mp3 discman uses some similar algorythm.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Marinmo on 2004-04-22 21:25:48
Actually, you could replace the letters with their sound - as I am Swedish, I can contribute some; å would then be "aa", ä would be "ae" and ö would be "oe". Ofcourse this requires that every language that has those special characters "chip in" to the mix. For example; french's "ça va?" would be "sa va?" instead - practical renaming still maintaining the "meaning" of the sentence/word. Ofcourse this creates even more problems (if there is any such cases) with characters that have multiple sounds depending on the word. If not, be happy

But then again, I'm not capable of coding this. I just try to come up with some sort of solution - I have no idea how easy/hard this is to actually do, code-wise.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-22 21:38:00
Dumb question, maybe, but what does iTunes do with these files? Does it rename them when transferring to the iPod? I know it normally does not rename files, but if they don't work, then they don't work, and we should try to emulate the operation of iTunes in this respect, methinks.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Paya on 2004-04-22 21:44:51
D'oh, why didn't I think of that before???

iTunes replaces all "foreign" characters with an underscore (_).

That's propably the easy way around it... 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-22 21:46:54
Thanks for all of the suggestions, but this is getting way too complicated. 

My best ideas so far are to:

1. Just replace the non-ASCII characters with random letters.  This is quick and easy, and it doesn't change the length of the filename which would be important if the filename just barely fit into the allowed space (255 characters or less).  The downside is that it ruins the filename so that there is no chance to recover it, without adding metadata to the file itself.

2. Encode the UTF-8 filename with URI style escaping (e.g. %3f).  This is nice because the filename itself contains all of the information necessary to recover the original filename.  The downside is that most European characters require 2 UTF-8 bytes + the "%", and Asian characters can be upto 4 bytes total (3 UTF-8 bytes + "%").  That really cuts down the maximum filename size.

3. Get rid of filenames altogether, and use the gtkpod solution.  This is the easiest of all, but I don't think anyone wants an iPod full of foopod12345.mp3 files, at least without an easy way to convert them back to the original filename.


Otto42: iTunes does some heavy filename escaping, so even legal filenames are changed.  And its goal is different - I'm trying for the best way to preserve the original filename, while iTunes doesn't care since it doesn't allow the user to copy files off of the iPod anyway.

Basically, the problem is that there is no really good way to work around the iPod's filename limitations.  Like I said earlier, I'm going try to make it work for all character types, then see if it is worthwhile to make it nice.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-22 22:06:18
I love you Aero, you're so sexy
Title: foo_pod - Foobar2000 meets the iPod
Post by: Paya on 2004-04-22 22:10:42
I'd very much like to second that!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-23 03:50:46
Quote
I love you Aero, you're so sexy

You have obviously heard the stories about the size of my pod...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-24 04:17:22
Version 0.5.5 (http://loodi.com/foo_pod.zip) is now available.

It was actually posted earlier today, but HydrogenAudio was offline and I couldn't post about it.  I played around with the filename escaping, and it now always writes out ASCII filenames.  So both European and Asian filenames should work now. 

There are also some minor speed improvements that may or may not be noticable.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-24 11:31:00
I think all these speed improvements call for some benchmarking against other iPod-related applications. 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-25 00:49:40
Quote
I think all these speed improvements call for some benchmarking against other iPod-related applications.

There are other iPod applications? 

It will be hard to benchmark foo_pod against other programs, like Ephpod, because of the different ways they handle songs.

For example, when you add a directory in EphPod, it processes the files then sends them to the iPod.  With foo_pod, you first load them into Foobar, then use foo_pod to transfer them to the iPod.  The first time you load a file into Foobar, the process is slow.  But for subsequent loads, it is very fast.

Overall, my gut feeling is that foo_pod is a little faster than Ephpod.  But if you are transferring more than a few files, the overhead of the program is small compared with the time it takes to copy files to the iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-26 06:49:36
Version 0.5.6 (http://loodi.com/foo_pod.zip) is now available.


Not too much new feature or performance-wise, but 0.5.6 fixes a critical sync related bug.  I believe this is the root cause of reardon's problem reported (http://www.hydrogenaudio.org/forums/index.php?showtopic=19156&view=findpost&p=198825) on March 31.

The problem was very hard to isolate, since it typically only presented itself after doing a full sync.  Anyway, if you have done a sync and it appears that your iPod was wiped (and a blank playlist appears), then 0.5.6 should take care of your problem.

I also implemented the "Delete Selected File(s)" feature that somasatellite requested (http://www.hydrogenaudio.org/forums/index.php?showtopic=19156&view=findpost&p=202906).  This is a faster way to delete files from the iPod, rather than loading the playlist, removing the songs, and syncing.

Speaking of loading the iPod playlist, there is a new preference item to automatically reload the 'iPod (foo_pod)' playlist after any send/sync/delete.  This is disabled by default, since large databases can take 10+ seconds to load, but if enabled, it will keep the foo_pod playlist in sync with what is on the iPod without having to manually reload it.


From the Readme:
Version 0.5.6 - April 26, 2004
*  Finally fixed last known serious sync problem.  In some rare cases, after a sync
  you could see a blank playlist on the iPod and a few or no songs.  This was
  sometimes triggered by deleting iPod files then doing a sync.

*  Added a "Delete Selected File(s)" context menu item, so it is possible to directly
  remove files from the iPod, without having to do a sync.  This option is only visible
  when one or more files residing on the iPod are selected.

*  Added preference item (Auto Update) to automatically update the "iPod (foo_pod)"
  playlist after any send/sync/delete.

*  Some minor performance improvements.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-26 19:12:46
Quote
When you sync, you have to do the following:

1. Read the Play Counts file off the iPod. This contains all the play counts and such since the last time you synched. Everything "new" in other words. There's a class I wrote at the bottom of the iPodDB stuff specifically for parsing this file. It can't write the file, but then you'll never need to write to that file.

2. Add/merge that data into foobar's database.

3. DELETE the Play Counts file off the iPod. Or rename it to .bak or something. This is important, you want to clear that file so you don't get dupe counts.

4. When you build the new iTunesDB file, make sure to include the Play Counts info as well as the timestamps and such in the proper fields that are there for them. This is so smart playlists (if and when) will work correctly on 2.0 and up iPod's.

And that's pretty much that.

Edit: Part 2 is trickier than it seems. The Play Counts file is basically linked to the existing iTunesDB in such a way that the first song entry in Play Counts corresponds to the first song entry in the iTunesDB, and so on. So you'll need to have some way to work out which song in the foobar database corresponds to each song entry that already exists in the current iTunesDB in order to add the new playcount to the right place, update the last played time, etc. If you can sync though, you probably have a good idea of how to figure this out already.

I was thinking about how to implement this, and I'm kind of at a loss to figure out how to make it work.

Obviously, I can add metadata to files that is compatible with the Play Counter component.  And I can parse the Play Counts file and map the counts back to songs that are currently on the iPod. When to do this is an open question, but for now, it could happen any time you did a load/send/sync.

The problem is that there is no way to map iPod files back to files on your hard drive, at least at the moment. (I could write a function that looks for matching files in the Foobar playlist(s)).  Of course, updating a hard drive file would cause it to replace the equivalent iPod file on the next sync, so if you had a number of  files that were updated, they would all need to be copied to the iPod.  That could make a rather lenghty sync.

So at least at the moment, the only files I could write the play count values into are the ones on the iPod.  Is this what you are looking for, knowning that a sync could wipe out the files on the iPod and replace them with non-play counted versions from the hard drive?

Edit:  Actually, a sync would not necessarily replace the play counted iPod files, unless the source file changed.  So if you are willing to live with the Play Count data living only on the iPod, then this would be doable.

Edit2:  Maybe this would work better with the database?  I dunno...I don't use it so I don't have much experience with Foobar's database.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-26 22:50:31
Is there an easy way to sync a directory with the iPod?

When I update my music library, songs get added and deleted here and there, and it is a bitch to have to add all the songs to foobar2000 again just to sync with the iPod. I mean, it is not just a matter of adding the songs ive added to the playlist containing my library (for foo_pod syncs).

Is there a command to sync a foobar2000 playlist with a directory maybe? I saw remove dupes, but this doesnt exactly do what i wanted.

If this feature does not exist, I would love to see it as part of foo_pod... 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-26 23:17:46
Quote
Is there an easy way to sync a directory with the iPod?

When I update my music library, songs get added and deleted here and there, and it is a bitch to have to add all the songs to foobar2000 again just to sync with the iPod. I mean, it is not just a matter of adding the songs ive added to the playlist containing my library (for foo_pod syncs).

Is there a command to sync a foobar2000 playlist with a directory maybe? I saw remove dupes, but this doesnt exactly do what i wanted.

If this feature does not exist, I would love to see it as part of foo_pod... 

Not really, at least not like how I think you are expecting it to work.

foo_pod's current interface is only through Foobar, which means that it operates off of playlist entries and playlists, not files and directories.

Getting back to your problem, you can just select or create an empty playlist, then use Foobar's Add Directory to populate the playlist.  Then either call foo_pod's Send Playlist to iPod or select the new songs and selected the Send Selected context menu item.  foo_pod should only copy files that aren't already on the iPod, so it won't hurt if some or all of the files are already on the iPod.

If there was scripting support in either Foobar or foo_pod, you could probably automate this process.  Maybe foo_lua can already do this (create a new playlist, add a directory, then call the foo_pod Send Playlist menu item, then remove the playlist)?

I am also toying around with making foo_pod a Foobar service, so anyone could write a custom GUI that uses it to perform iPod operations.  Then you could have Add Directory add the files directly to the iPod.  Something like this would be the ultimate iTunes killer, since you'd have the nice interface while hiding the playlists and other Foobar-isms, while still keeping all of the Foobar power.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-04-26 23:51:04
Quote
Quote
Is there an easy way to sync a directory with the iPod?

When I update my music library, songs get added and deleted here and there, and it is a bitch to have to add all the songs to foobar2000 again just to sync with the iPod. I mean, it is not just a matter of adding the songs ive added to the playlist containing my library (for foo_pod syncs).

Is there a command to sync a foobar2000 playlist with a directory maybe? I saw remove dupes, but this doesnt exactly do what i wanted.

If this feature does not exist, I would love to see it as part of foo_pod... 

Getting back to your problem, you can just select or create an empty playlist, then use Foobar's Add Directory to populate the playlist.  Then either call foo_pod's Send Playlist to iPod or select the new songs and selected the Send Selected context menu item.

Well this is what I am doing now, but with such a large music library, it takes way too long to add all the files to a playlist again (as I don't want to use foobar2000's database).
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-04-27 02:19:24
Quote
Quote
Quote
Is there an easy way to sync a directory with the iPod?

When I update my music library, songs get added and deleted here and there, and it is a bitch to have to add all the songs to foobar2000 again just to sync with the iPod. I mean, it is not just a matter of adding the songs ive added to the playlist containing my library (for foo_pod syncs).

Is there a command to sync a foobar2000 playlist with a directory maybe? I saw remove dupes, but this doesnt exactly do what i wanted.

If this feature does not exist, I would love to see it as part of foo_pod... 

Getting back to your problem, you can just select or create an empty playlist, then use Foobar's Add Directory to populate the playlist.  Then either call foo_pod's Send Playlist to iPod or select the new songs and selected the Send Selected context menu item.

Well this is what I am doing now, but with such a large music library, it takes way too long to add all the files to a playlist again (as I don't want to use foobar2000's database).

You'll have to parse all the files anyway to get the tag info.  The obvious solution is to turn on foobar's database so that you only have to parse each file exactly one time.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-27 23:15:45
Quote
Obviously, I can add metadata to files that is compatible with the Play Counter component.  And I can parse the Play Counts file and map the counts back to songs that are currently on the iPod. When to do this is an open question, but for now, it could happen any time you did a load/send/sync.

The problem, as I see it, is that ideally, I wouldn't want the Play Count and Last Played Time and Rating stored in my song file itself, actually. A database should hold this information.

Quote
Edit:  Actually, a sync would not necessarily replace the play counted iPod files, unless the source file changed.  So if you are willing to live with the Play Count data living only on the iPod, then this would be doable.

This is the best solution until it becomes possible to store the play count info locally without writing it to the music files themselves as metadata. As long as the play count is updated in the iTunesDB, live updating smart playlists can utilize this data, as least with newer iPods.

Quote
Edit2:  Maybe this would work better with the database?  I dunno...I don't use it so I don't have much experience with Foobar's database.

Far, far better. There's no reason to write this info to the songs themselves, except to make the data transferrable, and ideally I wouldn't want it to transfer in most cases anyway.

Let me think about it a bit. Perhaps there's a better solution than we're thinking of. Foobar's database system has some definite drawbacks that I'm only now starting to see. Modifications to it may be needed to do this correctly, or it may be needed to implement some kind of database not related to foobar's database... Really, play counts and last played time and ratings data is only useful in conjunction with smart playlists, or whatever you want to call an auto-created playlist. So implementing that first might be required.
Title: foo_pod - Foobar2000 meets the iPod
Post by: gandalf44 on 2004-04-28 15:35:16
Otto42,

Can you somehow use foo_playlistgen_ex and foo_playcount in conjunction with foo_pod?  I have been using the Extened Playlist generator and it virtually has enabled me to have Smart Playlists with foobar2000.

It would suck to have to re-invent the wheel since both plugins seem to work nicely currently, w/o of course foo_pod support.

-gandalf44
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-28 15:56:50
Quote
Can you somehow use foo_playlistgen_ex and foo_playcount in conjunction with foo_pod?  I have been using the Extened Playlist generator and it virtually has enabled me to have Smart Playlists with foobar2000.

It would suck to have to re-invent the wheel since both plugins seem to work nicely currently, w/o of course foo_pod support.

I think what Otto wants is a way to get the play count from the iPod (which is created on the iPod as you play each song).

Actually, I maybe know how to do this.  Rather than writing metadata to the iPod files, I can just populate PLAY_COUNTER and the other metadata used by the Play Counter component (http://www.hydrogenaudio.org/forums/index.php?showtopic=20719&st=0&) when the file is loaded into the foo_pod playlist (and store the play count data for each song in the iTunesDB database on the iPod).  I already sort of do this for the artist/title/album and other data from the iPod database, so adding the play counter stuff won't be very difficult.

The only fuzzy part in my mind is when to delete the Play Counts file on the iPod.  I guess that any time you load/send/sync/delete from the database, foo_pod should parse the Play Counts file, copy the inforrmation to the iTunesDB database, then delete Play Counts.

Does that sound like that would work and what you are looking for, Otto?
Title: foo_pod - Foobar2000 meets the iPod
Post by: gandalf44 on 2004-04-28 16:14:03
What about integrating with Quick Tag (foo_quicktag) for ratings?  Has this been discussed?

-gandalf44
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-28 16:27:44
Quote
What about integrating with Quick Tag (foo_quicktag) for ratings?  Has this been discussed?

I was unaware of  foo_quicktag (http://members.lycos.co.uk/musicf/), but yeah, it looks like I would just have to add a RATING metadata item to Foobar when the iPod playlist is loaded.  That is very easy to add - I just didn't know of anything that was using ratings on Foobar, or a "standard" metadata name, to warrant adding it to foo_pod.,
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-28 19:06:46
Okay.. here's kind of what I'd like:

Play Counts to be syncronous. By this, I mean that playing songs on the iPod or in foobar will increment a play counter for that song, and these play counters would be syncronized between the two. In other words, if I play a song on foobar, then play it on the iPod, and then sync, that songs play count should go up by 2, and the updated play count should now be written back to the iPodDB. The play count should reflect how many times I've played the song. Simple as that.

There should be a last played time, also synced between the two, indicating when I last played the song.

Ratings, ditto. If I change a rating on the iPod, it should sync back to foobar when I sync the iPod.

None of these three should get stored as metadata in the song files themselves. Ever. Okay, at least I'd like an option to never store these in the song files. An MP3 file should not change just by playing it, I say.

Once all that is there, then I'd like to be able to build smart playlists using that data. But that's long term, and not a biggie right now.


Regarding when to do the play counts deletion, during a sync you do this:

1. Read the Play Counts file.
2. Add the play counts from there to the play counts stored in *foobar* (not those in the iTunesDB). Wherever they may be.
3. Delete the Play Counts file.
4. Now, actually sync the songs, and copy the new, updated play count data from foobar to the iTunesDB.

The idea being that the play counts file holds whatever has changed since the last time you synced, and that data needs to be merged into foobar's data, not just into the iTunesDB data. The iTunesDB data needs to be regenerated from foobar's data. Follow?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-28 19:11:36
Gandalf: I've not used foo_playlistgen_ex but I doubt it's compatible with smart playlists on the iPod. The wheel will very likely need to be reinvented for this part, at least.

foo_playcount might work, but I certainly won't use it in it's current form, where it modifies my music files. Until there's a way around that, it seems unlikely to work properly, in my view. This is just a dealbreaker for me. If my music is constantly changing, then I can't use most of my other music programs the way I use them currently.

Edit: I admit that for the time being, I've gone back to iTunes and stopped using foobar/foo_pod. Smart playlists on my iPod are just an essential for the way I listen to my music. I don't listen to music using the computer much, so having smart playlists there is not a big deal to me. I tried foo_pod, I really did, but it's just not enough, yet. This is why I'm posting this sort of thing. I hate iTunes, but just I gotta have live updating smart playlists on the iPod...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-28 19:24:29
Aero: I noticed that during a sync with iTunes, it was spinning my external drive pretty hard, running through my music. I'm thinking it's creating a hash of the first X bytes in the file (or something similar) and then possibly using that as some sort of identifier in the iTunesDB. That may be what some of that weird looking data in the MHIT is. Investigation might be needed here, as that certainly would help with syncing, don't ya think?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-28 19:59:49
Quote
Aero: I noticed that during a sync with iTunes, it was spinning my external drive pretty hard, running through my music. I'm thinking it's creating a hash of the first X bytes in the file (or something similar) and then possibly using that as some sort of identifier in the iTunesDB. That may be what some of that weird looking data in the MHIT is. Investigation might be needed here, as that certainly would help with syncing, don't ya think?

Try installing and running FileMon (http://www.sysinternals.com/ntw2k/source/filemon.shtml) and spy on what iTunes is doing.  FileMon will show you exactly which files iTunes is accessing, and if it is doing a partial read, which range it is reading from (offset and length, in the far right column).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-28 20:08:15
Quote
Edit: I admit that for the time being, I've gone back to iTunes and stopped using foobar/foo_pod. Smart playlists on my iPod are just an essential for the way I listen to my music. I don't listen to music using the computer much, so having smart playlists there is not a big deal to me. I tried foo_pod, I really did, but it's just not enough, yet. This is why I'm posting this sort of thing. I hate iTunes, but just I gotta have live updating smart playlists on the iPod...

Can't you set up your smart playlists on iTunes, then use foo_pod to transfer music?  While I  haven't tried it, my understanding is that iPodDB, and how I use it in foo_pod, will preserve the smart playlist MHOD data.  So theoretically, at least, it should work.

Also, if you don't mind, email or PM me an example of how you use smart playlists, and why they are so essential to you.  I'm curious, since have never used them...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-28 20:52:26
Quote
Try installing and running FileMon (http://www.sysinternals.com/ntw2k/source/filemon.shtml) and spy on what iTunes is doing.  FileMon will show you exactly which files iTunes is accessing, and if it is doing a partial read, which range it is reading from (offset and length, in the far right column).

I'll give it a shot when I get home and see what I can find out.

Regarding smart playlists, I hadn't considered that. I wiped the iPod before using foo_pod with it. Silly me. I might give that a shot later.

As for what I do with smart playlists, well, I listen to smart playlists almost exclusively. Here's a few I have on the iPod:

(unless I state otherwise, all my playlists also include two rules, those being "Genre is not Comedy" and "Genre is not Books and Spoken").

Good songs - Anything rated 3 stars or higher
Great songs - 4 stars and higher
Recently Played - Anything played in the last 2 weeks
Not Recently Played - Anything not played in the last 2 weeks
Old but Good - Anything rated 3 or higher and not played in the last 2 weeks (probably my most used playlist)
Old but Great - Same as "Old but Good" but 4 stars or higher
Fast songs - Songs with a BPM higher than 120
Slow songs - Songs with a BPM lower than 80
New Music - Anything I've added in the last month
Angry Music - A collection of songs by 311, Rage Against the Machine, AudioSlave, few other bands, that I've rated 3 or higher.
Good 90's music - Stuff from 1990-1999 that's rated 3 stars and up.
Least 100 Played - 100 songs with the lowest playcounts
Top 100 Played - 100 songs with highest playcounts

Etc, etc. You get the picture, I'm sure.

I've got several more SPL's that I can't think of off the top of my head. Anyway, I have 6000 songs on the iPod. When I'm driving along listening, I put it on a playlist with shuffle turned on and let it go. I don't make mixes myself, I let it make them for me. I don't feel the need to micromanage my listening, I just prefer to tell it what sort of things I want to hear and let it pick them automatically. I'm always coming up with new smart playlists, essentially, and I just leave them there on the off chance I might be in that sort of mood.

But all these rely on having 100% correct data. So I've gone to lots of trouble to put all the right data in there, sort of thing. All my "Comments" fields contain album reviews from AMG, for example (which makes for interesting smart playlists... think "Comments contains edgy" or some other descriptive type of weird adverb that music reviewers would tend to use). Anyway, having all the data correct is critical, which is why this sort of playcount syncing and such matters so much to me.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-04-28 21:26:18
Quote
As for what I do with smart playlists, well, I listen to smart playlists almost exclusively. Here's a few I have on the iPod:

(unless I state otherwise, all my playlists also include two rules, those being "Genre is not Comedy" and "Genre is not Books and Spoken").

Good songs - Anything rated 3 stars or higher
Great songs - 4 stars and higher
Recently Played - Anything played in the last 2 weeks
Not Recently Played - Anything not played in the last 2 weeks
Old but Good - Anything rated 3 or higher and not played in the last 2 weeks (probably my most used playlist)
Old but Great - Same as "Old but Good" but 4 stars or higher
Fast songs - Songs with a BPM higher than 120
Slow songs - Songs with a BPM lower than 80
New Music - Anything I've added in the last month
Angry Music - A collection of songs by 311, Rage Against the Machine, AudioSlave, few other bands, that I've rated 3 or higher.
Good 90's music - Stuff from 1990-1999 that's rated 3 stars and up.
Least 100 Played - 100 songs with the lowest playcounts
Top 100 Played - 100 songs with highest playcounts

Etc, etc. You get the picture, I'm sure.

...

But all these rely on having 100% correct data. So I've gone to lots of trouble to put all the right data in there, sort of thing. All my "Comments" fields contain album reviews from AMG, for example (which makes for interesting smart playlists... think "Comments contains edgy" or some other descriptive type of weird adverb that music reviewers would tend to use). Anyway, having all the data correct is critical, which is why this sort of playcount syncing and such matters so much to me.

Interesting.  You obviously have much better metadata in your files than I!    I was happy when I spent the considerable amount of  time just getting artist/title/album correct when I got my iPod.

It is facinating that everyone uses their iPod a little differently.  I'm definintely a "throw everything on there that fits, turn on shuffle, and skip to the next track if you don't like the song" kind of guy...  So foo_pod is definitely geared toward someone like myself, although with an intelligent playlist creator on Foobar, you could do everything you are doing with smart playlists, except for the Played * type lists.  Once I hook up ratings and try to get play count working, maybe it be possible to create those as static playlists.  Maybe I'm missing the point, but if you sync your iPod every day or so and have it rebuild the smart playlists, that is basically as good as having dynamic smart playlists.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-28 22:10:33
Quote
Once I hook up ratings and try to get play count working, maybe it be possible to create those as static playlists.  Maybe I'm missing the point, but if you sync your iPod every day or so and have it rebuild the smart playlists, that is basically as good as having dynamic smart playlists.

True, but as good, in my particular case, isn't quite good enough. I don't sync every day or so. I generally sync once a week, sometimes a little more but not much more. Especially if I'm travelling, because my computer doesn't come with me. And travelling is kinda where I need it the most.

But yes, I go to a lot of trouble on my metadata. Took me a while to get my initial data going for 3000 songs, but after that was done it was a simple matter of doing the data correct for each album as I ripped (or otherwise "acquired" it). I had to write a program to correct the BPM number produced in MP3 tags by PCDJ Red, for example, just so I could make those fast/slow songs list.

I'm still unable to calculate BPM for a M4A file, so lately I've been converting them to MP3's, calculating BPM on those, then inputting them by hand into the M4A's metadata. It's not much fun, but I'm working on better ways.

My current rip/encode process is rip to WAV, encode to temp MP3 (at a pretty low quality), figuring BPM of MP3s with PCDJ Red, deleting MP3s, encoding WAVs to M4A's, using Tag&Rename for most of the metadata and for renaming the files to the correct directory structure, manually putting in the BPMs, add to iTunes Library. It's not really as involved as it sounds, but it does mean that I don't do it in batches, sort of thing.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-04-29 05:01:54
Edit: Never mind. iTunes isn't doing anything weird. I'm just not thinking straight. What it's doing during a sync when it gets a lot of drive activity is checking the attributes of all the files, looking to see if any file has changed. Probably checking out the Last Modified Timestamp on the file itself, or the date created timestamp or something.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Biscuits on 2004-05-01 02:34:07
I don't believe anyone has said this yet but:

In version 0.5.6, if you add some files to the iPod playlist and leave them highlighted and then say sync current playlist, it will delete everything and add just the highlighted files. I don't know if this was on purpose or not.

Thanks for the plugin. Good work so far!

-Tristan
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-01 17:47:00
Quote
In version 0.5.6, if you add some files to the iPod playlist and leave them highlighted and then say sync current playlist, it will delete everything and add just the highlighted files. I don't know if this was on purpose or not.\

Are you sure it was only the highlighted files?  The sync function doesn't do anything with selected/highlighted files - it only operates on playlists. 

So if was only the highlighted files, then something weird might be going on.  If it transferred the whole playlist and deleted all of the other files, then that is the expected behavior.  Sync means "make the iPod looks like the current playlist (or playlists if you use the Sync All Playlists option)", which implies that everything that isn't in the playlist will be deleted. 

Send Selected/Send Playlist will always only copy new files to the iPod, and never delete any, so if you are unsure, that is the best option to use.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-02 10:51:20
Version 0.6 (http://loodi.com/foo_pod.zip) is now available.


This release adds some new stuff for both users and developers. 

For users, there is a new "Ignore Playlist" feature (suggested by herr klang), so you can specify individual playlists to be excluded from the Send/Sync All command.  This is available on the right-click context menu, where you can set and unset this feature.  It is also saved along with the other prefs, so a playlist will stay ignored unless you rename/remove it or cancel the ignore.

For developers, I have been playing around with Foobar's service_base interface, and I have made an interface for foo_pod.  There are two .h files that you should include, pod.h and pod_error_codes.h.  Then you can get a pointer to the pod class with pod::get(), then call away on the pod functions.  I don't use the service interface internally, so there are bound to be some problems with it, and I'd appreciate any feedback on the interface.

Also for users and developers, I added an "Export iTunesDB Database to XML" feature.  This will dump out all of the songs and playlists that currently reside on the iPod to a structured XML document.  I imagine this will be very useful for iPod developers (this means you, Otto42!), but it also could be nice for users.  I am going to do some XSLT-fu, which will transform the XML into plain text or HTML, so you could run the transformation and put the resulting nicely formatted HTML up on a webpage, for example.



From the Readme file:
Version 0.6 - May 2, 2004
*  Added an (experimental) Foobar2000 service interface for some of foo_pod's functions.
  This is only useful for component authors.

*  Fixed several instances where the progress dialog would not close, typically due to
  an error condition.

*  Delete All Songs And Playlists does a more complete job of removing all iPod music
  related files.

*  Added an "Ignore Playlist" feature.  This is available on the context menu, and allows
  the user to specify upto 30 playlists which foo_pod will not use when syncing or sending
  playlist.  This is useful for keeping playlists of songs that you do not want on your iPod.
  This list of Playlists is saved between Foobar sessions, so the playlist will remained
  ignored until you un-ignore it.

*  Added a "Dump iTunesDB Database to XML" feature.  This will parse the iPod's database file,
  and output the data in XML format. 

*  Fixed a problem when using "Sync All Playlists" where the same song is in multiple playlists.
  Previously, multiple copies of the song would be copied to the iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-02 11:08:02
BTW, I recommend that you do not update to iPod Software 2.2 (a.k.a iPod Update 2004-04-28 (http://www.apple.com/ipod/download/)), unless you must use the new iTunes features, like lossless encoded music.

While I haven't had any major problems with it and foo_pod, I noticed that it is doing some weird stuff when mounting.  I believe that this is the problem described at news.com (http://news.com.com/2100-1041_3-5202136.html?tag=nefd.pop), although like I said, foo_pod doesn't seem to be affected.  Also tonight, I noticed songs skipping and freezing with 2.2 that worked just a day ago with 2.1.
Title: foo_pod - Foobar2000 meets the iPod
Post by: musicmusic on 2004-05-02 18:16:46
I made a small plugin using foo_pod's new api to sunc the ipod with a list of directories rather than the playlist.

binary (http://members.lycos.co.uk/musicf/test/foo_ipod_dirsync.dll)
source (http://members.lycos.co.uk/musicf/test/foo_ipod_dirsync.zip)

From some quick testing it seems to work fine.

Aero: Nice work on the plugin.

Do you thing you could add something to backup the on-the-go playlist? iTunes used to make a backup of it, and its severly annoying how it is wiped whenever the iPod is connected to the computer.

Edit: In fact does foo_pod wipe all playlists when syncing? It seems to, I don't think that is desirable behaviour.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-02 19:07:30
Quote
I made a small plugin using foo_pod's new api to sunc the ipod with a list of directories rather than the playlist.

binary (http://members.lycos.co.uk/musicf/test/foo_ipod_dirsync.dll)
source (http://members.lycos.co.uk/musicf/test/foo_ipod_dirsync.zip)

From some quick testing it seems to work fine.

Wow...that was so fast!

Quote
Aero: Nice work on the plugin.

Do you thing you could add something to backup the on-the-go playlist? iTunes used to make a backup of it, and its severly annoying how it is wiped whenever the iPod is connected to the computer.

Thanks!

I'm not currently doing anything the OTG playlist, but Otto has code in iPodDB for dealing with them (other than being in a separate file, they are no different than regular playlists).  How about if I automatically read the OTG playlist and if it exists, when you load the iPod database into Foobar, it will create a second "iPod (foo_pod) OTG" playlist.  Or do you want an actual physical copy of OTGPlaylistInfo?

Edit: Actually, it turns out the the OTG playlist is a little different.  Regular playlists are lists of ids, while OTG is a list of indexes.  I have no idea why Apple made it different, but that is why it has to be deleted after every sync - since it contains indexes instead of IDs, any changes to the array of songs will invalidate the index list.

I have OTG playlist reading implemented, but like iTunes, I believe I will need to delete the OTGPlaylistInfo file after any potential removal change to the song list (i.e. sync or remove songs).  But at least you'll have the 'iPod (foo_pod) OTG' playlist in Foobar.

Edit 2:  The more I think about how OTG is implemented, the less I think I can do what you are asking.  I could display the OTG as it exists right before a sync, but that could be useless if the files in the list are deleted after a sync.  If I display it after a sync, the list could be equally as useless, since the indexes could be pointing to different songs.  I'm open to suggestions on what to do about OTG, but I think due to Apple's questionable implementation of OTG, I have no choice but clear it after any sync/remove operation.  It will still be valid after send files, however.

Quote
Edit: In fact does foo_pod wipe all playlists when syncing? It seems to, I don't think that is desirable behaviour.

Yes, I rebuild all of the playlists after a sync that changes the iPod.  I'm not sure I have a choice, since the playlist is really just a list of ids, which can be reused for different songs.  So if you have a playlist with ids 2001, 2002, and 2003 and do a sync which deletes 2002 as well as adding a new file, you could have the new file with id 2002. 

I'll see if there is a more intelligent way to dealing with the playlists, but for now, that is what is implemented.
Title: foo_pod - Foobar2000 meets the iPod
Post by: musicmusic on 2004-05-03 15:37:46
Quote
Wow...that was so fast!
Lol, I wanted it myself, so..

Quote
Yes, I rebuild all of the playlists after a sync that changes the iPod.  I'm not sure I have a choice, since the playlist is really just a list of ids, which can be reused for different songs.  So if you have a playlist with ids 2001, 2002, and 2003 and do a sync which deletes 2002 as well as adding a new file, you could have the new file with id 2002. 

I'll see if there is a more intelligent way to dealing with the playlists, but for now, that is what is implemented.


The ID for the same song will remain unchanged, correct? You could still compare the filenames and remove bad entries, or even recreate the playlists based on path or something, or even try not to reuse the same IDs in a single sync.

If you don't want to do that, if you added some playlist interfaces I could at least add something to my component to recreate the playlists after a sync. Im not too concerned anyway since any playlists on my ipod I would have made in foobar anyway.

Quote
I'm not currently doing anything the OTG playlist, but Otto has code in iPodDB for dealing with them (other than being in a separate file, they are no different than regular playlists).  How about if I automatically read the OTG playlist and if it exists, when you load the iPod database into Foobar, it will create a second "iPod (foo_pod) OTG" playlist.  Or do you want an actual physical copy of OTGPlaylistInfo?

Edit: Actually, it turns out the the OTG playlist is a little different.  Regular playlists are lists of ids, while OTG is a list of indexes.  I have no idea why Apple made it different, but that is why it has to be deleted after every sync - since it contains indexes instead of IDs, any changes to the array of songs will invalidate the index list.

I have OTG playlist reading implemented, but like iTunes, I believe I will need to delete the OTGPlaylistInfo file after any potential removal change to the song list (i.e. sync or remove songs).  But at least you'll have the 'iPod (foo_pod) OTG' playlist in Foobar.

Edit 2:  The more I think about how OTG is implemented, the less I think I can do what you are asking.  I could display the OTG as it exists right before a sync, but that could be useless if the files in the list are deleted after a sync.  If I display it after a sync, the list could be equally as useless, since the indexes could be pointing to different songs.  I'm open to suggestions on what to do about OTG, but I think due to Apple's questionable implementation of OTG, I have no choice but clear it after any sync/remove operation.  It will still be valid after send files, however.

The OTG playlist doesn't get cleared when I sync with iTunes, rather when the iPod is docked with the computer (I think when it is disconnected). However, iTunes would make a copy of it as a standard playlist. So, yes, being able to load it would be suffice as I can send it back afterwards. And well the deleting thing doesnt matter for me anyway. I wouldnt have songs on my OTG playlist that I want to delete.. I guess it depends if you keep all of your songs on your iPod or just what you want to listen to. I wouldn't imagine anyone doing the latter, unless they had a mini or something, but even then its better than nothing.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-05-03 17:16:08
Much like the Play Counts file, the OTGPlaylist file is wiped by the iPod itself, after you dock it to a computer and change.. well.. anything. You don't have to delete the file for it to be wiped, and writing the file is most likely useless.

The reason iTunes deletes both Play Counts and OTGPlaylist files is simply to ensure that iTunes itself doesn't accidently read those files back in twice.

What I think is actually going on is that, after you undock an iPod, it has to reread and parse the iTunesDB. At that time, it probably checks timestamps or something else to detect if the iTunesDB has changed. If it has, it'll wipe both OTGPlaylist and Play Counts the very next time you tell it to play a song. Any song. It has to, as both of these files are based on the index number of the songs in the iTunesDB, and not the ID numbers. So they're invalid after an iTunesDB change.
Title: foo_pod - Foobar2000 meets the iPod
Post by: musicmusic on 2004-05-03 17:47:24
Yes that would make sense, it doesn't seem to get wiped when I don't change anything.

That would make more sense as to iTunes behaviour.

Perhaps, Aero, instead you could make an option, where whenever foo_pod syncs or whatever, it checks if there is anything in the on-the-go playlist, converts it to a list of IDs, and then after it finishes doing whatever it is doing it recreates it as a playlist named "On-The-Go dd/mm/yy" or something like that. Either that or it could recreate the actual on-the-go playlist..

Edit: Silly me, recreating the OTG playlist wouldnt work, and creating a new playlist is not a particulary good idea neither since it may get wiped if you sync again. with foo_pod's current behaviour

Perhaps automatically loading it to a foobar playlist then and leaving to the user to decide what to do with it.

Either way, thanks Aero for the nice work on the plugin, it was great to get my apev2 and replaygain info for my mp3s to my ipod
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-03 18:13:08
Quote
Much like the Play Counts file, the OTGPlaylist file is wiped by the iPod itself, after you dock it to a computer and change.. well.. anything. You don't have to delete the file for it to be wiped, and writing the file is most likely useless.

The reason iTunes deletes both Play Counts and OTGPlaylist files is simply to ensure that iTunes itself doesn't accidently read those files back in twice.

What I think is actually going on is that, after you undock an iPod, it has to reread and parse the iTunesDB. At that time, it probably checks timestamps or something else to detect if the iTunesDB has changed. If it has, it'll wipe both OTGPlaylist and Play Counts the very next time you tell it to play a song. Any song. It has to, as both of these files are based on the index number of the songs in the iTunesDB, and not the ID numbers. So they're invalid after an iTunesDB change.

The question is when exactly does OTGPlaylistInfo get deleted, and what triggers it.  You say that the iPod does it after a change to iTunesDB, but later on, you say that iTunes does it.

If the iPod deletes OTGPlaylistInfo after you undock, which is what I expect is the case, then we are boned.  There is no way to generate a new OTG playlist with updated info.

If it is deleted by iTunes or iPodService, then I can recreate the OTG playlist with updated info after a sync.

I'll investigate this further tonight...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-05-03 19:22:32
Quote
The question is when exactly does OTGPlaylistInfo get deleted, and what triggers it.  You say that the iPod does it after a change to iTunesDB, but later on, you say that iTunes does it.

Both do it. And yes, you're likely boned on this one, but then again, maybe not...

iTunes does it for certain. But it doesn't have to do so. It deletes these files so it won't accidently read them in again, if, say you happen to undock and redock without playing anything. It does it "just in case" sort of thing. Since you're not iTunes, you don't have to do this if you don't want to do so.

But the iPod does it too. It will overwrite the existing files with new blank ones if/when:
a) iTunesDB changes
b) You then play a song.. any song.

The trick here is that if you knew how a) worked, then you might be able to bypass it. If, for example, it's comparing the timestamp of the iTunesDB to the timestamp of the OTG file and overwriting the OTG only if it's older... See what I mean? I don't know exactly when the iPod overwrites the file, just that it does, given normal circumstances.
Title: foo_pod - Foobar2000 meets the iPod
Post by: scottder on 2004-05-13 02:57:46
I keep getting the following when I copy to my ipod (15gb 3G with latest firmware)

Scott

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 0586EEFFh
Access violation, operation: read, address: 00000010h
Call path:
WinMain=>app_mainloop=>menu command: "Send selected to iPod"
This is the first crash logged by this instance.
Code bytes (0586EEFFh):
0586EEBFh:  A1 78 56 88 05 85 C0 75 05 B8 0C 59 88 05 80 38
0586EECFh:  00 74 25 6A 01 6A 00 B9 68 56 88 05 E8 90 CA FF
0586EEDFh:  FF 83 EC 18 8B CC 89 64 24 38 50 E8 21 CA FF FF
0586EEEFh:  E8 1C 44 FF FF 83 C4 20 85 ED 74 0E 8B 45 00 55
0586EEFFh:  FF 50 10 8B 4D 00 55 FF 51 08 8B 44 24 34 85 C0
0586EF0Fh:  74 0A 50 FF 15 4C F1 87 05 83 C4 04 8D 4C 24 64
0586EF1Fh:  C7 84 24 A8 02 00 00 FF FF FF FF E8 01 AA 00 00
0586EF2Fh:  8B 8C 24 A0 02 00 00 5F 5E 5D 64 89 0D 00 00 00
Stack (0012F838h):
0012F818h:  E1031078 81B3E4F1 F0AA7CE8 805968D9
0012F828h:  E1090870 E1031078 00000000 0012F82C
0012F838h:  00176520 057F3DE8 058858C0 0012FB18
0012F848h:  00000001 010088F0 00000014 00176520
0012F858h:  77F944A8 77F57D70 77F58A3A 00000026
0012F868h:  00000026 00000026 06408970 00000080
0012F878h:  00000050 00000001 0587F3AC 0587F384
0012F888h:  0000000D 8C100B7F 038503C9 00000017
0012F898h:  00000001 057B7448 0587F59C 0587F4BC
0012F8A8h:  00000068 0007CE86 00000001 0000000A
0012F8B8h:  00000002 C38495B1 0B5556D1 00000002
0012F8C8h:  057FEEC8 057D1008 003A0066 0069005C
0012F8D8h:  006F0050 005F0064 006F0043 0074006E
0012F8E8h:  006F0072 005C006C 00540069 006E0075
0012F8F8h:  00730065 0069005C 00750054 0065006E
0012F908h:  00440073 00000042 5AD71B48 5AD8A60D
0012F918h:  00000000 00000000 01AE02DB 00000001
0012F928h:  77D45A63 77D44124 77D9C064 77D458A7
0012F938h:  77D45899 00000100 00000000 05752E28
0012F948h:  00000001 00000010 00000001 0012F93C
Registers:
EAX: 00000000, EBX: 00000014, ECX: 0012F81C, EDX: 7FFE0304
ESI: 00000014, EDI: 057F3DE8, EBP: 00176520, ESP: 0012F838
Crash location: "foo_pod", loaded at 05860000h - 0589A000h

Loaded modules:
foobar2000                       loaded at 00400000h - 00451000h
ntdll                            loaded at 77F50000h - 77FF7000h
kernel32                         loaded at 77E60000h - 77F46000h
USER32                           loaded at 77D40000h - 77DCC000h
GDI32                            loaded at 7E090000h - 7E0D1000h
ADVAPI32                         loaded at 77DD0000h - 77E5D000h
RPCRT4                           loaded at 78000000h - 78087000h
ole32                            loaded at 771B0000h - 772D4000h
COMCTL32                         loaded at 71950000h - 71A34000h
msvcrt                           loaded at 77C10000h - 77C63000h
SHLWAPI                          loaded at 70A70000h - 70AD5000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F5000h
SHELL32                          loaded at 773D0000h - 77BC2000h
foo_input_std                    loaded at 008D0000h - 00972000h
MSACM32                          loaded at 77BE0000h - 77BF4000h
WINMM                            loaded at 76B40000h - 76B6C000h
foo_output_std                   loaded at 00A00000h - 00A09000h
foo_ui_std                       loaded at 00A10000h - 00A27000h
foo_vis_manager                  loaded at 00A30000h - 00A38000h
foo_cdda                         loaded at 00A40000h - 00A4E000h
foo_flac                         loaded at 00A50000h - 00A66000h
foo_ape                          loaded at 00A70000h - 00A8F000h
foo_wavpack                      loaded at 00A90000h - 00A9B000h
foo_speex                        loaded at 00AA0000h - 00AB8000h
foo_mod                          loaded at 00AC0000h - 00AC9000h
BASS                             loaded at 00AD0000h - 00B2A000h
foo_spc                          loaded at 00B30000h - 00B3F000h
foo_tfmx                         loaded at 00B40000h - 00B49000h
foo_shn                          loaded at 00B50000h - 00B5E000h
foo_ofr                          loaded at 00B60000h - 00B8E000h
foo_lpac                         loaded at 00BA0000h - 00BA7000h
lpac_codec_api                   loaded at 00BB0000h - 00BBA000h
lpaccodec                        loaded at 00BC0000h - 00BE9000h
foo_wma                          loaded at 00E10000h - 00E29000h
WMVCore                          loaded at 08530000h - 0872D000h
WMASF                            loaded at 07260000h - 07299000h
OLEAUT32                         loaded at 77120000h - 771AB000h
foo_ac3                          loaded at 00E30000h - 00E41000h
foo_psf                          loaded at 00E50000h - 00EFB000h
foo_nez                          loaded at 00F00000h - 00F2C000h
foo_festalon                     loaded at 00F30000h - 0106F000h
foo_sid                          loaded at 01070000h - 010B7000h
MSVCP60                          loaded at 55900000h - 55961000h
foo_xa                           loaded at 010C0000h - 010D1000h
foo_matroska                     loaded at 010E0000h - 0111F000h
foo_out_dsound_ex                loaded at 01120000h - 01129000h
DSOUND                           loaded at 73F10000h - 73F65000h
VERSION                          loaded at 77C00000h - 77C07000h
foo_out_ks                       loaded at 01140000h - 0114B000h
SETUPAPI                         loaded at 76670000h - 76757000h
foo_console                      loaded at 01150000h - 01157000h
foo_read_http                    loaded at 01160000h - 01169000h
WS2_32                           loaded at 71AB0000h - 71AC4000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_rgscan                       loaded at 01170000h - 0117B000h
foo_diskwriter                   loaded at 01180000h - 01192000h
foo_albumlist                    loaded at 011A0000h - 011AA000h
foo_masstag                      loaded at 011B0000h - 011C0000h
foo_unpack                       loaded at 011C0000h - 011F1000h
foo_id3v2                        loaded at 01200000h - 0122E000h
foo_search_ex                    loaded at 01230000h - 01238000h
foo_bitcompare                   loaded at 01240000h - 01248000h
foo_abx                          loaded at 01250000h - 0125C000h
foo_burninate                    loaded at 01260000h - 0126C000h
foo_apl                          loaded at 01270000h - 0127A000h
foo_freedb                       loaded at 01280000h - 012B2000h
foo_shuffle                      loaded at 012C0000h - 012CE000h
foo_oggpreview                   loaded at 012D0000h - 013CD000h
foo_mpeg4u                       loaded at 013D0000h - 013F9000h
foo_history                      loaded at 01400000h - 0140E000h
foo_dsp_extra                    loaded at 01410000h - 01425000h
foo_convolve                     loaded at 01430000h - 01483000h
foo_dsp_crossfeed                loaded at 01490000h - 01496000h
foo_dynamics                     loaded at 014A0000h - 014A7000h
foo_dsp_soundtouch               loaded at 014B0000h - 014BB000h
foo_dsp_crossfade                loaded at 014C0000h - 014C7000h
foo_dsp_skip_silence             loaded at 014D0000h - 014D7000h
foo_dsp_nogaps                   loaded at 014E0000h - 014E7000h
foo_dsp_pause                    loaded at 014F0000h - 014F7000h
foo_vorbisenc                    loaded at 01500000h - 015FA000h
foo_monkey                       loaded at 01600000h - 0161E000h
foo_faac                         loaded at 01620000h - 01653000h
foo_toolame                      loaded at 01660000h - 01673000h
foo_lame                         loaded at 01680000h - 01689000h
foo_mpcenc                       loaded at 01690000h - 01698000h
foo_clienc                       loaded at 016A0000h - 016B4000h
foo_null                         loaded at 016C0000h - 016C7000h
foo_vis_simple_spectrum          loaded at 016D0000h - 016DA000h
foo_vis_vu_meter                 loaded at 016E0000h - 016E8000h
foo_vis_bubbla                   loaded at 016F0000h - 01704000h
OPENGL32                         loaded at 5ED00000h - 5EDC6000h
GLU32                            loaded at 68B20000h - 68B3E000h
DDRAW                            loaded at 73760000h - 737A4000h
DCIMAN32                         loaded at 73BC0000h - 73BC6000h
foo_osd                          loaded at 05710000h - 0571B000h
foo_audioscrobbler               loaded at 05720000h - 0572C000h
LIBCURL                          loaded at 05730000h - 05749000h
MSVCR71                          loaded at 7C340000h - 7C396000h
foo_pod                          loaded at 05860000h - 0589A000h
MSVCIRT                          loaded at 058A0000h - 058B0000h
uxtheme                          loaded at 5AD70000h - 5ADA4000h
mswsock                          loaded at 71A50000h - 71A8B000h
DNSAPI                           loaded at 76F20000h - 76F45000h
CLBCATQ                          loaded at 7C890000h - 7C911000h
COMRes                           loaded at 77050000h - 77115000h
msi                              loaded at 76400000h - 76601000h
winrnr                           loaded at 76FB0000h - 76FB7000h
WLDAP32                          loaded at 76F60000h - 76F8C000h
SXS                              loaded at 75E90000h - 75F37000h
rasadhlp                         loaded at 76FC0000h - 76FC5000h
imslsp                           loaded at 05DB0000h - 05ECB000h
lockbox                          loaded at 05ED0000h - 05F0C000h
imregexp                         loaded at 05F10000h - 05F1B000h
LIBEAY32_0.9.6g                  loaded at 05F20000h - 05FC9000h
WSOCK32                          loaded at 71AD0000h - 71AD8000h
wshtcpip                         loaded at 71A90000h - 71A98000h
iconv                            loaded at 05BB0000h - 05C8A000h
wdmaud                           loaded at 72D20000h - 72D29000h
msacm32                          loaded at 72D10000h - 72D18000h
midimap                          loaded at 77BD0000h - 77BD7000h
KsUser                           loaded at 73EE0000h - 73EE4000h
browseui                         loaded at 71500000h - 715FD000h
browselc                         loaded at 72430000h - 72442000h
imagehlp                         loaded at 76C90000h - 76CB2000h
DBGHELP                          loaded at 6D510000h - 6D58D000h

Stack dump analysis:
Address: 058858C0h, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 77F944A8h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001BEh)
Address: 77F57D70h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+000001C2h)
Address: 77F58A3Ah, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+00000E8Ch)
Address: 0587F3ACh, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 0587F384h, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 0587F59Ch, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 0587F4BCh, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 00440073h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 5AD71B48h, location: "uxtheme", loaded at 5AD70000h - 5ADA4000h
Symbol: "DrawThemeParentBackground" (+000004D1h)
Address: 5AD8A60Dh, location: "uxtheme", loaded at 5AD70000h - 5ADA4000h
Symbol: "Ordinal9" (+000064CCh)
Address: 77D45A63h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowThreadProcessId" (+00000096h)
Address: 77D44124h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+00000092h)
Address: 77D9C064h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 77D458A7h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcW" (+00000079h)
Address: 77D45899h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcW" (+0000006Bh)
Address: 77D7390Ah, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "CreateAcceleratorTableA" (+0000032Dh)
Address: 77D99B38h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 77D45899h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcW" (+0000006Bh)
Address: 100036ADh, location: "utf8api", loaded at 10000000h - 1000D000h
Symbol: "uDefWindowProc" (+00000016h)
Address: 00A12C41h, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 100031E5h, location: "utf8api", loaded at 10000000h - 1000D000h
Symbol: "uSetWindowLong" (+00000000h)
Address: 77D440BDh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+0000002Bh)
Address: 100031E5h, location: "utf8api", loaded at 10000000h - 1000D000h
Symbol: "uSetWindowLong" (+00000000h)
Address: 00A11EAEh, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)
Address: 77F52310h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Address: 77F8E3C3h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlReAllocateHeap" (+00000D7Bh)
Address: 77C2AF77h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "realloc" (+0000031Fh)
Address: 77F944CBh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001E1h)
Address: 77F58BCDh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+0000018Fh)
Address: 77F59037h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+000005F9h)
Address: 77C2AA6Bh, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+00000000h)
Address: 77C2AC19h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001AEh)
Address: 004342F4h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00433749h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 10005B70h, location: "utf8api", loaded at 10000000h - 1000D000h
Address: 10005E39h, location: "utf8api", loaded at 10000000h - 1000D000h
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)
Address: 77F51C88h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Address: 77F59037h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+000005F9h)
Address: 0587DF72h, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 0586E6A4h, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 058858C0h, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 058858C0h, location: "foo_pod", loaded at 05860000h - 0589A000h
Address: 00433435h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 77C2AA6Bh, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+00000000h)
Address: 00415FAFh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 085E0091h, location: "WMVCore", loaded at 08530000h - 0872D000h
Symbol: "WMIsAvailableOffline" (+0002B61Dh)
Address: 00439644h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0043946Ch, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00A1C784h, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 00A13099h, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 00A120C5h, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 100031E5h, location: "utf8api", loaded at 10000000h - 1000D000h
Symbol: "uSetWindowLong" (+00000000h)
Address: 77D440BDh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+0000002Bh)
Address: 77D440C6h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+00000034h)
Address: 100031E5h, location: "utf8api", loaded at 10000000h - 1000D000h
Symbol: "uSetWindowLong" (+00000000h)
Address: 00A11EAEh, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 77D7390Ah, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "CreateAcceleratorTableA" (+0000032Dh)
Address: 77D99B08h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 77D440C6h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+00000034h)
Address: 100031E4h, location: "utf8api", loaded at 10000000h - 1000D000h
Symbol: "uGetWindowLong" (+0000000Eh)
Address: 00A11F0Ch, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 00A11EAEh, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 77D43A50h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 00A11EAEh, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 00A11EAEh, location: "foo_ui_std", loaded at 00A10000h - 00A27000h
Address: 77D43B1Fh, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 00A11EAEh, location: "foo_ui_std", loaded at 00A10000h - 00A27000h

Version info:
foobar2000 v0.8.1
UNICODE
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-13 04:02:01
Quote
I keep getting the following when I copy to my ipod (15gb 3G with latest firmware)

Does this only happen when you use Send Selected (i.e. do the other options like Send Playlist work)?

It is hard to tell exactly what is going on from the crash log, but I can see where it could crash in some rare cases.  I'll try to get an updated version ready for testing later on tonight.

Just in case anyone was wondering, I have been very busy at work (Foobar component development doesn't pay very well...  ) and on some other projects.  So I haven't had much time to work on foo_pod, although I still hope to get transcoding support in soon.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-13 04:59:05
Version 0.6.1 (http://loodi.com/foo_pod.zip) is now available.

This fixes an couple of regressions - one in Send/Sync files, where duplicate files weren't always detected, leading to unnecessary copying of files to the iPod.  The other regression was with Delete Selected Files, which due to the bug, didn't actually delete anything.

I also attempted to fix the crash reported by scottder .  Let me know if 0.6.1 takes care of the problem.


From the Readme:
Code: [Select]
Version 0.6.1 - May 12, 2004
*  Fixed a regression in send/sync files, where a duplicate file could be copied to the
  iPod, even though there was a copy already on the iPod.

*  Fixed another regression - this time in Delete Selected Files from iPod.  This feature
  would silently fail due to the bug.

*  Added preliminary support for reading OTG playlists.  For now, they can be dumped as
  part of the Export XML feature.

*  Possibly fixed a crash in Send Selected Files To iPod, as reported by scottder.

*  Automatically create all necessary directories, so that a completely blank iPod can
  be used without first being initialized by iTunes or the iPod Updater.
Title: foo_pod - Foobar2000 meets the iPod
Post by: scottder on 2004-05-13 13:40:17
I'll try this new version, thanks (and yes it was only when I use the "Copy Selected FIles to Ipod" option, it would copy all the files then crash.

Scott
Title: foo_pod - Foobar2000 meets the iPod
Post by: scottder on 2004-05-13 14:39:04
Ok, i tried it this morning and it worked without a hitch! Thank you for this wonderful plugin!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-13 20:49:25
Quote
Ok, i tried it this morning and it worked without a hitch! Thank you for this wonderful plugin!

Cool!  Just out of curiousity, where you able to identify if any one particular file was causing the crash?
Title: foo_pod - Foobar2000 meets the iPod
Post by: scottder on 2004-05-13 21:07:43
Quote
Quote
Ok, i tried it this morning and it worked without a hitch! Thank you for this wonderful plugin!

Cool!  Just out of curiousity, where you able to identify if any one particular file was causing the crash?

No, it just seemed to happen each time I would send files to the ipod. Didn't seem to be any particular files that would trigger it.  Odd.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Moonwhaler on 2004-05-13 22:35:31
The joy! Thanks for this GREAT plugin... I owe you one!
Moon
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-14 05:31:11
Quote
The joy! Thanks for this GREAT plugin... I owe you one!

Thanks!

I am happy to accept donations (http://www.sierra-nevada.com/beers/paleale.html)... 
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-05-16 13:47:41
Woah.
Even when I have yet to receive my iPod (it's in the mail), I can't wait to use this plugin!

You guys are really great programmers!! 

Foobar never fails to amaze me with its plugins and stuff...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Paya on 2004-05-17 16:49:42
Hello again, been a while!

I was just wondering if you someway could make foo_pod write soundcheck tags, so that we can calculate Album Gain in foobar, and use that info in iTunes? Soundcheck is, afaik, only Track Gain-based, and from my experiences this is very annoying. I ask because iTunes still has some features that foo_pod lacks (rating playcount info updated from iPod when you sync, audible content, Apple Lossless Audio Codec), and therefore I - at the moment - use iTunes (started using foo_pod when I bought the iPod, though...). And it annoys me to extremes that Soundcheck is track gained, and so it would be nice if I could select all my music in foobar, right click, select "Replaygain -> Scan selection as album" and foobar/foo_pod would calculate and write the usual Replaygain values plus Soundcheck tags with proper Album Gain...

Did that make any sense?

Would be very cool...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Fickle on 2004-05-17 17:01:39
Not sure if this is a bug but its quite strange -

Im using the latest iPod software + iTunes, and fortunately I havent noticed any major probjels (running foobar 0.8.1 with winXP pro) - except for this strange problem -

What I usually do is plugin the iPod - then select 'unmount' via components-->foo_pod-->unmount.  This all works fine - however I notice the first time I right click the mouse button on the playlist - the iPod mounts itself.  After unmounting the iPod again via the menu a second time - I can right-click again on the playlist without the iPod mounting itself.

Also - one other thing, I dont know if this has been discussed yet (as I havent had time to read the whole thread ) - but has support for 'copy selected files to directory' been considered ?  Currently I am still using Ephpod to copy files from my iPod back to my computer.

This is a great plugin ! Thanks for all the great work.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-05-17 18:51:53
Quote
Also - one other thing, I dont know if this has been discussed yet (as I havent had time to read the whole thread ) - but has support for 'copy selected files to directory' been considered ?  Currently I am still using Ephpod to copy files from my iPod back to my computer.

First, load the iPod songs into a playlist. Then select the files you want to copy to your computer. Then drag and drop them from the playlist into the folder you want them, or onto the desktop.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-17 19:42:36
Quote
I was just wondering if you someway could make foo_pod write soundcheck tags, so that we can calculate Album Gain in foobar, and use that info in iTunes? Soundcheck is, afaik, only Track Gain-based, and from my experiences this is very annoying. I ask

As far as I know, no one has reverse engineered the format that  iTunes uses to store the SoundCheck data as part of the file's metadata.  It is known that the information is stored as a Comment, but the last I knew, no one knew how to generate this data. 

Since foo_pod does write the SoundCheck data into the iTunesDB file on the iPod, I would think that it should be possible to read that information in via iTunes and somehow coax it to save it out into a new/existing file? 

If anyone is interested in doing the research, with the new "Export iTunesDB file as XML" feature in foo_pod, it should be possible to figure out the encoding.  Just load up some songs from iTunes that have the Sound Check encoding as part of the file, use iTunes to load them onto the iPod, then use foo_pod to examine the Sound Check value in the DB.  I'm don't use iTunes and have no interest in figuring out the encoding, but if someone tells me how to convert from a Sound Check integer into the Comment field encoding, I will add it to foo_pod. 


Quote
because iTunes still has some features that foo_pod lacks (rating playcount info updated from iPod when you sync, audible content, Apple Lossless Audio Codec)

I can currently read the play count data, per the semi-recent discussion in this forum, but there is some question on how to actually use it in Foobar. 

As for Audible and ALAC, I doubt there will ever been support for Audible in Foobar (and hence foo_pod), but ALAC support should be doable.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-17 19:51:17
Quote
What I usually do is plugin the iPod - then select 'unmount' via components-->foo_pod-->unmount.  This all works fine - however I notice the first time I right click the mouse button on the playlist - the iPod mounts itself.  After unmounting the iPod again via the menu a second time - I can right-click again on the playlist without the iPod mounting itself.

This isn't really a bug, but I can see how it is irritating.  The problem is that when the context (right mouse button) menu is displayed, foo_pod is doing some checking of the selected files (if any) to determine if it should show the "Send Selected" / "Delete Selected" menu items.  This apparently mounts the iPod as part of the check.  I'll fix this in the next version.

Quote
Also - one other thing, I dont know if this has been discussed yet (as I havent had time to read the whole thread ) - but has support for 'copy selected files to directory' been considered ?  Currently I am still using Ephpod to copy files from my iPod back to my computer.

Yeah, this is something that I really want  to implement.  I want to set it up so that you can configure some TAGZ format strings to build the directory structure and filenames as you wish based on the metadata.

For example, if you want your file structure to be: artist\album\01 - The First Song.mp3, you could set the format string to "%artist%\%album%\%tracknumber% - %_filename%".  You can currently do something very similar for DiskWriter, so I'm undecided whether I will try to figure out how to use DiskWriter, or just code it myself.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Paya on 2004-05-17 20:02:05
When I look at the tag of a file that has been "Soundchecked" by iTunes, this is what it says in the "comment" field:  00001020 0000118B 00003555 00004352 0002E675 0002230E 00008000 00008000 0001D4EE 0001D4EE

I thought that as you'd already figured out how to calculate Soundcheck values from Replaygain values, it would just be a matter of adding that into the "comment" field? Guess I was wrong then...
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-05-17 20:12:02
Hi I've got a 3g 40gb iPod and i've uploaded a bunch of albums to my iPod using foo_pod. I've uploaded 1 folder containing 30 albums, no problems. Then i uploaded another folder containing somewhat like 100 albums. Those albums now take up space, but the iPod doesnt seem to know that the files are there. They're not written in the DB file properly i suppose...
Is anyone familiar with this, and maybe got an idea on how this can be fixed, or is it a bug?

Thanx in advance
Title: foo_pod - Foobar2000 meets the iPod
Post by: scottder on 2004-05-17 20:33:03
This may or may not be the thread to ask this, is anyone working on support Apples Lossless Encoder for foobar?

Scott
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-17 20:39:34
Quote
When I look at the tag of a file that has been "Soundchecked" by iTunes, this is what it says in the "comment" field:  00001020 0000118B 00003555 00004352 0002E675 0002230E 00008000 00008000 0001D4EE 0001D4EE

I thought that as you'd already figured out how to calculate Soundcheck values from Replaygain values, it would just be a matter of adding that into the "comment" field? Guess I was wrong then...

No, you are correct.  The catch is that the "just be a matter of adding that into the "comment" field" part is the unknown piece here. 

Actually now that I think of it, I think Otto42 determined that the first series of alphanumeric characters (00001020) is just the Sound Check value from the database.  But the rest of the groups are apparently unknown, unless someone can point me to more recent information.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-17 20:49:20
Quote
This may or may not be the thread to ask this, is anyone working on support Apples Lossless Encoder for foobar?

I would suggest asking in the Foobar 2000 General forum, or maybe one of the other Hydrogen Audio forums, such as AAC - General.

Since Foobar's MP4/AAC support is based off of FAAD (http://www.audiocoding.com/), I would guess that FAAD would have to support ALAC before support could be added to Foobar/foo_pod.  ALAC was discussed here (http://www.hydrogenaudio.org/forums/index.php?showtopic=21139&st=25&), and one of the FAAD developers posted several times, so they are definitely aware of ALAC.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-17 20:53:33
Quote
Hi I've got a 3g 40gb iPod and i've uploaded a bunch of albums to my iPod using foo_pod. I've uploaded 1 folder containing 30 albums, no problems. Then i uploaded another folder containing somewhat like 100 albums. Those albums now take up space, but the iPod doesnt seem to know that the files are there. They're not written in the DB file properly i suppose...
Is anyone familiar with this, and maybe got an idea on how this can be fixed, or is it a bug?

Yeah, that sounds like a bug, but without more detailed information or steps to reproduce the problem, I'm not sure how to help.  At least for the past few versions, I haven't experienced any missing song problems like you describe, so I am interested in trying to find out what happened.

You could use the Components->foo_pod->Export iTunesDB as XML feature to save the database to a XML file, then search through it to see if your missing albums are there.
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-05-17 21:17:15
hmm more detailed specs: p3, W2k, Foobar 8.1, latest foo_pod, LAME --aps encoded files, Unicode ID3v2 tagged files. I hope this is enough. I dont see why there should be anything wrong with this setup... maybe foobar8.2?
I've had the problem with foo_pod 0.5 too, back when foobar 8.1 was the latest release (i think??)

edit: i've tried to upload one single album from that previously mentioned folder. It still doesnt work. the albumname is nothing fancy (D:\MP3's\ambient\liquid morphine - grijsgebied)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-17 21:32:08
Quote
hmm more detailed specs: p3, W2k, Foobar 8.1, latest foo_pod, LAME --aps encoded files, Unicode ID3v2 tagged files. I hope this is enough. I dont see why there should be anything wrong with this setup... maybe foobar8.2?
I've had the problem with foo_pod 0.5 too, back when foobar 8.1 was the latest release (i think??)

edit: i've tried to upload one single album from that previously mentioned folder. It still doesnt work. the albumname is nothing fancy (D:\MP3's\ambient\liquid morphine - grijsgebied)

There is nothing wrong with your setup, but I was looking more for detailed steps to reproduce the problem.  For example,  how are you transferring files to the iPod - are you using Send Selected, Send Playlist, Sync Playlist, Send All Playlist, or Sync All Playlists?  Can you delete all songs and playlists, then reproduce the problem?  Do you get any warnings or errors in the Foobar console?

If you want, export your iTunesDB file as XML, zip it up, and email it to me (foopod (at) argz.com) and I'll see if there is anything pecular with it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-05-17 21:48:55
haha okay, i misread!

- I removed ALL my music files + all manually made playlists (not the dynamic ones: top 25, recently played, blabla)
- I enqueued one single album containing 11 files
- I selected all and rightclicked > foo_pod: Send selected files to iPod
- I see the Transferring files... window, transferring complete, no error msgs
- I browse the iPod using explorer (diskmode?): the files are there
- I start iTunes: no files
- I unplug the iPod and browse it: no files

how do i export that DB file?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-17 22:01:25
Quote
haha okay, i misread!

- I removed ALL my music files + all manually made playlists (not the dynamic ones: top 25, recently played, blabla)
- I enqueued one single album containing 11 files
- I selected all and rightclicked > foo_pod: Send selected files to iPod
- I see the Transferring files... window, transferring complete, no error msgs
- I browse the iPod using explorer (diskmode?): the files are there
- I start iTunes: no files
- I unplug the iPod and browse it: no files

how do i export that DB file?

Thanks, that looks like a very concise test case.

To export the database XML file, go to the Components menu, then foo_pod, then "Export iTunesDB Database as XML".  foo_pod will then ask you where you want to save the file, save it as something like problem.xml.  Then email me the problem.xml file and I'll see if there is anything in there that would point to the problem. 

One potential problem that isn't related to foo_pod is how your cleaned your iPod.  If you deleted the songs in iTunes, then that should be ok.  If you just deleted songs off of the iPod using Windows Explorer, then the database was not updated and I would expect that there would be problems, since the iPod does not react well to songs that are in the database, but not on the iPod. 

One last question - if you load the iPod playlist in Foobar (Component menu, foo_pod, Load iPod Songs to 'iPod (foo_pod)'), so you see the album you just transferred?

Edit: One other source of a potential problem - if you have iTunes set up to automatically sync when you start iTunes or connect your iPod, then it is likely removing the songs you transferred with foo_pod.  The problem is that iTunes sees songs on the iPod that don't exist in its library, and deletes them from the iPod.  So you might want to test that you can transfer files via foo_pod and verify that they are on the iPod before starting up iTunes.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-05-18 00:28:24
Quote
Quote
When I look at the tag of a file that has been "Soundchecked" by iTunes, this is what it says in the "comment" field:  00001020 0000118B 00003555 00004352 0002E675 0002230E 00008000 00008000 0001D4EE 0001D4EE

I thought that as you'd already figured out how to calculate Soundcheck values from Replaygain values, it would just be a matter of adding that into the "comment" field? Guess I was wrong then...

No, you are correct.  The catch is that the "just be a matter of adding that into the "comment" field" part is the unknown piece here. 

Actually now that I think of it, I think Otto42 determined that the first series of alphanumeric characters (00001020) is just the Sound Check value from the database.  But the rest of the groups are apparently unknown, unless someone can point me to more recent information.

That's correct, the first value in that big ugly comment string is the value that iTunes puts into the iTunesDB as the SoundCheck field. foo_pod is now putting a ReplayGain value in that field, since we worked out the conversion equation.

However, the rest of the stuff in that comment baffles me. I don't know what any of it means, and I can't find any obvious correspondence to anything anywhere. But if you figure it out, let us know.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-05-18 00:36:47
Aero,
I don't know if you do file extension checking in foo_pod or not, but be sure to add "M4B" as an acceptable file extension, if you haven't already. This is a bookmarkable AAC file, meaning that the iPod will remember where it left off when you stop and restart playing it. Handy for audio books. Yes, it works with unencrypted files as well, just rename m4a to m4b and voila.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-18 04:24:46
Quote
Aero,
I don't know if you do file extension checking in foo_pod or not, but be sure to add "M4B" as an acceptable file extension, if you haven't already. This is a bookmarkable AAC file, meaning that the iPod will remember where it left off when you stop and restart playing it. Handy for audio books. Yes, it works with unencrypted files as well, just rename m4a to m4b and voila.

I don't explicitly do anything with file extensions, but it looks like Foobar's MP4 decoder does:
Code: [Select]
mp4_parser.cpp:
DECLARE_FILE_TYPE("MP4 files","*.MP4;*.M4A;*.M4P");

input_aac.cpp:
DECLARE_FILE_TYPE("AAC files","*.AAC");


So you might want to contact zZzZzZzZzZzZz and ask him to add *.M4B to that list.
Title: foo_pod - Foobar2000 meets the iPod
Post by: kl33per on 2004-05-18 15:59:57
You can temporarily add it to the Nero Decoding Plugin's list, although it woud be better to add it to foobar itself.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-19 05:09:00
Version 0.6.2 (http://www.loodi.com/foo_pod.zip) is now available.


This version adds the ability to copy files from the iPod to your hard drive, formatted according to a user-configurable standard Foobar TAGZ string. 

In simpler terms, it means that you can select files on the iPods, select  "Save iPod File to disk", and it will copy them to your local hard drive and arrange them according to the format you provide. 

For example, the default format string is basically equivalent to %artist%\%album%\%tracknumber% - %title%, so after you provide the base directory, foo_pod will build the artist and album directories, and copy the iPod files to the correct locations.  So the song The Thing That Should Not Let It Be (track number 05) by the group Beatallica off of the A Garage Dayz Nite album would be copied to Beatallica\A Garage Dayz Nite\05 - The Thing That Should Not Let It Be.mp3

I intend on making the preference for this a drop down box, so multiple formats can be chosen from.  If you have a good TAGZ format string that you think others could use, email or PM it to me and I'll consider including it in the next foo_pod release.

In 0.6.2, I also fixed the context menu/iPod mount problem reported by Fickle.


From the Readme:
Code: [Select]
Version 0.6.2 - May 18, 2004
*  Added the "Save iPod Files To Disk" feature.  This allows you to copy songs from the iPod
  to your hard drive in a structured fashion, based on a user-configurable TAGZ format string.
  For example, the default string will copy files from the iPod to the hard drive in
  a <artist>\<album>\<tracknumber> - <title>.<extension> format -> Aerosmith\Honkin' On Bobo\11 - Stop Messin' Around.mp3
 
  To use this feature, select one or more files from the iPod playlist, right click and select
  "Save iPod files to disk".  Then select the starting directory for the files to be copied.
  The formatting is a standard TAGZ format string and can be modified in the preferences.

*  Changed the context menu code so that it will not automatically mount the iPod in order
  to just show the menu.

*  Eliminiated the limit of 30 ignored playlists.  The number of ignored playlists is now
  unlimited.
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-05-19 18:18:33
Hi Aero,

You mentioned something about auto-updating. I let iTunes auto-update the playlists only, not the music files themselves. I thought this couldn't be the problem, but i tested whether this could be causing the problem anyway. Uploaded a random album with foo_tunes, undocked the iPod and the album was there. Then I deleted the album with iTunes, closed iTunes, uploaded it yet again with foo_tunes and started iTunes. The files were gone!

Problem solved

thanx

Cool! I really do like the freshly added option!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Fickle on 2004-05-19 18:46:00
This new feature rules  Thanks Aero !
Title: foo_pod - Foobar2000 meets the iPod
Post by: Biscuits on 2004-05-20 01:48:54
Great feature! Good to know for if I ever lose my music on my hard drive.

Thanks.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-05-20 04:31:37
Quote
I let iTunes auto-update the playlists only, not the music files themselves.

Not possible. If you have "auto-update" enabled in iTunes, then what it's doing is auto-updating the entire iPod from whatever parameters you have selected.

So if you have it set to "auto-update" from a playlist called "bob", for example, then what will happen when iTunes auto-updates is that every song in bob will get copied to the iPod, and every song on the iPod not in bob will be removed. Also, the playlist bob will be copied over to the iPod.

If you have it set for more than one playlist, then it works the same way.. Any songs in the playlist will get copied to the iPod, anything on the iPod not in any of those playlists gets blown away.

The only way to stop iTunes from blowing away music on the iPod is to put it into full manual mode. There is no other way to do it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-05-21 19:19:06
What currently happens when the iPod is out of space? I have tried to fill my 40GB 3G iPod with my 80GB library, and foo_pod did not say anything.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-21 19:40:26
Quote
What currently happens when the iPod is out of space? I have tried to fill my 40GB 3G iPod with my 80GB library, and foo_pod did not say anything.

Theoretically, foo_pod should continue to try to copy files, display a warning on the Foobar console for each file that can't be copied, and everything should be ok. 

However, I have noticed that sometimes there are problems related to running out of disk space, including problems writing the database.  I have been meaning to try to reproduce and fix the problem(s), but I haven't gotten around to it.  Besides, if I don't hear about  a bug/problem on the forum or through email, I am less motivated to fix it! 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-05-21 23:16:13
Quote
Quote
What currently happens when the iPod is out of space? I have tried to fill my 40GB 3G iPod with my 80GB library, and foo_pod did not say anything.

Theoretically, foo_pod should continue to try to copy files, display a warning on the Foobar console for each file that can't be copied, and everything should be ok. 

However, I have noticed that sometimes there are problems related to running out of disk space, including problems writing the database.  I have been meaning to try to reproduce and fix the problem(s), but I haven't gotten around to it.  Besides, if I don't hear about  a bug/problem on the forum or through email, I am less motivated to fix it! 

Actually, I'm glad you mentioned this, Aero.  I've been having problems with loading songs onto my 10GB iPod the last few days, but haven't had any time to examine the problem closely.  I get an error message similar to "no space on device" and "restoring db" at the end of the errors.

I do know my iPod is not out of space, as I've removed all songs and playlists from it, both from foo_pod, and from iTunes (but not when both are running simultaneously, of course).

I can load songs/playlists from iTunes without problems, and have even gone as far as restoring the iPod with Apple's updater.  Even after that, foo_pod reported there was no free space on my iPod.

I won't be able to do any testing until Saturday or Sunday, but I'm open to suggestions on how to acquire more data on this issue.

I hope this helps the motivation factor, becasue I'm going into replagain withdrawl!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-21 23:31:12
Quote
Actually, I'm glad you mentioned this, Aero.  I've been having problems with loading songs onto my 10GB iPod the last few days, but haven't had any time to examine the problem closely.  I get an error message similar to "no space on device" and "restoring db" at the end of the errors.

I do know my iPod is not out of space, as I've removed all songs and playlists from it, both from foo_pod, and from iTunes (but not when both are running simultaneously, of course).

I can load songs/playlists from iTunes without problems, and have even gone as far as restoring the iPod with Apple's updater.  Even after that, foo_pod reported there was no free space on my iPod.

I'm pretty close to posting the next foo_pod version, which reserves 10MB of disk space to prevent weird problems due to filling up all of the free disk space.  I believe iTunes actually reserves 20MB, and I don't think anyone will be too put out over losing 2-3 songs worth of space.

As for your problem, I don't know why foo_pod would be reporting that the iPod is out of space if it actually isn't.  I know I've never experienced a problem similar to that.  If you can reproduce the problem, post or email the exact Foobar console output.  Also try the upcoming 0.6.3 version to see if it is any better.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-22 08:10:30
Version 0.6.3 (http://www.loodi.com/foo_pod.zip) is now available.

This adds a combo box for the "Save iPod Files To Disk" feature, so you can easily switch between different formats.  It also has the 10MB reserve space feature that I mentioned above, to hopefully take care of out-of-disk space problems.


From the Readme:
Code: [Select]
Version 0.6.3 - May 22, 2004
*  "Save iPod Files To Disk" formats are now displayed in a combo box, allowing the user to
  add and choose between multiple format strings.

*  foo_pod now reserves 10MB of disk space when copying files to the iPod.  This should help
  avoid problems when attempting to copy more files than there is free iPod disk space.

*  Built using Foobar2000 SDK 0.8.2.
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-05-22 12:09:15
hey there!

thank you for that wonderful plugin! i love it!
the only thing i need now is a playcount withwhat you can create smart-playlists so u can replace itunes completely.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-05-22 17:30:53
Quote
Actually, I'm glad you mentioned this, Aero.  I've been having problems with loading songs onto my 10GB iPod the last few days...

I figured it out.  I've been forcing foo_pod to use a specific drive letter, and for some reason another firewire device is not being detected by my machine (I may have accidentally ejected it).  So foo_pod was looking for my iPod as drive K:, when it was actually drive J:


All is well now.  Thanks for all the great work you've done on foo_pod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-23 03:19:14
Quote
thank you for that wonderful plugin! i love it!
the only thing i need now is a playcount withwhat you can create smart-playlists so u can replace itunes completely.

Thanks!

I actually was playing around with Play Counts this afternoon, and I finally I understand how it is used by the iPod. 

I was wondering why the Play Counts files contained not only the play counts for each song, but also the last played time and the stars rating (and one unknown field).  Then it dawned on me:  the iTunesDB file is never modified by the iPod - all of the dynamic information is stored in the Play Counts file.  I surmise that right after iTunes reads the database file, it also reads the data in Play Counts.  Then it updates the database with the play count, last played time, and stars rating, deletes Play Counts, and writes iTunesDB back to the iPod.

Maybe this isn't earthshattering news to many people, but at least now that I really understand what needs to be done, I can add it to foo_pod.  So I am going to duplicate those actions in foo_pod, and make the rating and play count available as Foobar metadata.  Since all of the data is stored in the iTunesDB file, there is no need to modify the songs on the iPod or use the Foobar database.

What this all means is that as soon as I finish the work on Play Counts, not only will the play counts and star ratings be compatible with iTunes/Smart Playlists, but also compatible with the various Foobar components that use play counts/ratings, such as Play Counter (http://www.hydrogenaudio.org/forums/index.php?showtopic=20719&st=0&) and Quick Tag (http://members.lycos.co.uk/musicf/).



Edit:  Not really foo_pod related (yet...), but while I was searching around for information on Play Counts, I found a whole site devoted to smart playlists (http://smartplaylists.com/).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-23 03:21:03
Quote
Quote

Actually, I'm glad you mentioned this, Aero.  I've been having problems with loading songs onto my 10GB iPod the last few days...

I figured it out.  I've been forcing foo_pod to use a specific drive letter, and for some reason another firewire device is not being detected by my machine (I may have accidentally ejected it).  So foo_pod was looking for my iPod as drive K:, when it was actually drive J:


All is well now.  Thanks for all the great work you've done on foo_pod.

I should probably put some warning into foo_pod for when you are forcing the drive letter, but foo_pod still can't find an iPod...

I'm glad you were able to figure it out so quickly!
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-05-23 05:46:43
OK... Got my iPod, loaded some songs inside, and I encountered this problem.

I add songs into a playlist, and I sync the iPod, but whenever I sync it the 2nd time, I get a 2nd playlist of the exact songs.

ie, I sync for the first time, I get Foo_Pod, but when I sync for the 2nd time,I get this playlist called "rnd_Foo_Pod". The song listings are the same though.

Anyone knows what's happening?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-23 09:55:06
Version 0.6.4 (http://www.loodi.com/foo_pod.zip) is now available.

This version adds the initial support for the Play Count, Star rating, and Last Played metadata.  When needed, foo_pod reads the Play Counts file from the iPod, adds the data to the iTunesDB database file, and displays the metadata in Foobar (see below).  I haven't tested it, but I believe that writing this data to the database will allow smart playlists that use play count or ratings to work correctly when syncing with foo_pod.

The metadata is not saved to the iPod files themselves, so if you reload the metadata from the file, the play count/rating/last played data is lost.  To recover it, reload the foo_pod playlist.



From the Readme:
Code: [Select]
Version 0.6.4 - May 23, 2004
*  Added parsing of the Play Counts file on the iPod.  This file contains the play count,
  star rating, and last played time for each iPod song.  

  The Play Counts data is automatically read and added to the iTunesDB database file, similiar
  to how iTunes handles this data.  It is also displayed in Foobar as metadata as follows:

    Play Count -> IPOD_PLAY_COUNT
    Last Played Time -> IPOD_LAST_PLAYED_TIME
    Star Rating -> RATING

  Currently, if this metadata is changed directly in Foobar, it is not transferred back to the iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-23 09:56:27
Quote
ie, I sync for the first time, I get Foo_Pod, but when I sync for the 2nd time,I get this playlist called "rnd_Foo_Pod". The song listings are the same though.

foo_pod has an option to create a randomized playlist - uncheck "Send Randomize Playlist" in the foo_pod Preferences if you don't want it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-05-23 16:39:59
Gee, thanks for the tip!
Another problem that I face:

I have 2 playlists, and that I am trying to add these 2 playlists in.

But the problem is that I can't seem to add the 2 playlists in, even though all the songs are in there.

I can only add the songs in, but I can't add another playlist in...
And sometimes when I add the songs from another playlist in, it seems to delete all the songs from my 1st playlist.

Is this a bug, or is it me?
I think someone should start writing a guide for n00bs like me though!! 

Great work...
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-05-23 17:59:22
Quote
Gee, thanks for the tip!
Another problem that I face:

I have 2 playlists, and that I am trying to add these 2 playlists in.

But the problem is that I can't seem to add the 2 playlists in, even though all the songs are in there.

I can only add the songs in, but I can't add another playlist in...
And sometimes when I add the songs from another playlist in, it seems to delete all the songs from my 1st playlist.

Is this a bug, or is it me?
I think someone should start writing a guide for n00bs like me though!!  

Great work...

You need to understand the difference between Send and Sync.

Send means, add this playlist to the iPod, as well as whatever is in it (As long as it is not  already there).

Sync means, remove everything from the iPod except this playlist and what is in it.

I get the feeling that you're always pressing sync.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-05-23 22:39:33
Quote
Then it dawned on me:  the iTunesDB file is never modified by the iPod - all of the dynamic information is stored in the Play Counts file.

I could have told you that. I think I tried to, actually. Sorry, I'm just not good at explaining abstract type things, as I don't often try to do so.

But yes, you're right. The iPod only modifies the Play Counts file and the OTGPlaylist file, AFAICT.

Question: If you add this metadata to foobar, won't that change the files themselves when the metadata is written to those files? Might throw a problem into syncing, I think.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-24 00:53:50
Quote
I could have told you that. I think I tried to, actually. Sorry, I'm just not good at explaining abstract type things, as I don't often try to do so.

But yes, you're right. The iPod only modifies the Play Counts file and the OTGPlaylist file, AFAICT.

Question: If you add this metadata to foobar, won't that change the files themselves when the metadata is written to those files? Might throw a problem into syncing, I think.

Yeah, looking back you did do a good job of explaining it.  I just wasn't paying attention... 


As for the metadata, Foobar has the a "hint" concept when creating/displaying metadata.  What that means is that a component can supply metadata to Foobar that is independant of the actual file's metadata.  I use this in foo_pod to extract data from the iTunesDB (such as Title, Artist, song length - and now star rating and play count) and create a hint (think virtual metadata).  As long as you don't forcibly reload the real metadata from the file, this virtual metadata is displayed and used by Foobar.

So to answer your question, I don't currently change music files on the iPod.  I actually do have some (disabled) code in foo_pod to change the iPod music files, but it turns out that the virtual metadata is almost as good, and it is a lot faster since it doesn't have to write tags to the files.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mixmixmix on 2004-05-25 03:58:46
Hey,

I'm sorry if this derails from the metadata conversation (feel free to split this to a new topic if you like) but i was wondering what the best option would be to get .shn files playing on an ipod.  I realise I'll have to convert them, just wondering whats the best way to do it to ensure good quality files.  ps: thanks for foo_pod, working perfectly over here!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-25 04:26:23
Quote
I'm sorry if this derails from the metadata conversation (feel free to split this to a new topic if you like) but i was wondering what the best option would be to get .shn files playing on an ipod.  I realise I'll have to convert them, just wondering whats the best way to do it to ensure good quality files.  ps: thanks for foo_pod, working perfectly over here!

I would recommend waiting a day or two...

I'm currently working on adding transcoding support to foo_pod.  When it, is finished, you will be able to transfer any Foobar-supported file format to the iPod, and foo_pod will automatically convert it to an MP3 so that it can be played on the iPod.

Until that is ready, what you want to do is use the DiskWriter / Convert feature in Foobar to convert the Shorten files to either MP3 or AAC format, then transfer those files to the iPod using foo_pod.


BTW, in case people haven't seen it, the latest listening test (http://www.rjamorim.com/test/multiformat128/results.html) at 128kbps is out, and Lame 3.96 encoded 128kbps files did very well compared to more modern formats (basically equal in quality to iTunes AAC).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-05-26 00:44:09
Quote
I would recommend waiting a day or two...

I'm currently working on adding transcoding support to foo_pod.  When it, is finished, you will be able to transfer any Foobar-supported file format to the iPod, and foo_pod will automatically convert it to an MP3 so that it can be played on the iPod.

Until that is ready, what you want to do is use the DiskWriter / Convert feature in Foobar to convert the Shorten files to either MP3 or AAC format, then transfer those files to the iPod using foo_pod.


BTW, in case people haven't seen it, the latest listening test (http://www.rjamorim.com/test/multiformat128/results.html) at 128kbps is out, and Lame 3.96 encoded 128kbps files did very well compared to more modern formats (basically equal in quality to iTunes AAC).

Transcoding on the fly? That's pretty cool. Could take a while to transfer all your collection over though.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-26 01:49:06
Quote
Transcoding on the fly? That's pretty cool. Could take a while to transfer all your collection over though.

On my middle-of-the-road 2GHz Athlon system, LAME 3.96 with ABR encoding (pure VBR is slower) can encode at about 10x speed.  My test file is a 3:34 minute WMA file, and it transcodes in about 22 seconds, which also includes the time to write the resulting MP3 file to the iPod.

So it isn't blindingly fast, but depending on your computer, it is probably fast enough that uploading an album or two isn't going to be too painful.  For more files or a slower system, you would want to let it run overnight.  But once you have transcoded the files, you shouldn't have to do it again unless you delete them from the iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-27 12:04:47
Just a quick transcoding update: except for some code cleanup and implementing a preference dialog, transcoding is just about done.  Hopefully I'll have some thing ready for you to test later today...

Here is some sample output from transcoding the two Beatallica (http://www.beatallica.org/index2.html) albums (340MB of FLAC encoded audio):
Code: [Select]
INFO (foo_pod) : 15 files copied (41.53 MB) to the iPod in 312.73 seconds (0.13 MB/s)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-29 09:58:37
Version 0.7 (http://www.loodi.com/foo_pod.zip) is now available.

Well, here it is!  The first version of foo_pod with transcoding support.  Now, any file type that Foobar can play is now able to be transferred and played by the iPod.  Other than the extra time it takes to transcode the files, the process should be fairly transparent.  You use foo_pod just like before, except now, you don't have to worry that the input files are in the right format.  Even ReplayGain/SoundCheck settings, if present, will be transferred to the transcoded files.

I included Lame 3.96 to encode the files to MP3 format, and provide two settings (along with a setting to disable transcoding) that are appropriate for a mobile player -  ff123's (http://ff123.net/cbr128.html) recommended 128kbps ABR setting and --preset fast standard.  Both should produce good quality output, but if space is not a concern, --preset fast standard is the one you should use for the best quality (128kbps is the default, however).

To use transcoding, you need 2 additional DLLs along with lame.exe.  Copy foo_podtranscoder.dll and foo_podclienc.dll to the Components directory along with foo_pod.dll, and put a copy of lame.exe in the main Foobar2000 directory.


I'd like to thank Peter and the authors of foo_clienc.  They did most of the hard work for adding transcoding support - I just had to modify their components slightly for use with foo_pod.


From the Readme:
Code: [Select]
Version 0.7 - May 29, 2004
*  Major new feature: transcoding.  Transcoding allows audio file formats that the iPod can't play
  (anything except for MP3, AAC, WAV, and AIFF) to be converted to MP3 format and copied to
  the iPod.  To use the transcoding feature, you must have the foo_podclienc and foo_podtranscoder
  components installed, and a recent (version 3.96 is preferred) version of lame.exe in the Foobar2000
  directory.
 
  There is a new preference item for controlling transcoding, with settings for disabling transcoding,
  using a specially tuned 128kbps ABR (average bit rate) encoding (Good quality), or the
  --preset fast standard setting (High quality).
Title: foo_pod - Foobar2000 meets the iPod
Post by: kalmark on 2004-05-29 11:48:19
I don't even own an iPod, but it would be fun if you could transcode with FAAC too  So I'd like to ask if you have plans on that...Since AAC is more of less the "native" format for iPods, AFAIK.

Does this make sense?
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-05-29 12:32:21
Now it just needs to be merged into a single library  It's a bit silly having 3 files for one component.
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-05-29 12:36:10
me again... 
would it be possible just to use every diskwriter component that i can use to transcode with foobar with foo_pod e.g. nero mp4 codec?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-29 18:20:11
Quote
I don't even own an iPod, but it would be fun if you could transcode with FAAC too  So I'd like to ask if you have plans on that...Since AAC is more of less the "native" format for iPods, AFAIK.

I seriously considered using AAC encoding instead of LAME/MP3, but I did some research and found that there are several good reasons to use MP3.

1. LAME 3.96 has been tested to be just as good as iTunes' AAC encoder (http://www.rjamorim.com/test/multiformat128/results.html) (at 128kbps).  Since iTunes' encoder has been tested to be as good or better than any of the other tested encoders (http://www.rjamorim.com/test/aac128v2/results.html) (including Nero, again at 128kbps), quality-wise, there wouldn't seem to be much reason to use AAC.  AAC might be the native format for iTunes/iTunes Music Store, but MP3 is just as "native" for the iPod.

2. I have read various posts (http://www.hydrogenaudio.org/forums/index.php?showtopic=20240&) that claim that some non-iTunes encoded AAC files can crash the iPod.  I'm sure that this has been addressed already, but combined with my lack of experience with AAC encoding, I didn't want to risk it.

3. LAME Just Works and it is fast.  Just the fact that there is a special guide (http://www.hydrogenaudio.org/forums/index.php?showtopic=14447&) telling people how to encode iTunes compatible AAC files worries me.  Also, the clienc based encoder is just a temporary stop-gap solution - I plan on replacing it with the LAME_enc.dll library at some point to avoid having to go through the command line interface.

4. The built-in transcoder is supposed to be simple and foolproof.  That means limiting the options, somewhat.  By making this design decision, I knew that I would hear from AAC and "I only encode at '--preset extreme insane ludicious', you insensitive clod!" people.

5. While the patent issues remains, LAME (and I guess FAAD, for that matter) is open source and freely available to eveyone, while something like Nero's AAC encoder might be freely available, but it is commercial software.  So it would require the user to do a separate download, which would violate point #4 above.


Unless someone can convince me that AAC is better (remember Hydrogen Audio's famous Rule #8 (http://www.hydrogenaudio.org/forums/index.php?showtopic=3974#entry149480)) and faster than LAME, I believe that LAME and the MP3 format is the right choice for foo_pod's built-in transcoder.  As you can probably tell, I'm running out of room with the current Preference dialog.  If I go to a tabbed view and open up more space, I will consider adding support for alternate encoders.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-29 18:25:34
Quote
Now it just needs to be merged into a single library  It's a bit silly having 3 files for one component.

You still only need foo_pod.dll, unless you want transcoding support..  And if you are keeping score, you need 4 files for one component - foo_pod.dll, foo_podtranscoder.dll, foo_podclienc.dll, AND lame.exe.

But since you offered, perhaps you could write a simple NSIS based installer (http://nsis.sourceforge.net/) for foo_pod, so all of this would be invisible to the end user...
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-05-29 19:32:04
Regardless of the results of recent listening tests, it should be up to the user on which format they wish to use. NeroAAC files now work fine on the new ipod firmware as do they in new newer versions of iTunes. The special guide was written before these changes were made.

I'm fine with using LAME for transcoding, and I already have a copy of the encoder on my system which can be chosen among others with foo_clienc. Couldn't foobar's transcoder be used? foo_pod's is not very flexible being that it only supports one codec and two command options. There are several AAC codecs that could be used which rival or surpass LAME in their quality, and it should be up to the user to decide which they wish to use. Of course you can always transcode then transfer to the ipod, but that's what this feature is trying to make easier. The transcoder is a very nice feature, but I think you should take adding more flexibility as an option, or simply use foobars clienc. Thank you for all your work on this plugin 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-29 19:49:31
Quote
Regardless of the results of recent listening tests, it should be up to the user on which format they wish to use. NeroAAC files now work fine on the new ipod firmware as do they in new newer versions of iTunes. The special guide was written before these changes were made.

You are assuming that I want it to be flexible...

I want the transcoder to be foolproof .  By limiting the options, I can (hopefully) control the rather complicated transcoding process, so if there are problems, they are easier to reproduce and fix.  Since Foobar already has an excellent DiskWriter, anyone who wants to use their own encoder or settings can do so - they just have to do a two step process of encoding then transferring to the iPod (as you mentioned later on in your post).

That said, as soon as there is room in the Preference dialog, I will add the ability to specify a user defined encoder setting just like can be done with foo_clienc right now.
Title: foo_pod - Foobar2000 meets the iPod
Post by: flloyd on 2004-05-29 21:15:35
Just wanted to give a big thanks to you Aero. I got my iPod last week and unlike my girlfriend have never had to deal with iTunes thanks to your plugin. The transcoder is a fantastic addition and will allow me to use my 30 GB MPC collection on my iPod. My only complaint is that the transcoding really seemed to lock up foobar during the process, not a big deal just an observation. I think having the ability to make ecnoder choices in the future will be great but the two settings you chose are the two best I believe.

Once again thanks a ton Aero.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-29 22:26:54
Quote
Just wanted to give a big thanks to you Aero. I got my iPod last week and unlike my girlfriend have never had to deal with iTunes thanks to your plugin. The transcoder is a fantastic addition and will allow me to use my 30 GB MPC collection on my iPod. My only complaint is that the transcoding really seemed to lock up foobar during the process, not a big deal just an observation. I think having the ability to make ecnoder choices in the future will be great but the two settings you chose are the two best I believe.

Thanks for your kind words - I really appreciate them!


The lockup situation happens for regular file transfers as well.  foo_pod locks the Foobar song database/playlists when it is processing files to prevent other components or the user from changing things while the transfer is taking place. 

Probably the best workaround is to copy your whole Foobar directory to a new directory (say "Foo_podbar2000"), and use that copy when you will be doing lengthy iPod related operations.  You can run multiple copies of Foobar, as long as they are in separate directories, so you can keep your normal Foobar for regular use.
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-05-30 10:40:50
Quote
NeroAAC files now work fine on the new ipod firmware as do they in new newer versions of iTunes. The special guide was written before these changes were made.

I'm fine with using LAME for transcoding, and I already have a copy of the encoder on my system which can be chosen among others with foo_clienc. Couldn't foobar's transcoder be used? foo_pod's is not very flexible being that it only supports one codec and two command options. There are several AAC codecs that could be used which rival or surpass LAME in their quality, and it should be up to the user to decide which they wish to use. Of course you can always transcode then transfer to the ipod, but that's what this feature is trying to make easier. The transcoder is a very nice feature, but I think you should take adding more flexibility as an option, or simply use foobars clienc. Thank you for all your work on this plugin


i could'nt have said it better! thx.
Title: foo_pod - Foobar2000 meets the iPod
Post by: flloyd on 2004-05-31 03:55:47
Quote
The lockup situation happens for regular file transfers as well.  foo_pod locks the Foobar song database/playlists when it is processing files to prevent other components or the user from changing things while the transfer is taking place.

Actually the lockups I am talking about I believe are unintentional. When I transfer MP3s, foobar doesn't allow me to do anything yet I can see the tranfer taking place, that is the files are counted down. However when I tranfer MPCs foobar "whites out" and although it eventually transfers all of the files, I can't track the progress and can't even see foobar after minimizing it and then trying to look at it again. Hope this pictures shows what I mean:

http://www.hydrogenaudio.org/forums/index....ST&f=35&t=22091 (http://www.hydrogenaudio.org/forums/index.php?act=ST&f=35&t=22091)

As I said, not a big deal because the song is eventually transferred however I can't track the progress. BTW my system specs are:

Duron 600
512 MB DDR 266
Matrox G450
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-31 10:11:58
Quote
Actually the lockups I am talking about I believe are unintentional. When I transfer MP3s, foobar doesn't allow me to do anything yet I can see the tranfer taking place, that is the files are counted down. However when I tranfer MPCs foobar "whites out" and although it eventually transfers all of the files, I can't track the progress and can't even see foobar after minimizing it and then trying to look at it again. Hope this pictures shows what I mean:

http://www.hydrogenaudio.org/forums/index....ST&f=35&t=22091 (http://www.hydrogenaudio.org/forums/index.php?act=ST&f=35&t=22091)

As I said, not a big deal because the song is eventually transferred however I can't track the progress. BTW my system specs are:

Duron 600
512 MB DDR 266
Matrox G450

From the screenshot you posted, it looks like the transcoding process is using up so much CPU time, Windows isn't able to repaint the Foobar window.  You wouldn't see that on a regular MP3/AAC file transfer since there is almost no CPU usage required for a simple copy.

It is harmless, and you probably wouldn't see it (as much) on a faster system.  Trying to avoid moving the cursor or the transfer status dialog window around while transcoding might help a little.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-31 10:29:07
Version 0.7.1 (http://www.loodi.com/foo_pod.zip) is now available.


By popular request *ahem*, I added not only a custom encoder dialog (stolen from foo_clienc), but I also preconfigured several FAAC compatible presets.  There is also a new mid-range LAME setting (--preset fast medium -Y).  The FAAC settings work quite well, I must admit, and as long as you are ok with AAC files, the -q115 setting is probably a good mix between quality and file size.

I didn't test Nero's AAC encoder, but it can probably be made to work with the nencoder command line interface (http://mysite.verizon.net/vze559m7/nencoder.zip) and the custom encoder option.

Finally, to make room for all of this new goodness, I split the configuration dialog up into 3 tabs.


From the Readme:
Code: [Select]
Version 0.7.1 - May 31, 2004
*  Added a "--preset medium -Y" medium quality setting for LAME and added several pre-configured
  settings for FAAC, a free AAC encoder.  There is also an option for specifying a custom command line
  encoder, similar to Foobar's Commandline Encoder/Diskwriter.

*  Separated the configuration dialog up into 3 separate tabs - Main, Transcoder, and iPod Service.
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-05-31 13:12:14
Thank you very much for the AAC support (though FAAC is not my weapon of choice) - works great so far! 


edit: spelling
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-05-31 13:41:32
Quote
This version adds the ability to copy files from the iPod to your hard drive, formatted according to a user-configurable standard Foobar TAGZ string.

In simpler terms, it means that you can select files on the iPods, select "Save iPod File to disk", and it will copy them to your local hard drive and arrange them according to the format you provide.


this feature of Version 0.6.2 doesn't work anymore. i cannot find the item "Save iPod File to disk" in the context menu anymore..


EDIT: okay! forget about it. it is back again... just started foobar once again and now the item is back 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-31 20:06:28
Quote
Quote
This version adds the ability to copy files from the iPod to your hard drive, formatted according to a user-configurable standard Foobar TAGZ string.

In simpler terms, it means that you can select files on the iPods, select "Save iPod File to disk", and it will copy them to your local hard drive and arrange them according to the format you provide.


this feature of Version 0.6.2 doesn't work anymore. i cannot find the item "Save iPod File to disk" in the context menu anymore..


EDIT: okay! forget about it. it is back again... just started foobar once again and now the item is back 

Send/Deleted Selected Files only appears on the context menu when there are files selected AND the action is appropriate. 

By that, I mean that if the files are already on the iPod, you won't get Send Selected Files, and if they aren't on the iPod, you won't see Delete Selected.
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-05-31 20:38:58
Quote
Send/Deleted Selected Files only appears on the context menu when there are files selected AND the action is appropriate.

By that, I mean that if the files are already on the iPod, you won't get Send Selected Files, and if they aren't on the iPod, you won't see Delete Selected.


well, thank you! that was not the problem.... i do not know, what went wrong actually. but it's okay again..


something else:
managing playlists is not implemented yet IIRC. so, what about just letting a popup open where you can see all ipod-playlists and then let one create new playlists within there. to modify those playlists one could delete desired files within them and drag'n'drop new songs into them..
i imagine the foobar-iPod-songlist on the left and right beside it  the playlist-managing-window..
would that be possible or is it too hard to implement?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-05-31 23:58:47
Version 0.7.3 (http://www.loodi.com/foo_pod.zip) is now available.

Edit:  The bitrate detection code doesn't seem to be working consistantly, so please wait for the next release to test this feature...

Edit 2:  This should be fixed in the just posted 0.7.3

This version adds a potentially very powerful feature - in the Transcoder preference tab, you can specify whether MP3 and AAC files should also be transcoded, if they are over a user specified bitrate. 

By using this feature, you can tell foo_pod to transcode all MP3 files over 160kbps, for example, into smaller a MP3 or AAC format and be able to fit more songs onto your iPod.


From the Readme:
Code: [Select]
Version 0.7.3 - May 31, 2004
*  Fixed bug in the MP3/AAC bitrate-dependant transcoding - due to a typo, the transcoding would
  occurs either for all files or none of the files.

Version 0.7.2 - May 31, 2004
*  Added the ability to transcode MP3 and AAC files if they are over a user specified bitrate.  This
  feature allows you to fit more songs onto the iPod, since it will transcode high bitrate files into
  smaller files.  An example would be transcoding a hard drive full of MP3 files into AAC format.

*  Fixed the code responsible for translating metadata into the iPod's database format, so that it correctly
  represents the bitrate/file type/samplerate/etc. for transcoded files.  This doesn't have an effect on
  the iPod, but it might improve programs that read the database, such as iTunes.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-01 00:24:38
Quote
managing playlists is not implemented yet IIRC. so, what about just letting a popup open where you can see all ipod-playlists and then let one create new playlists within there. to modify those playlists one could delete desired files within them and drag'n'drop new songs into them..
i imagine the foobar-iPod-songlist on the left and right beside it  the playlist-managing-window..
would that be possible or is it too hard to implement?

That is a pretty good idea.  There really isn't a good way to manage iPod playlists from within the constraints of the Foobar default UI, so you would definitely need something else.

I don't really have the time or interest to implement this right away, but perhaps some other programmer could (hi DanZ!).  There is a programmer's interface for foo_pod that allows 3rd parties to create components that use foo_pod.  There isn't enough interface available right now to do the iPod playlist component, but if someone is interested in writing it, I would be willing to add what is needed to the interface.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-06-01 01:20:41
Feature request: Some way of seeing how much space is available on the iPod, and how many songs could fit on there, or how much of the current playlist is possible or whatnot.

Then of course, this should be extended to automate transcoding - If you were to transcode these 100 MP3 files to 128kbits, then all files would fit blah blah.

Sounds good, eh?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-01 01:35:37
Quote
Feature request: Some way of seeing how much space is available on the iPod, and how many songs could fit on there, or how much of the current playlist is possible or whatnot.

Then of course, this should be extended to automate transcoding - If you were to transcode these 100 MP3 files to 128kbits, then all files would fit blah blah.

Free iPod disk space - good idea.
How many songs will fit & automatic transcoding - good ideas, but not practical.

The problem is that it would work only for CBR (constant bit rate) encoding, which no one should be using unless they absolutely must do so.

What I could do is pop up a window that says xxx MB free, then provide examples of how many songs would fit at various bitrates.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-01 05:59:34
Quote
What I could do is pop up a window that says xxx MB free...

Is there any way to pull that data directly from the Settings | About page?
Title: foo_pod - Foobar2000 meets the iPod
Post by: mixmixmix on 2004-06-01 08:47:39
I love you Aero
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-06-01 09:58:27
Quote
Quote
Feature request: Some way of seeing how much space is available on the iPod, and how many songs could fit on there, or how much of the current playlist is possible or whatnot.

Then of course, this should be extended to automate transcoding - If you were to transcode these 100 MP3 files to 128kbits, then all files would fit blah blah.

Free iPod disk space - good idea.
How many songs will fit & automatic transcoding - good ideas, but not practical.

The problem is that it would work only for CBR (constant bit rate) encoding, which no one should be using unless they absolutely must do so.

What I could do is pop up a window that says xxx MB free, then provide examples of how many songs would fit at various bitrates.

How about a graphical representation of free and used space (progress bar, pie chart, whatever)?

Also, is it not possible to reasonably estimate a song's filesize based on its length?

Maybe different multipliers for different settings - ABR 128kbit would be approximately 1.12MB per minute or whatever. It wouldn't have to be perfectly accurate, but just to give an idea.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-01 19:42:17
Quote
How about a graphical representation of free and used space (progress bar, pie chart, whatever)?

Also, is it not possible to reasonably estimate a song's filesize based on its length?

Maybe different multipliers for different settings - ABR 128kbit would be approximately 1.12MB per minute or whatever. It wouldn't have to be perfectly accurate, but just to give an idea.

Well, I could do that, but you get the same data (with pie chart) from Windows just by selecting Properties on the iPod drive, so I don't know how fancy I want to make it.

The problem with calculating the number of songs is that you don't really know the bitrate, you don't really know how long each song is, so you can't really calculate how much space X songs will need - so you can't calculate how many will fit in the available disk space.  You can start making assumptions, like an average bit rate and average song length, but then how good is the calculation going to be?

What I could do is have a "Will These Fit?" feature, where you could select some files or a playlist and foo_pod could use the actual file sizes to see if they would fit on the iPod.  That would probably be a lot more useful than a WAG on how many theoretical songs would fit.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-02 10:06:32
I have been playing around with the "Transcode above ___ kbps" feature, and if you haven't tried it out yet, you might want to give it a look.

I did two tests - first, I transcoded MP3 files above 160kbps using the FAAC -q100 setting, and ran it against some of my music files.  The input was 8.78GB of mainly MP3 files (average bitrate 146kbps).  The output was a total of 1.13GB (average bitrate 123kbps).  That is the equivalent of turning a 40GB iPod into a 311GB model...

The AAC sound quality was actually very good - it was a little muffled due to the high frequency cutoff at 16kHz, but I didn't notice any recompression artifacts and overall, it definitely was accepatable quality.

The second test was much larger, and took over 15 hours(!) to do all of the transcoding.  I used the -q115 FAAC preset for better quality (and also larger filesizes) and again transcoded all MP3 files over 160kbps.  The input was 38.48GB (avg bitrate 139kbps), and the results were a total of 33.81GB (avg bitrate 122kbps).  Not quite as impressive as the first test, but it did allow me to fit all of the music on my iPod, with 3GB to spare.


The next upcoming feature is a Repair Database menu item, so if the iTunesDB database somehow gets corrupted and there are songs on the iPod, foo_pod will be able to rebuild the database from the song's metadata.  It isn't perfect - you won't be able to recover playlist, play counts, or rating, but if you just spent 15+ hours transcoding music onto the iPod, you might appreciate the new feature.

An interesting side effect of the Repair Database feature is that you can copy songs to the iPod however you wish (maybe something like a batch or script file), then run Repair Database and it will generate a usable iPod database.
Title: foo_pod - Foobar2000 meets the iPod
Post by: kalmark on 2004-06-02 16:03:27
Quote
I did two tests - first, I transcoded MP3 files above 160kbps using the FAAC -q100 setting, and ran it against some of my music files.  The input was 8.78GB of mainly MP3 files (average bitrate 146kbps).  The output was a total of 1.13GB (average bitrate 123kbps).  That is the equivalent of turning a 40GB iPod into a 311GB model...

I think you mixed up something in that calculation --- as the average bitrate went lower by ~16% and the occupied space went lower by ~87%. But I think we all get your point

(Or am I wrong here?)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-02 21:55:38
Quote
I think you mixed up something in that calculation --- as the average bitrate went lower by ~16% and the occupied space went lower by ~87%. But I think we all get your point

Yeah, I couldn't believe it either, but I tripled checked the transcoded filesizes in Foobar, Windows Explorer, and the Settings->About menu on the iPod.  The average bitrate calculation might have been incorrect.
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-06-03 07:21:04
Quote
QUOTE (neomoe @ May 31 2004, 01:38 PM)
managing playlists is not implemented yet IIRC. so, what about just letting a popup open where you can see all ipod-playlists and then let one create new playlists within there. to modify those playlists one could delete desired files within them and drag'n'drop new songs into them..
i imagine the foobar-iPod-songlist on the left and right beside it  the playlist-managing-window..
would that be possible or is it too hard to implement?

That is a pretty good idea. There really isn't a good way to manage iPod playlists from within the constraints of the Foobar default UI, so you would definitely need something else.

I don't really have the time or interest to implement this right away, but perhaps some other programmer could (hi DanZ!). There is a programmer's interface for foo_pod that allows 3rd parties to create components that use foo_pod. There isn't enough interface available right now to do the iPod playlist component, but if someone is interested in writing it, I would be willing to add what is needed to the interface.


were any steps done in this regard yet? i'd really appreciate it if somebody would be able to code this - others would like that feature as well, i guess! 

and another thing: the foobar-iTunes ratings which are implemented via quicktag don't seem to work here...  any suggestions?


edit: vocabulary 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-03 21:50:38
Version 0.7.5 (http://www.loodi.com/foo_pod.zip) is now available.

Edit: There was a fairly serious regression introduced in 0.7.4, which would cause transcoded files to be incorrectly added to the iPod database.  If you are using 0.7.4, please upgrade to 0.7.5.

0.7.4 adds the Repair iPod Database feature, which is way of recovering a workable database if it somehow gets corrupted.  As I mentioned before, this is not a perfect repair since things such as playlists can not be recovered.  But if, for example, you sync your iPod and suddenly no songs are visible, this feature will at least get you back to the point where you can browse and play all of the songs on your iPod.


From the Readme:
Code: [Select]
Version 0.7.5 - June 4, 2004
*  Fixed a serious regression in 0.7.4 that would cause transcoded songs to be incorrectedly added to
  the iTunesDB database.


Version 0.7.4 - June 3, 2004
*  Added the Repair iPod Database feature.  This attempts to rebuild a working iPod database based on
  the files that are on the iPod.  This should *only* be used if the iPod database is corrupted (i.e.
  no songs appear on the iPod), since it will not be able to recover any playlists, smart playlists,
  playcounts, or ratings.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-03 21:55:27
Quote
Quote
I don't really have the time or interest to implement this right away, but perhaps some other programmer could (hi DanZ!). There is a programmer's interface for foo_pod that allows 3rd parties to create components that use foo_pod. There isn't enough interface available right now to do the iPod playlist component, but if someone is interested in writing it, I would be willing to add what is needed to the interface.

were any steps done in this regard yet? i'd really appreciate it if somebody would be able to code this - others would like that feature as well, i guess!

I haven't heard from anyone regarding this, yet...

Quote
and another thing: the foobar-iTunes ratings which are implemented via quicktag don't seem to work here...  any suggestions?

I haven't tested the ratings with QuickTag, but I believe it just uses the RATING metadata, which foo_pod presents to the Foobar.  I know I have seen ratings work in general. 

I'll try QuickTag out and see if I can discover the problem, but until then, how exactly does it not work?  Can you not see ratings, not add/change ratings, or both?
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-04 12:27:14
Just a minor question: I've set it to automatically update my playlist named "iPod", and I've added in a song from foobar. But the "iPod" playlist does not seem to refresh by itself.

Is that supposed to be normal?

EDIT: I'm facing a problem right now, which happened after I've did a "backup database file" option. It sorta corrupted my DB file. Some files were not in the DB.

I can't seem to sync any files inside the iPod. It'll just "preparing DB file, and then writing DB file". Not sure what happened, . I've did a restore, but I still can't sync the files in as well.

Tried reinstalling foo_pod, foobar, restarting my PC, redocking my iPod, but to no avail.

I'm using 0.7.5 though.
I feel so helpless without foo_pod... All my RG values +APE tags are not captured with any other s/w...  And I can't go back to 0.7.3, as I just overwrite-d my 0.7.3 with 0.7.5...

PS: Could someone send me a copy of 0.7.3 to tasdevil55 at hotmail dot com?
Many thanks!

Code: [Select]
INFO (CORE) : location: "file://D:\My Music\Savage Garden\Savage Garden - Affirmation.mp3" (0)
INFO (foo_pod) : Unsupported file: D:\My Music\Savage Garden\Savage Garden - Affirmation.mp3
INFO (foo_pod) : 0 files copied (0.00 MB) to the iPod in 0.20 seconds (0.00 MB/s)


I have no problems with iTunes and Ephpod though.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-04 19:00:37
Quote
Just a minor question: I've set it to automatically update my playlist named "iPod", and I've added in a song from foobar. But the "iPod" playlist does not seem to refresh by itself.

Is that supposed to be normal?

EDIT: I'm facing a problem right now, which happened after I've did a "backup database file" option. It sorta corrupted my DB file. Some files were not in the DB.

I can't seem to sync any files inside the iPod. It'll just "preparing DB file, and then writing DB file". Not sure what happened, . I've did a restore, but I still can't sync the files in as well.

Tried reinstalling foo_pod, foobar, restarting my PC, redocking my iPod, but to no avail.

I'm using 0.7.5 though.
I feel so helpless without foo_pod... All my RG values +APE tags are not captured with any other s/w...   And I can't go back to 0.7.3, as I just overwrite-d my 0.7.3 with 0.7.5...

PS: Could someone send me a copy of 0.7.3 to tasdevil55 at hotmail dot com?
Many thanks!

In general, unless there is a version that is really bad (e.g. 0.7.4), I tend to keep several past versions online at http://www.loodi.com/foo_pod_versionnumber.zip (http://www.loodi.com/foo_pod_versionnumber.zip).  So 0.7.3 is http://www.loodi.com/foo_pod_0.7.3.zip (http://www.loodi.com/foo_pod_0.7.3.zip).

Try 0.7.3 and see if it fixes your problem.  Meanwhile, I'll try to figure out what is going on.

Edit: Yeah, it is a bug.  I'll fix it shortly, but the workaround for now if to turn on transcoding (even if you don't use it).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 04:30:27
Version 0.7.6 (http://www.loodi.com/foo_pod.zip) is now available.

This versions fixes the problem reported by SNAG and generally improves the whole process on deciding whether a file should be transcoded or copied to the iPod.


From the Readme:
Code: [Select]
Version 0.7.6 - June 4, 2004
*  Fixed another 0.7.4/0.7.5 regression, which would prevent iPod supported formats (MP3, AAC, and WAV)
  to incorrectly marked as unsupported and not sent to the iPod, if transcoding was disabled.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-05 06:23:21
Aero,

When using the foo_colums UI, the function to ignore playlists when syncing doesn't work properly (in other words, they sync, regardless).  Can you take a look at that and let me know if I need to ask the foo_colums folks for a fix?
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-05 06:27:53
Quote
Version 0.7.6 (http://www.loodi.com/foo_pod.zip) is now available.

This versions fixes the problem reported by SNAG and generally improves the whole process on deciding whether a file should be transcoded or copied to the iPod.


From the Readme:
Code: [Select]
Version 0.7.6 - June 4, 2004
*  Fixed another 0.7.4/0.7.5 regression, which would prevent iPod supported formats (MP3, AAC, and WAV)
  to incorrectly marked as unsupported and not sent to the iPod, if transcoding was disabled.

Tried 0.7.6, but it still does not sync the files inside. I did a iPod restore before sync-ing the files in.

Code: [Select]
INFO (foo_pod) : 0 files copied (0.00 MB) to the iPod in 0.25 seconds (0.00 MB/s)
INFO (foo_pod) : 0 files copied (0.00 MB) to the iPod in 0.22 seconds (0.00 MB/s)


This is what I got after 2 tries.
Reverting to 0.7.3 does work once again.

Actually, my transcoding options have been set to "LAME - High Quality" all along.

PS: And I just realised that foo_pod is smart enough to detect if there's a exact duplicate of the song, it'll prevent it from re-copying into the iPod. Sweet!

Great work, Aero!!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 07:38:01
Quote
When using the foo_colums UI, the function to ignore playlists when syncing doesn't work properly (in other words, they sync, regardless).  Can you take a look at that and let me know if I need to ask the foo_colums folks for a fix?

I just installed foo_ui_columns version 0.1 (http://members.lycos.co.uk/musicf/foo_ui_columns.dll) with Foobar2000 0.8.2 and foo_pod 0.7.6, and Ignore Playlist worked just fine with both Send and Sync Playlist:
Code: [Select]
INFO (foo_pod) : Playlist 'Beatallica' excluded from the sync because it is ignored
INFO (foo_pod) : Playlist 'Me & Mr. Johnson' excluded from the send because it is ignored

This is using the default settings for foo_ui_columns.  Unless it is doing something very bad with the playlists and the playlist_switcher, I can't really see how this would not work.  I even tried Unicode characters (a bunch of Hebrew and Arabic glyphs) and foo_pod still correctly ignored the playlist.

Since you can apparently reproduce this problem, try different foo_ui_column preference settings and see if there is something that triggers the problem.  For example, try this:

1. Backup your foobar2000.cfg file.
2. Remove foo_ui_columns.dll from the Components directory.
3. Start Foobar2000 and see if you can ignore playlists with the default UI.
4. Replace foo_ui_columns.dll (this will restore the default preferences)
5. Start Foobar2000, set the UI to foo_ui_columns, restart, and see if you can reproduce the bug.

If you can reproduce the bug after step 5, then something very weird is going on, and it is almost definitely a foo_ui_columns bug.  If you can reproduce the problem at this point, I'll whip up a special debug version of foo_pod so you can take the output and show it to the foo_ui_columns guy.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-05 07:42:02
Hey Aero,
I've been following this thread ever since I knew I was gonna get my 40gig iPod in the mail soon. I've been waiting to be able to use my favorite audio player with my iPod. So now it's here and I formatted it for windows and updated its firmware and all, but now I'm having problems transfering songs using foo_pod. I can send songs using iTunes without any problems, but, unlike it, foo_pod refuses to understand that the iPod is mounted. The send songs to iPod context menu item is never available and when I go through the menu and select send current playlist to iPod it opens a window and says it's transfering but then in the console it says it didn't due to file error. I tried everything: with iTunes installed, with the startup entries for iTunes diabled, with iTunes uninstalled, with 0.7.3, 0.7.5, and 0.7.6... none worked... well once it was able to transfer an album but upon opening foobar and putting my ipod in in the same conditions it wouldn't work again. I tried restoring the iPod to reset it but to no avail.... Am I doing something wrong???

EDIT: Ok, now it recognizes that the ipod is mounted and adds it to "My Computer" but when I send files and makes it look as though it's sending and everything is fine and doesn't show up the console but then I eject the iPod and browse through it only to find that nothing was added.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 07:54:56
Quote
PS: And I just realised that foo_pod is smart enough to detect if there's a exact duplicate of the song, it'll prevent it from re-copying into the iPod. Sweet!

Great work, Aero!!

Heh.  Thanks!

Yeah, foo_pod is very smart (it is only about 10 lines of code away from becoming self-aware...), but it is pretty dumb about informing the user why it did what it did.  I have been tripped up by similar things in the past, and I have been meaning to overhaul the whole logging system to give better information.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 08:16:11
Quote
EDIT: Ok, now it recognizes that the ipod is mounted and adds it to "My Computer" but when I send files and makes it look as though it's sending and everything is fine and doesn't show up the console but then I eject the iPod and browse through it only to find that nothing was added.

Umm...well, let's start from the beginning and see if we can get something working.

First of all, you need to make sure that iTunes isn't running, and preferably, doesn't automatically start when you dock your iPod.  You might already know this, but if you have iTunes set up to automatically sync with your iPod, iTunes will undo everything that foo_pod has done.  This is because as far as iTunes is concerned, the files the the foo_pod has put on the iPod don't match the iTunes library, and thus should be deleted.

The next step is to make sure the the iPod shows up in My Computer.  It can take upwards of 15 seconds from when you dock it until it shows up, so be patient.  If it doesn't show up, start up Foobar, go to the foo_pod preferences, then to the iPod Service tab, and select Enable Disk Mode.

Once you can see the iPod in the My Computer window, go to the Foobar2000 components menu, then foo_pod, then select Delete All iPod Music and Playlists.  This will give us a clean iPod to work with (as its name suggested, it will also wipe your iPod clean).

Next, copy some songs from Foobar to the iPod.  To make it simple, select some files, right click, and select foo_pod: Send Files To iPod.  You should see the files being transferred and see the results in the Foobar console.  If this worked, eject the iPod (using the Components->foo_pod->Eject iPod menu item), and see if you can play the songs you just transferred.

If you can't, then there is a big problem.  If you can, redock your iPod (give it time to mount), and try different options like Send Current Playlist.  Be aware that Sync Playlist will delete songs from the iPod so that it matches the current playlist(s), so at least until you get comfortable with foo_pod, don't use sync.

Anyway, try that and let me know how it works out.  Be sure to cut-n-paste exact output to help debug any problems you might continue to have.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 08:32:59
Speaking of ITunes, now that the COM interface for iTunes (http://developer.apple.com/sdk/#iTunesCOM) has been released by Apple, it appears possible that I could add some code so that songs added by foo_pod would automatically be added to the iTunes library.  This would synchronize both players (at least iTunes with foo_pod, although an "Import from iTunes" feature isn't impossible), and prevent iTunes from wiping out songs that foo_pod transfers.

I don't use iTunes, so this situation doesn't really affect me one way or another.  But if enough people do use iTunes in addition to foo_pod, I might consider it.  Also, does anyone have experience with the iTunes COM interface?  I have just briefly looked over the docs, but it looks like it would be as easy as calling IITLibraryPlaylist::AddFile() for each file that foo_pod copies to the iPod.  Is this correct, and would I have to worry about duplicate files?
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-05 08:41:42
Well, I am aware of the whole iTunes sync thing and I do have iTunesHelper removed from starup. As before, the iPod did appear in My Computer when docked with the name I gave it when I formatted it. Then I went to foobar and added an album, right clicked it, and selected send to iPod and even though this is exactly what I did before, now I got this:
Quote
ERROR (foo_pod) : Error writing iTunesDB file!
INFO (foo_pod) : Restoring previous iTunesDB file due to error
INFO (foo_pod) : 0 files copied (0.00 MB) to the iPod in 0.34 seconds (0.00 MB/s)

And as the console warned, no files were found on the iPod...
I have no problems transfering files using either iTunes or ephPod and neither was running while foobar was.
Now there is this process named ipodservice.exe running and I know it comes from iTunes but foo_pod refused to work whether iTunes was installed or not.
Got any idea what could be done?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 08:49:58
Quote
Well, I am aware of the whole iTunes sync thing and I do have iTunesHelper removed from starup. As before, the iPod did appear in My Computer when docked with the name I gave it when I formatted it. Then I went to foobar and added an album, right clicked it, and selected send to iPod and even though this is exactly what I did before, now I got this:
Quote
ERROR (foo_pod) : Error writing iTunesDB file!
INFO (foo_pod) : Restoring previous iTunesDB file due to error
INFO (foo_pod) : 0 files copied (0.00 MB) to the iPod in 0.34 seconds (0.00 MB/s)

And as the console warned, no files were found on the iPod...
I have no problems transfering files using either iTunes or ephPod and neither was running while foobar was.
Now there is this process named ipodservice.exe running and I know it comes from iTunes but foo_pod refused to work whether iTunes was installed or not.
Got any idea what could be done?

And you're sure you did a Delete All Songs And Playlists before sending the files to the iPod? 

One thing to try - go to My Computer and get the drive letter for the iPod (d:, e:, etc.).  Then go to foo_pod preference, Main tab, and set the same drive letter for Force iPod Drive Letter.  Then see if you can send some files.

Edit: One more thing - what version does foo_pod report for the iPodService?  It will be near the top in the Foobar console, and should be something like "INFO (foo_pod) : iPodService version 11".
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-05 09:00:49
Yes; I am positive.

I just tried that and it doesn't help.

Yup, it reports version 11.

Another thing is that now it doesn't pop up the console but if, after "transfering" files, I open it, I see this:
Quote
INFO (foo_pod) : 0 files copied (0.00 MB) to the iPod in 0.36 seconds (0.00 MB/s)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 09:03:58
Quote
Another thing is that now it doesn't pop up the console but if, after "transfering" files, I open it, I see this:
Quote
INFO (foo_pod) : 0 files copied (0.00 MB) to the iPod in 0.36 seconds (0.00 MB/s)

That might be because foo_pod thinks that the files are already on the iPod.  Try sending new, never been sent files (still using the Force Drive Letter) and see if it does anything.

Edit: Also run Delete All Songs And Playlists with the Force Drive Letter set, just in case.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-05 09:08:15
*Sigh*... nope; still 0 files copied... this is really weird and really frustrating.
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-06-05 09:49:52
Quote
  Speaking of ITunes, now that the COM interface for iTunes has been released by Apple, it appears possible that I could add some code so that songs added by foo_pod would automatically be added to the iTunes library. This would synchronize both players (at least iTunes with foo_pod, although an "Import from iTunes" feature isn't impossible), and prevent iTunes from wiping out songs that foo_pod transfers.


i am using iTunes aside from foo_pod so i would surely like that feature! 



Quote
I haven't tested the ratings with QuickTag, but I believe it just uses the RATING metadata, which foo_pod presents to the Foobar. I know I have seen ratings work in general.

I'll try QuickTag out and see if I can discover the problem, but until then, how exactly does it not work? Can you not see ratings, not add/change ratings, or both?


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?
Title: foo_pod - Foobar2000 meets the iPod
Post by: neomoe on 2004-06-05 10:01:48
Quote
Also, does anyone have experience with the iTunes COM interface? I have just briefly looked over the docs, but it looks like it would be as easy as calling IITLibraryPlaylist::AddFile() for each file that foo_pod copies to the iPod. Is this correct, and would I have to worry about duplicate files?


sehested posted a Pearl-script in another thread, take a look
here (http://209.152.181.168/~hydrogen/index.php?showtopic=22162&view=findpost&p=216008).

is this something that helps? hope so!
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-05 10:50:01
Quote
*Sigh*... nope; still 0 files copied... this is really weird and really frustrating.


I have the same problem (as quoted above in my earlier post) as well.
This happens even after I did a iPod restore...
But my problem occurred with 0.7.6, and it was gone by using 0.7.3.
Title: foo_pod - Foobar2000 meets the iPod
Post by: musicmusic on 2004-06-05 13:34:48
Quote
Quote
When using the foo_colums UI, the function to ignore playlists when syncing doesn't work properly (in other words, they sync, regardless).  Can you take a look at that and let me know if I need to ask the foo_colums folks for a fix?

I just installed foo_ui_columns version 0.1 (http://members.lycos.co.uk/musicf/foo_ui_columns.dll) with Foobar2000 0.8.2 and foo_pod 0.7.6, and Ignore Playlist worked just fine with both Send and Sync Playlist:
Code: [Select]
INFO (foo_pod) : Playlist 'Beatallica' excluded from the sync because it is ignored
INFO (foo_pod) : Playlist 'Me & Mr. Johnson' excluded from the send because it is ignored

This is using the default settings for foo_ui_columns.  Unless it is doing something very bad with the playlists and the playlist_switcher, I can't really see how this would not work.  I even tried Unicode characters (a bunch of Hebrew and Arabic glyphs) and foo_pod still correctly ignored the playlist.

Since you can apparently reproduce this problem, try different foo_ui_column preference settings and see if there is something that triggers the problem.  For example, try this:

1. Backup your foobar2000.cfg file.
2. Remove foo_ui_columns.dll from the Components directory.
3. Start Foobar2000 and see if you can ignore playlists with the default UI.
4. Replace foo_ui_columns.dll (this will restore the default preferences)
5. Start Foobar2000, set the UI to foo_ui_columns, restart, and see if you can reproduce the bug.

If you can reproduce the bug after step 5, then something very weird is going on, and it is almost definitely a foo_ui_columns bug.  If you can reproduce the problem at this point, I'll whip up a special debug version of foo_pod so you can take the output and show it to the foo_ui_columns guy.

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..
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-05 16:32:58
Quote
Quote
*Sigh*... nope; still 0 files copied... this is really weird and really frustrating.


I have the same problem (as quoted above in my earlier post) as well.
This happens even after I did a iPod restore...
But my problem occurred with 0.7.6, and it was gone by using 0.7.3.

I know I said I already tried 0.7.3 but I tried it again and now it works and foo_pod is indeed awsome! I just hope that this annoyance is fixed in the next version so I can use the new features it'll bring.
So 0.7.3 does work now but I'm having problems with transcoding... whenever foo_pod wants to transcode a file it outputs this:
Quote
ERROR (foo_podclienc) : Unable to start faac.exe

And even if I use lame it just says the same thing only with lame.exe. I tried the exes from 0.7.6 (even though they should be the same, and were) and it still does that... maybe I should compile my own lame... I'm not sure why these exes wouldn't work though... or maybe it's the clienc and not the encoders? In any case, does anyone have an idea what could cause this?

EDIT: Oh, and also another thing: whenever foo_pod finishes a process which required it to open a progress window and that window closes, it takes away the focus from foobar and gives it to the window that had it before... this is really annoying. Is anyone else experiencing this?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-05 17:04:44
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: musicmusic on 2004-06-05 17:11:57
What I meant was, are you right clicking on the playlist, or the playlists (i.e. tabs or sidebar)?

As far as I know, the command ignores the active playlist, which is what I meant about right clicking on the playlists. If you already thought/knew that then ok..
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 18:47:24
Quote
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..

Obviously, the playlist is the user interface component which lists songs.  Tabs are merely the UI implementation of playlist_switcher, which as its name implies, switches between playlists.  Just the fact that you can have a playlist without tabs proves this.  So when someone says they right clicked on the playlist, they (should) mean that they selected the context menu while in the playlist area, not on the tab itself.

As for the name, yes, by This Playlist, foo_pod really means Active Playlist.  Since I originally expected that users would select it while in the playlist, the name is perfectly sane and correctly located.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 18:55:43
Quote
I know I said I already tried 0.7.3 but I tried it again and now it works and foo_pod is indeed awsome! I just hope that this annoyance is fixed in the next version so I can use the new features it'll bring.

I'm surprised that 0.7.3 works while 0.7.6 doesn't.  Hmm...I thought I tested all of the combinations to make sure 0.7.6 worked, but it looks like I'll have to check it out again.  Just be aware that 0.7.3 would incorrectly copy duplicates of transcoded files (transcoding from MP3->AAC, for example).

Quote
So 0.7.3 does work now but I'm having problems with transcoding... whenever foo_pod wants to transcode a file it outputs this:
Quote
ERROR (foo_podclienc) : Unable to start faac.exe

And even if I use lame it just says the same thing only with lame.exe. I tried the exes from 0.7.6 (even though they should be the same, and were) and it still does that... maybe I should compile my own lame... I'm not sure why these exes wouldn't work though... or maybe it's the clienc and not the encoders? In any case, does anyone have an idea what could cause this?

Did you copy faac.exe and/or lame.exe to your Foobar2000 directory (not the components dir), or otherwise have them on your path (e.g. in c:\windows)?  That error likely means that foo_pod simply couldn't find the .exe to run.  BTW, there is nothing special about the faac.exe and lame.exe that I included - they are the standard executables.

Quote
EDIT: Oh, and also another thing: whenever foo_pod finishes a process which required it to open a progress window and that window closes, it takes away the focus from foobar and gives it to the window that had it before... this is really annoying. Is anyone else experiencing this?

I haven't noticed that, but when I run foo_pod, it is usually in the debugger, which tends to steal focus anyway, so I probably wouldn't have noticed it.  I'll see if I can do anything about that issue.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-05 18:58:47
Quote
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...
Title: foo_pod - Foobar2000 meets the iPod
Post by: musicmusic on 2004-06-05 20:03:28
Quote
Obviously, the playlist is the user interface component which lists songs.  Tabs are merely the UI implementation of playlist_switcher, which as its name implies, switches between playlists.  Just the fact that you can have a playlist without tabs proves this.

Erm ok. I wasn't disputing that..

Quote
So when someone says they right clicked on the playlist, they (should) mean that they selected the context menu while in the playlist area, not on the tab itself.

Well yes, but who said that?

The ignore playlist function works fine here (checkmarks show anyway), and you said it works for you. I was merely pointing out that Lew_Zealand may have been right clicking on a tab/playlist instead of the playlist, and expecting the playlist he/she right clicked on to be ignored, rather than the active playlist.

Perhaps I was wrong, but whatever.

Quote
As for the name, yes, by This Playlist, foo_pod really means Active Playlist.  Since I originally expected that users would select it while in the playlist, the name is perfectly sane and correctly located.

The name is very long and makes my menu twice as wide.

The name is confusing because it says "Ignore This Playlist" when right clicking on a tab. It should say active playlist, or not appear there. It doesn't matter if you never intended it to be used from there, it still appears there.

You can check that the caller is the playlist to prevent the menu item from poping up in all kinds of places, or place it in the main menu (maybe under "Playlist/Selection/", but the user could put it there themself if they want).

Edit: BTW I also have 0 files copied problem with 0.7.6 & sync all playlists..

Oooh I just tried sync all playlists (columns ui) and indeed it doesnt work - the playlists where still transferred to my ipod. (foo_pod 0.7.3)

But it was the same for the default UI.

I also got lots of Error #3s for a directory of files (they had a long path) and a Error #2 for one file..
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-05 22:13:08
Quote
*Sigh*... nope; still 0 files copied... this is really weird and really frustrating.

make sure you're not forcing a drive letter to be used in the preferences.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-05 23:39:36
Well I'm still on 0.7.3 and hoping that I'll be able to use 0.7.7 when it's out. And yes, Lew Zealand, even if I didn't force a drive letter 0.7.6 didn't work and 0.7.3 work regardless.
Besides that I would like to make a feature request: as you all know, the iPod firmware doesn't support all characters - in my case Hebrew characters. Well I wouldn't mind having my Hebrew songs on the iPod tagged with phonetic speeling using Enlgish letters but I don't want to also have these tags in foobar, so what I suggest is having foo_pod check if the file contains tags with characters that would be incompaible with the iPod and if it does it will use alt_<tag> instead. So, for example, if the title tag contains at least one character that doesn't work in the iPod, it will use the alt_title tag, if present, instead leaving the copy on the computer intact and the copy on the iPod with a title tag equal to the alt_title tag on the computer. And you can prolly use virtual functions so it doesn't add the strain of an if statement to every file transfer when the user doesn't even need it so only people who expect using this can turn this on.
Either this or maybe you got a better solution yourself? You seem to have come up with great innovations for foo_pod in the past.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-06 00:13:37
Quote
Besides that I would like to make a feature request: as you all know, the iPod firmware doesn't support all characters - in my case Hebrew characters. Well I wouldn't mind having my Hebrew songs on the iPod tagged with phonetic speeling using Enlgish letters but I don't want to also have these tags in foobar, so what I suggest is having foo_pod check if the file contains tags with characters that would be incompaible with the iPod and if it does it will use alt_<tag> instead. So, for example, if the title tag contains at least one character that doesn't work in the iPod, it will use the alt_title tag, if present, instead leaving the copy on the computer intact and the copy on the iPod with a title tag equal to the alt_title tag on the computer. And you can prolly use virtual functions so it doesn't add the strain of an if statement to every file transfer when the user doesn't even need it so only people who expect using this can turn this on.
Either this or maybe you got a better solution yourself? You seem to have come up with great innovations for foo_pod in the past.

Hmm...I handle the case of unsupported filenames, but I never thought about  the metadata displayed on the iPod.  Does iTunes do anything special with unsupported metadata?

Your alternate tag idea is certainly reasonable and doable (assuming that one knows exactly which characters the iPod does and doesn't support), although I might want to tweak the name a little...something more like POD_<tag>, ENG_<tag>, LANG_<tag>, or something similiar.  Its not that big of a deal, its just that alt_<tag> isn't very descriptive.  It could be also be a preference item, then we wouldn't have to worry about finding the best name.

Edit: After thinking about this a little more, I came to the conclusion that this might be useful for purposes other than just a workaround for unsupported metadata characters.  Earlier in the foo_pod thread, there was some discussion about someone wanting to have the Comment field displayed in place of the artist.  So if foo_pod looked for POD_<metadata> and used that in place of <metadata> if it was non-empty, then anyone could tag their songs with POD_ and have some control over how metadata is displayed on the iPod.

Unless anyone has any suggestions for improving this, I will probably add it as of the next version.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-06 11:06:20
Version 0.7.7 (http://www.loodi.com/foo_pod.zip) 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: [Select]
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-06 13:12:17
Quote
Version 0.7.7 (http://www.loodi.com/foo_pod.zip) 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: [Select]
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!!
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-06 18:50:36
Yup; 0.7.7 fixes it. Indeed, great work. My iPod wouldn't have been the same without this.
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-06 20:49:52
Quote
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-06 20:52:34
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?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-06 21:28:54
Quote
Yup; 0.7.7 fixes it. Indeed, great work. My iPod wouldn't have been the same without this.
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-06 21:34:38
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-06 21:52:19
Quote
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: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.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? 
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-06 22:27:28
...now there are so many things to wait for in the next couple of versions.

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?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-06 23:48:11
Quote
...now there are so many things to wait for in the next couple of versions.

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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-06 23:56:19
Version 0.7.8 (http://www.loodi.com/foo_pod.zip) 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: [Select]
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
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-07 00:36:02
Quote
Version 0.7.8 (http://www.loodi.com/foo_pod.zip) is now available.

From the Readme:
Code: [Select]
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-07 02:06:07
Quote
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-07 03:33:19
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-07 05:39:14
Quote
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-07 05:45:44
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-07 05:54:58
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?

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...
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-07 06:48:00
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...

Please do fix it. It would be awsome not having to work through iTunes to do smart playlists.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-06-07 06:53:45
Quote
Version 0.7.8 (http://www.loodi.com/foo_pod.zip) 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: [Select]
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-07 23:33:28
Quote
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
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
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-06-08 00:33:06
Quote
Quote
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. 

Wee! :-D
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-08 00:44:18
Otto42, I'll be waiting  . 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 (http://www.ipi.fi/~rainy/index.php?pn=projects&project=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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: somasatellite on 2004-06-08 14:30:30
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-08 18:40:11
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-08 18:51:14
Quote
Other than that, after successfully using pod.h to make a menu item in foobar to sync my iPod with Rainlendar (http://www.ipi.fi/~rainy/index.php?pn=projects&project=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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-09 08:42:17
Version 0.8 (http://www.loodi.com/foo_pod.zip) 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: [Select]
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
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-09 13:58:02
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: [Select]
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
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-09 16:22:08
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-09 18:36:10
Quote
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...

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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-09 19:01:06
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-09 19:07:57
Quote
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...

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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-06-09 19:16:39
Hi again!  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.`
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-06-09 19:26:15
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  *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



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

okay your reply underneath explains  thanks, sorry for troubling you
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-09 19:27:21
Quote
Hi again!  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...


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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-06-09 19:42:40
thanks for explaining  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
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-09 19:47:19
Quote
I definitely need to make users sign an informed consent disclaimer before allowing them to sync...

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".
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-09 21:20:14
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-10 04:07:39
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-10 04:56:38
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-10 05:46:52
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-10 07:10:56
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-10 07:37:49
Version 0.8.1 (http://www.loodi.com/foo_pod.zip) 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: [Select]
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-10 07:43:09
Quote
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 (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iprogressdialog/iprogressdialog.asp) class.  It is very easy to use and, while it has its quirks, it works well enough.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-10 12:32:57
Quote
Version 0.8.1 (http://www.loodi.com/foo_pod.zip) 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: [Select]
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.  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?)
Title: foo_pod - Foobar2000 meets the iPod
Post by: ndrake on 2004-06-10 18:03:01
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.    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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-10 20:34:32
Quote
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.    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).
Title: foo_pod - Foobar2000 meets the iPod
Post by: ndrake on 2004-06-11 00:13:40
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).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Ralluph on 2004-06-13 09:41:19
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:
(http://voltera.et.tudelft.nl/~ralph/images/hydrogenaudio/foo_pod.png)
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-14 05:36:47
Quote
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.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-14 15:48:43
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: [Select]
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...
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-06-15 06:59:26
Is there some way for me to start over with this thing?  I have multiple duplicate and triplicate entries in the ipod playlist.  WTF?!?  How do I fix this?  I tried to rebuild the database, didn't work.  iTunes doesn't show all this messed up crap.  What did I do? Help
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-15 07:09:49
Quote
Is there some way for me to start over with this thing?  I have multiple duplicate and triplicate entries in the ipod playlist.  WTF?!?  How do I fix this?  I tried to rebuild the database, didn't work.  iTunes doesn't show all this messed up crap.  What did I do? Help

Delete All iPod Music And Playlists will wipe your iPod clean, if that is what you mean by starting over.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Ralluph on 2004-06-16 11:18:54
Since foo_pod serves all my iPod-related needs (thanks a lot Aero, you did a brilliant job!) I decided to remove iTunes from my system. After uninstalling and rebooting I now  get  the following message every time foobar starts:
Code: [Select]
WARNING (foo_pod) : iPodService is not available

All foo_pod functionality is working great, with the exception of the iPod Service tab in the prefs, where all fields are grayed out.
Looking in my process list there is no service running which one could recognize as iPod service. The iPod updater is still on my system. A couple of posts above, somebody suggested the possibility of registering some executable as a service. Could somebody explain how I can do that, please?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-16 12:03:44
Quote
Since foo_pod serves all my iPod-related needs (thanks a lot Aero, you did a brilliant job!) I decided to remove iTunes from my system. After uninstalling and rebooting I now  get  the following message every time foobar starts:
Code: [Select]
WARNING (foo_pod) : iPodService is not available

All foo_pod functionality is working great, with the exception of the iPod Service tab in the prefs, where all fields are grayed out.
Looking in my process list there is no service running which one could recognize as iPod service. The iPod updater is still on my system. A couple of posts above, somebody suggested the possibility of registering some executable as a service. Could somebody explain how I can do that, please?

Thanks! 

That warning is another unnecessary message, and I have downgraded it to an INFO message (which will not cause the console to pop up).  It is fixed in the next build.

Speaking of the next build, I'm probably going to post it later today.  I have been trying to get iTunes to play nice with foo_pod, by adding files copied by foo_pod to iTunes' library.  Unfortunately, it hasn't worked out very well (even though the songs were in the iTunes library, iTunes still deleted 35GB of my music...  ).  So I'm going to keep working on it, but I'm not going to let it hold up the next release.  Another feature that I wanted to get in the next verison, but won't, is support for transferring and transcoding music in CUE sheets.  I'm pretty sure that it can be made to work, and I already have made some progress, but there is still more work to do.

On the positive side, the next version will fix all of these annoying console warnings, and adds support for AIFF files, as well as an option to transcode WAV/AIFF files, and a handful of minor bug fixes.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-16 23:31:46
Version 0.8.2 (http://www.loodi.com/foo_pod.zip) is now available.

This version fixes some minor bugs as well as hopefully removing all of the unnecessarily annoying Foobar console messages.


From the Readme:
Code: [Select]
Version 0.8.2 - June 16, 2004
*  Removed and/or improved several of the more annoying (and unnecessary) console messages.

*  Fixed a bug where the BPM metadata wasn't being set correctly.

*  Removed the white border visible in the Preference tabs, when using the XP Luna theme.

*  Added support for AIFF files, and added a checkbox in the Transcoder preference to automatically
  transcode all WAV & AIFF files.

*  Fixed a bug where, when transferring read-only files to the iPod, the song files on the iPod would also
  be read-only.  This would prevent them from being deleted later by the user, even though the entry in the
  iPod database would be removed.
Title: foo_pod - Foobar2000 meets the iPod
Post by: eido on 2004-06-17 02:55:13
I found a small problem with foo_pod.  If I add an album each by the bands "+/-" and "!!!", both albums end up listed under "!!!".
Also, while I'm posting let me add my thanks for this fantastic plugin.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-17 03:56:11
Quote
I found a small problem with foo_pod.  If I add an album each by the bands "+/-" and "!!!", both albums end up listed under "!!!".
Also, while I'm posting let me add my thanks for this fantastic plugin.

Heh.  Are those real band names, or are you just trying to torture test foo_pod? 

Without looking into it yet, I would bet that it is an iPod problem since I can't think of anything special foo_pod is doing that would causing problems.  Have you ever been able to get them to work with iTunes?

One possible workaround is to use the Alternate Metadata Prefix feature (found on the Main tab in foo_pod Preferences).  What you can do is set it to "POD_", then add a "POD_ARTIST" metadata tag to your +/- and !!! songs.  For example, you could set the POD_ARTIST for +/- to "PlusMinus" and !!! to "ThreeBangs".  Then when foo_pod sends those songs, it will use the POD_ARTIST metadata and the songs will show up on the iPod under the PlusMinus and ThreeBangs artists.
Title: foo_pod - Foobar2000 meets the iPod
Post by: eido on 2004-06-17 23:19:39
Quote
Quote
I found a small problem with foo_pod.  If I add an album each by the bands "+/-" and "!!!", both albums end up listed under "!!!".
Also, while I'm posting let me add my thanks for this fantastic plugin.

Heh.  Are those real band names, or are you just trying to torture test foo_pod? 

Without looking into it yet, I would bet that it is an iPod problem since I can't think of anything special foo_pod is doing that would causing problems.  Have you ever been able to get them to work with iTunes?

One possible workaround is to use the Alternate Metadata Prefix feature (found on the Main tab in foo_pod Preferences).  What you can do is set it to "POD_", then add a "POD_ARTIST" metadata tag to your +/- and !!! songs.  For example, you could set the POD_ARTIST for +/- to "PlusMinus" and !!! to "ThreeBangs".  Then when foo_pod sends those songs, it will use the POD_ARTIST metadata and the songs will show up on the iPod under the PlusMinus and ThreeBangs artists.

Yep, they're real band names.
And you were right about iTunes.  It does indeed do the same thing, so I used your POD_ prefix suggestion and everything is working fine now.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-18 00:18:58
So is the conclusion that the iPod can't properly compare non-alphanumeric symbols? That is, when trying to compare two items, both containing the same amount of non-alphanumeric symbols but of different compositions, the iPod will conclude that they are the same?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-18 01:51:31
Quote
Yep, they're real band names.
And you were right about iTunes.  It does indeed do the same thing, so I used your POD_ prefix suggestion and everything is working fine now.

If you could get it to happen again and then save the iTunesDB file somewhere, that could be useful to figure out what's going on.
Title: foo_pod - Foobar2000 meets the iPod
Post by: eido on 2004-06-18 05:48:48
Quote
If you could get it to happen again and then save the iTunesDB file somewhere, that could be useful to figure out what's going on.

I sent you a PM with a link to my iTunesDB.

Just to see what happens when there are a different number of characters in the artists' names, I tried changing +/- to +/-! on the iPod.  After that, there were separate entries for "!!!" and "+/-!", but each band had both band's albums listed under their names.
Title: foo_pod - Foobar2000 meets the iPod
Post by: zeer on 2004-06-18 10:36:05
a quick note to all:

while iPod's filesystem support every aspect of win32 FAT32 filesystem, including national alphabets, the iPod firmware (=player's firmware, not HDD's) does NOT. the only valid symbols in filenames for player usage is 0-9 A..Z a..z

just in case someone didn't know...
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-18 12:40:01
Quote
a quick note to all:

while iPod's filesystem support every aspect of win32 FAT32 filesystem, including national alphabets, the iPod firmware (=player's firmware, not HDD's) does NOT. the only valid symbols in filenames for player usage is 0-9 A..Z a..z

just in case someone didn't know...

That's true all right.
All my Unicode-d files get renamed when I send it over to my iPod...
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-18 15:19:23
Well I can see umlauts, accents, and such on my iPod, but if what you say is accurate then I bet that if I had one album with the same artist as another only I changed an O with an umlaut to a regular O it would still be under the same artist... or would that only happen if I changed the O with the umlout to another symbol that isn't 0-9, a-z, or A-Z?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-18 22:02:38
Quote
while iPod's filesystem support every aspect of win32 FAT32 filesystem, including national alphabets, the iPod firmware (=player's firmware, not HDD's) does NOT. the only valid symbols in filenames for player usage is 0-9 A..Z a..z

There actually two separate issues here. 

One is the filename support - foo_pod and iTunes escape the filename so that it is legal.  Otherwise, filenames with umlats and other non-English characters would not play at all on the iPod.  And legal filenames are a little more than just 0-9, A-Z, and a-z.  At least the following symbols also are acceptable: dash, underscore, space, period, ampersand, single quote, left & right parenthesis, and comma.

The other issue is the display and sorting of metadata (song titles, artists, etc.).  The iPod supports a larger set of characters for the metadata display, but it doesn't support all characters (for example, Hebrew glyphs) and doesn't seem to correctly sort metadata with symbols.  One workaround for this problem is to use the Alternate Metadata foo_pod feature, so you can use a separate set of metadata for the iPod only.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-19 07:31:24
Hmmm... I was over at neowin and noticed a news post about a new version of ml iPod (which, I now know, is a winamp plugin for iPod uses) and it seems it now supports Smart Playlists. May be worthwhile to contact the developers and ask if they would reveal the secrets of Smart Playlists beyond iTunes. I wouldn't mind emailing them myself, but I thought maybe it'd be better if you, the developer of foo_pod himself, would contact them, eh?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-19 10:50:35
Quote
Hmmm... I was over at neowin and noticed a news post about a new version of ml iPod (which, I now know, is a winamp plugin for iPod uses) and it seems it now supports Smart Playlists. May be worthwhile to contact the developers and ask if they would reveal the secrets of Smart Playlists beyond iTunes. I wouldn't mind emailing them myself, but I thought maybe it'd be better if you, the developer of foo_pod himself, would contact them, eh?

Funny that you should mention smart playlists.  I have been working on them tonight, and I was just going to post an update...

I had some free time tonight, so I decided to look into smart playlist support.  I started by looking for other projects that have implemented them, since the iPodDB implementation is incomplete.  I was excited to see that ml_ipod claimed to support smart playlists, but after looking at their code for a few minutes, it was clear that whatever they have is definitely not Smart Playlists.  Real Smart Playlists, as created by iTunes (and soon to be created by foo_pod...  ) are a set of rules that 3G iPods use to dynamically create playlists.  I think that ml_ipod's "smart playlists" are just a Winamp-side playlist generator, similar to the one that is included with Foobar and extended by the Extended Playlist Generator (http://www.hydrogenaudio.org/forums/index.php?showtopic=20500&) component.

So without any good code to steal, I had to put my nose to the grindstone (keeps the boogers sharp...) and finish the iPodDB implementation myself.  It only took a couple of hours of testing and looking at the raw database code before I was able to have a complete implementation that reads and understands all combinations of iTunes created smart playlists.  Most of that is due to Otto42's initial work, which made my part very easy (just time consuming).

I haven't started on the writing of smart playlists, but I don't expect it will be very difficult.  Then I will just need to create a GUI (probably the hardest part), and we can all dump iTunes once and for all! 
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-06-19 11:01:24
Yay helicopter!
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-19 11:57:06
w00t!!
Will that mean that foo_pod will be able to manage (ie, edit, add files) existing playlists on the iPod as well?

Can't wait for the new release to be out!
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-19 17:37:17
Err... SNAG, I don't really see what that ability has to do with Smart Playlists (though it may just be me not seeing that relation), but regardless, now that Smart Playlists are coming up and I'll be using playlists at all (had no need for the regular ones), I would also think that it would be nice to be able to remove a specific playlist rather than remove all the playlists and then put all of them back except for the ones you wanted to delete. I think the best way to make this work would be to simply have a small dialog with a scrolling list control with all the playlist and with the buttons "remove," and "done."

Aero, how did you get ml ipod's code? I noticed that it was on Source Forge and so assumed it was open source but couldn't find the source code for download. It's too bad they were only able to make Smart Playlists a la 2nd Gen. Again, the best, and easiest, thing you can do for the GUI is prolly just have another dialog with a scrolling list control, to whose side would be two buttons labled "add" (opens up a dialog box with configuration for the condition), "remove," and "modify" (or maybe double clicking will do that) and under it would be all the options that don't go in conditions like order and such and under that a "save" button and a "cancel" button. And all that shouldn't be too hard... I think. Is that pretty much what you envision too?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-19 21:48:47
Quote
Err... SNAG, I don't really see what that ability has to do with Smart Playlists (though it may just be me not seeing that relation), but regardless, now that Smart Playlists are coming up and I'll be using playlists at all (had no need for the regular ones), I would also think that it would be nice to be able to remove a specific playlist rather than remove all the playlists and then put all of them back except for the ones you wanted to delete. I think the best way to make this work would be to simply have a small dialog with a scrolling list control with all the playlist and with the buttons "remove," and "done."

Yeah, what rexy said regarding smart playlists vs. regular playlists.

I really do need to add some sort of playlist management to foo_pod, but that would require more GUI programming, which isn't my favorite activity.  So I keep pushing it off...  BTW, there is enough in the Pod interface now that someone else could write a component that manages playlists.

Quote
Aero, how did you get ml ipod's code? I noticed that it was on Source Forge and so assumed it was open source but couldn't find the source code for download. It's too bad they were only able to make Smart Playlists a la 2nd Gen. Again, the best, and easiest, thing you can do for the GUI is prolly just have another dialog with a scrolling list control, to whose side would be two buttons labled "add" (opens up a dialog box with configuration for the condition), "remove," and "modify" (or maybe double clicking will do that) and under it would be all the options that don't go in conditions like order and such and under that a "save" button and a "cancel" button. And all that shouldn't be too hard... I think. Is that pretty much what you envision too?

ml_ipod's source code is available via CVS at sourceforge.net (http://sourceforge.net/cvs/?group_id=106528), and is also browsable here (http://cvs.sourceforge.net/viewcvs.py/mlipod/ml_ipod/).  I don't want to offend the ml_ipod developers off again... (http://www.hydrogenaudio.org/forums/index.php?showtopic=19156&view=findpost&p=205327), but compared to Otto's iPodDB, there isn't much to learn from ml_ipod.  It is mainly seems to be a port of  gtkpod (http://gtkpod.sourceforge.net/), which itself is a C++ version of GnuPod (http://www.gnu.org/software/gnupod/).  So there are basically 2 open source iPod libraries available, and without a doubt, iPodDB is the best and most complete library.  ml_ipod and the like just have better marketing! 

Again, the GUI isn't going to be terribly difficult, but there are some challenges.  For example, it has to be completely dynamic, as you can enter/delete as many rules as you want.  Also, some rules require strings, some rules require ints, and some rules require dates, so those controls all need to be dynamically handled.  Then you can have ranges of values, so you have to deal with that as well.  Finally, you have to be able to build the whole GUI from raw data.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-19 22:19:10
Quote
Finally, you have to be able to build the whole GUI from raw data.

What do you mean? Can't you simply make a class that extends (or rather inherits from as we're talking C++ and not Java) the MFC dialog class?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-19 22:51:41
Quote
What do you mean? Can't you simply make a class that extends (or rather inherits from as we're talking C++ and not Java) the MFC dialog class?

What I meant is that I will need to build up the GUI controls based on the smart playlist settings.  So if you have 3 rules, when you open the smart playlist configuration dialog, there will need to be code that parses those 3 rules, and sets up the GUI accordingly.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-20 04:09:26
Quote
I haven't started on the writing of smart playlists, but I don't expect it will be very difficult.  Then I will just need to create a GUI (probably the hardest part), and we can all dump iTunes once and for all! 

I'm looking at the code Aero modified (read: seriously repaired, as I know how much the smart playlist read code sucked previously), and it looks pleasant. He also did all the annoying time consuming work of figuring out all the constants, which is hella nice. Figuring those out was basically why I've been so unenthusiastic about getting down and working on the SPL's. Truly a pain in the ass... one that now I don't have to do!

Anyway, Aero sent me the changes and I'm going to see if I can get write support for them up and running tonight or tommorrow night. So bug Aero about creating a GUI, because that I really can't help with. Division of labor, it's a good thing.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-20 04:29:03
Quote
Anyway, Aero sent me the changes and I'm going to see if I can get write support for them up and running tonight or tommorrow night. So bug Aero about creating a GUI, because that I really can't help with. Division of labor, it's a good thing.

I already emailed Otto, but I was able to get some preliminary write support implemented this afternoon.  I haven't tested it on the iPod yet, but it is at least good enough to read in an iTunes created smart playlist, parse it, write it back to the iTunesDB, and successfully read it again.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-20 07:18:20
Quote
I already emailed Otto, but I was able to get some preliminary write support implemented this afternoon.  I haven't tested it on the iPod yet, but it is at least good enough to read in an iTunes created smart playlist, parse it, write it back to the iTunesDB, and successfully read it again.

Don't be too sure on that... The read code was seriously borked. It wasn't your fault, it was my original misunderstanding of what the fields were. All those places I read the "from" and "to" and such was totally hosed, and since you based it on my pointers... It would read fine, and if you wrote it you'd get the same thing out, but the fields didn't actually make sense for what it was really doing. You wouldn't be able to modify it and get it to actually work on an iPod. The iPod would gag on it and hose the database.

Turns out that the SPL's are more complex than the code in any other iPod library source code that I can find thinks they are. Anyway, I've actually sorted it out now, and it's much, much nicer. I'll add some write code tonight and send it along sometime tommorrow.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-20 07:53:12
Quote
Quote
I already emailed Otto, but I was able to get some preliminary write support implemented this afternoon.  I haven't tested it on the iPod yet, but it is at least good enough to read in an iTunes created smart playlist, parse it, write it back to the iTunesDB, and successfully read it again.

Don't be too sure on that... The read code was seriously borked. It wasn't your fault, it was my original misunderstanding of what the fields were. All those places I read the "from" and "to" and such was totally hosed, and since you based it on my pointers... It would read fine, and if you wrote it you'd get the same thing out, but the fields didn't actually make sense for what it was really doing. You wouldn't be able to modify it and get it to actually work on an iPod. The iPod would gag on it and hose the database.

Well, yeah...but I fixed it all so now it is unhosed! 

I was just able to do a complete test of Smart Playlist writing - I was able to read a 27 rules smart playlist (created by iTunes), which tested every available option.  I was then able to write it out to a new database file, and it was correctly read by iTunes. 

So basically all that is left is to start (and finish) the GUI.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-20 09:16:47
It's basically great to see this project moving at such a fast pace...

Pardon me for asking something really dumb here, but I'm trying to read the metadata (RATING, IPOD_PLAY_COUNT) in foobar.

I can't seem to make the metadata display in foo_tunes.
I'm not sure whether my understanding of how metadata is displayed, but here goes:

Code: [Select]
[$num(%IPOD_PLAY_COUNT%,2)]
[$num(%RATING%,5)]


Am I correct? (I've got a hunch that I'm wrong here...)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-20 09:36:28
removed because i should have read his emails first.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-20 10:32:57
Quote
Pardon me for asking something really dumb here, but I'm trying to read the metadata (RATING, IPOD_PLAY_COUNT) in foobar.

I can't seem to make the metadata display in foo_tunes.
I'm not sure whether my understanding of how metadata is displayed, but here goes:

Code: [Select]
[$num(%IPOD_PLAY_COUNT%,2)]
[$num(%RATING%,5)]


Am I correct? (I've got a hunch that I'm wrong here...)

Those both work for me...

The problem might be how foo_pod handles the metadata.  Rather than writing it to the file, it provides it to Foobar as a "hint".  As long as Foobar doesn't reload the metadata from the file, everything is fine.  But since it isn't saved with the file, if you do forcibly reload the metadata, you'll lose RATING, IPOD_PLAY_COUNT, and and IPOD_LAST_PLAYED_TIME (at least until you reload the iPod playlist).
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-20 11:18:30
Quote
Quote
Pardon me for asking something really dumb here, but I'm trying to read the metadata (RATING, IPOD_PLAY_COUNT) in foobar.

I can't seem to make the metadata display in foo_tunes.
I'm not sure whether my understanding of how metadata is displayed, but here goes:

Code: [Select]
[$num(%IPOD_PLAY_COUNT%,2)]
[$num(%RATING%,5)]


Am I correct? (I've got a hunch that I'm wrong here...)

Those both work for me...

The problem might be how foo_pod handles the metadata.  Rather than writing it to the file, it provides it to Foobar as a "hint".  As long as Foobar doesn't reload the metadata from the file, everything is fine.  But since it isn't saved with the file, if you do forcibly reload the metadata, you'll lose RATING, IPOD_PLAY_COUNT, and and IPOD_LAST_PLAYED_TIME (at least until you reload the iPod playlist).

I'm not sure why, but it still doesn't show the metadata.

Actually, I'm not sure whether foobar did reload the metadata from the music files (can any kind soul provide me information as to how can I know about this?)

I've tried to delete the foo_pod playlist, and allow it to regenerate, but to no avail.
I think I'm really a n00b in this... 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-21 21:50:19
Quote
Actually, I'm not sure whether foobar did reload the metadata from the music files (can any kind soul provide me information as to how can I know about this?

Do you have the Foobar database enabled? (it is in the Foobar preferences, then click on the Database item, and see if Database Enabled is checked).
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-22 15:58:36
Quote
Quote
Actually, I'm not sure whether foobar did reload the metadata from the music files (can any kind soul provide me information as to how can I know about this?

Do you have the Foobar database enabled? (it is in the Foobar preferences, then click on the Database item, and see if Database Enabled is checked).

whoops. Knew that it was me and not foo_pod. 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-22 17:56:40
Quote
Quote
Do you have the Foobar database enabled? (it is in the Foobar preferences, then click on the Database item, and see if Database Enabled is checked).

whoops. Knew that it was me and not foo_pod. 

That isn't your problem - it means that I need to fix foo_pod!  I'll look into it for the next release.

Smart Playlist Update: Otto and I have been going back and forth on the smart playlist code, and we are pretty close to a final solution.  I'm already regularly writing working smart playlists, so I am about ready to start on the GUI.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-23 04:10:03
Aero,

Let's call this a "pre-documentation" question.  How can I remove a specific playlist, without removing all playlists and re-sending all of my music to my iPod?  Let's assume I'm not using the "sync" functionality right now.

I see how I can remove the files from the iPod (through the "iPod (foo_pod)" playlist), but that still leaves a blank playlist.  Am I missing something?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-23 05:21:07
Quote
Let's call this a "pre-documentation" question.  How can I remove a specific playlist, without removing all playlists and re-sending all of my music to my iPod?  Let's assume I'm not using the "sync" functionality right now.

I see how I can remove the files from the iPod (through the "iPod (foo_pod)" playlist), but that still leaves a blank playlist.  Am I missing something?

You can't delete or edit playlist, at least right now.

I'm working on the Smart Playlist GUI, and I'm thinking about extending it to handle regular playlists as well, so you might be able to delete individual playlists and remove files from existing playlists.  So stay tuned...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Espique on 2004-06-23 15:07:31
hi,

where can I get the latest version of this plugin?

thanks,
sascha
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-23 16:57:48
Quote
where can I get the latest version of this plugin?

The latest version is always at http://www.loodi.com/foo_pod.zip (http://www.loodi.com/foo_pod.zip).
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-06-23 23:09:50
Amazing work Aero.  Your dedication to this plugin is remakable.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-06-25 04:53:03
Can someone tell me if I am using foo_pod correctly?  I don't think the soundcheck/replaygain is working.  I usually encode my stuff with foobar using nero and then put the replaygain stuff in the files with foobar.  Then I load the files onto my iPod with foo_pod.  But I have a lot of albums that are just way different in volume.  I have the Replay Gain / Sound Check Conversion set to Prefer Album Gain.  Is there a step that I am missing?  Am I just crazy?  Thanks, I really like foo_pod a lot.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-25 05:26:27
Quote
Can someone tell me if I am using foo_pod correctly?  I don't think the soundcheck/replaygain is working.  I usually encode my stuff with foobar using nero and then put the replaygain stuff in the files with foobar.  Then I load the files onto my iPod with foo_pod.  But I have a lot of albums that are just way different in volume.  I have the Replay Gain / Sound Check Conversion set to Prefer Album Gain.  Is there a step that I am missing?  Am I just crazy?  Thanks, I really like foo_pod a lot.

Make sure you enable SoundCheck on the iPod itself, in the settings menu. Because foo_pod uses the actual soundcheck field, unlike any other iPod interface that I know of (with the obvious exception of iTunes), the sound check on the iPod actually works properly when using it with foo_pod. So if you have SoundCheck turned off on the iPod, it doesn't use the ReplayGain values that foo_pod is putting in there.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-06-25 05:33:55
Thanks Otto.  I did check that.  I discovered that due to my not knowing what I was diong, that I couldn't tell that it was working because I had my stereo connected via the docks line out.  But, it's the louder albums that don't seem to be getting any sort of gain reduction.  The quiet albums get more quiet, but the louder ones just stay the same.  The ones I have noticed this on have a RG value of 10 or greater.  Do you think that the higher RG value has something to do with this?

I had all this figured out when I was using MP3's, I just used mp3gain and was rollin'.  I sure miss being able to use mp3gain.  I really wish there were some sort of m4again, that would really rock.  Thanks for your help!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-25 06:18:34
Quote
Thanks Otto.  I did check that.  I discovered that due to my not knowing what I was diong, that I couldn't tell that it was working because I had my stereo connected via the docks line out.  But, it's the louder albums that don't seem to be getting any sort of gain reduction.  The quiet albums get more quiet, but the louder ones just stay the same.  The ones I have noticed this on have a RG value of 10 or greater.  Do you think that the higher RG value has something to do with this?

From my experience, SoundCheck is not available with line out - only with the headphone jack. 

For example, I have one of these (http://www.sik.com/imp.php) in my car, and SoundCheck definitely does not work on its line out (which I assume is the only one available on the docking connector).  Try using the headphone connector and see if that helps.

Edit:  The SoundCheck vs. Line Out  situation is discussed here (http://www.ipodlounge.com/forums/archive/topic/30946-1.html).  In a way, it makes sense, since I'm sure Apple implemented SoundCheck by simply changing the amplifier gain as needed, so when you use line out , you also miss out on the SoundCheck correction.  Still, they should have scaled the digital audio (like Foobar does) rather than apparently just messing around with the volume.  Ah, the iPod - so much is right, but there is just enough wrong to piss me off...


As for the ReplayGain value, 10 (and I assume you really mean -10dB) is a very loud song.  I believe ReplayGain is based off of 89dB, so what -10 means is that ReplayGain had to attenuate the audio by 10dB to get it to an apparent volume of 89dB.  OTOH, if the value really is 10, then you have a very fairly quiet song (79dB).  But whatever the RG value is, it doesn't affect whether or not SoundCheck works - I've personally tested everything from -20dB to +20dB.


Quote
I had all this figured out when I was using MP3's, I just used mp3gain and was rollin'.  I sure miss being able to use mp3gain.  I really wish there were some sort of m4again, that would really rock.  Thanks for your help!

The problem with mp3gain is that is actually changes the file, although the changes are reversible without having to reencode the file.  The beauty of ReplayGain is that it doesn't change the file, other than writing out harmless metadata, and it works on various file formats (including MP4/AAC).  But the downside is you have to use a player that understands ReplayGain. 

foo_pod has the ReplayGain -> SoundCheck conversion built-in, so any files you transfer to the iPod which have ReplayGain information, foo_pod will write out the correct SoundCheck value.  This also applies to transcoded songs, so you can use Foobar to calculate the ReplayGain for Monkey Audio or FLAC (for example), and foo_pod can transcode to MP3 or AAC format and still have the ReplayGain applied on the iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-25 06:27:45
Quote
Amazing work Aero.  Your dedication to this plugin is remakable.

Thanks!    Other than the challenge, and of course, the legions of fabulous female foo_pod groupies, I'm also doing for the thanks on the forum!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-25 08:47:53
Ugh. Ideally, they should have hooked the soundcheck variable to the preamp stage (which I actually thought they did, but now I'll have to go try it myself and see), and then hook the volume control and the volume adjustment variable to the amp gain.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Espique on 2004-06-25 12:05:32
wow. that really sucks that SoundCheck does not work through line-out. what a bummer.

anyways. is there some sort of FAQ or documentation available for foo_pod? I have some questions regarding the basic operation and what foo_pod actually does when syncing. any pointers?

thanks,
sascha
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-25 15:00:42
Quote
Quote
Thanks Otto.  I did check that.  I discovered that due to my not knowing what I was diong, that I couldn't tell that it was working because I had my stereo connected via the docks line out.  But, it's the louder albums that don't seem to be getting any sort of gain reduction.  The quiet albums get more quiet, but the louder ones just stay the same.  The ones I have noticed this on have a RG value of 10 or greater.  Do you think that the higher RG value has something to do with this?

From my experience, SoundCheck is not available with line out - only with the headphone jack. 

For example, I have one of these (http://www.sik.com/imp.php) in my car, and SoundCheck definitely does not work on its line out (which I assume is the only one available on the docking connector).  Try using the headphone connector and see if that helps.

Edit:  The SoundCheck vs. Line Out  situation is discussed here (http://www.ipodlounge.com/forums/archive/topic/30946-1.html).  In a way, it makes sense, since I'm sure Apple implemented SoundCheck by simply changing the amplifier gain as needed, so when you use line out , you also miss out on the SoundCheck correction.  Still, they should have scaled the digital audio (like Foobar does) rather than apparently just messing around with the volume.  Ah, the iPod - so much is right, but there is just enough wrong to piss me off...


As for the ReplayGain value, 10 (and I assume you really mean -10dB) is a very loud song.  I believe ReplayGain is based off of 89dB, so what -10 means is that ReplayGain had to attenuate the audio by 10dB to get it to an apparent volume of 89dB.  OTOH, if the value really is 10, then you have a very fairly quiet song (79dB).  But whatever the RG value is, it doesn't affect whether or not SoundCheck works - I've personally tested everything from -20dB to +20dB.


Quote
I had all this figured out when I was using MP3's, I just used mp3gain and was rollin'.  I sure miss being able to use mp3gain.  I really wish there were some sort of m4again, that would really rock.  Thanks for your help!

The problem with mp3gain is that is actually changes the file, although the changes are reversible without having to reencode the file.  The beauty of ReplayGain is that it doesn't change the file, other than writing out harmless metadata, and it works on various file formats (including MP4/AAC).  But the downside is you have to use a player that understands ReplayGain. 

foo_pod has the ReplayGain -> SoundCheck conversion built-in, so any files you transfer to the iPod which have ReplayGain information, foo_pod will write out the correct SoundCheck value.  This also applies to transcoded songs, so you can use Foobar to calculate the ReplayGain for Monkey Audio or FLAC (for example), and foo_pod can transcode to MP3 or AAC format and still have the ReplayGain applied on the iPod.

Your thread prompted me to ask a question:

What if the file is Sound-checked by iTunes, and RG-ed by foobar?

Which metadata will the iPod use? Wil it be dependent on the program used to transfer the songs in? (ie, iTunes = Sound Check, foobar = RG)
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-06-25 15:07:44
Quote
What if the file is Sound-checked by iTunes, and RG-ed by foobar?

Which metadata will the iPod use? Wil it be dependent on the program used to transfer the songs in? (ie, iTunes = Sound Check, foobar = RG)

Erm... you can't really do that. As far as I know, foo_pod just writes Sound Check values dependent on the existing RG values. So the implication of this is that whichever you use last on the file, iTunes or foo_pod's Sound Check conversion, is going to be the one that determines the Sound Check value.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-25 17:54:55
Quote
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?
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-06-25 19:46:04
What do I do if I have files on my iPod already that don't seem to be affected with the Sound Check?  I have a feeling that I may have some files on there that either didn't get put in there with foo_pod or I did something else but they don't have the Sound Check feild on them.  How can I get foo_pod to put the Sound Check field on files that are already on my iPod?  Thanks again for all the help, I really appreciate it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-25 20:51:26
Quote
I'd like some input from the users on this one.. Do playlist-based rules matter to you?

Speaking for myself (and my 10GB 1st Gen iPod), I think my answer is "no, I'm not currently interested in playlist-based rules".

I'll reread your (Otto's) comments again later tonight and append something to my post, if I change my mind.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-25 20:55:38
I've got a feature request that may jump to the bottom of the priority list (I certainly don't want it to hold up any development on smart playlists!):  Would it be possible for foo_pod to either automatically or manually sychronize the iPod's clock to my PC's clock?

I realize this may be a little too far off the original mission of foo_pod (and it isn't something that iTunes does currently), but I think it would be cool to add.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-06-25 22:28:57
Quote
Would it be possible for foo_pod to either automatically or manually sychronize the iPod's clock to my PC's clock?

I don't believe this is possible. I could be wrong, but I don't see any way to do it. We're limited by the capabilities of the iPod itself and I see no way to tell the iPod to do this.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-06-25 22:40:53
Quote
Quote
Would it be possible for foo_pod to either automatically or manually sychronize the iPod's clock to my PC's clock?

I don't believe this is possible. I could be wrong, but I don't see any way to do it. We're limited by the capabilities of the iPod itself and I see no way to tell the iPod to do this.

So, do you think the best approach would be to copy the files off the iPod, make sure that the RG is in the files with fb2k, delete the files from the iPod and then copy them back to the iPod.  Does that sound like a good plan?  Thanks again.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-25 23:23:03
Quote
Quote
Would it be possible for foo_pod to either automatically or manually sychronize the iPod's clock to my PC's clock?

I don't believe this is possible. I could be wrong, but I don't see any way to do it. We're limited by the capabilities of the iPod itself and I see no way to tell the iPod to do this.

I actually looked into this several months ago, but I was unable to find any iPodService API that has anything to do with the clock.  You'd think it would be automatic - sync your iPod and synchronize the iPod clock to your computer's clock, but again, Apple came up a little short.  Have I mentioned that the iPod can really piss me off sometimes? 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-25 23:49:06
Quote
So, do you think the best approach would be to copy the files off the iPod, make sure that the RG is in the files with fb2k, delete the files from the iPod and then copy them back to the iPod.  Does that sound like a good plan?  Thanks again.

Here is what I suggest:

1. Refresh the iPod playlist using the foo_pod Load iPod To The iPod (foo_pod) Playlist menu item.

2. Select all of the songs in the iPod (foo_pod) playlist

3. Right click, select Properties, then Reload Info From Files

4. Close the Properties dialog, go to Foobar preferences, then down to Title Formatting.

5. Select the Playlist tab, scroll to the bottom, and where you see: "[$get(artist) - ]", add "[$if2(%__replaygain_album_gain%,%__replaygain_track_gain%)  ]" (no quotes) on the line right above $get(artist).

Now you can see exactly which songs have Replay Gain information, and which ones don't.  Then you can delete the songs that don't have Replay Gain, and send them again once they do.

Edit: Another, more tedious way would be to use the Export  iTunesDB as XML feature, then open up the XML file in something like Mozilla or Internet Explorer.  Look for the SOUNDCHECK elements, and if the value is 0, you know that file doesn't have the ReplayGain/Soundcheck applied.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-06-25 23:58:18
My layout in fb2k shows if I have RG or not and they all show that they do.  But, some songs do not seem to be affected by the Sound Check being on.  They are just plain loud.  Boy, am I confused.

I honestly think that me messing around and going back and forth between iTunes and fb2k has caused a lot of this trouble.  I have had issues with multiple entries of the same songs a lot.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-26 03:43:56
Quote
My layout in fb2k shows if I have RG or not and they all show that they do.  But, some songs do not seem to be affected by the Sound Check being on.  They are just plain loud.  Boy, am I confused.

I honestly think that me messing around and going back and forth between iTunes and fb2k has caused a lot of this trouble.  I have had issues with multiple entries of the same songs a lot.

Probably the best thing to do at this point is wipe your iPod clean and stick to either foo_pod or iTunes.  foo_pod plays fairly well with iTunes, but iTunes doesn't return the favor. 

In fact, if you updated with iTunes after you loaded files with foo_pod, I would definitely expect that your ReplayGain/SoundCheck information would be gone.  Since iTunes only has the concept of sync (replacing the contents of the iPod with the iTunes library) and since it doesn't understand ReplayGain, what might have happened is that it deleted and replaced identical songs on your iPod - minus the ReplayGain/SoundCheck info.  While the ReplayGain tags are still in the files, the SoundCheck values that the iPod uses aren't in the database.

Use foo_pod's Export iTunesDB As XML function and then listen for some songs you think don't have the SoundCheck correction.  Then find those songs in the XML file and see what the SOUNDCHECK element is.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-06-26 07:54:58
I am beginning to totally agree with you.  The only reason I wanted to mess with iTunes after uploading my songs to my iPod was to do the track number/of tag and to add album art.  Now, I just don't care!  I just want good sound and even volume.  PLEASE!  I did some checking and I have noticed that after copying some files to my computer, re-calculating the RG info and re-uploading the files that the SC info is different.  So, I am systematically copying the files off the iPod, stripping the RG, applying the RG and then putting the files back on my iPod.  It will take a while, but at least I have learned something.  You guys have been great to help me and I really thank you so much.  If any of you ever make it to Tupelo, Mississippi, USA, be sure to let me know!  Thanks so much!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-26 16:30:50
Aero,

I'm guessing this is another "you'll have to wait for smart playlists" question, but I'm finding that playlists I transcode (via foo_pod, of course!) onto my iPod don't show up as playlists on my device.  I do have the "create iPod playlists" option enabled.

The files are transcoded from tagged .flac files, so I do see them if I search for the artist or album, but I'd like to have these playlists show up in the playlist category.  Any suggestions?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-06-26 17:43:17
Quote
I'm guessing this is another "you'll have to wait for smart playlists" question, but I'm finding that playlists I transcode (via foo_pod, of course!) onto my iPod don't show up as playlists on my device.  I do have the "create iPod playlists" option enabled.

The files are transcoded from tagged .flac files, so I do see them if I search for the artist or album, but I'd like to have these playlists show up in the playlist category.  Any suggestions?

I have seen that too, and it is a bug.  I'll try to fix it in the next version.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-27 05:43:15
Although I'm a programming retard, but wow. There's a lot of massive coding that you guys are doing. I definitely look forward to the next revision of foo_pod with playlist handling!

Anyway, just an improvement for the next revisions of foo_pod.

It would be good if you could add an option to read the iPod DB, instead of having to meddle with the iPod (ie, copy some songs) to get the updated playlist.

Thanks!
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-06-27 08:30:57
Quote
Although I'm a programming retard, but wow. There's a lot of massive coding that you guys are doing. I definitely look forward to the next revision of foo_pod with playlist handling!

Anyway, just an improvement for the next revisions of foo_pod.

It would be good if you could add an option to read the iPod DB, instead of having to meddle with the iPod (ie, copy some songs) to get the updated playlist.

Thanks!

Doesn't componets > foo_pod > 'load ipod songs ...' do this already?
Title: foo_pod - Foobar2000 meets the iPod
Post by: mario620 on 2004-06-27 11:29:35
How do I adjust the volume with the regain feature with songs that are on my ipod already? And do I need to turn on the soundcheck feature on, on the ipod to make it all work? Thanks
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-06-27 14:33:46
Quote
Quote
Although I'm a programming retard, but wow. There's a lot of massive coding that you guys are doing. I definitely look forward to the next revision of foo_pod with playlist handling!

Anyway, just an improvement for the next revisions of foo_pod.

It would be good if you could add an option to read the iPod DB, instead of having to meddle with the iPod (ie, copy some songs) to get the updated playlist.

Thanks!

Doesn't componets > foo_pod > 'load ipod songs ...' do this already?

Oh my god. I just realised that. 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-06-27 17:45:49
Quote
And do I need to turn on the soundcheck feature on, on the ipod to make it all work? Thanks

Yes.  Its location may vary between iPod firmware versions, but I believe it should be under "settings".

Note the previous posts that RG/soundcheck setttings only work through the headphone jack.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-02 08:57:09
Version 0.9 (http://www.loodi.com/foo_pod.zip) is now available.

This is the big Smart Playlist version.  I created a GUI that should be familiar for iTunes users.  To start off, create a new smart playlist using the Add button under the list of smart playlists, optionally rename it by clicking - pause - clicking on it, then add new rules on the right side of the window. 

This is currently only for 3rd generation iPods (iPods with dock connectors), but Otto has written code that will allow non-dynamic smart playlists, which I will hook up in a future version. 

Both the GUI and smart playlist support are both very new and not completely tested, so you can expect some bugs and other hiccups.  But hopefully the smart playlist support is good enough to do more widespread testing.  If you encounter problems, make sure to save your iTunesDB file (and or export it as XML from the foo_pod menu) and send me a copy to help diagnose the problem.


From the Readme:
Code: [Select]
Version 0.9 - July 2, 2004
*  Added (nearly) complete Smart Playlist support and a GUI interface for creating and editing Smart Playlists.
  (the only missing support is the Playlist rule).  This feature is very new and there are likely bugs, so please
  report any problems.  Also note that this feature currently only works on 3rd generation iPod (iPods with dock
  connectors), although future versions will support non-dynamically updating Smart Playlists for 1st and 2nd
  generation iPods.

*  Added a menu item for displaying the amount of free disk space on the iPod.

*  Fixed Last Modified time calculation.

*  Added support for the compilation and "checked" items from iTunes.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-02 15:41:38
Great! Finally the new version! 
Got a crash log for ya  . I was trying out the new Smart Playlist GUI and was just pressing on some drop down (sorry, I don't remember which as I was just looking around, but I know I only had one rule added) and it crashed:
Quote
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 02651D4Fh
Access violation, operation: read, address: 00000030h
Call path:
WinMain=>app_mainloop
This is the first crash logged by this instance.
Code bytes (02651D4Fh):
02651D0Fh:  08 8B 76 08 2B F0 C1 FE 02 8B 4C 24 20 51 E8 48
02651D1Fh:  E2 00 00 8B 4C 24 30 83 C4 04 5F 8B C6 5E 5D 5B
02651D2Fh:  64 89 0D 00 00 00 00 83 C4 28 C2 08 00 90 90 90
02651D3Fh:  90 51 53 8B 5C 24 0C 85 DB 55 56 57 8B F1 74 3E
02651D4Fh:  8B 4E 30 85 C9 75 04 33 C0 EB 08 8B 46 34 2B C1
02651D5Fh:  C1 F8 02 33 C9 85 C0 76 17 8B 7E 30 8B D7 8D 49
02651D6Fh:  00 8B 2A 39 5D 0C 74 2D 41 83 C2 04 3B C8 72 F1
02651D7Fh:  33 C0 85 C0 89 44 24 18 0F 85 90 01 00 00 6A 60
Stack (0012F250h):
0012F230h:  00000018 0012FA2C EC7C4918 EC7C4628
0012F240h:  804D5ED0 EC7C46E4 80526A60 804D5ED0
0012F250h:  00010000 00000000 00000000 00320652
0012F260h:  00000000 02652EAA 00000032 77D4546D
0012F270h:  0265A053 00000000 0012F870 02659B40
0012F280h:  0012F828 00000000 0012F880 00000000
0012F290h:  00000000 00000000 0012F2E8 00000000
0012F2A0h:  00000189 0024058A 00000004 77D64E9F
0012F2B0h:  01FBD800 00000189 00000002 0012F2E8
0012F2C0h:  02AC2A90 0012FAF4 77D64E75 01FBD800
0012F2D0h:  00000189 00000002 0012F2E8 77D64E85
0012F2E0h:  00000000 01FBD800 00720041 00690074
0012F2F0h:  00740073 00000000 01FBDFE0 77D44092
0012F300h:  7FFDE000 00000000 0024058A 00000000
0012F310h:  77D44500 0012F340 77D974A3 000C0000
0012F320h:  00000000 00000000 02AC2A90 01100060
0012F330h:  0024058A 9801171C 00000134 0034042E
0012F340h:  0012F368 77D44525 01FBDFE0 00000134
0012F350h:  9801171C 00000133 0034042E 00320652
0012F360h:  00000000 00000000 0012F3C8 77F75DA3
Registers:
EAX: 00000004, EBX: 00000032, ECX: 00000000, EDX: 00000004
ESI: 00000000, EDI: 00010000, EBP: 00000000, ESP: 0012F250
Crash location: "foo_pod", loaded at 02630000h - 0268F000h

Loaded modules:
foobar2000                       loaded at 00400000h - 00452000h
ntdll                            loaded at 77F50000h - 77FF7000h
kernel32                         loaded at 77E60000h - 77F46000h
USER32                           loaded at 77D40000h - 77DCC000h
GDI32                            loaded at 7E090000h - 7E0D1000h
ADVAPI32                         loaded at 77DD0000h - 77E5D000h
RPCRT4                           loaded at 78000000h - 78087000h
ole32                            loaded at 771B0000h - 772D4000h
COMCTL32                         loaded at 71950000h - 71A2D000h
msvcrt                           loaded at 77C10000h - 77C63000h
SHLWAPI                          loaded at 70A70000h - 70AD5000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F5000h
SHELL32                          loaded at 00460000h - 01E40000h
LPK                              loaded at 629C0000h - 629C8000h
USP10                            loaded at 72FA0000h - 72FFA000h
foo_albumlist                    loaded at 022C0000h - 022CA000h
foo_ape                          loaded at 022D0000h - 022F0000h
foo_cdda                         loaded at 022F0000h - 022FE000h
foo_console                      loaded at 02300000h - 02307000h
foo_diskwriter                   loaded at 02310000h - 02322000h
WINMM                            loaded at 76B40000h - 76B6C000h
foo_dsp_extra                    loaded at 023B0000h - 023C5000h
foo_flac                         loaded at 023D0000h - 023E6000h
foo_freedb                       loaded at 023F0000h - 0241E000h
WS2_32                           loaded at 71AB0000h - 71AC5000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_id3v2                        loaded at 02420000h - 0244E000h
MSVCP60                          loaded at 55900000h - 55961000h
foo_infobox                      loaded at 02450000h - 02463000h
foo_input_std                    loaded at 02470000h - 02512000h
MSACM32                          loaded at 77BE0000h - 77BF4000h
foo_masstag                      loaded at 02520000h - 02531000h
foo_mod                          loaded at 02540000h - 02549000h
BASS                             loaded at 02550000h - 025AA000h
foo_output_asio(dll)             loaded at 025B0000h - 025E1000h
foo_output_std                   loaded at 02600000h - 02609000h
foo_out_dsound_ex                loaded at 02610000h - 02619000h
DSOUND                           loaded at 51080000h - 510DA000h
VERSION                          loaded at 77C00000h - 77C07000h
foo_pod                          loaded at 02630000h - 0268F000h
OLEAUT32                         loaded at 77120000h - 771AB000h
SETUPAPI                         loaded at 76670000h - 768C1000h
foo_podclienc                    loaded at 02690000h - 0269E000h
foo_podtranscoder                loaded at 026A0000h - 026AA000h
foo_pod_rainlendar               loaded at 026B0000h - 026BE000h
MSVCP71                          loaded at 7C3A0000h - 7C41B000h
MSVCR71                          loaded at 7C340000h - 7C396000h
foo_pphsresample                 loaded at 026D0000h - 026E0000h
foo_quicktag                     loaded at 026E0000h - 026E9000h
foo_read_http                    loaded at 026F0000h - 026F9000h
foo_rgscan                       loaded at 02700000h - 0270B000h
foo_setyear                      loaded at 02710000h - 02723000h
foo_spc                          loaded at 02730000h - 02741000h
foo_speex                        loaded at 02750000h - 02768000h
foo_stfu                         loaded at 02770000h - 02777000h
foo_ui_columns                   loaded at 02780000h - 027A7000h
foo_ui_std                       loaded at 027B0000h - 027C7000h
foo_unpack                       loaded at 027D0000h - 02801000h
foo_vis_bacon                    loaded at 02810000h - 02822000h
foo_vis_manager                  loaded at 02830000h - 02838000h
foo_vis_simple_spectrum          loaded at 02840000h - 0284A000h
foo_wavpack                      loaded at 02850000h - 0285E000h
foo_wma                          loaded at 02860000h - 02879000h
WMVCore                          loaded at 08530000h - 0872D000h
WMASF                            loaded at 07260000h - 07299000h
foo_write_http                   loaded at 02880000h - 0289A000h
foo_tlbRC                        loaded at 028A0000h - 028B9000h
uxtheme                          loaded at 5AD70000h - 5ADA4000h
YzShadow                         loaded at 02A40000h - 02A4E000h
LgWndHk                          loaded at 02A60000h - 02A67000h
MSCTF                            loaded at 74720000h - 74764000h
YzToolBar                        loaded at 02AC0000h - 02ACF000h
CLBCATQ                          loaded at 7C890000h - 7C911000h
COMRes                           loaded at 77050000h - 77115000h
msi                              loaded at 76400000h - 76601000h
LgMsgHk                          loaded at 03080000h - 0308B000h
winroll                          loaded at 03090000h - 03097000h
mslbui                           loaded at 605D0000h - 605D8000h
CAPTLIB                          loaded at 02D80000h - 02DE3000h
tlbhook                          loaded at 02E20000h - 02E2D000h
imagehlp                         loaded at 76C90000h - 76CB2000h
DBGHELP                          loaded at 6D510000h - 6D58D000h

Stack dump analysis:
Address: 02652EAAh, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 77D4546Dh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "SendMessageW" (+00000000h)
Address: 0265A053h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 02659B40h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 77D64E9Fh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "EnumClipboardFormats" (+000006DAh)
Address: 02AC2A90h, location: "YzToolBar", loaded at 02AC0000h - 02ACF000h
Symbol: "restoreAllLogo_EXPIE" (+00000750h)
Address: 77D64E75h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "EnumClipboardFormats" (+000006B0h)
Address: 77D64E85h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "EnumClipboardFormats" (+000006C0h)
Address: 00720041h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 00690074h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 77D44092h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+00000000h)
Address: 77D44500h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "PostMessageA" (+000000B8h)
Address: 77D974A3h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetRawInputDeviceInfoA" (+000000E2h)
Address: 02AC2A90h, location: "YzToolBar", loaded at 02AC0000h - 02ACF000h
Symbol: "restoreAllLogo_EXPIE" (+00000750h)
Address: 01100060h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 77D44525h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "PostMessageA" (+000000DDh)
Address: 77F75DA3h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "KiUserCallbackDispatcher" (+00000013h)
Address: 02659B86h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 02659B40h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 02659B86h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 7E092A71h, location: "GDI32", loaded at 7E090000h - 7E0D1000h
Symbol: "GdiDrawStream" (+00000052h)
Address: 7E092A5Dh, location: "GDI32", loaded at 7E090000h - 7E0D1000h
Symbol: "GdiDrawStream" (+0000003Eh)
Address: 02659B40h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 02659B86h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 02659B40h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 7E0BDF66h, location: "GDI32", loaded at 7E090000h - 7E0D1000h
Symbol: "GdiRealizationInfo" (+00000086h)
Address: 629C2E88h, location: "LPK", loaded at 629C0000h - 629C8000h
Symbol: "LpkInitialize" (+0000013Bh)
Address: 7E092D50h, location: "GDI32", loaded at 7E090000h - 7E0D1000h
Symbol: "ExtTextOutW" (+000001C9h)
Address: 77D47E58h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "CallNextHookEx" (+00000039h)
Address: 02AC2A5Dh, location: "YzToolBar", loaded at 02AC0000h - 02ACF000h
Symbol: "restoreAllLogo_EXPIE" (+0000071Dh)
Address: 00414141h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 77D45E9Ah, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcA" (+00000259h)
Address: 00414141h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 02659B40h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 02659B40h, location: "foo_pod", loaded at 02630000h - 0268F000h
Address: 77D458CEh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcW" (+000000A0h)
Address: 77D45885h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcW" (+00000057h)
Address: 77D44124h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+00000092h)
Address: 77D9C064h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 77D458A7h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcW" (+00000079h)
Address: 77D45899h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcW" (+0000006Bh)
Address: 01100060h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 77D7390Ah, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "CreateAcceleratorTableA" (+0000032Dh)
Address: 77D99B38h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 77D45899h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcW" (+0000006Bh)
Address: 77D45D1Dh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefWindowProcA" (+000000DCh)
Address: 77D4C57Eh, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "CharLowerBuffA" (+0000030Dh)
Address: 00720041h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 00690074h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 77D4C6D4h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefDlgProcW" (+00000000h)
Address: 00720041h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 00690074h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 77D4C6F5h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "DefDlgProcW" (+00000021h)
Address: 01100060h, location: "SHELL32", loaded at 00460000h - 01E40000h
Address: 77D43A50h, location: "USER32", loaded at 77D40000h - 77DCC000h
Address: 72FCBB7Fh, location: "USP10", loaded at 72FA0000h - 72FFA000h
Symbol: "ScriptIsComplex" (+0000001Ch)
Address: 72FCBB93h, location: "USP10", loaded at 72FA0000h - 72FFA000h
Symbol: "ScriptIsComplex" (+00000030h)
Address: 72FCBBB6h, location: "USP10", loaded at 72FA0000h - 72FFA000h
Symbol: "ScriptIsComplex" (+00000053h)

Version info:
foobar2000 v0.8.2
UNICODE


Now this will probably a small glitch that wouldn't repeat itself, but I will go and check some more.


Also, I can't seem to be able to rename playlists. When I make a new one, I see this yellow line where the name would be, I click on it and there's a green writing cursor thingy and typing something won't change it.


EDIT: Ok, I just recreated the former crash. Just used the drop down for selecting the field for the condition and it crashed. It had a similar crashlog with similar offset values (which I'm assuming is what those hex numbers are) and only slight differences. Should I post that one too?
Title: foo_pod - Foobar2000 meets the iPod
Post by: DreamweaverN on 2004-07-02 15:50:57
I just tried it then, I got the same problem.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Will Fisher on 2004-07-02 15:53:36
Quote
I was excited to see that ml_ipod claimed to support smart playlists, but after looking at their code for a few minutes, it was clear that whatever they have is definitely not Smart Playlists.  Real Smart Playlists, as created by iTunes (and soon to be created by foo_pod...  ) are a set of rules that 3G iPods use to dynamically create playlists.  I think that ml_ipod's "smart playlists" are just a Winamp-side playlist generator, similar to the one that is included with Foobar and extended by the Extended Playlist Generator (http://www.hydrogenaudio.org/forums/index.php?showtopic=20500&) component.

You are correct. ml_ipod smart playlists are winamp media library querys that are put in ordinary playlists.

I, however, made some smart playlists with iTunes and couldn't get it to be dynamic on the ipod side at all. It appeared to just update/refresh whenever iTunes was involved. Thus, I made ml_ipod smart playlists under this assumption to be the equivalent.

Apparently, I was mistaken.  However, I am really not sure as to where these ipod side dynamic properties come into play, and would be interested to find out.

edit: yes i do have a 3G ipod with latest firmware, latest itunes yadda yadda...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-02 15:55:14
Quote
  (the only missing support is the Playlist rule).  

Probably worth noting that until the non-dynamic smart-playlists get added to foo_pod, using the "Grouping" field in smart playlists will also not work. Don't blame me... complain to Apple, it's an iPod firmware issue.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-02 16:03:04
Quote
You are correct. ml_ipod smart playlists are winamp media library querys that are put in ordinary playlists.

I, however, made some smart playlists with iTunes and couldn't get it to be dynamic on the ipod side at all. It appeared to just update/refresh whenever iTunes was involved. Thus, I made ml_ipod smart playlists under this assumption to be the equivalent.

Apparently, I was mistaken.  However, I am really not sure as to where these ipod side dynamic properties come into play, and would be interested to find out.

edit: yes i do have a 3G ipod with latest firmware, latest itunes yadda yadda...

Try using iTunes to create a smart playlist that uses the "Last Played Time" field. Like "Last Played is not within last 2 weeks" (one of my common playlists).

Then load that playlist up on the iPod. Take note of the first song in the playlist. Play it, all the way through. After you're done playing it, exit that playlist and play some other one (any other one). Now go back and look at/play your not in the last 2 weeks playlist. The song that you played should now be gone.

Another way to see it is to make a playlist that says "Last Played is in the last 1 hour" or something similar. Then play any song and check out that playlist once it finishes.. the song should get added to that playlist.

The way all this works on the iPod is via two mhod's immediately after the mhlp (a playlist). They are mhod types 50 and 51. Type 50 describes all the settings of the playlist, all those check boxes and limits and such. Type 51 describes the rules of the playlist. Type 51 is optional for a smart playlist, but type 50 is not. 1st and 2nd gen iPods do not use the type 50-51 mhods, they only use the list of songs in the playlist. 3rd gen (and I assume mini's) will use those type 50 and 51's unless the rules contain the grouping field and/or the playlist field (in which case they use the list of songs also.. this is with the latest firmware.. previous firmware's were broken and displayed blank playlists in these cases).

I'd be glad to further explain the formats of these to anybody that's interested, you can email me at sam dot wood at gmail dot com.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-02 20:32:54
Quote
Also, I can't seem to be able to rename playlists. When I make a new one, I see this yellow line where the name would be, I click on it and there's a green writing cursor thingy and typing something won't change it.


EDIT: Ok, I just recreated the former crash. Just used the drop down for selecting the field for the condition and it crashed. It had a similar crashlog with similar offset values (which I'm assuming is what those hex numbers are) and only slight differences. Should I post that one too?

Yeah, I think I can reproduce the renaming problem (when you create a new smart playlist, do you just see "N..."?).  I swear it autosizes correctly on one XP system but not on my laptop.  Very weird.  You can resize it - you just have to click in a very small area, and then the column resizes properly, although there was a redraw artifact on one of my systems.

I can't reproduce the crash, though.  Could you go through the complete steps and post them here so I can test it out.  For example "Opened smart playlist editor, created a new playlist, selected Bit Rate from the first dropdown box.  Attempted to change the next dropdown box to the right, but foo_pod crashed".

Thanks!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-02 22:44:19
Version 0.9a (http://www.loodi.com/foo_pod.zip) is now available.

This is just a minor fix that takes care of the "yellow line where the name would be"/renaming problem.  I still haven't been able to reproduce the crash, so specific steps to reproduce would be appreciated!


From the Readme:
Code: [Select]
Version 0.9a - July 2, 2004
*  Fix a problem where adding the first new playlist would cause the display to be truncated (i.e. you couldn't
  see the new playlist name or easily rename it).
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-02 23:52:37
0.9a makes the playlist list look flawless. Wonderful!
As for the crash, I can recreate it every time. Here is how I do it:
1. Open Smart Playlist Editor.
2. Click "Add."
3. Click on the leftmost drop down list (that contains "Artist" by default).
4. Click on any other item.
5. Watch crash log.
A peculiar thing, though, is that there is a slight delay between number 4 and the crash (number 5). Could it be that foo_pod gets stuck in some infinite loop after you choose something different there and only crashes foobar after it went through so many iterations?
I also noticed now that this crash happens with every other drop down list that is belongs to that condition (so, disincluding the "Match" drop down and the settings at the bottom). Another bug I noticed is that when you press either the "+" or "-" buttons at the right, it would not add/remove the condition, rather, it displays it as though the "+" button were a state switch and it were in its pushed down state. Clicking it once more will not put it back in its up state, but clicking on the "-" will make the "-" pushed and the "+" un-pushed and this works the other way aswell.
DreamweaverN, you say you experience the same crash bug as me, could you check to see if you also have the same problem with the "+"/"-" buttons?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-03 00:14:30
Quote
0.9a makes the playlist list look flawless. Wonderful!
As for the crash, I can recreate it every time. Here is how I do it:
1. Open Smart Playlist Editor.
2. Click "Add."
3. Click on the leftmost drop down list (that contains "Artist" by default).
4. Click on any other item.
5. Watch crash log.
A peculiar thing, though, is that there is a slight delay between number 4 and the crash (number 5). Could it be that foo_pod gets stuck in some infinite loop after you choose something different there and only crashes foobar after it went through so many iterations?
I also noticed now that this crash happens with every other drop down list that is belongs to that condition (so, disincluding the "Match" drop down and the settings at the bottom). Another bug I noticed is that when you press either the "+" or "-" buttons at the right, it would not add/remove the condition, rather, it displays it as though the "+" button were a state switch and it were in its pushed down state. Clicking it once more will not put it back in its up state, but clicking on the "-" will make the "-" pushed and the "+" un-pushed and this works the other way aswell.
DreamweaverN, you say you experience the same crash bug as me, could you check to see if you also have the same problem with the "+"/"-" buttons?

Hmm...I still can't reproduce the crash here.  When you say "Click on the leftmost drop down list", did you change the entry from Artist to something else, or you just opened up the drop box box?  And when you say "Click on any other item", could you be explicit in exactly what you are clicking on (Edit: I guess you said it happens with anything in that row).

The push button problem with + / - is very confusing.  That definitely isn't how the code is implemented, and makes me believe something screwy is going on with your system.  Are you running Windows 2000 or XP?  Also, I see from the stack track that you are running YzToolBar - could you exit that program and see if you can reproduce either the crash or the button weirdness?

Edit;  I would appreciate hearing reports, working or not working, from other users as well.  Please post your OS version, so I can see if this is a problem limited to certain systems, or something more general.
Title: foo_pod - Foobar2000 meets the iPod
Post by: eido on 2004-07-03 00:28:07
I'm getting the same crash as rexy on windows xp when I use the drop-down list.  Also, the + and - buttons look normal when I click them, but they don't actually do anything.

If I mess with my playlists that were created in iTunes instead of adding a new one, however, everything works perfectly.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-03 00:32:00
Quote
I'm getting the same crash as rexy on windows xp when I use the drop-down list.  Also, the + and - buttons look normal when I click them, but they don't actually do anything.

If I mess with my playlists that were created in iTunes instead of adding a new one, however, everything works perfectly.

So no crashes and +/- works fine when editing Smart Playlists created by iTunes?  Interesting...I still can't reproduce any of this, but at least it gives me somewhere to start looking.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-03 05:42:11
Aero: I can reproduce the crash as well. Here's exactly what I do:

This is virtually a new, unmodified install. It's the foobar2000 v0.8.2 - special install, without any modifications. I installed the foo_pod components, started up foobar.

Select Components Menu - Foo_pod - Smart Playlist Editor. Hit the Add button. New Smart Playlist Appears.

Click the down arrow on the "Artist" box. Change it to "Album". 3 to 5 seconds later, foobar crashes. No selecting anything else, no moving the mouse, it crashes just from changing the content of that pull down.

I have not tested this with my iPod yet, and so cannot say if it works with an existing iTunesDB file.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-03 06:08:27
Quote
Click the down arrow on the "Artist" box. Change it to "Album". 3 to 5 seconds later, foobar crashes. No selecting anything else, no moving the mouse, it crashes just from changing the content of that pull down.

Version 0.9b (http://www.loodi.com/foo_pod.zip) is now available.

Thanks for the info.  I just posted Version 0.9b (http://www.loodi.com/foo_pod.zip), which might fix the crash problem based on Otto's description.

I found a couple of uninitalized variables dealing with the + / - buttons, and while I'm not sure that it is releated to the crashes, it is a good thing to fix and might take care of the button weirdness that rexy was experiencing.

I also removed lame.exe and faac.exe from the foo_pod distribution, to cut down on unnecessary archive size.  You can pick them up at www.rarewares.org (http://www.rarewares.org) if you need them.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-03 08:07:48
Quote
Thanks for the info.  I just posted Version 0.9b (http://www.loodi.com/foo_pod.zip), which might fix the crash problem based on Otto's description.

Okay, that seems to fix that problem. I'll do some more testing with an actual iPod, but it seems to work so far. I like the date pull down for the Last Played and such.

Edit: +/- seems to work for me. At least, it adds another line which I can set and such.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-03 08:11:05
Quote
Quote
Thanks for the info.  I just posted Version 0.9b (http://www.loodi.com/foo_pod.zip), which might fix the crash problem based on Otto's description.

Okay, that seems to fix that problem. I'll do some more testing with an actual iPod, but it seems to work so far. I like the date pull down for the Last Played and such. 

Great, I'm glad to hear that works!  Darn those uninitialized variables...
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-03 12:26:02
Minor problem: The icon in the titlebar of the smart playlist editor should not be visible or have another icon. The foobar2000 preferences dialog is icon-less, and I flinched at the generic Windows icon.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-03 12:28:27
Also, it would maybe be more intuitive if when adding a new date rule (I don't know if this applies to other things as well), you have one drop down box for Is/Is Not and then a second drop down for After/Before/In The Last/In The Range.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-03 12:35:58
Sorry for many posts, but fast reply is easier. I'll try to keep adding to the same one this time: A way of renaming the smart playlists (which I am sure you know isn't there). Also, when clicking the label of a checkbox, it should toggle it (You can try this on one of foobar2000's core preferences.) This also applies to foo_pod's preferences page.

When clicking the + button next to a rule, it should add the rule beneath that item. (If this won't be added, then only one + button is necessary for the entire editor) Maybe we should also have a way of moving items up and down.

Also, in the drop down box for Album/Artist etc, there is an empty item at the top of the list (maybe there is a purpose for this, but I couldn't find it). The Add/Remove and Apply/Cancel buttons should be vertically aligned and be shorter (as in height). Also, the two sets of buttons should have the same amount of space between them. Use foobar2000's preferences dialog as a reference.

That's all for now!  Have fun.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-03 18:09:00
Quote
Minor problem: The icon in the titlebar of the smart playlist editor should not be visible or have another icon. The foobar2000 preferences dialog is icon-less, and I flinched at the generic Windows icon.

I'm not sure having an icon in the window is a problem.  You get the default one (which looks ok in Window XP, at least) because I haven't created a (Smart) Playlist Editor icon yet.  Eventually, I want to make the editor work with both regular and smart playlists, which will probably mean adding icons to the playlist list view, at which point, I'll add an application icon as well.


Quote
Also, it would maybe be more intuitive if when adding a new date rule (I don't know if this applies to other things as well), you have one drop down box for Is/Is Not and then a second drop down for After/Before/In The Last/In The Range.

Well, that is how iTunes does it.  And from a programming standpoint, the smart playlist editor is complicated enough without adding another column.  Also, it is not entirely clear if the iPod would work with a "Is Not" "In The Range" rule, for example.  iTunes doesn't support that rule, but it seems possible to at least create that as a valid rule.  Still, I prefer all of the options in a single combobox.


Quote
Sorry for many posts, but fast reply is easier. I'll try to keep adding to the same one this time: A way of renaming the smart playlists (which I am sure you know isn't there). Also, when clicking the label of a checkbox, it should toggle it (You can try this on one of foobar2000's core preferences.) This also applies to foo_pod's preferences page.

You can rename smart playlists just like how you rename files in Windows Explorer -  single click on the playlist name, wait about a second, then click again.  Currently no keyboard keys are hooked up for the playlist window, but I could see about hooking up F2 or something.

The checkboxes indeed aren't selectable by clicking on the text.  That was done so I could better align the buttons with the text and the rest of the row.  You might have a point with the foo_pod preference, but as the checkboxes are used in the smart playlist editor, being able to click on unrelated text and changing the checkbox doesn't really make sense.


Quote
When clicking the + button next to a rule, it should add the rule beneath that item. (If this won't be added, then only one + button is necessary for the entire editor) Maybe we should also have a way of moving items up and down.

Rule order is not important, so there is no use in moving rules up or down, or being able to add a rule in a particular location.  The multiple + buttons are redunant, but again, that is how iTunes does its playlist editor and it compliments the - buttons.


Quote
Also, in the drop down box for Album/Artist etc, there is an empty item at the top of the list (maybe there is a purpose for this, but I couldn't find it).

The empty entry in the first column drop down box is intentional.  Originally, I was going to avoid the +/- buttons and have the rules add/remove themselves.  So the empty entry acquired a programming significance, and even after I added the +/- buttons, there wasn't an easy way to undo that.  So the empty space remains, for now.


Quote
The Add/Remove and Apply/Cancel buttons should be vertically aligned and be shorter (as in height). Also, the two sets of buttons should have the same amount of space between them. Use foobar2000's preferences dialog as a reference.

I'm not sure what your mean by vertically aligning the buttons - they are vertically aligned to the matching button, and are conceptionally separate functions (add/remove vs. apply/cancel), so I don't see why they need to be aligned against each other, or have the same horizontal spacing.  As for height...well, I think they look fine. 


Anyway, thanks for your suggestions.  The GUI is functional right now, but I'm sure that it can be improved.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-04 01:33:36
Quote
Quote
Also, in the drop down box for Album/Artist etc, there is an empty item at the top of the list (maybe there is a purpose for this, but I couldn't find it).

The empty entry in the first column drop down box is intentional.  Originally, I was going to avoid the +/- buttons and have the rules add/remove themselves.  So the empty entry acquired a programming significance, and even after I added the +/- buttons, there wasn't an easy way to undo that.  So the empty space remains, for now.

Ooh, that would be nice! I would prefer having it so every new playlist will just have an empty rule and then when you select the kind of rule, it would show the related options and have a new empty rule beneath it and whenever a rule would be changed to blank it would be removed. This would be MUCH nicer than having annoyingly redundant +/- buttons!
Oh, and all my GUI problems were solved in the new version!  I haven't tested the actual playlists on my iPod yet, though.

Have a great fourth, everyone!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-04 17:09:54
Quote
Ooh, that would be nice! I would prefer having it so every new playlist will just have an empty rule and then when you select the kind of rule, it would show the related options and have a new empty rule beneath it and whenever a rule would be changed to blank it would be removed. This would be MUCH nicer than having annoyingly redundant +/- buttons!

Does anyone have an opinion on +/- buttons vs. having the rules add themselves as needed and delete themselves when the empty item is selected?

I sort of prefer the +/- button, from both usage and programming standpoints, but I could go either way.  Maybe I'll try the auto-adding rules in the next version, but keep the +/- buttons as well to see which way is preferred.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-04 19:06:55
Quote
Does anyone have an opinion on +/- buttons vs. having the rules add themselves as needed and delete themselves when the empty item is selected?

I sort of prefer the +/- button, from both usage and programming standpoints, but I could go either way.  Maybe I'll try the auto-adding rules in the next version, but keep the +/- buttons as well to see which way is preferred.

Well, the +/- buttons make it easy to understand the usage of the thing if you've used iTunes before. And they're generally pretty self explanatory. I like 'em.

With the empty field, I'd imagine that there would always be an empty entry on the screen. If you changed the empty entry to being non-empty, it'd add another empty entry below it. That's how you can add rules. If you changed an entry to the empty one, that rule would go away. So that would work, but it doesn't seem as intuitive.

I can see it either way, I just like the +/- buttons better. Perhaps eliminating all the +'s except for the very last + on the list might make sense and eliminate redundancy, since we know order of the rules doesn't matter in the slightest.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-07-06 14:39:17
Got a crash whenever I attempt to add songs using foo_pod 0.9b.

Quote
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 0105F574h
Access violation, operation: read, address: 00000000h
Call path:
WinMain=>app_mainloop=>menu command: "foo_pod/Send selected to iPod"
This is the first crash logged by this instance.
Code bytes (0105F574h):
0105F534h:  B7 49 02 8B F9 23 FE 81 FF 00 DC 00 00 75 17 B8
0105F544h:  FF 03 00 00 6A 02 23 D0 23 C8 C1 E2 0A 0B D1 58
0105F554h:  81 C2 00 00 01 00 8B 4C 24 10 5F 5E 89 11 C3 55
0105F564h:  8B EC 51 83 65 FC 00 53 56 8B 75 0C 57 8B 7D 08
0105F574h:  80 3F 00 74 3B 8B 5D 10 85 DB 74 34 8D 45 0C 53
0105F584h:  50 57 E8 6A FD FF FF 83 C4 0C 85 C0 74 22 3B C3
0105F594h:  77 1E 56 03 F8 FF 75 0C 2B D8 E8 2A FF FF FF 59
0105F5A4h:  85 C0 59 74 0B 01 45 FC 80 3F 00 8D 34 46 75 C8
Stack (0012E9E0h):
0012E9C0h:  00A8F774 77FA88F0 77F521E0 0000005A
0012E9D0h:  00A8CD64 C0000005 00A8CD40 00A8CD50
0012E9E0h:  77C2AC46 77C2AA6B 00FCEE68 00000000
0012E9F0h:  00000000 01034497 00000000 00FCEE68
0012EA00h:  00000000 00000002 00000000 FFFFFFFF
0012EA10h:  011D5CE0 00F9ECA8 00F9ECAC 77C2AA6B
0012EA20h:  00FCEE68 011D6370 00000000 00F9ECB0
0012EA30h:  01063310 011D5F40 0000005B 0000005B
0012EA40h:  00000000 0000004A 008A0000 0012EAC8
0012EA50h:  01063310 011D5BE8 0000005B 0000005B
0012EA60h:  00000000 0000004A 01063310 0116EA70
0012EA70h:  00000011 00000011 00000000 0000000F
0012EA80h:  00FB38C8 0116AAC0 01006E2C 0104D34C
0012EA90h:  0012EAB4 00FB38C8 0116AAC0 0012EAB8
0012EAA0h:  011D5B80 00F9ECA8 01063310 00000000
0012EAB0h:  00000000 00000000 00000000 00000000
0012EAC0h:  0012F72C 01060D4B 00000017 0103B136
0012EAD0h:  00F9ECA8 011D5CE0 0012EB48 001B0598
0012EAE0h:  00000000 00000000 00000000 006B0004
0012EAF0h:  00163AD8 00000000 00000001 0000000A
Registers:
EAX: 00FCEE68, EBX: 00FCEE68, ECX: 00000000, EDX: 85020042
ESI: 00FCEE68, EDI: 00000000, EBP: 0012E9F0, ESP: 0012E9E0
Crash location: "foo_pod", loaded at 01030000h - 0108F000h

Loaded modules:
foobar2000                       loaded at 00400000h - 00452000h
ntdll                            loaded at 77F50000h - 77FF7000h
kernel32                         loaded at 77E60000h - 77F46000h
USER32                           loaded at 77D40000h - 77DCC000h
GDI32                            loaded at 7E090000h - 7E0D1000h
ADVAPI32                         loaded at 77DD0000h - 77E5D000h
RPCRT4                           loaded at 78000000h - 78087000h
ole32                            loaded at 771B0000h - 772D4000h
COMCTL32                         loaded at 71950000h - 71A34000h
msvcrt                           loaded at 77C10000h - 77C63000h
SHLWAPI                          loaded at 70A70000h - 70AD5000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F5000h
SHELL32                          loaded at 773D0000h - 77BC2000h
IMM32                            loaded at 76390000h - 763AC000h
LPK                              loaded at 629C0000h - 629C8000h
USP10                            loaded at 72FA0000h - 72FFA000h
foo_input_std                    loaded at 008E0000h - 00982000h
MSACM32                          loaded at 77BE0000h - 77BF4000h
WINMM                            loaded at 76B40000h - 76B6C000h
foo_output_std                   loaded at 00A10000h - 00A19000h
foo_ui_std                       loaded at 00A20000h - 00A37000h
foo_vis_manager                  loaded at 00A40000h - 00A48000h
foo_cdda                         loaded at 00A50000h - 00A5E000h
foo_flac                         loaded at 00A60000h - 00A76000h
foo_ape                          loaded at 00A80000h - 00AA0000h
foo_wavpack                      loaded at 00AA0000h - 00AAB000h
foo_speex                        loaded at 00AB0000h - 00AC8000h
foo_out_dsound_ex                loaded at 00AD0000h - 00AD9000h
DSOUND                           loaded at 51080000h - 510D6000h
VERSION                          loaded at 77C00000h - 77C07000h
foo_out_ks                       loaded at 00AF0000h - 00AFB000h
SETUPAPI                         loaded at 76670000h - 76757000h
foo_console                      loaded at 00B00000h - 00B07000h
foo_read_http                    loaded at 00B10000h - 00B19000h
WS2_32                           loaded at 71AB0000h - 71AC5000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_rgscan                       loaded at 00B20000h - 00B2B000h
foo_diskwriter                   loaded at 00B30000h - 00B42000h
foo_albumlist                    loaded at 00B50000h - 00B5A000h
foo_masstag                      loaded at 00B60000h - 00B71000h
foo_unpack                       loaded at 00B80000h - 00BB1000h
OLEAUT32                         loaded at 77120000h - 771AB000h
foo_id3v2                        loaded at 00BC0000h - 00BEE000h
MSVCP60                          loaded at 55900000h - 55961000h
foo_dsp_extra                    loaded at 00BF0000h - 00C05000h
foo_wma                          loaded at 00C10000h - 00C29000h
WMVCore                          loaded at 08530000h - 0872D000h
WMASF                            loaded at 07260000h - 07299000h
foo_vis_bacon                    loaded at 00C30000h - 00C44000h
MSVCR71                          loaded at 7C340000h - 7C396000h
foo_freedb                       loaded at 00C60000h - 00C92000h
foo_winamp_spam                  loaded at 00CA0000h - 00CA8000h
foo_dsp_crossfade                loaded at 00CB0000h - 00CB7000h
foo_dsp_nogaps                   loaded at 00CC0000h - 00CC7000h
foo_tunes                        loaded at 00CD0000h - 00D11000h
gdiplus                          loaded at 70D00000h - 70EA1000h
MSCTF                            loaded at 74720000h - 74764000h
msctfime                         loaded at 00EA0000h - 00ECB000h
Secur32                          loaded at 76F90000h - 76FA0000h
foo_clienc                       loaded at 00EE0000h - 00EEB000h
CLBCATQ                          loaded at 7C890000h - 7C911000h
COMRes                           loaded at 77050000h - 77115000h
foo_podtranscoder                loaded at 00EF0000h - 00EFA000h
foo_podclienc                    loaded at 01020000h - 0102E000h
foo_pod                          loaded at 01030000h - 0108F000h
foo_scroll                       loaded at 01090000h - 01096000h
foo_search_ex                    loaded at 010A0000h - 010A8000h
UxTheme                          loaded at 5AD70000h - 5ADA4000h
appHelp                          loaded at 75F40000h - 75F5F000h
cscui                            loaded at 76620000h - 7666E000h
CSCDLL                           loaded at 76600000h - 7661B000h
Msimtf                           loaded at 746F0000h - 74716000h
msi                              loaded at 01650000h - 01851000h
SXS                              loaded at 75E90000h - 75F37000h
USERENV                          loaded at 75A70000h - 75B15000h
netapi32                         loaded at 71C20000h - 71C6E000h
ntshrui                          loaded at 76990000h - 769B4000h
ATL                              loaded at 76B20000h - 76B35000h
MPR                              loaded at 71B20000h - 71B31000h
drprov                           loaded at 75F60000h - 75F66000h
ntlanman                         loaded at 71C10000h - 71C1D000h
NETUI0                           loaded at 71CD0000h - 71CE6000h
NETUI1                           loaded at 71C90000h - 71CCC000h
NETRAP                           loaded at 71C80000h - 71C86000h
SAMLIB                           loaded at 71BF0000h - 71C01000h
davclnt                          loaded at 75F70000h - 75F79000h
wiashext                         loaded at 5A500000h - 5A58D000h
WININET                          loaded at 63000000h - 63096000h
CRYPT32                          loaded at 762C0000h - 76348000h
MSASN1                           loaded at 762A0000h - 762B0000h
browseui                         loaded at 71500000h - 715FD000h
shdocvw                          loaded at 71700000h - 71849000h
shmedia                          loaded at 5CAD0000h - 5CAF1000h
MSVFW32                          loaded at 73BD0000h - 73BF0000h
AVIFIL32                         loaded at 73B50000h - 73B65000h
mlang                            loaded at 74770000h - 747FF000h
browselc                         loaded at 72430000h - 72442000h
imagehlp                         loaded at 76C90000h - 76CB2000h
DBGHELP                          loaded at 6D510000h - 6D58D000h

Stack dump analysis:
Address: 77C2AC46h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "malloc" (+00000000h)
Address: 77C2AA6Bh, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+00000000h)
Address: 01034497h, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 77C2AA6Bh, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+00000000h)
Address: 01063310h, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 01063310h, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 01063310h, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 0104D34Ch, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 01063310h, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 01060D4Bh, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 0103B136h, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 77F944A8h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001BEh)
Address: 77F57D70h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+000001C2h)
Address: 77F58A3Ah, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+00000E8Ch)
Address: 01063310h, location: "foo_pod", loaded at 01030000h - 0108F000h
Address: 77F944A8h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001BEh)
Address: 77F53870h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Address: 77F944A8h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001BEh)
Address: 77F57D70h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+000001C2h)
Address: 77F58A3Ah, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+00000E8Ch)
Address: 719D1660h, location: "COMCTL32", loaded at 71950000h - 71A34000h
Address: 72FC4DB7h, location: "USP10", loaded at 72FA0000h - 72FFA000h
Address: 72FE00DCh, location: "USP10", loaded at 72FA0000h - 72FFA000h
Address: 763A11F8h, location: "IMM32", loaded at 76390000h - 763AC000h
Symbol: "CtfImmSetCiceroStartInThread" (+00000312h)
Address: 763A5020h, location: "IMM32", loaded at 76390000h - 763AC000h
Address: 72FCA4FEh, location: "USP10", loaded at 72FA0000h - 72FFA000h
Symbol: "ScriptTextOut" (+0000017Ah)
Address: 77F944A8h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001BEh)
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)
Address: 77F53870h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Address: 77F944A8h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001BEh)
Address: 77F57D70h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+000001C2h)
Address: 77F58A3Ah, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAllocateHeap" (+00000E8Ch)
Address: 77F944CBh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001E1h)
Address: 77F58BCDh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+0000018Fh)
Address: 77F59037h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+000005F9h)
Address: 77F944CBh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001E1h)
Address: 77F58BCDh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+0000018Fh)
Address: 77F59037h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+000005F9h)
Address: 77D440C6h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+00000034h)
Address: 719A801Fh, location: "COMCTL32", loaded at 71950000h - 71A34000h
Symbol: "Ordinal384" (+0003332Dh)
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)
Address: 77F51C78h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Address: 77E7A6D4h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "LocalAlloc" (+00000052h)
Address: 77F59BAAh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAcquirePebLock" (+00000028h)
Address: 77F59BB3h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAcquirePebLock" (+00000031h)
Address: 77F5A32Bh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlReleasePebLock" (+00000741h)
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)

Version info:
foobar2000 v0.8.2
UNICODE
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-07-06 14:49:24
Restarted my PC, downgraded to 0.9 and got the same problem as well:

Quote
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 00F3F2B4h
Access violation, operation: read, address: 00000000h
Call path:
WinMain=>app_mainloop=>menu command: "foo_pod/Send selected to iPod"
This is the first crash logged by this instance.
Code bytes (00F3F2B4h):
00F3F274h:  B7 49 02 8B F9 23 FE 81 FF 00 DC 00 00 75 17 B8
00F3F284h:  FF 03 00 00 6A 02 23 D0 23 C8 C1 E2 0A 0B D1 58
00F3F294h:  81 C2 00 00 01 00 8B 4C 24 10 5F 5E 89 11 C3 55
00F3F2A4h:  8B EC 51 83 65 FC 00 53 56 8B 75 0C 57 8B 7D 08
00F3F2B4h:  80 3F 00 74 3B 8B 5D 10 85 DB 74 34 8D 45 0C 53
00F3F2C4h:  50 57 E8 6A FD FF FF 83 C4 0C 85 C0 74 22 3B C3
00F3F2D4h:  77 1E 56 03 F8 FF 75 0C 2B D8 E8 2A FF FF FF 59
00F3F2E4h:  85 C0 59 74 0B 01 45 FC 80 3F 00 8D 34 46 75 C8
Stack (0012E9E0h):
0012E9C0h:  00ABF6EC 77FA88F0 77F521E0 0000005A
0012E9D0h:  00ABCCB8 C0000005 00ABCC94 00ABCCA4
0012E9E0h:  77C2AC46 77C2AA6B 01192FF8 00000000
0012E9F0h:  00000000 00F14497 00000000 01192FF8
0012EA00h:  00000000 00000002 00000000 FFFFFFFF
0012EA10h:  011CD728 01026C88 01026C8C 77C2AA6B
0012EA20h:  01192FF8 011CDE58 00000000 01026C90
0012EA30h:  00F43310 011CD9D8 0000005B 0000005B
0012EA40h:  00000000 0000004A 008A0000 0012EAC8
0012EA50h:  00F43310 011CD630 0000005B 0000005B
0012EA60h:  00000000 0000004A 00F43310 011CCFC0
0012EA70h:  00000011 00000011 00000000 0000000F
0012EA80h:  0102F200 011CCCE8 01030564 00F2D12C
0012EA90h:  0012EAB4 0102F200 011CCCE8 0012EAB8
0012EAA0h:  011CD5C8 01026C88 00F43310 00000000
0012EAB0h:  00000000 00000000 00000000 00000000
0012EAC0h:  0012F72C 00F40A8B 00000017 00F1B136
0012EAD0h:  01026C88 011CD728 0012EB48 001B23A8
0012EAE0h:  00000000 00000000 00000000 006B0282
0012EAF0h:  001BF9D8 00000002 011CD3F0 0000000C
Registers:
EAX: 01192FF8, EBX: 01192FF8, ECX: 00000000, EDX: 079C0001
ESI: 01192FF8, EDI: 00000000, EBP: 0012E9F0, ESP: 0012E9E0
Crash location: "foo_pod", loaded at 00F10000h - 00F6F000h

Loaded modules:
foobar2000                       loaded at 00400000h - 00452000h
ntdll                            loaded at 77F50000h - 77FF7000h
kernel32                         loaded at 77E60000h - 77F46000h
USER32                           loaded at 77D40000h - 77DCC000h
GDI32                            loaded at 7E090000h - 7E0D1000h
ADVAPI32                         loaded at 77DD0000h - 77E5D000h
RPCRT4                           loaded at 78000000h - 78087000h
ole32                            loaded at 771B0000h - 772D4000h
COMCTL32                         loaded at 71950000h - 71A34000h
msvcrt                           loaded at 77C10000h - 77C63000h
SHLWAPI                          loaded at 70A70000h - 70AD5000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F5000h
SHELL32                          loaded at 773D0000h - 77BC2000h
IMM32                            loaded at 76390000h - 763AC000h
LPK                              loaded at 629C0000h - 629C8000h
USP10                            loaded at 72FA0000h - 72FFA000h
foo_input_std                    loaded at 008E0000h - 00982000h
MSACM32                          loaded at 77BE0000h - 77BF4000h
WINMM                            loaded at 76B40000h - 76B6C000h
foo_output_std                   loaded at 00A10000h - 00A19000h
foo_ui_std                       loaded at 00A20000h - 00A37000h
foo_vis_manager                  loaded at 00A40000h - 00A48000h
foo_cdda                         loaded at 00A50000h - 00A5E000h
foo_flac                         loaded at 00A60000h - 00A76000h
foo_ape                          loaded at 00A80000h - 00AA0000h
foo_wavpack                      loaded at 00AA0000h - 00AAB000h
foo_speex                        loaded at 00AB0000h - 00AC8000h
foo_out_dsound_ex                loaded at 00AD0000h - 00AD9000h
DSOUND                           loaded at 51080000h - 510D6000h
VERSION                          loaded at 77C00000h - 77C07000h
foo_out_ks                       loaded at 00AF0000h - 00AFB000h
SETUPAPI                         loaded at 76670000h - 76757000h
foo_console                      loaded at 00B00000h - 00B07000h
foo_read_http                    loaded at 00B10000h - 00B19000h
WS2_32                           loaded at 71AB0000h - 71AC5000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_rgscan                       loaded at 00B20000h - 00B2B000h
foo_diskwriter                   loaded at 00B30000h - 00B42000h
foo_albumlist                    loaded at 00B50000h - 00B5A000h
foo_masstag                      loaded at 00B60000h - 00B71000h
foo_unpack                       loaded at 00B80000h - 00BB1000h
OLEAUT32                         loaded at 77120000h - 771AB000h
foo_id3v2                        loaded at 00BC0000h - 00BEE000h
MSVCP60                          loaded at 55900000h - 55961000h
foo_dsp_extra                    loaded at 00BF0000h - 00C05000h
foo_wma                          loaded at 00C10000h - 00C29000h
WMVCore                          loaded at 08530000h - 0872D000h
WMASF                            loaded at 07260000h - 07299000h
foo_vis_bacon                    loaded at 00C30000h - 00C44000h
MSVCR71                          loaded at 7C340000h - 7C396000h
foo_freedb                       loaded at 00C60000h - 00C92000h
foo_winamp_spam                  loaded at 00CA0000h - 00CA8000h
foo_dsp_crossfade                loaded at 00CB0000h - 00CB7000h
foo_dsp_nogaps                   loaded at 00CC0000h - 00CC7000h
foo_tunes                        loaded at 00CD0000h - 00D11000h
gdiplus                          loaded at 70D00000h - 70EA1000h
MSCTF                            loaded at 74720000h - 74764000h
foo_clienc                       loaded at 00E90000h - 00E9B000h
foo_podtranscoder                loaded at 00EA0000h - 00EAA000h
foo_podclienc                    loaded at 00EB0000h - 00EBE000h
msctfime                         loaded at 00ED0000h - 00EFB000h
foo_pod                          loaded at 00F10000h - 00F6F000h
foo_scroll                       loaded at 00F70000h - 00F76000h
Secur32                          loaded at 76F90000h - 76FA0000h
CLBCATQ                          loaded at 7C890000h - 7C911000h
COMRes                           loaded at 77050000h - 77115000h
foo_search_ex                    loaded at 00F80000h - 00F88000h
UxTheme                          loaded at 5AD70000h - 5ADA4000h
appHelp                          loaded at 75F40000h - 75F5F000h
cscui                            loaded at 76620000h - 7666E000h
CSCDLL                           loaded at 76600000h - 7661B000h
Msimtf                           loaded at 746F0000h - 74716000h
msi                              loaded at 01660000h - 01861000h
SXS                              loaded at 75E90000h - 75F37000h
USERENV                          loaded at 75A70000h - 75B15000h
netapi32                         loaded at 71C20000h - 71C6E000h
ntshrui                          loaded at 76990000h - 769B4000h
ATL                              loaded at 76B20000h - 76B35000h
MPR                              loaded at 71B20000h - 71B31000h
drprov                           loaded at 75F60000h - 75F66000h
ntlanman                         loaded at 71C10000h - 71C1D000h
NETUI0                           loaded at 71CD0000h - 71CE6000h
NETUI1                           loaded at 71C90000h - 71CCC000h
NETRAP                           loaded at 71C80000h - 71C86000h
SAMLIB                           loaded at 71BF0000h - 71C01000h
davclnt                          loaded at 75F70000h - 75F79000h
wiashext                         loaded at 5A500000h - 5A58D000h
WININET                          loaded at 63000000h - 63096000h
CRYPT32                          loaded at 762C0000h - 76348000h
MSASN1                           loaded at 762A0000h - 762B0000h
browseui                         loaded at 71500000h - 715FD000h
shdocvw                          loaded at 71700000h - 71849000h
browselc                         loaded at 72430000h - 72442000h
imagehlp                         loaded at 76C90000h - 76CB2000h
DBGHELP                          loaded at 6D510000h - 6D58D000h

Stack dump analysis:
Address: 77C2AC46h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "malloc" (+00000000h)
Address: 77C2AA6Bh, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+00000000h)
Address: 00F14497h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 77C2AA6Bh, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+00000000h)
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F2D12Ch, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F40A8Bh, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F1B136h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 719A8008h, location: "COMCTL32", loaded at 71950000h - 71A34000h
Symbol: "Ordinal384" (+00033316h)
Address: 72FDFE00h, location: "USP10", loaded at 72FA0000h - 72FFA000h
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 72FC4DB7h, location: "USP10", loaded at 72FA0000h - 72FFA000h
Address: 763A11F8h, location: "IMM32", loaded at 76390000h - 763AC000h
Symbol: "CtfImmSetCiceroStartInThread" (+00000312h)
Address: 763A5020h, location: "IMM32", loaded at 76390000h - 763AC000h
Address: 77F944A8h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001BEh)
Address: 00F43B70h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 77F944CBh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlRemoteCall" (+000001E1h)
Address: 77F58BCDh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+0000018Fh)
Address: 77F59037h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+000005F9h)
Address: 00F43310h, location: "foo_pod", loaded at 00F10000h - 00F6F000h
Address: 77F59037h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlFreeHeap" (+000005F9h)
Address: 77D440C6h, location: "USER32", loaded at 77D40000h - 77DCC000h
Symbol: "GetWindowLongW" (+00000034h)
Address: 719A801Fh, location: "COMCTL32", loaded at 71950000h - 71A34000h
Symbol: "Ordinal384" (+0003332Dh)
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)
Address: 77F51C78h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Address: 719A8008h, location: "COMCTL32", loaded at 71950000h - 71A34000h
Symbol: "Ordinal384" (+00033316h)
Address: 77E7A6D4h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "LocalAlloc" (+00000052h)
Address: 77F59BAAh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAcquirePebLock" (+00000028h)
Address: 77F59BB3h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlAcquirePebLock" (+00000031h)
Address: 77F5A32Bh, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "RtlReleasePebLock" (+00000741h)
Address: 77FA88F0h, location: "ntdll", loaded at 77F50000h - 77FF7000h
Symbol: "wcstombs" (+00003409h)

Version info:
foobar2000 v0.8.2
UNICODE


Not sure if it generates the same dump log as the one I posted previously.
Title: foo_pod - Foobar2000 meets the iPod
Post by: DreamweaverN on 2004-07-06 15:47:08
I'm not sure how the iPod works in relation to tags but here goes. Is it in some way possible to get the iPod to read APEv2 tags? Or is everything in a database on the iPod? If that is so does foo_pod read APEv2 tags and put it in the database? I ask because I killed off all my tags (906, dead ) and I thought it would be a good time to make everything right. I've been told that APEv2 is the way to go these days and it has Unicode support which is a big plus for me. These are all for MP3s BTW. As I said, I'm not sure how it all works so I'm asking .
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-06 16:51:30
Quote
I'm not sure how the iPod works in relation to tags but here goes. Is it in some way possible to get the iPod to read APEv2 tags? Or is everything in a database on the iPod? If that is so does foo_pod read APEv2 tags and put it in the database? I ask because I killed off all my tags (906, dead ) and I thought it would be a good time to make everything right. I've been told that APEv2 is the way to go these days and it has Unicode support which is a big plus for me. These are all for MP3s BTW. As I said, I'm not sure how it all works so I'm asking .

The iPod doesn't care about tags. All the info the iPod knows about is in the "database" on the iPod, and you can put anything you like in there, really. foo_pod uses whatever foobar tells it for the various tags, meaning that it'll work with APE tags just fine. Note that if you do this, however, iTunes cannot read APE tags, and so it'll have issues if you try to switch to it later. The main issue being that it won't see any tags on your files at all.
Title: foo_pod - Foobar2000 meets the iPod
Post by: DreamweaverN on 2004-07-06 17:32:35
Aaah, so the only real problem is iTunes? My hunch was correct . I requested APEv2 tag support on the Apple site, but I doubt it will get in. Well, as I plan to use Foobar only this shouldn't pose a problem. Thanks!
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-06 19:39:36
Quote
Aaah, so the only real problem is iTunes? My hunch was correct . I requested APEv2 tag support on the Apple site, but I doubt it will get in. Well, as I plan to use Foobar only this shouldn't pose a problem. Thanks!

You could use the foobar2000 option to write both APEv2 and ID3v1 tags, to support *ahem* legacy players, i.e iTunes.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-06 19:49:33
Quote
Got a crash whenever I attempt to add songs using foo_pod 0.9b.

SNAG - would you please email me (foopod(at)argz.com) your iTunesDB file?  It is located at <ipod_drive>:\iPod_Control\iTunes\iTunesDB.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-06 20:10:28
Quote
Aaah, so the only real problem is iTunes?

Well... Yes and no. The iPod doesn't care about tags, but I have seen some rare cases where a really outstandingly bad ID3v2 tag will prevent iTunes *and* the iPod from playing the file. They'll read them correctly, seemingly, but then just skip over it during playback. The iPod/iTunes seem to handle APE tags fine when I've tried it (essentially just ignoring those tags entirely), and I'm sure many people here use APE tags without problems... but if you ever run across a file that the iPod instantly skips over for no obvious reason, try clearing any and all tags from it and see if that helps.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-06 21:23:27
Quote
The iPod/iTunes seem to handle APE tags fine when I've tried it (essentially just ignoring those tags entirely), and I'm sure many people here use APE tags without problems... but if you ever run across a file that the iPod instantly skips over for no obvious reason, try clearing any and all tags from it and see if that helps.

One reason that the iPod/iTunes might tolerate APE tags is, like ID3v1, they are located at the end of the file.  ID3v2 tags are located at the beginning, and can contain weird stuff like cover art bitmaps.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-07 09:11:40
Edit: Updated to 0.9.1a to fix a crash bug (see below)
Version 0.9.1a (http://www.loodi.com/foo_pod.zip) is now available.

This version brings smart playlist support for 1st and 2nd generation iPods, as well as a few new rules that even iTunes doesn't support.

1st and 2nd generation iPods (iPods with the firewire connector) aren't able to create smart playlists on the fly, like newer iPods.  But thanks to some nifty code from Otto42, foo_pod can build a regular playlist based on the smart playlist rules.  Speaking of smart playlist rules, this version adds some new rules (Does Not Start With, Does Not End With, and Is Not In The Range) that work on the iPod, but for one reason or another, aren't available in iTunes.  Maybe someday, iTunes will catch up to foo_pod...

Also, I tested out the method of adding/removing rules without the +/- buttons mentioned in an earlier post, and I didn't like how it worked.  Sorry, but the +/- buttons stay.  I did remove the empty item in the comboboxes, though.

Edit: 0.9.1a probably fixes SNAG's crash bug - it is triggered by songs with the Composer metadata set, and was introduced in version 0.9.



From the Readme:
Code: [Select]
Version 0.9.1 - July 7, 2004
*  Added Smart Playlist support for 1st and 2nd generation iPods (iPods with the firewire connector).  These iPods don't support dynamic smart playlists like 3rd generation iPods, but foo_pod creates a normal playlist based on the smart playlist rules.

*  Added new smart playlists rules that work on the iPod, but aren't included in iTunes - Does Not Start With,  Does Not End With, and Is Not In The Range.

*  Improved the handling of the playlist listview, so the keyboard as well as the mouse can be used to switch between playlists.

*  Removed empty item in the first column comboboxes.

*  Made the playlist editor a tool style window.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-07 09:15:44
Are there any (potential) foo_pod users running Windows 95/98/ME?

I don't have any of those operating systems, but I understand that foo_pod doesn't run on 16 bit Windows.  I'm not really interested in getting it to work on those operating systems, but if there is enough interest and I get some free time, I might consider it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-07-07 15:07:16
Quote
This version brings smart playlist support for 1st and 2nd generation iPods, as well as a few new rules that even iTunes doesn't support.

I'm very psyched to see this, Aero!  I won't be able to provide any feedback for a few weeks, as I'm off on vacation, but thanks again for the continued development of foo_pod.

btw, I use XP Pro, so no help there either.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-07-07 15:53:18
The latest version works like a charm...

And Aero, sent a copy of my DB to your email.
Title: foo_pod - Foobar2000 meets the iPod
Post by: eido on 2004-07-07 21:09:06
I'm trying to set up a rule in the smart playlist editor for "date added is in the last 2 weeks", but every time I click apply and open the smart playlist editor back up it has changed from 2 weeks to 2 days.  The rule seems to be working correctly though, so I assume it's just a display glitch.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-07 22:38:33
Quote
1st and 2nd generation iPods (iPods with the firewire connector) aren't able to create smart playlists on the fly, like newer iPods.  But thanks to some nifty code from Otto42, foo_pod can build a regular playlist based on the smart playlist rules.  Speaking of smart playlist rules, this version adds some new rules (Does Not Start With, Does Not End With, and Is Not In The Range) that work on the iPod, but for one reason or another, aren't available in iTunes.  Maybe someday, iTunes will catch up to foo_pod...

Just so everybody knows, this method of building the playlists should be identical to the way iTunes does it. But I may have missed something, as it's a medium sized piece of rather annoyingly complicated code to do it.

So anybody with a 1st or 2nd gen iPod, keep a close eye on any smart playlists you create, and if you happen to notice anything "off" about them (on the iPod side), please let us know. This may not be an easy one to spot, as the playlist may simply be populated incorrectly, with songs there that should not be, or vice versa. Still, keep an eye open for it.

The new rules work, BTW, but will likely make iTunes freak out or behave oddly or something. So I would not recommend using these rules if you use iTunes with your iPod. But they work well, best as we can see. There's some other possibilities for rules that are not implemented in iTunes too, and I'll be looking into those. The iPod has a lot of hidden capability.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-07 23:01:40
Quote
I'm trying to set up a rule in the smart playlist editor for "date added is in the last 2 weeks", but every time I click apply and open the smart playlist editor back up it has changed from 2 weeks to 2 days.  The rule seems to be working correctly though, so I assume it's just a display glitch.

Thanks for the bug report.  Yeah, that was just a typo in the initialization code for the days/weeks/months drop down box, so as long as you change it back before you click Apply, everything should be fine. 

I have just fixed the bug and it will be in the next version.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-10 11:25:11
I did a little experimenting with Nero's AAC encoder tonight, and here is a short guide on how to get it to work with foo_pod's transcoder.

Step 0: Buy Nero 6 and install it.  The free demo also works, but you are limited to 50 encodings and a message box pops up before each encoding.

Step 1: Download NAACEnc (http://www.rarewares.org/files/aac/NAACEnc.zip), unzip it, and put NAACEnc.exe in your Foobar2000 directory (where foobar2000.exe is located).

Step 2: Go to the foo_pod Preferences, Transcoder tab, and select "Use Custom Encoder Settings".  Click on the "Configure" button.

Step 3: Change the following settings:
  Encoder: NAACEnc.exe
  Extension: m4a or mp4 (doesn't really matter)
  Parameters: -internet -qf -lc %s %d
  Highest BPS Supported: 16
  Display Name: Nero AAC (Fast Internet AAC-LC)

Step 4: There is no step 4.

You can change the encoding quality by replacing -internet with one of the following (from lowest to highest quality): -tape, -radio, -internet, -streaming, -normal, -extreme, -audiophile, -transcode.  Also, the -qf argument means to use the fast quality setting.  -qh (High quality) doesn't seem to be any slower than -qf, but the bitrates are higher than with -qf.  Display Name can be anything you want, but it is written to the transcoded file as the TRANCODER metadata, so pick something descriptive.

I did some informal tests, and the Nero AAC encoder seemed to produce about the same quality as FAAC 1.24, at a 10kbps lower bitrate.  So it isn't a huge difference, but if you already own Nero 6, it might be worth using instead of FAAC.
Title: foo_pod - Foobar2000 meets the iPod
Post by: triode on 2004-07-10 19:13:33
Areo,

I've just been experimenting with Otto's iTunes scripts (http://www.hydrogenaudio.org/forums/index....showtopic=22391 (http://www.hydrogenaudio.org/forums/index.php?showtopic=22391)) and Foo diskwriter/foo_podclienc to transcode using iTunes (to ACC or Lossless) driven by foobar. 

This is almost giving me a one hop route to import my flac collection into iTunes.  But is giving me error messages if I just import files to iTunes (i.e. don't enable the copying of the converted file back to the destination location expected by foo_podclienc.)

1) Would it be possible to turn off whatever error checking is done in foo_podclienc to create "ERROR (foo_podclienc) : Encoding failed" in the console which interupts the process.

2) Have you considered writing a transcoder which accesses iTunes directly as this gives access to Lossless as well as AAC.  Looking at the documentation for the iTunes interface it appears the functions accessed by Otto's script are also directly accessable from C?

Greate work on foo_pod btw.

Triode
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-10 19:51:04
Quote
2) Have you considered writing a transcoder which accesses iTunes directly as this gives access to Lossless as well as AAC.  Looking at the documentation for the iTunes interface it appears the functions accessed by Otto's script are also directly accessable from C?
[a href="index.php?act=findpost&pid=224727"][{POST_SNAPBACK}][/a]

It would be pretty easy to write an EXE to use the COM interface of iTunes to convert files into whatever format you want, of course. If this is needed I can create it pretty fast, if someone wants it. The script method was just simpler.

But foobar doesn't actually support Apple Lossless, does it? I mean, if you had an ALE file then foobar wouldn't be able to read it or play it, right? Would it work with foo_pod in that case?
Title: foo_pod - Foobar2000 meets the iPod
Post by: triode on 2004-07-10 20:19:30
Hi Otto,

I can't make up my mind whether to convert from Flac to Apple lossless.  At present I think Flac is probably safer as my main archive.  Hence I see two applications:

1) Bulk conversion of Flac (or other format) into iTunes as ACC/Apple lossless (not my primary application, as I am not yet converted to iTunes!) 

2) On the fly transcoding to Apple lossless for download to iPod via Foo_pod.  This is probably my favourite as I stick with Foo_pod and Flac on the PC. 

The scipt works well for 1, except for the error checking done by foo_podclienc (as I have turned off the copy of the file back at the end)

I do have a problem with the script when file copying is enabled as I can't seem to stop my virus checker (McAfee) complaining every time!  Hence a com/exe solution would probably help here (ideally with the option to do ACC or Lossless).

Triode
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-10 20:35:48
Quote
1) Would it be possible to turn off whatever error checking is done in foo_podclienc to create "ERROR (foo_podclienc) : Encoding failed" in the console which interupts the process.

Possible, but the check is there on purpose to catch real encoding errors, and it removes the song from the iPod database, so you don't have dead entries on the iPod.  I haven't tried it, but it could be that the encoding error is due to the script returning the "wrong" return value.

Quote
2) Have you considered writing a transcoder which accesses iTunes directly as this gives access to Lossless as well as AAC.  Looking at the documentation for the iTunes interface it appears the functions accessed by Otto's script are also directly accessable from C?

I hadn't considered it, but it is an interesting idea.  Personally, I wouldn't use lossless encoding on the iPod, since I can get transparent quality with MP3 and/or AAC at much lower bitrates.  Using the iTunes AAC encoder might be worthwhile, though, since it is free (as in beer) unlike Nero and is supposedly better than FAAC at the same bitrate.

As far as I can tell, Otto's script should work in foo_pod as a custom encoder - I'll test it later tonight and see if I can see why it isn't working.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-10 20:42:22
Quote
But foobar doesn't actually support Apple Lossless, does it? I mean, if you had an ALE file then foobar wouldn't be able to read it or play it, right? Would it work with foo_pod in that case?
[a href="index.php?act=findpost&pid=224732"][{POST_SNAPBACK}][/a]

That is correct - Foobar doesn't play or understand Apple Lossless encoded files, so foo_pod won't do anything with them.  I think triode's point is that he can take files the Foobar does play (like FLAC) and use the iTunes encoder to write either AAC or ALE encoded songs to the iPod.  That should work fine, although there might be some hidden complication that is causing it to fail.
Title: foo_pod - Foobar2000 meets the iPod
Post by: triode on 2004-07-10 21:09:18
Quote
As far as I can tell, Otto's script should work in foo_pod as a custom encoder - I'll test it later tonight and see if I can see why it isn't working.

Just to clarify - it works, but because I have turned off the file copy at the end of the script, foo_podclienc creates the error message.  I think it is just looking to see if the correct file is produced (which it isn't as I have dissabled this due to my virus checker).

The scipt + foo_podclienc works fine appart from this and my PC is busy transcoding a few hundred flacs at present.  NB this is importing them to iTunes not really foo_pod, but it is a very worthwhile side effect of the code.  Thanks to you and Otto.

Triode
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-11 03:19:28
Quote
I do have a problem with the script when file copying is enabled as I can't seem to stop my virus checker (McAfee) complaining every time!  Hence a com/exe solution would probably help here (ideally with the option to do ACC or Lossless).
[a href="index.php?act=findpost&pid=224735"][{POST_SNAPBACK}][/a]

Well, if that's the only real problem, then I'll see what I can do to make an EXE version of the script. Should be simple enough, really. Probably easier than writing the script was, because I don't know javascript too well.

Kinda sucks that McAffe has no way to turn that off though.. Norton complains too, but I tell it to "Authorize this script" and it stops complaining for that script and that script only. Until I modify the script, at which point it complains again.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-07-11 03:28:55
Quote
Quote
2) Have you considered writing a transcoder which accesses iTunes directly as this gives access to Lossless as well as AAC.   Looking at the documentation for the iTunes interface it appears the functions accessed by Otto's script are also directly accessable from C?
[a href="index.php?act=findpost&pid=224727"][{POST_SNAPBACK}][/a]

It would be pretty easy to write an EXE to use the COM interface of iTunes to convert files into whatever format you want, of course. If this is needed I can create it pretty fast, if someone wants it. The script method was just simpler.

But foobar doesn't actually support Apple Lossless, does it? I mean, if you had an ALE file then foobar wouldn't be able to read it or play it, right? Would it work with foo_pod in that case?
[a href="index.php?act=findpost&pid=224732"][{POST_SNAPBACK}][/a]


So this would allow the use of iTunes's encoder from within foobar?  That'd be pretty handy.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-11 04:30:14
Quote
So this would allow the use of iTunes's encoder from within foobar?  That'd be pretty handy.
[a href="index.php?act=findpost&pid=224797"][{POST_SNAPBACK}][/a]

Umm, sure. I guess. I don't exactly know how foobar works with that sort of thing. But it's just a command line program, sort of thing. Should work with most anything.

I'm working on it now, will have it within an hour or two, no trouble. All it does is to take some parameters, then call iTunes to do the actual work. Simple enough.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-11 05:11:48
Oops. Sorry. Posted twice somehow.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-11 05:28:33
Quote
Quote
So this would allow the use of iTunes's encoder from within foobar?  That'd be pretty handy.
[a href="index.php?act=findpost&pid=224797"][{POST_SNAPBACK}][/a]

Umm, sure. I guess. I don't exactly know how foobar works with that sort of thing. But it's just a command line program, sort of thing. Should work with most anything.

I'm working on it now, will have it within an hour or two, no trouble. All it does is to take some parameters, then call iTunes to do the actual work. Simple enough.
[a href="index.php?act=findpost&pid=224803"][{POST_SNAPBACK}][/a]

What Mike means is that instead of using LAME, FAAC, or NeroAAC as the encoder used by foo_pod when transcoding, it is now also possible to use iTunes' encoders.

Basically, this adds the ability to transcode to Apple's Lossless Format (so FLAC/APE/Shorten users can keep their music unmolested on the iPod, without have to resort to WAV or AIFF), as well as a high quality AAC encoder for free.  The downside is that iTunes' COM interface doesn't appear to allow setting the encoder settings, so you have to use iTunes to configure the encoder or accept the default values.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-11 08:01:21
Quote
What Mike means is that instead of using LAME, FAAC, or NeroAAC as the encoder used by foo_pod when transcoding, it is now also possible to use iTunes' encoders.

Basically, this adds the ability to transcode to Apple's Lossless Format (so FLAC/APE/Shorten users can keep their music unmolested on the iPod, without have to resort to WAV or AIFF), as well as a high quality AAC encoder for free.  The downside is that iTunes' COM interface doesn't appear to allow setting the encoder settings, so you have to use iTunes to configure the encoder or accept the default values.
[{POST_SNAPBACK}][/a] (http://index.php?act=findpost&pid=224810")

Ah. I see now. Okay. I was just confused before.

Anyway, I'm done. Took me a couple extra hours to figure out weirdness with regard to how to convert between two similar COM interfaces. But then i'd never programmed COM stuff in C++ before, so I learned something new.

Here you go: [a href="http://otto.homedns.org:8888/iTunes/iTunesEncode.zip]http://otto.homedns.org:8888/iTunes/iTunesEncode.zip[/url]

Feel free to mirror a copy somewhere else if you like (rarewares?), as my connection may go up and down, being on cable and such.

Anyway, the command line options for this EXE version are similar to the script version, but different, so you may want to read the readme file first.

Enjoy!
Title: foo_pod - Foobar2000 meets the iPod
Post by: triode on 2004-07-11 18:24:25
Thanks Otto,

Works well and doesn't annoy the virus checker.  (I found that you can totally dissable script checking with Mcafee, but not authorise a specific script  )

Triode
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-11 20:25:03
Quote
Works well and doesn't annoy the virus checker.  (I found that you can totally dissable script checking with Mcafee, but not authorise a specific script   )
[a href="index.php?act=findpost&pid=224934"][{POST_SNAPBACK}][/a]

May want to grab another copy, I found out that the -d option didn't work properly (it left a copy of the file hanging around). That's now fixed.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-13 08:45:22
As I was rushing to load up some songs on my iPod this morning, I realized that I spend a lot more time wiping and reloading my iPod than enjoying it.  So I was wondering - does anyone have an iPod with a dead battery, upgraded to a larger iPod, or whatever, and would be willing to sell it?

It isn't a big deal, but it would help foo_pod development a bit. (I'll have a new version ready to post as soon as a 17 hour transfer/transcoding session completes...  )
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-13 14:45:47
Why not get the iPod the way you want it and then back it up to the hard drive? A simple copy of the iPod_Control folder would back up all the music and database and everything else. Then you could restore that to the iPod after you were done messing with it. Seems like it'd be a heck of a lot faster than transcoding anyway, at the cost of some hard drive space, I grant you. Of course, I recently bought a 200 gig firewire drive, so I'm kind of space happy right now.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-13 17:03:08
Quote
Why not get the iPod the way you want it and then back it up to the hard drive? A simple copy of the iPod_Control folder would back up all the music and database and everything else. Then you could restore that to the iPod after you were done messing with it. Seems like it'd be a heck of a lot faster than transcoding anyway, at the cost of some hard drive space, I grant you. Of course, I recently bought a 200 gig firewire drive, so I'm kind of space happy right now.
[a href="index.php?act=findpost&pid=225555"][{POST_SNAPBACK}][/a]

Obviously, if you have enough free disk space, backing up the iPod is simple.  But the iPod disk/interface is fairly slow (around 10MB/sec), so a complete backup can take over an hour to copy it off and another hour to copy it back.  Certainly better than retranscoding, though.  Like I said, it isn't a big deal...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-13 22:22:01
Quote
Obviously, if you have enough free disk space, backing up the iPod is simple.  But the iPod disk/interface is fairly slow (around 10MB/sec), so a complete backup can take over an hour to copy it off and another hour to copy it back.  Certainly better than retranscoding, though.  Like I said, it isn't a big deal...
[a href="index.php?act=findpost&pid=225599"][{POST_SNAPBACK}][/a]

Hmm.. Assuming you don't fully erase the iPod with every test, you could use something like rsync to undo the changes made, as long as you have a complete copy of what you want the drive to look like. That'd certainly be faster than erasing and recopying the whole thing back, because it could copy back only the files that were modified in your testing. But yes, the drive space would still be needed to keep a copy around.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-14 10:05:49
Version 0.9.2 (http://www.loodi.com/foo_pod.zip) is now available.

This version fixes the display bug noted by eido, and added the Playlist smart playlist rule.  This isn't completely tested, so please report any problems or inconsistances.  There are also new units (minutes, hours, and years) that are available for In The Last smart playlist rules, and not supported by iTunes.

There is also a new option that will hide the Foobar2000 window during file transfers to the iPod.  This is particularly useful for long transfers, such as when doing a lot of transcoding. 


From the Readme:
Code: [Select]
Version 0.9.2 - July 14, 2004
*  Fixed a bug in the smart playlist editor which caused the date unit to initialized to Days, even though the correct value was stored in the iPod database.

*  Added support for the Playlist smart playlist rule type.  Note that Playlist (and Grouping) are slightly buggy in iPod firmware versions 2.2 and earlier, so there may be problems with the workaround required.

*  Added "minutes", "hours", and "years" units for "In The Last" smart playlist rules.  These are not available in iTunes.

*  Changed the default custom encoder to settings that work with NAACEnc/NeroAAC.

*  Improved the performance when using using custom transcoders that require a temporary file (such as NAACEnc).

*  Added an option (enabled by default) to hide the Foobar2000 window during file transfers to the iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: burriko on 2004-07-15 13:03:08
I just want to add a thank you for writing such a fantastic plugin, it's pretty much transformed the way i use my iPod now that i can do everything from within foobar2k.
I do have a couple of small suggestions too.  Would it be possible for the foo_pod playlist name to be the same as the iPod's name?  And would it be possible for the foo_pod playlist to automatically be created when the iPod is plugged in?  Basically so that when i plug in my iPod the playlist 'Graeme's iPod' would automatically be created.

Thanks.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-15 21:50:32
Quote
I just want to add a thank you for writing such a fantastic plugin, it's pretty much transformed the way i use my iPod now that i can do everything from within foobar2k.
I do have a couple of small suggestions too.  Would it be possible for the foo_pod playlist name to be the same as the iPod's name?  And would it be possible for the foo_pod playlist to automatically be created when the iPod is plugged in?  Basically so that when i plug in my iPod the playlist 'Graeme's iPod' would automatically be created.

Those are both good ideas!

The only problem I can see with using the iPod's name as the playlist name is that it might already be in use (i.e. it is unlikely, but you might already have a "Graeme's iPod" playlist open).  In that case, I guess foo_pod would have to replace the existing playlist with the contents of the iPod.

Also, adding the playlist when the iPod is connected also implies that the playlist would be removed when the iPod is ejected.   

In foo_pod, I would keep the current preferences for the playlist name and the automatically update checkbox, so the behavior could be overridden.  I'll see about adding this to the next foo_pod release.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-16 04:29:31
Another ramification of doing the on connect thing is that you have to be running the iPod service (which I, personally, disabled due to current uselessness).
But if you do end up creating it, be sure to add a corresponding listener to pod.h. That would be awesome for personalized fast syncing, even if I'll have to re-enable the iPod service and waste like a bunch of RAM. Maybe you can make a third party, lean iPod service and maybe make it all powerful with awesome features that the iPod firmware supports but Apple refuses to make public? (like you did with smart playlists) Okay maybe I'm just making up stuff that aren't at all feasible... but are they? Cause that would be hella awesome.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-16 05:44:58
Quote
Another ramification of doing the on connect thing is that you have to be running the iPod service (which I, personally, disabled due to current uselessness).
But if you do end up creating it, be sure to add a corresponding listener to pod.h. That would be awesome for personalized fast syncing, even if I'll have to re-enable the iPod service and waste like a bunch of RAM. Maybe you can make a third party, lean iPod service and maybe make it all powerful with awesome features that the iPod firmware supports but Apple refuses to make public? (like you did with smart playlists) Okay maybe I'm just making up stuff that aren't at all feasible... but are they? Cause that would be hella awesome.
[a href="index.php?act=findpost&pid=226419"][{POST_SNAPBACK}][/a]

Nope - I can just detect when the iPod hardware is connected - no iPodService required. 

As far duplicating iPodService, that would require a lot of low level reverse engineering.  Although as I was thinking about your post, I thought about the "waste a bunch of RAM" part, and thought of a new feature.  I could add an option to shutdown the iPodService (if present) when Foobar exits.  Also kill iTunesHelper all of the time, since it doesn't seem to do anything useful.  Its purpose is unknown, but I believe it has something to the initial iPod user registration.  It seems to collect user supplied data (like iPod Serial Number and the user's name, zip code, and occupation?!?) and sends it to "littlebuddy.apple.com". 
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-16 07:18:53
littlebuddy.apple.com?! That's a funky hostname. Haha. Anyway, managing the iPod service like that sounds like a good idea... but... err... what are the benefits of running it anyway? I can still have a unique name for my iPod and have it in disk mode without the iPod service... is there anything else?
And iTunesHelper can easily be killed through startup tweaking so that's not an issue, but you might wanna have a button like "Remove iTunesHelper from startup" that will simply remove its startup entry.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-16 08:52:44
Quote
littlebuddy.apple.com?! That's a funky hostname. Haha. Anyway, managing the iPod service like that sounds like a good idea... but... err... what are the benefits of running it anyway? I can still have a unique name for my iPod and have it in disk mode without the iPod service... is there anything else?
And iTunesHelper can easily be killed through startup tweaking so that's not an issue, but you might wanna have a button like "Remove iTunesHelper from startup" that will simply remove its startup entry.
[a href="index.php?act=findpost&pid=226444"][{POST_SNAPBACK}][/a]

There aren't many benefits, but the main ones are being able to get the iPod name (for the playlist naming thing), and being able to do a soft eject (which means you can mount it again without having to undock the iPod). 

BTW, one problem I have discovered with stopping the iPodService is that it takes upto a minute after starting it again before it recognizes any connected iPods.  It must detect iPods when they are connected, as well as a via a timer set to go off once a minute.  So I'll keep the feature in there, but it probably best not to use it .

Also, iTunesHelper might be part of Windows startup, but I also believe iTunes (or possibly iPodService) also starts it.  Stopping iPodService also closed iTunesHelper, so they are somewhat related.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-16 15:18:49
Is there no function in the service's API to force it to look for an iPod, ignoring the timer?
And your experience with iTunesHelper seems to contradict my experience: I had the iPod service running just fine with iTunesHelper never ever running and off the startup list.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-16 21:46:56
Quote
Is there no function in the service's API to force it to look for an iPod, ignoring the timer?
Not that I'm aware of.

Quote
And your experience with iTunesHelper seems to contradict my experience: I had the iPod service running just fine with iTunesHelper never ever running and off the startup list.
[{POST_SNAPBACK}][/a] (http://index.php?act=findpost&pid=226514")

I'm not certain on how and when iTunesHelper is started, but I know in my case, it not started by Windows (the excellent [a href="http://www.sysinternals.com/ntw2k/freeware/autoruns.shtml]Autoruns[/url] utility verifies this), yet sometimes it is running after I exit iTunes.  So either iTunes or iPodService is starting it, and since closing iPodService also caused iTunesHelper to exit, there seems to be some connection there.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Espique on 2004-07-17 00:42:45
Hello,

thanks for foo_pod. It replaced all my other pod software! I have a couple of questions but first of all I have a suggestion: This forum thread is getting HUGE! and thus, it is getting unclear and very cluttered. Makes it hard for occasional visitors who just seeks  basic foo_pod information oto actually find any.

Since the thread is huge I suppose the interest in the plugin is huge. Why not create a sub-forum here so the thread can be split up into different topics? A website or at least a sticky post containing FAQs and the likes would also be very helpful...

I'd be willing to help, too.

Sascha
Title: foo_pod - Foobar2000 meets the iPod
Post by: Espique on 2004-07-17 00:58:57
Question:

As I understand foo_pod, you manage the iPod songs through the foobar ipod playlist. How do you create custom playlists for files that are already on the pod? Say I have 5 albums of one artist on the pod and now I want to create a favorites playlist that displays under the iPod's playlist menu item. How?

Also, what's the difference between "send files to Ipod" and "Sync Playlist"?

And next: Are smart playlists automatically updated when plugging the pod in?

Thanks,
Sascha
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-17 02:14:48
Quote
thanks for foo_pod. It replaced all my other pod software! I have a couple of questions but first of all I have a suggestion: This forum thread is getting HUGE! and thus, it is getting unclear and very cluttered. Makes it hard for occasional visitors who just seeks  basic foo_pod information oto actually find any.

Since the thread is huge I suppose the interest in the plugin is huge. Why not create a sub-forum here so the thread can be split up into different topics? A website or at least a sticky post containing FAQs and the likes would also be very helpful...
[a href="index.php?act=findpost&pid=226613"][{POST_SNAPBACK}][/a]

Getting cluttered and unclear?  I thought the foo_pod forum was always cluttered and unclear! 

But you do have a point - documentation for foo_pod is basically non-existant.  I've already had an offer to help write documentation, but I have been negligent in providing information, so far, since foo_pod is still adding major features such as the smart playlist editor. 

Version 1.0 will need to have some sort of documentation and a FAQ, as well as a simple installer.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-17 02:20:23
Quote
As I understand foo_pod, you manage the iPod songs through the foobar ipod playlist. How do you create custom playlists for files that are already on the pod? Say I have 5 albums of one artist on the pod and now I want to create a favorites playlist that displays under the iPod's playlist menu item. How?

If you create Foobar playlists with the same songs that are already on the iPod, foo_pod will create the playlist but not copy the duplicate songs.  Creating a smart playlist is also another solution.

Quote
Also, what's the difference between "send files to Ipod" and "Sync Playlist"?

Send means copy the selected files to the iPod, unless they are already there.  Sync Playlist means add and/or delete songs from the iPod so that it matches the Foobar playlist or playlists. 

Quote
And next: Are smart playlists automatically updated when plugging the pod in?

Currently, nothing happens automatically when the iPod is plugged in.  The smart playlists are updated when you click Apply in the smart playlist editor, or when you add songs to the iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-07-18 03:41:18
Just to OT a little:
The 4G iPod has been exposed on the upcoming issue of Newsweek. Specifications are uncertain though.

http://www.thinksecret.com/cgi-bin/pic.cgi...jpg&p=newipods2 (http://www.thinksecret.com/cgi-bin/pic.cgi?i=/archives/newsweeklarge.jpg&p=newipods2)

From the first impressions of it, I think I still prefer the 3G design...
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-07-18 05:17:00
I agree with SNAG.  I see the difference between the 3G and 4G to be about the same as the difference between the 1G and 2G.  Some minor cosmetic differences, minor size differences and a change in the controls.  I think I would just as soon wait for a 5G to upgrade.  I think the biggest difference would be in the processor.  I think I read that the processor that the mini uses fixes a flaw in the cache (or something) making the possibility of playing OGG more of a reality than before.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-18 05:43:01
Quote
Just to OT a little:
The 4G iPod has been exposed on the upcoming issue of Newsweek. Specifications are uncertain though.

http://www.thinksecret.com/cgi-bin/pic.cgi...jpg&p=newipods2 (http://www.thinksecret.com/cgi-bin/pic.cgi?i=/archives/newsweeklarge.jpg&p=newipods2)

From the first impressions of it, I think I still prefer the 3G design...

Yeah, although the 4G iPod looks to be a little shorter than previous versions, it doesn't seem that much shorter to justify removing the buttons.  One thing that struck me is the "Music" menu item - as if actually playing music is just another feature now rather than the main focus.  OTOH, maybe they just renamed "Playlists"... 

Hopefully there will be updated firmware for 3G and earlier iPods as well, but I'm not holding my breath.  Like Pete Townsend said, "I got to move with the fashion, or be outcast.".
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-07-18 14:41:52
Quote
Quote
Also, what's the difference between "send files to Ipod" and "Sync Playlist"?

Send means copy the selected files to the iPod, unless they are already there.  Sync Playlist means add and/or delete songs from the iPod so that it matches the Foobar playlist or playlists. 


Unless there's been a code change recently, you need to understand that "sync" will remove everything from your iPod except what you're syncing.  So, if you're syncing only one playlist, but you used to have multiple playlists on your iPod, they will all be removed, and the synced one will remain (including changes to that playlist if it already existed on the iPod.

I don't believe there is yet a way to update the contents of a single playlist, as send just adds songs, doesn't remove.  (For example, if you had a playlists of Beatle albums, and you decided you needed to take "Let It Be...Naked" out of rotation.)  Then again, I could be wrong.

Also, I believe just sending files by right-clicking a group of songs (as opposed to sending a playlist) will add the songs to your iPod, but it won't associate them to a specific playlist (but of course, if they're properly tagged, you shouldn't have any issues finding them by artist/album/song.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-19 01:08:11
I was just syncing all playlists with my iPod, which was almost completely filled with documents I store there for work, and I ran out of diskspace halfway through. So i moved some work files from the iPod to the hard drive and restarted the Sync all playlists. foo_pod figured everything out, didn't delete anything more and just copied all the files over that it should.

However, and I am not sure if this is foo_pod's fault... When I look in iPod_Control\Music, I see that folders F00-F19 have the hidden attribute, while F20-F49 do not. Is this done on purpose or not?

Edit:
Oh, and foo_pod also created my playlist named Radio (which contains some radio station HTTP streams) even though I selected to ignore it by right-clicking the playlist tab. It doesn't contain any entries, it is just a blank Radio playlist on the iPod.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-19 05:01:34
Quote
However, and I am not sure if this is foo_pod's fault... When I look in iPod_Control\Music, I see that folders F00-F19 have the hidden attribute, while F20-F49 do not. Is this done on purpose or not?

iTunes creates the Fnn directories with the hidden attribute, but foo_pod doesn't. 

What happened is that you had F00 - F19 that were created by iTunes (or when you first formatted your iPod), and when you updated your iPod, foo_pod created F20 - F49.  Originally, iTunes (and foo_pod) only created F00 - F19, but as of the latest iTunes, it now creates F00 through F49.  So I changed foo_pod to also create F00 - F49 - the more directories, the less likely there will be filename conflicts.

Quote
Edit:
Oh, and foo_pod also created my playlist named Radio (which contains some radio station HTTP streams) even though I selected to ignore it by right-clicking the playlist tab. It doesn't contain any entries, it is just a blank Radio playlist on the iPod.

Are you sure you ignored the Radio playlist?  You can't right click on a tab and have that playlist be ignored - what you need to do is select the playlist first, then right click to ignore it.  If you select the Radio playlist, and it is already ignored, then there is a foo_pod bug.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-19 10:17:17
Quote
Quote
However, and I am not sure if this is foo_pod's fault... When I look in iPod_Control\Music, I see that folders F00-F19 have the hidden attribute, while F20-F49 do not. Is this done on purpose or not?

iTunes creates the Fnn directories with the hidden attribute, but foo_pod doesn't. 

What happened is that you had F00 - F19 that were created by iTunes (or when you first formatted your iPod), and when you updated your iPod, foo_pod created F20 - F49.  Originally, iTunes (and foo_pod) only created F00 - F19, but as of the latest iTunes, it now creates F00 through F49.  So I changed foo_pod to also create F00 - F49 - the more directories, the less likely there will be filename conflicts.

I have never used iTunes, but wouldn't it be better for foo_pod to have the option of emulating iTunes more closely - i.e An option for setting the maximum amount of FXX directories, and having them all hidden?

Quote
Quote
Edit:
Oh, and foo_pod also created my playlist named Radio (which contains some radio station HTTP streams) even though I selected to ignore it by right-clicking the playlist tab. It doesn't contain any entries, it is just a blank Radio playlist on the iPod.

Are you sure you ignored the Radio playlist?  You can't right click on a tab and have that playlist be ignored - what you need to do is select the playlist first, then right click to ignore it.  If you select the Radio playlist, and it is already ignored, then there is a foo_pod bug.
[a href="index.php?act=findpost&pid=227084"][{POST_SNAPBACK}][/a]

I am very sure that I ignored it properly. However, I will attempt to reproduce this playlist-creation tonight.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-19 10:35:26
Quote
I have never used iTunes, but wouldn't it be better for foo_pod to have the option of emulating iTunes more closely - i.e An option for setting the maximum amount of FXX directories, and having them all hidden?
[a href="index.php?act=findpost&pid=227145"][{POST_SNAPBACK}][/a]

Doesn't really matter that much, in this particular case. iTunes can cope with whatever foo_pod does in that respect. The iPod doesn't care whether the directories are hidden or not, iTunes will make them hidden if you happen to use it (or maybe not, either way, it's unimportant). And older iTunes versions can cope with the extra amount of directories. So really, this is kind of a moot point.

The real reason for the extra directories isn't due to filename conflicts (although that is a potential possibility), but due to the way the iPod reads directory structures. When it's going through a FAT32 filesystem, and it wants to load up a song, it has to read the directory structure in order until it finds the file it's looking for. All systems reading FAT32 must do this, actually. With the iPod, it causes a problem because it'll starve the decoder while looking for the file if the number of files in the directories get too large, and this causes issues like songs getting skipped over and such. Anyway, more directories = faster lookups on songs, and as they increase the size of iPod drives, this becomes pretty crucial. I'm somewhat surprised that they didn't push it up to F99 already.

But the iPod itself doesn't care what the directories are. You could call them G## or name them after the planets or the stars in the sky or cartoon characters. Whatever, it's just looking up the file's location in the database and passing it along. iTunes uses F## directories, which is why you want to stick to that for compatibility reasons. But there's no need to go overboard in the fiddly unimportant bits. There's enough other important fiddly bits to keep the programmer occupied for the moment.

If you didn't care about maintaining iTunes compatibility, it might be simplest and best to simply arrange the tracks in an artist/album/tracknum_songname.ext method. This would provide for fast enough lookups in most all cases I can come up with, while making it easier to find files on the iPod directly if you wanted to copy them back off the thing.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-19 13:34:26
So it is more a question of "why not do it?" than "why do it?"...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-19 14:59:55
Quote
So it is more a question of "why not do it?" than "why do it?"...
[a href="index.php?act=findpost&pid=227190"][{POST_SNAPBACK}][/a]

Not really. It's more a question of seeing that it's compatible enough as is, and not bothering to worry about the unimportant minor details that don't really matter anyway.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-19 16:12:21
Nope: http://www.apple.com/ipod/download/ (http://www.apple.com/ipod/download/)
The new firmware only updates the new iPods with all the neat stuff, but I can really live without all those features and the reduction in dimensions isn't that significant, nevertheless desirable.
I wonder if the iPod database interface Otto created will need updating to work with the new iPod. How was it when the mini was released?
Title: foo_pod - Foobar2000 meets the iPod
Post by: rufu on 2004-07-19 16:50:15
Quote
Nope: http://www.apple.com/ipod/download/ (http://www.apple.com/ipod/download/)
The new firmware only updates the new iPods with all the neat stuff, but I can really live without all those features and the reduction in dimensions isn't that significant, nevertheless desirable.
I wonder if the iPod database interface Otto created will need updating to work with the new iPod. How was it when the mini was released?
[a href="index.php?act=findpost&pid=227228"][{POST_SNAPBACK}][/a]


Since they haven't had to release a update to iTunes to handle the new iPods I would assume that nothing has changed in terms of the interface with the iPod database.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-19 20:43:35
Quote
I wonder if the iPod database interface Otto created will need updating to work with the new iPod. How was it when the mini was released?
[a href="index.php?act=findpost&pid=227228"][{POST_SNAPBACK}][/a]

I made no changes specifically to support the mini. And as far as I can tell, iTunes, which creates the databases, creates the same kind every time, regardless of what kind it's connected to. So far, anyway.

The multiple OTGPlaylist support will require changes to foo_pod, but I'm betting that it's just using multiple OTGPlaylist files and so should be relatively easy. But, no way to tell until somebody gets ahold of a 3.0 iPod and lets us know. Annoyingly, multi-OTGplaylists and deleting from OTGPlaylists should be software only and thus they could probably add these to the 3rd gen iPods.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rufu on 2004-07-19 21:00:53
Quote
Quote
I wonder if the iPod database interface Otto created will need updating to work with the new iPod. How was it when the mini was released?
[a href="index.php?act=findpost&pid=227228"][{POST_SNAPBACK}][/a]

I made no changes specifically to support the mini. And as far as I can tell, iTunes, which creates the databases, creates the same kind every time, regardless of what kind it's connected to. So far, anyway.

The multiple OTGPlaylist support will require changes to foo_pod, but I'm betting that it's just using multiple OTGPlaylist files and so should be relatively easy. But, no way to tell until somebody gets ahold of a 3.0 iPod and lets us know. Annoyingly, multi-OTGplaylists and deleting from OTGPlaylists should be software only and thus they could probably add these to the 3rd gen iPods.
[a href="index.php?act=findpost&pid=227297"][{POST_SNAPBACK}][/a]


I know, I was hoping that Apple would have release a firmware upgrade for the 3G iPods to give them some (if not all) of the new software features of the 4G 
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-19 21:02:42
Yes; most of the 4G improvements are firmware based. I wonder if the iPod Updater can be hacked and forced to install version 3.0 on 3G iPods... will be interesting.
I'm not much of a hacker/cracker, but I'll see what I can discover about how the updater makes the decision of which version to install on the mounted iPod. Maybe you, Otto, may have a better chance at figuring this one out.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-19 21:43:54
Quote
Quote
I wonder if the iPod database interface Otto created will need updating to work with the new iPod. How was it when the mini was released?
[a href="index.php?act=findpost&pid=227228"][{POST_SNAPBACK}][/a]

I made no changes specifically to support the mini. And as far as I can tell, iTunes, which creates the databases, creates the same kind every time, regardless of what kind it's connected to. So far, anyway.

The multiple OTGPlaylist support will require changes to foo_pod, but I'm betting that it's just using multiple OTGPlaylist files and so should be relatively easy. But, no way to tell until somebody gets ahold of a 3.0 iPod and lets us know. Annoyingly, multi-OTGplaylists and deleting from OTGPlaylists should be software only and thus they could probably add these to the 3rd gen iPods.
[a href="index.php?act=findpost&pid=227297"][{POST_SNAPBACK}][/a]



The iPod's filesystem supports deleting them just fine, as proven by the iPod Linux Project, so it's just Apple's annoying marketing scheme. Maybe someone will hack the firmware patch, or someone will emulate the iPod's menu/player system on iPod Linux.

Just like ye ol' battle between Windows and Linux, though without the firmware bit.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-19 22:44:00
Quote
Yes; most of the 4G improvements are firmware based. I wonder if the iPod Updater can be hacked and forced to install version 3.0 on 3G iPods... will be interesting.
I'm not much of a hacker/cracker, but I'll see what I can discover about how the updater makes the decision of which version to install on the mounted iPod. Maybe you, Otto, may have a better chance at figuring this one out.
[a href="index.php?act=findpost&pid=227302"][{POST_SNAPBACK}][/a]

Getting it on there is easy. Filling it with illegal drugs and sending it across the border is not.

Err.. I mean, that getting the firmware onto the device is not difficult to do, it's whether it'll run or not that's the big question. It may simply not be compatible. However, I'm betting that they will incorporate some of these new features into the older 3G iPod's. I'd say to give them some time. Some of the features added into 3rd gen iPod's made it down into 1st/2nd gen iPods too, as they released new firmwares for both simultaneously. The only time they've shown not to add new features is when the older hardware was not capable of supporting it, like in the case of the auto-updating smart playlists (older iPods are simply not fast enough to do this in a reasonable amount of time given the current DB format and such, and they may lack the memory to do it well also).
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-19 23:42:54
Quote
Err.. I mean, that getting the firmware onto the device is not difficult to do, it's whether it'll run or not that's the big question. It may simply not be compatible. However, I'm betting that they will incorporate some of these new features into the older 3G iPod's. I'd say to give them some time. Some of the features added into 3rd gen iPod's made it down into 1st/2nd gen iPods too, as they released new firmwares for both simultaneously. The only time they've shown not to add new features is when the older hardware was not capable of supporting it, like in the case of the auto-updating smart playlists (older iPods are simply not fast enough to do this in a reasonable amount of time given the current DB format and such, and they may lack the memory to do it well also).

It is my understanding that the 4G iPods use the same CPU(s) as the iPod Mini (PortalPlayer 5020 (http://arm.convergencepromotions.com/catalog/507.htm)), while all previous iPods use a variant of the PP5002 (same CPUs as the 5020, but different support hardware), so forcing the 4G firmware onto a 3G iPod likely will not work. 

I'm sure Apple could have made dynamic smart playlists work on 1G/2G iPod, but like OTG playlists, it was a defining feature that set the 3G iPods apart.  That's also why multiple OTG playlists, the new menu structure, and the shuffle songs feature will likely never be available on 3G iPods, even though it istechnically possible.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-07-20 04:45:45
Well, it seems that to trick the iPod Updater all it takes is some really simple ResHack-ing, swaping some resources and editing some strings. I didn't try it though in fear of permanent damage to the iPod. Later, I was over at iPodlounge and someone, on OSX, decided to dare and try it and he says it just brings up a disk scanner error message on the iPod so he regressed back to 2.2... too bad, I guess. Maybe some hexing of the actual firmware and not just the updater can make it work on the 3G? Hmmm... I wonder if it's actually worth the bother... maybe the improved battery life is.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ezekiel2517 on 2004-07-24 03:50:35
Ipod g4 owner here. Just wanted to report that foo_pod seems to be working fine.

This is my first iPod, so I'm not experienced enough with either the iPod or foo_pod to be able to tell if everything is working 100% correctly, but so far so good.

Thanks for this great plug-in!
Title: foo_pod - Foobar2000 meets the iPod
Post by: fhjlx on 2004-07-24 04:48:31
I use ml_iPod and foo_pod too with my 3g 15gig iPod and I've found that while the smart playlists in foo_pod work, they mysteriously stop working after i edit the itunesdb with ml_iPod. Is there a particular reason for this? I like both plugins and would like to continue using both.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-24 06:02:51
Quote
I use ml_iPod and foo_pod too with my 3g 15gig iPod and I've found that while the smart playlists in foo_pod work, they mysteriously stop working after i edit the itunesdb with ml_iPod. Is there a particular reason for this? I like both plugins and would like to continue using both.
[a href="index.php?act=findpost&pid=228500"][{POST_SNAPBACK}][/a]

ml_iPod does not support true smart playlists. I've been working with the developer to help him add that support. Well, basically I told him how it works then I just let him actually do it.

Anyway, yes, ml_iPod currently knows nothing about the special mhod types for smart playlists, and so it will not write them out when it updates the iPod's database file. Only solution is not to use ml_iPod at the moment, because it will destroy a true smart playlist.

Edit: Also, and I admit I'm not 100% sure on this, foo_pod doesn't actually populate smart playlists except in some special cases (1st or 2nd gen iPod or SPL uses Playlist or Grouping rules). If this is true, as I think it probably is (for speed reasons), then if you have a 3rd gen or higher, and the SPL in question does not contain a grouping or playlist rule, then all that's really being written to the iPod is the rules itself. The iPod then figures out what's supposed to be in the playlist. In this case, programs like ml_iPod may not show the playlist correctly in their display of what's on the iPod. It'll appear to be empty. This is because it actually is empty, it just contains the necessary rules. iTunes actually fills in all the songs for all the smart playlists, but foo_pod only does it in certain cases because a) it's faster and b) you don't notice any real difference in normal usage anyway.

ml_iPod also lacks support for a lot of other things in there as well. One thing he did add, like last week or something, was reading and writing of all the extra track data in the mhit structures, so stuff like the ReplayGain info that foo_pod will put in there should be preserved if you use the latest ml_iPod. It would be erased if you are using an older ml_ipod version. I recommend keeping up to date on it as he changes it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-24 18:40:56
Quote
Ipod g4 owner here. Just wanted to report that foo_pod seems to be working fine.

Thanks for the report!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-24 19:02:03
Quote
I use ml_iPod and foo_pod too with my 3g 15gig iPod and I've found that while the smart playlists in foo_pod work, they mysteriously stop working after i edit the itunesdb with ml_iPod. Is there a particular reason for this? I like both plugins and would like to continue using both.

As Otto noted, this is almost certainly due to ml_ipod not understanding the smart playlist section in the iPod database, and instead of just copying and ignoring it, they are simply omitting it.

Out of curiousity, why do you want to use ml_ipod?  By that, I mean is there any special feature or function that isn't available in foo_pod (other than the fact that it runs in Winamp)?
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-07-25 17:36:25
Hi Aero, could you consider adding a "minimize" button to the transfer-in-progress window? (like the button in the "processing files" window that shows up when adding a lot of tracks to foobar's queue) If i add a couple of thousand songs to the iPod, i can't use my pc for about an hour, cause foobar can't be minimized during the proces.

tia

(i hope this hasnt been implemented in another way i havent noticed yet  can't use foobar's native minimize button, that's for sure)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-26 01:45:54
Quote
Hi Aero, could you consider adding a "minimize" button to the transfer-in-progress window? (like the button in the "processing files" window that shows up when adding a lot of tracks to foobar's queue) If i add a couple of thousand songs to the iPod, i can't use my pc for about an hour, cause foobar can't be minimized during the proces.

Actually in version 0.9.2, there is an option to hide the Foobar window during transfers.  That should take care of most of your problem.

As far the minimize button on the progress windows, there actually is supposed to one there.  I'm using the same progress windows as Windows Explorer, and I have the minimize button option enabled, but it doesn't seem to work.  I'll have to look into it further, but untili that is working, you might be able to minimize the window by pressing Windows Key + D, or right click on the Windows task bar and select Show Desktop.
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-07-26 12:11:12
Geez, i still was on 0.9.1a, i must have missed your 9.2 post 

got 9.2 now, it does exactly what i want it to do! thanx! 

btw: Windows Key + D won't work when it's not minimized. everything will minimize except for foobar, which will just stay as it is. But heck, it minimizes itself automatically 
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-26 12:36:25
I am still having problems with playlists ignored in foobar2000 appearing as empty playlists on the iPod.

Perhaps the problem is that during a Sync All Playlists, playlists that are ignored but exist on the iPod are not deleted?
Title: foo_pod - Foobar2000 meets the iPod
Post by: mintcoffee on 2004-07-27 01:34:37
Hi all! New to this board!  I would like to start off by thanking the author of this component. IT ROCKS! Without it, I can't imagine having to put up with ITunes in order to sync my music!! Thanks a lot!

Anyways, I'm having a problem with ignored playlists, still showing up on my iPod, when using the sync and send all. I'm using the latest plugin (0.92 i think).

I think this began happening after I installed the latest foobar, but this is not definate.

I've tried toggling the ignore and not ignored states to see if it would remedy the problem, but to no avail. So.. just asking if there's any solutions to this problem! (or if anyone has experienced it themselves!)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Storm on 2004-07-27 03:29:17
In the Smart Playlist Editor, could you make the "Limit" clickable, as well as the check button? Like <label> in XHTML, if you've come across them... It's a good overall principle to make forms work this way.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-27 03:37:46
Quote
Hi all! New to this board!   I would like to start off by thanking the author of this component. IT ROCKS! Without it, I can't imagine having to put up with ITunes in order to sync my music!! Thanks a lot!

Thanks!


Quote
Anyways, I'm having a problem with ignored playlists, still showing up on my iPod, when using the sync and send all. I'm using the latest plugin (0.92 i think).

I think this began happening after I installed the latest foobar, but this is not definate.

I've tried toggling the ignore and not ignored states to see if it would remedy the problem, but to no avail. So.. just asking if there's any solutions to this problem! (or if anyone has experienced it themselves!)

This problem has been reported a few times (includes DocUK's post right before yours), but I have never been able to narrow down the problem.  I just picked up a 2nd iPod for development use, but I don't have a lot of free time at the moment to work on foo_pod.  I'll try to reproduce and fix the ignored playlist problem in the next release.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-27 03:45:27
Quote
In the Smart Playlist Editor, could you make the "Limit" clickable, as well as the check button? Like <label> in XHTML, if you've come across them... It's a good overall principle to make forms work this way.

This has been asked before (the foo_pod preferences work in the same fashion). 

Basically, I can do this, but I like the way it is now, so changing it is a very low priority.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Storm on 2004-07-27 05:56:36
Okay... I would like to see it changed soon anyways. What is high priority right now?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-27 06:10:59
BTW, the new iPod I bought is a 4G iPod.  It just arrived today, so I haven't had much time to play with it, but here are my initial impressions:

Good: Bad:
There are a few other minor changes, like the Shuffle Songs menu item (I haven't tried it yet), and the wheel clicker noise can be configured to play through the speaker, the headphones, or both.  So the 4G iPod is basically a faster 3G iPod with slightly better software (that should run on a 3G anyway) and a (maybe) worse user interface.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-27 06:19:47
Quote
Okay... I would like to see it changed soon anyways. What is high priority right now?

Starting a new job and learning C# 

Oh, you mean as far as foo_pod is concerned.  My biggest focus now is adding regular playlist support to the smart playlist editor (and hence making it just the Playlist Editor).  Ideally, I want to make it so you can open up the PE, create a new playlist or edit an existing one, drag files from the Foobar window, and delete songs from the playlist.

Also now that I have the new iPod, adding something to deal with OTG playlists is suddenly a high(er) priority, along with potentially adding support for dealing with multiple iPods.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Storm on 2004-07-27 06:27:43
I think I'm sticking with my 3rd gen pod until Apple gets off their asses and make some REAL changes.

If they don't release the new firmware to 3rd gen users I will also hate them for an eternity.

Edit; I am happy to hear about the improved speed though.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Storm on 2004-07-27 06:34:18
Quote
Quote
Okay... I would like to see it changed soon anyways. What is high priority right now?

Starting a new job and learning C# 

Oh, you mean as far as foo_pod is concerned.  My biggest focus now is adding regular playlist support to the smart playlist editor (and hence making it just the Playlist Editor).  Ideally, I want to make it so you can open up the PE, create a new playlist or edit an existing one, drag files from the Foobar window, and delete songs from the playlist.

Also now that I have the new iPod, adding something to deal with OTG playlists is suddenly a high(er) priority, along with potentially adding support for dealing with multiple iPods.
[a href="index.php?act=findpost&pid=229314"][{POST_SNAPBACK}][/a]


C#? I haven't decided if that's a mayor EWW yet... given any thought to Java? I'm kinda interested in starting programming for real.

But you can edit playlists directly in foobar? ...can't you?
Title: foo_pod - Foobar2000 meets the iPod
Post by: scottder on 2004-07-27 14:52:48
Of course this also means you'll be able to get a 3G Ipod cheap as well.  I finally got to play with a Mini-Ipod the other day, and I think the move to the click wheel in the end is a good move for the 4G.  Still wondering how the sound compares.

Scott
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-07-27 15:56:12
Quote
Of course this also means you'll be able to get a 3G Ipod cheap as well.  I finally got to play with a Mini-Ipod the other day, and I think the move to the click wheel in the end is a good move for the 4G.   Still wondering how the sound compares.

Scott
[a href="index.php?act=findpost&pid=229406"][{POST_SNAPBACK}][/a]


OT again...
Speaking of sound quality, it has been reported in iPodlounge that there are some complaints of the 4G iPod having some interference with the internal components of the iPod - static, and the likes.

//un-OT

Just to ask, is foo_pod able to directly edit the information in the iPod DB, and subsequently update the ID tags in the MP3s itself (in short, works like iTunes, where you can just edit the info in iTunes directly)?

Is it also possible to update the ratings in foo_pod itself?

I could remember that I once meddled with the DB entries, and I screwed it up...
To backup the DB, the playlists (both smart and dumb ), can I just copy the iPodDB file in the iPod Control folder?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-27 17:23:44
Quote
Note for Otto - each saved OTG playlist is saved in the iTunes directory as "OTGPlaylistInfo_1", "OTGPlaylistInfo_2", etc.  The unsaved OTG playlist is still OTGPlaylistInfo.  I haven't tried parsing the saved OTG playlists yet, but it appears to be a standard MHPO.  Shame on Apple if they don't back port this feature to 3G iPods...

Boy, that sure makes it easy, doesn't it? Look for the OTGPlaylistInfo_X files, parse them into iPod_mhpo's, convert them into new iPod_mhlp's to make them into real playlists which can be manipulated through whatever exists to manipulate them, delete the OTG files. Done and done.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-27 17:47:49
Quote
C#? I haven't decided if that's a mayor EWW yet... given any thought to Java? I'm kinda interested in starting programming for real.

Yeah, I've done Java development in the past, and it is good for what it does.  But the future of Windows development is unquestionably .NET based, and with projects like Mono (http://www.mono-project.com/about/index.html), it looks like C#/.NET could be a nice cross platform development environment.  Sorta like Java could have been, but for various reasons, never really took off.  But I digress...

Quote
But you can edit playlists directly in foobar? ...can't you?

You can edit Foobar playlists, but you can currently only create iPod playlists and/or add songs to them.  My iPod playlist editor will let you add/remove playlists, rename them, and probably do some basic editing like add/remove songs.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-27 17:57:22
Quote
Speaking of sound quality, it has been reported in iPodlounge that there are some complaints of the 4G iPod having some interference with the internal components of the iPod - static, and the likes.

I haven't noticed any difference in sound quality between the 3G and 4G.  I have heard electronic interference related noise on my 3G in the past, though.  Usually after undocking...

Quote
Just to ask, is foo_pod able to directly edit the information in the iPod DB, and subsequently update the ID tags in the MP3s itself (in short, works like iTunes, where you can just edit the info in iTunes directly)?

Not really.  You can use Foobar to modify the ID3/APE tags of songs anywhere, including on the iPod.  But there really isn't a good way to update the iPod database after a song is already on the iPod (you can delete and resend it).

Quote
Is it also possible to update the ratings in foo_pod itself?

If you have the RATING metadata set before you transfer the song (0 - 5), foo_pod will convert that and store it in the iPod database.  But like I said, there isn't a good way to update songs that are already on the iPod.

Quote
I could remember that I once meddled with the DB entries, and I screwed it up...
To backup the DB, the playlists (both smart and dumb ), can I just copy the iPodDB file in the iPod Control folder?

Yes, backing up iTunesDB will backup regular and smart playlists.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-27 19:11:22
Quote
Boy, that sure makes it easy, doesn't it? Look for the OTGPlaylistInfo_X files, parse them into iPod_mhpo's, convert them into new iPod_mhlp's to make them into real playlists which can be manipulated through whatever exists to manipulate them, delete the OTG files. Done and done.

Otto likes this because all of his work is done, and it is passed off on the application developer...

Speaking of new features that should be on the 3G (and earlier) iPods...the new Shuffle Songs menu option is an interesting feature, but one that Apple ultimately botched and implemented in the wrong way.

Shuffle Songs is a new (optional) main menu item that activates a sort-of temporary shuffle mode.  When you select it, the shuffle indicator (on the Now Playing screen) is displayed, and songs shuffle as usual, but the Shuffle menu item setting doesn't change.  For example, if Shuffle is turned off, it stays off but the indicator appears and the songs shuffle.  Also, it obeys the Shuffle setting, so if you have Shuffle set to albums, Shuffle Songs will shuffle by album (otherwise it shuffles by song).

Unfortunately, the only way to disable Shuffle Songs seems to be to change the current scope (changing to a different artist, for example).  And the fact that songs shuffle and the indicator appears, while the Shuffle setting still says "Off" is simply a mistake.  What Apple should have done is just make the Shuffle setting an optional Main Menu item - then you could control it without having to navigate to an extra menu and back, and the shuffle preference would be consistant.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-07-27 19:17:54
(sorry for the OT)

Quote
Quote
Quote
Okay... I would like to see it changed soon anyways. What is high priority right now?

Starting a new job and learning C# 

Oh, you mean as far as foo_pod is concerned.  My biggest focus now is adding regular playlist support to the smart playlist editor (and hence making it just the Playlist Editor).  Ideally, I want to make it so you can open up the PE, create a new playlist or edit an existing one, drag files from the Foobar window, and delete songs from the playlist.

Also now that I have the new iPod, adding something to deal with OTG playlists is suddenly a high(er) priority, along with potentially adding support for dealing with multiple iPods.
[a href="index.php?act=findpost&pid=229314"][{POST_SNAPBACK}][/a]


C#? I haven't decided if that's a mayor EWW yet... given any thought to Java? I'm kinda interested in starting programming for real.


[a href="index.php?act=findpost&pid=229318"][{POST_SNAPBACK}][/a]


I'm a student, and as such have done a lot of java in school, as well as more at work to automate various tasks on data files.  I'm just starting on c# now (got the book yesterday!) and so far i really like it.  The code is a lot like Java (actually its virtually identical), but without the horrors of Swing.  As for the .net framework, I'm just getting started and do know much of anything about it yet.  However from what i've read it looks really nice (and a LOT easier for windows centric things like registry access which is a horrible mess of native methiods to c libraries in java  ).

If mono really does take off, it could be what Java was supposed to have been.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-28 03:50:01
Quote
Otto likes this because all of his work is done, and it is passed off on the application developer...
[a href="index.php?act=findpost&pid=229484"][{POST_SNAPBACK}][/a]

Well, if you'd pass along the code, then I might have a choice in the matter.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-07-28 13:45:33
Zing!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-28 23:38:34
Heh...

One very cool thing about the 4G iPods is that SoundCheck now works through the Line Out port on the dock connector! 

This was one of my gripes about the 3G iPods, since SoundCheck only worked through the headphone jack, which made things like this (http://www.sik.com/imp.php) much less useful.  SoundCheck via Line Out also seems to be something that could be fixed in software on earlier iPods by simply scaling the decoded audio.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ndrake on 2004-07-29 16:07:15
First, just checking in to mention that foo_pod is still hands down the best ipod software out there - it works flawlessly with my 4th gen 40 gig.

Second, when you 'load iPod songs to the '___' playlist' is foo_pod just reading the database file? If so, can that file be rewritten every time it is updated according to some sort of organization rule (preferably the same way music is organized on the iPod's display)? It is a minor annoyance that the most recently added tracks appear at the top of said playlist, so that I have to manually sort the playlist in order to know what is actually already on the ipod.  It could just be me, but I'd prefer if that playlist generated from the iPod's tracks were already sorted...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-29 21:56:54
Quote
Second, when you 'load iPod songs to the '___' playlist' is foo_pod just reading the database file? If so, can that file be rewritten every time it is updated according to some sort of organization rule (preferably the same way music is organized on the iPod's display)? It is a minor annoyance that the most recently added tracks appear at the top of said playlist, so that I have to manually sort the playlist in order to know what is actually already on the ipod.  It could just be me, but I'd prefer if that playlist generated from the iPod's tracks were already sorted...

Yes, Load essentially just reads the database and presents it as a Foobar playlist.

Since this is just a regular Foobar playlist, it can be sorted any way you wish, and as you see, it is just displayed in the same order that it appears in the Foobar database by default.  I guess the best thing to do would be to add a preference item so the user can have a TAGZ format string to sort the iPod playlist by.  Or maybe just sort by artist/album/title/tracknumber by default?  Anyway, I'll do something for the next version - thanks for the suggestion!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-07-29 22:53:50
Quote
Yes, Load essentially just reads the database and presents it as a Foobar playlist.

Since this is just a regular Foobar playlist, it can be sorted any way you wish, and as you see, it is just displayed in the same order that it appears in the Foobar database by default.  I guess the best thing to do would be to add a preference item so the user can have a TAGZ format string to sort the iPod playlist by.  Or maybe just sort by artist/album/title/tracknumber by default?  Anyway, I'll do something for the next version - thanks for the suggestion!
[a href="index.php?act=findpost&pid=230127"][{POST_SNAPBACK}][/a]

Is it just presenting it in the same order that it's already in, in the iPodDB? Because you can just reorder that vector (or map.. whatever it is, I forget)in the mhyp and that'll be the order it gets displayed in on the iPod. At least, it should be. iTunes does it by renumbering the type 100 mhods in the mhyp, but iPodDB generates those on the write() call, so reordering the vector would reorder the playlist. I'll think about writing a function to make this simpler. Maybe we can pass it something to order by, perhaps... Hmm.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-30 00:06:39
Quote
Is it just presenting it in the same order that it's already in, in the iPodDB? Because you can just reorder that vector (or map.. whatever it is, I forget)in the mhyp and that'll be the order it gets displayed in on the iPod. At least, it should be. iTunes does it by renumbering the type 100 mhods in the mhyp, but iPodDB generates those on the write() call, so reordering the vector would reorder the playlist. I'll think about writing a function to make this simpler. Maybe we can pass it something to order by, perhaps... Hmm.

Yes, the first song in the MHLT is the first song that appears in the playlist.  I'm sure that reordering the songs on the iPod is useful, but to fix this in Foobar just took one line of code to sort the playlist.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-30 11:59:01
Version 0.9.3 is now available (http://www.loodi.com/foo_pod.zip)

0.9.3 adds quite a few minor features, including some recently requested items.

Highlights include the Advanced Limiter is now applied to transcoded songs, when using Foobar 0.8.3 or higher.  Also, foo_pod now automatically sets default artist and/or album metadata items if they are not present, so you can always navigate to your songs on the iPod without having to go to the "All" view.  Also, the foo_pod playlist is automatically sorted when loaded, and if the playlist name is empty in the preferences, foo_pod will use either the iPodService device name or the Windows drive name. 

One big fix for some people is how foo_pod detects an iPod when iPodService is not available.  Previously, with certain kinds of flash card readers, foo_pod would cause message boxes to appear unless you forced the iPod drive.  This should now work as expected.  And the special bonus feature - you can now click on the checkbox text in the Smart Playlist Editor and control the checkbox (it doesn't work in the Preferences, because the controls don't line up correctly)...


From the Readme:
Code: [Select]
Version 0.9.3 - July 30, 2004
*  foo_pod now uses more directories to store music on the iPod, for better performance with a large number of files.

*  If Artist and/or Album metadata attributes aren't set when transferring a file to the iPod, foo_pod will set the artist to [Artist] and the album to [Album].  This allows all files to be browsed by artist/album on the iPod.

*  Modified the Nero AAC custom transcoder settings for better quality.

*  Sort the iPod playlist displayed in Foobar by the Artist/Album/Tracknumber/Title

*  The Foobar playlist name can now be automatically set to the iPod device name.  If "foo_pod Playlist Name" in the Preferences is empty, foo_pod will first try to find the device name via iPodService.  If that is not available, it will use the Windows drive name for the playlist.

*  Improved the iPod detection algorithm, so devices such as flash card readers won't cause a warning message box to appear, when the iPod drive letter is not set (i.e. auto detection).

*  Unset the hidden attribute on several directories on the iPod.  iTunes sets this, but it is unnecessary.

*  The Foobar Advanced Limiter will be applied to transcoded songs, to prevent clipping.  Note: due to a bug in Foobar2000, this feature only works on Foobar2000 0.8.3 and higher.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rmoody on 2004-07-30 18:34:10
Can someone please explain to me why the last two times I have updated foo_pod, when I try to update the information from a CUE file that it does not save it to the actual CUE file?  When I reload the database, all my changes are gone!  This is twice!  What's going on here?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-30 21:30:12
Quote
Can someone please explain to me why the last two times I have updated foo_pod, when I try to update the information from a CUE file that it does not save it to the actual CUE file?  When I reload the database, all my changes are gone!  This is twice!  What's going on here?

CUE sheet don't really work in foo_pod.  The reason is that to the Foobar SDK, they appear as a single file (someone correct me if I'm missing something).

On my long term list of things to do is adding real CUE sheet support.  It can be done, since the iPod allows you to set the starting and ending points in a song, so I can just transfer the audio once, and create n number of songs in the database with the correct start/stop times.  However, there is no functionality in the Foobar SDK to get the start/stop times for CUE sheet songs, so I would have to parse the CUE sheet myself.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-07-31 08:26:29
Aero,

I can definitely confirm 0.9.3 solves the problems I saw when I wasn't forcing a drive letter for my iPod.  Thanks for fixing that.

Now I'm trying to use the smart playlist editor with my 1st gen iPod, and fb2k 0.8.3, and I don't understand how it works.  Do I have to sync (and not send) playlists to my iPod for this to work?  Is it possible I'm missing something because I use the columns UI?  Any tips are appreciated.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-31 09:14:20
Quote
I can definitely confirm 0.9.3 solves the problems I saw when I wasn't forcing a drive letter for my iPod.  Thanks for fixing that.

Cool!

Quote
Now I'm trying to use the smart playlist editor with my 1st gen iPod, and fb2k 0.8.3, and I don't understand how it works.  Do I have to sync (and not send) playlists to my iPod for this to work?  Is it possible I'm missing something because I use the columns UI?  Any tips are appreciated.

Short answer: just the act of creating a smart playlist in the SPL Editor and clicking Apply is all you need to do.


Long answer:
As soon as you click Apply in the Smart Playlist Editor, foo_pod creates the smart playlist(s) on the iPod.  Also, Smart Playlists aren't related to the regular playlists that get created when you send/sync a Foobar playlist.

If you have an iPod that doesn't support dynamic smart playlists (i.e. a 1st or 2nd generation iPod), a smart playlist is emulated by applying the smart playlist rules to the songs on your iPod, and creating a regular playlist.  This is done automatically whenever needed (i.e. you add or remove songs), so you don't have to do anything special to make it work. 

In theory, smart playlists should work almost the same on a 1st or 2nd gen iPod as they do on later models, but I don't have an earlier iPod to test this on.  I believe that it works in general, although there are bound to be some bugs in how the smart playlist rules are emulated.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Storm on 2004-07-31 10:57:54
Is there a plugin for rating songs in foobar? I can't find anything in the context menu... I want my smartlists to be based on the ratings, and if I understand correctly I should be able to sort of make smartlists directly in foobar too, with the Extended Playlist Editor?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Storm on 2004-07-31 13:17:40
Quote
Is there a plugin for rating songs in foobar? I can't find anything in the context menu... I want my smartlists to be based on the ratings, and if I understand correctly I should be able to sort of make smartlists directly in foobar too, with the Extended Playlist Editor?
[a href="index.php?act=findpost&pid=230526"][{POST_SNAPBACK}][/a]


Ah, I found Quick Tag, solved this problem swiftly.

Does "Delete All iPod Music And Playlists" format the whole iPod, or only remove the database and the music files in it? I ask because I use the iPod for disk storage, so I don't want it all to be gone. What I want is to clear the database. I have already removed all music files from I:\Ipod_control\Music\*.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-31 20:09:05
Quote
Does "Delete All iPod Music And Playlists" format the whole iPod, or only remove the database and the music files in it? I ask because I use the iPod for disk storage, so I don't want it all to be gone. What I want is to clear the database. I have already removed all music files from I:\Ipod_control\Music\*.

Delete All deletes all music (the iPod_Control\Music directories) as well as the database file and other associated files from iPod_Control\iTunes.  Otherwise, nothing else is deleted, so as long as your data isn't in the music directories, you're safe.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Biscuits on 2004-07-31 20:25:45
Hey Aero,

Nice going with foo_pod. I like the way it's coming  ! My question is: Is there a way to send a playlist to the iPod without sending the music that's in the playlist? Like, I have a playlist that I made in foobar. I'd like to put that playlist on my iPod and the music is already on there. Is there a way, and if so, how do I put it on my iPod?

Thanks!

-Tristan
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-07-31 21:09:40
Quote
Nice going with foo_pod. I like the way it's coming  ! My question is: Is there a way to send a playlist to the iPod without sending the music that's in the playlist? Like, I have a playlist that I made in foobar. I'd like to put that playlist on my iPod and the music is already on there. Is there a way, and if so, how do I put it on my iPod?

Thanks!

foo_pod won't transfer duplicate songs, so if they are already on the iPod, sending them again won't hurt.  What this means is you can have Song A in Foobar Playlists 1 and 2, and if you send both playlists to the iPod, Song A will be copied once, but still appear in both playlists on the iPod.

So if you want to create an iPod playlist, just create a Foobar playlist and fill it up with the songs you want, then select Send Current Playlist To iPod.  foo_pod will create an iPod playlist of the same name and copy files as needed.


I admit that this is somewhat confusing, but it is the best that I can do with the Foobar interface.  Once the playlist editor is complete, creating and manipulating playlists will be much simplier.
Title: foo_pod - Foobar2000 meets the iPod
Post by: BUSH on 2004-08-03 02:05:53
I've just got an 4G ipod and foo_pod is just the sort of software i love, nice and simple, especially since i stopped using itunes. I have a couple of questions though:


1.Is it possible to rename the smart playlists that you can create using foo_pod

2. Will it be possible to delete playlists that have been created on the ipod, as i have a couple on there i would like to get rid of and i really dont want to load up itunes.

3. If i transfer files on to the ipod does it also transfer the play_count data from my pc?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-03 02:29:49
Quote
1.Is it possible to rename the smart playlists that you can create using foo_pod

Yes, just select the smart playlist you wish to rename with the left mouse button, wait about a second, and click it again.  It works the same as renaming files in Windows Explorer.

Quote
2. Will it be possible to delete playlists that have been created on the ipod, as i have a couple on there i would like to get rid of and i really dont want to load up itunes.

It isn't currently possible to delete regular playlists, but as soon as I complete the general Playlist Editor, you will be able to create, rename, and delete regular and smart playlists.

Quote
3. If i transfer files on to the ipod does it also transfer the play_count data from my pc?

No, foo_pod does not currently support transferring play counts from the PC to the iPod (it does transfer from the iPod to the PC, though).
Title: foo_pod - Foobar2000 meets the iPod
Post by: BUSH on 2004-08-03 15:55:42
Quote
No, foo_pod does not currently support transferring play counts from the PC to the iPod (it does transfer from the iPod to the PC, though).



Does it mean that the total shown on foobar is a cumlative total for times played on pc + times played on ipod eg:

Play a song on pc 10 times -> transfer to ipod and play 3 times -> connect ipod to back to pc:

Does play_count on foobar for the version kept on the pc show:

13 times ( pc play_count + ipod play_count)

or

3 times ( Ipod playcount overwriting pc playcount data)


sorry if thats not very clear
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-04 02:10:12
Quote
Does it mean that the total shown on foobar is a cumlative total for times played on pc + times played on ipod eg:

Play a song on pc 10 times -> transfer to ipod and play 3 times -> connect ipod to back to pc:

Does play_count on foobar for the version kept on the pc show:

13 times ( pc play_count + ipod play_count)

or

3 times ( Ipod playcount overwriting pc playcount data)

In your example, foo_pod would report (in the IPOD_PLAY_COUNT metadata item, so it wouldn't overwrite any other component's metadata) that the song had been played 3 times.  I purposefully made it so that foo_pod would only consider songs that had been played on the iPod itself, since Foobar doesn't store the play count without an optional component.

But I'm willing to reconsider counting both iPod and Foobar plays, if people think that is the right thing to do (I noticed that iTunes seems to count plays in both iTunes and on the iPod).
Title: foo_pod - Foobar2000 meets the iPod
Post by: ndrake on 2004-08-05 06:18:51
Quote
Version 0.9.3 is now available (http://www.loodi.com/foo_pod.zip)

Great release! Thanks for including my idea about sorting the files read from the ipod db. 

I'd like to chime in that it would be nice if foo_pod had an option to work in concert with the playcount plugin to maintain the number of times you've played a song in foobar and the ipod.  It would make the playcount actually useful for someone like me who plays music more on the ipod than at home.
Title: foo_pod - Foobar2000 meets the iPod
Post by: ronyzyz1 on 2004-08-05 12:09:25
Quote
But I'm willing to reconsider counting both iPod and Foobar plays, if people think that is the right thing to do (I noticed that iTunes seems to count plays in both iTunes and on the iPod).
[a href="index.php?act=findpost&pid=231644"][{POST_SNAPBACK}][/a]


Quote
I'd like to chime in that it would be nice if foo_pod had an option to work in concert with the playcount plugin to maintain the number of times you've played a song in foobar and the ipod.  It would make the playcount actually useful for someone like me who plays music more on the ipod than at home.
[a href="index.php?act=findpost&pid=232046"][{POST_SNAPBACK}][/a]


Yeah I can't really understand why the playcount from foobar2000 isn't counted in either. It would be the only sensible and semantically correct thing to do, as it would reflect many times the file actually has been played. Also, if iTunes does it, I think there should be no question that this is the way things should be done.

Or, alternatively, a preferences item to choose between them: "iPod count, foobar2000 count, or both"
Title: foo_pod - Foobar2000 meets the iPod
Post by: Espique on 2004-08-05 13:55:27
hi,

the readme for 0.9.3 talks about improvements with the NERO encoder presets for transcoding. I can't find that anywhere in the config. The config only has lame and faac. ???   

thanks,
sascha
Title: foo_pod - Foobar2000 meets the iPod
Post by: Storm on 2004-08-05 15:31:39
Quote
Yeah I can't really understand why the playcount from foobar2000 isn't counted in either. It would be the only sensible and semantically correct thing to do, as it would reflect many times the file actually has been played. Also, if iTunes does it, I think there should be no question that this is the way things should be done.

Or, alternatively, a preferences item to choose between them: "iPod count, foobar2000 count, or both"
[a href="index.php?act=findpost&pid=232122"][{POST_SNAPBACK}][/a]


I totally second (third) this.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-06 03:48:38
Quote
the readme for 0.9.3 talks about improvements with the NERO encoder presets for transcoding. I can't find that anywhere in the config. The config only has lame and faac. ???

The preconfigured presets are only for LAME and FAAC, but you can use just about any command line encoder with the Custom Encoder Settings options.

To use Nero's AAC encoder, first you need put a copy of  NAACEnc (http://www.rarewares.org/files/aac/NAACEnc.zip) in your Foobar2000 directory. Then go to the foo_pod Transcoder preferences, select Use Custom Encoder, and click the settings button. 

This image (http://www.hydrogenaudio.org/forums/index.php?act=Attach&type=post&id=796) demonstrates how you should set the settings for use with NAACEnc (you can modify the "-internet -qf" part depending on your encoding quality choice).

For the next version of foo_pod, I might add a set of radio buttons to choose between FAAC and Nero, now that a good command line interface for Nero is available.  Or maybe just squeeze some Nero defaults in there as well.
Title: foo_pod - Foobar2000 meets the iPod
Post by: reardon on 2004-08-06 18:24:29
Quote
For the next version of foo_pod, I might add a set of radio buttons to choose between FAAC and Nero, now that a good command line interface for Nero is available.  Or maybe just squeeze some Nero defaults in there as well.
[a href="index.php?act=findpost&pid=232340"][{POST_SNAPBACK}][/a]


Why use commandline at all?  Why not use foo_nero diskwriter or similar and make it graphical?

+Reardon
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-06 20:34:37
Quote
Why use commandline at all?  Why not use foo_nero diskwriter or similar and make it graphical?

I could make it graphical (by that, I assume you mean have a progress dialog) with the current transcoder, at least for LAME and FAAC.

The reason I am using the command line interface is because it makes it easy for anyone to add support for a new encoder/interface (like NAACEnc).  Also, I personally use LAME, FAAC, and NeroAAC, which would mean that I would have to interface with 3 separate libraries as opposed to having a single piece of code that works with everything today and in the future.
Title: foo_pod - Foobar2000 meets the iPod
Post by: overthink on 2004-08-09 04:50:21
Hi there,

First off: foo_pod is fantastic -- thank you Aero and any other developers who've been involved.  I wouldn't have bought my iPod were it not for this component -- Apple should be cutting you guys in.

I've been using foo_pod successfully for a month or so, but I still feel like I'm probably not using it "correctly".  That is, the standard use case is not obvious to me 

1) How are most people managing what's on the iPod?  Just via the "Load iPod Songs to Foobar 2000 Playlist" and then "deleting selected" and "send files to ipod" etc?

2) I had been syncing to a single playlist... but that smokes any smart playlists on the pod which is a bit annoying (though not terrible)

3) If I transfer a bunch of files to the iPod and then rate some of them on the (disconnected) iPod, is there a way to have those ratings automagically persisted back (when the pod is docked) to the source files in my main collection (as ID3 tags or something)?  Same goes for things like play count, last played, etc...

Ideally meta info would live on in the actual source mp3 file on my HDD (as opposed to only on the ipod), thus allowing me to wipe the ipod clean periodically but not lose ratings and other meta info.

Technical question: how does the iPod determine sameness in files?  If I try to copy the same track to the pod twice, obviously it doesn't make two copies of it.  Is it hashed, or based on tags, or filename, or something else?

If these are answered somewhere else in this (long) thread, I apologize, but I wasn't able to find them.

Any input or suggestions is appreciated -- Thanks!
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-08-11 08:07:01
First of all, apologies for this OT message.

I have just received a new 20G click-wheel iPod and I'm looking for a general advice about how to get the most out of it (and this is the place I trust most for this kind of question ).

I'd like to use it as portable MP3 player (of course) and to transfer data between office/home PCs (Win2k/XP-Pro, USB2.0).

1) What are the *minimum* SW requirements? I'd stay away from iTunes, if possible, and use Fb2k/foo_pod: what other program (if any) is needed?

2) Can I have both functions (player and data repository) at the same time or are they mutually exclusive?

3) I'll read with interest any suggestion or comment from you and pointers to *good* source of information on the subject.

Thanks for your time.

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-08-12 22:11:46
You only need foobar/foo_pod.

You can use the player while copying files to the Ipod.

This thread is actually a pretty good place to read up on how the Ipod works.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-08-13 11:21:55
Thanks for your reply Mike.

> You only need foobar/foo_pod.

That's good news: had a look at iTunes and quickly got rid of it... brrr...

> This thread is actually a pretty good place to read up on how the Ipod works.

Well, sure... but it's a bit time consuming (and perhaps too "technical" for me): guess I'm looking for a "foo_pod for dummies" guide .

Anyway, I'll tinker about with it for a while and try to figure out its basic features.

Regards.

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-08-14 10:34:27
Hi again!

Congrats to Aero, Otto and everybody here for this great plugin!

It's really simple to use and quite fast.

Now a few questions:

1) In Preferences / iPod Service tab: Device Name, Owner's Name and Enable Disk Mode are empty and greyed out: is this normal? And is Stop iPod Service on Exit recommended or should I leave it unchecked?

2) I set foobar to write APEv2 and ID3v1 tags, but some files contain old ID3v2 tags too: foo_pod, if I'm not mistaken, seems to be using the latter to write info in iPod db. Is it possible to set foo_pod so that it uses APEv2/ID3v1 first?

3) What is the Enable Sync checkbox? I tried checking it but I see no difference...

Thanks.

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-14 20:58:29
Quote
Congrats to Aero, Otto and everybody here for this great plugin!

It's really simple to use and quite fast.

Thanks!

Quote
1) In Preferences / iPod Service tab: Device Name, Owner's Name and Enable Disk Mode are empty and greyed out: is this normal? And is Stop iPod Service on Exit recommended or should I leave it unchecked?

That probably means that you don't have iTunes/iPod Service installed, or iTunes is already running when you start Foobar2000.  iPodService is necessary to utilize those features, but foo_pod works perfectly well without it.

I would recommend setting Set iPodService on Exit unchecked, but if you don't have it installed in the first place, it won't do anything.


Quote
2) I set foobar to write APEv2 and ID3v1 tags, but some files contain old ID3v2 tags too: foo_pod, if I'm not mistaken, seems to be using the latter to write info in iPod db. Is it possible to set foo_pod so that it uses APEv2/ID3v1 first?

foo_pod gets the metadata information directly from Foobar, and never directly accesses tag information.  So your problem really is with Foobar, and how to get it to use APEv2/ID3v1 tags instead of ID3v2.

Quote
3) What is the Enable Sync checkbox? I tried checking it but I see no difference...

After too many people accidently wiped out their iPods because they didn't understand how the Sync Current Playlist/Sync All Playlists features worked, I added that checkbox to ensure that the user had to explicitly enable the sync features (and read/ignore a short message explaining how they work).  So if that checkbox is not checked, you won't see the Sync Current/All Playlist options in the foo_pod menu.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-08-15 08:47:53
Thanks for taking time to reply, Aero.
Quote
That probably means that you don't have iTunes/iPod Service installed, or iTunes is already running when you start Foobar2000.  iPodService is necessary to utilize those features, but foo_pod works perfectly well without it.

I would recommend setting Set iPodService on Exit unchecked, but if you don't have it installed in the first place, it won't do anything.
Well, as I said I tried iTunes but soon uninstalled it. In task manager, though, I still see an iPodService running: are you saying I don't need it at all? Is it perhaps necessary only for firmware update or iPod format/reset?
Quote
foo_pod gets the metadata information directly from Foobar, and never directly accesses tag information.  So your problem really is with Foobar, and how to get it to use APEv2/ID3v1 tags instead of ID3v2.
Not sure I understand: does it mean that there's no solution to this problem or are you implying I'm not using foobar correctly?
Quote
After too many people accidently wiped out their iPods because they didn't understand how the Sync Current Playlist/Sync All Playlists features worked, I added that checkbox to ensure that the user had to explicitly enable the sync features (and read/ignore a short message explaining how they work).  So if that checkbox is not checked, you won't see the Sync Current/All Playlist options in the foo_pod menu.
But after checking it I still couldn't see those options: I'll check again as soon as I'm back to work.

One more thing: I suspect my home PC has USB V1 (when I connect the iPod it warns me about a high speed device being connected to a low speed hub, or something like that). I have no problem accessing it through Windows Explorer, but in foobar I don't see the iPod playlist (as in my office PC) and if I send the same song multiple times it doesn't raise an error. I therefore suspect foo_pod should not be used with USB V1: is that correct?

Regards.

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-08-15 23:27:49
Quote
Well, as I said I tried iTunes but soon uninstalled it. In task manager, though, I still see an iPodService running: are you saying I don't need it at all? Is it perhaps necessary only for firmware update or iPod format/reset?

iPodService isn't really necessary at all. If you install the iPod Firmware Updater software, it will get installed. Basically, if you install iTunes or any Apple iPod related software, it gets installed. foo_pod can use it if it's there, but it doesn't need to be there. Realistically, it doesn't make any difference whether it's there or not.

Quote
Not sure I understand: does it mean that there's no solution to this problem or are you implying I'm not using foobar correctly?

I think he's not implying it so much as he's flat out stating it.

foo_pod doesn't care what kind of tags you use because it doesn't access the tags directly. It simply accesses foobar's information, which can come from APE, ID3v1, ID3v2, whatever. If foobar says that the name of a song is "Big Empty" then foo_pod accepts that as the word from god. Where foobar gets that information from is not up to foo_pod. So if you're getting the wrong info into the iPod, the problem is that you have something set badly in foobar itself.

Quote
One more thing: I suspect my home PC has USB V1 (when I connect the iPod it warns me about a high speed device being connected to a low speed hub, or something like that). I have no problem accessing it through Windows Explorer, but in foobar I don't see the iPod playlist (as in my office PC) and if I send the same song multiple times it doesn't raise an error. I therefore suspect foo_pod should not be used with USB V1: is that correct?

No, that's not correct. foo_pod treats the iPod as a drive letter. It doesn't care how it's connected because all foo_pod is doing, really, is writing data to and from a drive. Now it does interface somewhat to the iPodService, which does more than that, but it doesn't have to do so. If you remove the iPodService, some of the problems might go away. Or not. It's not an easy thing to say without trying different configs to see what works.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-08-16 08:40:11
Hi Otto, thx for joining!
Quote
iPodService isn't really necessary at all. If you install the iPod Firmware Updater software, it will get installed. Basically, if you install iTunes or any Apple iPod related software, it gets installed. foo_pod can use it if it's there, but it doesn't need to be there. Realistically, it doesn't make any difference whether it's there or not.
Well, the service starts as soon as I connect the iPod and I wasn't able to stop it manually. Not a big deal anyway, I suppose I can live with it.
Quote
I think he's not implying it so much as he's flat out stating it.

foo_pod doesn't care what kind of tags you use because it doesn't access the tags directly. It simply accesses foobar's information, which can come from APE, ID3v1, ID3v2, whatever. If foobar says that the name of a song is "Big Empty" then foo_pod accepts that as the word from god. Where foobar gets that information from is not up to foo_pod. So if you're getting the wrong info into the iPod, the problem is that you have something set badly in foobar itself.
I always grant the benefit of the doubt, just in case...

The only setting I'm aware of is Standard inputs --> MP3 tag writing (where, as I said earlier, I selected "APEv2 and ID3v1"). I also (recently) checked "remove ID3v2 tags while updating", but some MP3s still contains old v2 tags. I understand this is OT here, but can you tell me where/what to change in foobar to solve my little problem? Or maybe I should remove ALL ID3v2 tags from my files? If so, can this task be automated somehow (masstagger or some other tool)?

Cheers.

Alessandro

PS: I confirm I can't find the Sync options: are they supposed to be accessed via the right-click/foo_pod menu or should I look elsewhere?
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-08-16 18:57:32
Quote
PS: I confirm I can't find the Sync options: are they supposed to be accessed via the right-click/foo_pod menu or should I look elsewhere?
Geez! Found it. Now I feel really stupid! 

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-08-16 19:46:19
Quote
Quote
PS: I confirm I can't find the Sync options: are they supposed to be accessed via the right-click/foo_pod menu or should I look elsewhere?
Geez! Found it. Now I feel really stupid! 
[a href="index.php?act=findpost&pid=234871"][{POST_SNAPBACK}][/a]


Ahh, but not as bad as you'll feel if you destroy some music on your iPod by not fully understanding sync.  Think of it this way: syncing will replace everything on your ipod except what you're syncing, whether its a single playlist or multiple playlists.

Used properly, it can be helpful.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Pootle_1 on 2004-08-19 16:22:18
foo_pod playlist displaying wrong information.

I use Anapod Explorer to add songs to my iPod.  For indexing purposes Anapod changes the MP3 filename to XXXX.mp3, for example 4685.mp3.  But it keeps all the tag information in the file - you can verify this by finding an ANapod file on the iPod in Explorer and dragging it to your harddisk. MP3 tags are preserved.

When I first do "Load iPod songs to Foobar2000 playlist" the song information is all displayed correctly and can be read with "Properties".

However if I use the iPod playlist to actually play files from the iPod, the filename of the track being played appears in the playlist and all "Properties" information disappears.  It can be restored by selecting "Load iPod songs to Foobar2000 playlist" again.

Apologies if this has been posted before - I couldn't find any relevant info in this thread.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Pootle_1 on 2004-08-19 17:32:04
Quote
foo_pod playlist displaying wrong information.


Answering my own question...

It's because I have used MP3Gain on the files, which stores MP3Gain and Replaygain information in an APE header.  When foobar2000 finds an APE header, it doesn't look for any more information in any other headers.

This is a shame because it limits foobar.  Plenty of people will have used MP3Gain on gigabytes of MP3s before they started using foobar.

I guess when foo_pod gets data from the iPod it gets it from the iTunes database on the iPod.  The information used to build this database HAS used all the available headers.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Pootle_1 on 2004-08-20 14:00:08
foo_pod doesn't transfer ID3 data to iPod if APE tags exist in source file

Please excuse my many postings to this forum - I've just found foo_pod and I'm
very keen on it. But last night I used foo_pod in anger and found another
problem, which stems from the same root cause as my previous posting ("foo_pod
playlist displaying wrong information")

On my PC I have thousands of MP3s which I ReplayGained using MP3Gain.  MP3Gain
adds an APE tag with ReplayGain data. 

Because foo_bar will only read APE tags if a file has them - ignoring all other
tags - files added to a playlist for sending to iPod do not have ID3 data. When
these files are sent to the iPOd with foo_pod, artist/abum/track/title ID3 data
is not sent.  They do not appear correctly on the iPod - they appear all mixed
up in one huge directoy called [Artist].

I can't see a way around this unless foo_bar can be persuaded to send ALL tag
data to foo_Pod.

Any ideas?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-20 15:28:47
Quote
On my PC I have thousands of MP3s which I ReplayGained using MP3Gain.  MP3Gain adds an APE tag with ReplayGain data. 

Because foo_bar will only read APE tags if a file has them - ignoring all other
tags - files added to a playlist for sending to iPod do not have ID3 data. When
these files are sent to the iPOd with foo_pod, artist/abum/track/title ID3 data
is not sent.  They do not appear correctly on the iPod - they appear all mixed
up in one huge directoy called [Artist].

I can't see a way around this unless foo_bar can be persuaded to send ALL tag
data to foo_Pod.


You might want to ask about the APE vs. ID3 tag issue on the General or Support forums.  I don't have any control over how Foobar2000 obtains the metadata, although theoretically, I could parse the ID3v1 tags directly in foo_pod and optionally use that data.  Still, this is really a Foobar problem, so I'd like to see if addressed there.

I don't know how to make Foobar read both sets of tags, but one solution would be to find a program that can fill in the APE metadata values based on the ID3v1 tag.  Maybe Foobar can do this with MassTagger...I'm not sure.  Ultimately, you might just want to strip the ReplayGain out of your files using Foobar2000->ReplayGain->Remove Replaygain info from files, then recalculate it using Foobar.  I have done something like that myself, and although it can take a long time to complete (depending on the number of songs and speed of your computer), it does work.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-08-20 20:22:55
Quote
foo_pod doesn't transfer ID3 data to iPod if APE tags exist in source file

Please excuse my many postings to this forum - I've just found foo_pod and I'm
very keen on it. But last night I used foo_pod in anger and found another
problem, which stems from the same root cause as my previous posting ("foo_pod
playlist displaying wrong information")

On my PC I have thousands of MP3s which I ReplayGained using MP3Gain.  MP3Gain
adds an APE tag with ReplayGain data. 

Because foo_bar will only read APE tags if a file has them - ignoring all other
tags - files added to a playlist for sending to iPod do not have ID3 data. When
these files are sent to the iPOd with foo_pod, artist/abum/track/title ID3 data
is not sent.  They do not appear correctly on the iPod - they appear all mixed
up in one huge directoy called [Artist].

I can't see a way around this unless foo_bar can be persuaded to send ALL tag
data to foo_Pod.

Any ideas?
[{POST_SNAPBACK}][/a] (http://index.php?act=findpost&pid=235795")


Remove the APEv2 tags and then complain to the author of MP3gain for mucking up your files.  Plugins have no control over what tag type gets read, and Peter has said he doesn't plan on dealing with files that have conflicting tag data because there is no way to consistantly tell which tag should be read.

Edit:  This thread explains some of the problem:
[a href="http://www.hydrogenaudio.org/forums/index.php?showtopic=15964&hl=mp3gain]http://www.hydrogenaudio.org/forums/index....5964&hl=mp3gain[/url]

After reading that, I think the best solution would be to get Peter to allow the user to manually set the tag priority, so that people who are useing mp3gain can set ID3v2 higher then APEv2.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Pootle_1 on 2004-08-23 10:11:54
Quote
foo_pod doesn't transfer ID3 data to iPod if APE tags exist in source file

Edit:  This thread explains some of the problem:
http://www.hydrogenaudio.org/forums/index....5964&hl=mp3gain (http://www.hydrogenaudio.org/forums/index.php?showtopic=15964&hl=mp3gain)

This thread also has further information, and a reply from Snelg (the author of
MP3Gain and a foobar fan) explaining why MP3Gain was coded in that way

http://www.hydrogenaudio.org/forums/index....opic=21730&st=0 (http://www.hydrogenaudio.org/forums/index.php?showtopic=21730&st=0)
Title: foo_pod - Foobar2000 meets the iPod
Post by: =trott= on 2004-08-24 23:01:53
Hey all,


I think I've managed to read through most of this thread, but haven't yet found how to delete files from the ipod, without using the sync feature. As a side remark, when you use smart playlists is it normal that randomization always seems to randomize in the same way? I have created 2 smart playlists. When I play either of them, they successfully select only the songs matching the criteria, but though my ipod is in shuffle mode I always seem to hear the same songs...

Otherwise a great job on the plug-in!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-08-24 23:59:18
I'm not at a computer with foo_pod loaded right now, but I believe you can just right click the song, choose the foo_pod menu and choose "remove from iPod".
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-25 03:26:48
Quote
I think I've managed to read through most of this thread, but haven't yet found how to delete files from the ipod, without using the sync feature.

As Lew_Zealand mentioned, just Load the iPod playlist, then you can select the file(s) you want to delete and select "Delete file(s) from iPod".


Quote
As a side remark, when you use smart playlists is it normal that randomization always seems to randomize in the same way? I have created 2 smart playlists. When I play either of them, they successfully select only the songs matching the criteria, but though my ipod is in shuffle mode I always seem to hear the same songs...

That is the iPod's fault - foo_pod is just telling it to randomize the songs included in the smart playlist, and it is up to the iPod to do the randomization.  I (and others) have noticed that the iPod's randomizer is fairly repeatitive.
Title: foo_pod - Foobar2000 meets the iPod
Post by: metamorphoise on 2004-08-25 04:48:58
hi, new ipod/foo_pod user here

one thing that irritates me about ipod is the handling of various artist albums, because i browse by genre>artist on the ipod theres like a bazillion artists with just one song from a VA album.
my tags are like this: %various%='rebirth of cool', %artist%='smoke city' %title%='underwater love'

i wonder, would it be possible to give foo_pod the option to parse the tag info like this....?
if %various% exists, write %various% to the artist field in ipodDB and write %artist%~%title% in the title field in ipodDB

anyway, thanks for the great plugin, soo much better than having to deal with itunes
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-26 03:51:04
Quote
one thing that irritates me about ipod is the handling of various artist albums, because i browse by genre>artist on the ipod theres like a bazillion artists with just one song from a VA album.
my tags are like this: %various%='rebirth of cool', %artist%='smoke city' %title%='underwater love'

i wonder, would it be possible to give foo_pod the option to parse the tag info like this....?
if %various% exists, write %various% to the artist field in ipodDB and write %artist%~%title% in the title field in ipodDB

anyway, thanks for the great plugin, soo much better than having to deal with itunes

Thanks!

I have, as a long term subproject, to add scripting support to foo_pod, so you could dynamically change the metadata stored in the iPod database, as you are suggesting.

foo_pod currently does support an alternate set of metadata, mostly to support people with tags in non-Latin based languages (that don't display well on the iPod). 

In the preferences, there is an item called "Alternate Metadata Prefix".  What that does is instructs foo_pod to look for metadata starting with that value (POD_ by default), and use that instead of the regular metadata.  So for example, if you have a song with ARTIST set to "The Artist" and POD_ARTIST set to "Various Artists", foo_pod will write "Various Artists" to the iPod database, and the song will show up as Various Artists on the iPod. 

So all you need to do is find a program that you can transfer the tags to POD_* (foo_pod supports TITLE, ARTIST, ALBUM, GENRE, COMMENT, COMPOSER, and TRACKNUMBER  for use with the alternate metadata prefix).  I think Foobar's MassTagger can do this, but I only have limited experience using it, so I'm not sure.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-08-26 04:08:52
Aero,

Any news on the Playlist Generator front?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-26 04:26:09
Quote
Any news on the Playlist Generator front?

Unfortunately, I haven't had any free time in the past 3 weeks in order to seriously work on foo_pod.  I'm close to finishing up a contract, so after that is complete, I'll hopefully have some cycles to put into foo_pod. 

But before this latest rush, I was able to get a really good start on CUE sheet parsing and some work on the Playlist Editor.  I was able to get playlist renaming, adding, and deleting hooked up, but I had some problems adding support for dragging Foobar songs to build a playlist.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mj-barton on 2004-08-27 01:22:46
I have to suggestions that would signifcantly increase my use for the iPod.

1.  Allow foo_pod to have an Auto-Update function where it compares the music files stored on iPod to those in the Album List database.  I think would be a very simple function to create.

2.  I like the idea of browsing my audio collection on my hard-drive with the album list.  An "album list" for the iPod it makes managing my iPod a lot easier then scrolling through a huge playlist.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Lew_Zealand on 2004-08-27 04:42:01
Quote
1.  Allow foo_pod to have an Auto-Update function where it compares the music files stored on iPod to those in the Album List database.  I think would be a very simple function to create.[a href="index.php?act=findpost&pid=237260"][{POST_SNAPBACK}][/a]


Why not just create a playlist of your album list, and sync with that?
Title: foo_pod - Foobar2000 meets the iPod
Post by: infrared on 2004-08-29 21:09:42
Quote
2.  I like the idea of browsing my audio collection on my hard-drive with the album list.  An "album list" for the iPod it makes managing my iPod a lot easier then scrolling through a huge playlist.
[{POST_SNAPBACK}][/a] (http://index.php?act=findpost&pid=237260")


Is this what you're looking for? [a href="http://www.foobar2000.org/foo_albumlist.zip]http://www.foobar2000.org/foo_albumlist.zip[/url]
Title: foo_pod - Foobar2000 meets the iPod
Post by: hermit22 on 2004-08-31 18:14:18
First off, many thanks for a great product.  It does almost anything I can think of.

I did run into a really weird problem recently, though.  I looked through the past 5 pages or so of this thread and didn't find anything on it.

A majority of my music is full albums FLAC'd and then Matroska'd.  With iTunes, I would just transcode it to mp3, load those files and copy them over.  I figured that the transcode feature of foo_pod would allow me to skip this step.  However, when I highlight such an album and select Send Files to iPod in the right context menu, it only transcodes the first song and then quits as if it was all done.

Is this expected behavior?  Am I doing something wrong?

Any help would be appreciated.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-08-31 19:29:22
Quote
A majority of my music is full albums FLAC'd and then Matroska'd.  With iTunes, I would just transcode it to mp3, load those files and copy them over.  I figured that the transcode feature of foo_pod would allow me to skip this step.  However, when I highlight such an album and select Send Files to iPod in the right context menu, it only transcodes the first song and then quits as if it was all done.

Is this expected behavior?  Am I doing something wrong?


I'm not very familiar with Matroska, but I believe it is a container format that bundles up an entire album as a single file and has something like a cue sheet to present individual songs, correct? 

The problem is that Foobar doesn't do a very good job with such formats, and it looks like a single file to components like foo_pod.  I was/am working on support for cue sheets, but for right now, you will just get a single song.

So you aren't doing anything wrong, and I'll need to add support for such formats in the future.
Title: foo_pod - Foobar2000 meets the iPod
Post by: nchase on 2004-09-10 13:20:12
I really like foo_pod. Whenever I use it however, I have to go into iTunes and delete the playlist that is created in order to be able to view my songs on the iPod. If I don't delete that playlist, nothing is visible. As soon as I delete it, everything works. Perhaps someone could point me in the right direction? I'd appreciate it 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-11 02:00:24
Quote
I really like foo_pod. Whenever I use it however, I have to go into iTunes and delete the playlist that is created in order to be able to view my songs on the iPod. If I don't delete that playlist, nothing is visible. As soon as I delete it, everything works. Perhaps someone could point me in the right direction? I'd appreciate it 

That's pretty weird...I can't ever recall seeing that or hearing someone else report it.  Apparently you can reproduce it, so the next time it happens, please select the "Export iTunesDB As XML" option in the foo_pod menu, zip up the XML, and email it to me so I can see if I can see what is going on.
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-13 09:59:43
I've just finished reading through this entire thread.  Whew, that was long but very informative.

First off, I'd like to say a big thanks! to Areo (and Otto42) for all of the hard work.  I've almost completely replaced iTunes on my 4thGen 20GB.

I record talk radio on my PC and transcode the shows into M4A format.  I would like to "convert" these to M4B so I can use bookmarks and faster playback.  Unfortunately the stars aren't quite in alignment for this to work with FooBar+foo_pod. 

I am currently using iTunes to load the M4B files onto the iPod.  Once they are there, foo_pod does a great job with them.

What I would love to see is a command in foo_pod that would convert an existing M4A file into M4B.  To do this it would rename the filename on the iPod and then update the ipod database to reflect the file name change.  This would allow me to use foobar to place the files on the iPod and switch them over to M4B without having to involve iTunes.

I've tried to do it manually, but there doesn't seem to be any way to re-import an XML export so I'm kind of stuck.

Thanks again.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-13 15:48:53
Quote
I record talk radio on my PC and transcode the shows into M4A format.  I would like to "convert" these to M4B so I can use bookmarks and faster playback.  Unfortunately the stars aren't quite in alignment for this to work with FooBar+foo_pod. 

...

What I would love to see is a command in foo_pod that would convert an existing M4A file into M4B.  To do this it would rename the filename on the iPod and then update the ipod database to reflect the file name change.  This would allow me to use foobar to place the files on the iPod and switch them over to M4B without having to involve iTunes.

Hmmm...I have never used bookmarking on the iPod, but this article (http://www.ipodlounge.com/articles_more.php?id=3233_0_8_0_M) seems to back up what you are saying about just changing the file extension to "m4b " (with a space on the end).  I'll look into it more tonight, but since you mentioned that you are already transcoding, try this:

Go to the foo_pod Preferences, Transcoder tab.  Then select custom encoder, and (assuming you are using FAAC), set it as follows:

  Encoder: faac.exe
  Extension: m4b      (remember the trailing space(?))
  Parameters: -q75 -w - -o %d
  Format is: lossy
  Highest BPS: 24
  Tag: default

(you can put whatever you want for the -q (quality) setting, but -q 75 or lower would seem to be appropriate for voice recordings).

Now when you transcode your recordings, use the custom encoder and it will write out m4b songs and database entries.  I can't test it right now, but it if the article is correct, this method should work.  It won't change the recordings you already have on your iPod, though, so I might still do a context menu function where you can select one or more m4a songs on your iPod and convert them to m4b.  The only problem is that Foobar isn't set up to treat m4b as audio files, so you won't be able to play them back in Foobar.


Quote
I've tried to do it manually, but there doesn't seem to be any way to re-import an XML export so I'm kind of stuck.

Yeah, I have been meaning to implement that.  Originally, I was just going to do it so you could import smart playlist settings, but I decided it might be useful to have a complete import functionality.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-09-13 23:57:57
Hey Aero. Can you include in the next version a transcoded file processing abilities similar to the diskwriter's like passing files through the DSP and, more importantly, imposing ReplayGaining (dock line out doen't have Sound Check in the 3G as you know)? I bet you can just borrow that code from the diskwriter source like you borrowed code (the whole code even  ) from the clienc file writer.
I plan to retransfer files to my iPod, transcoding them all so I figured I'd wait for these features first.

So how's that contract going? Profitable? I don't wanna sound pushy, but when do you think you would resume work on foo_pod? I understand that paying programming jobs would be way up higher on the list, but I'm just wondering if you have any foresight into how long it would be.

Thanks again for all the work you put into this wonderful plugin. Not a single iPod interfacer even comes close to it. Apple ought to get a contract with you before they loose you to those other guys who have a contract with you.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-14 05:58:02
Quote
Hey Aero. Can you include in the next version a transcoded file processing abilities similar to the diskwriter's like passing files through the DSP and, more importantly, imposing ReplayGaining (dock line out doen't have Sound Check in the 3G as you know)? I bet you can just borrow that code from the diskwriter source like you borrowed code (the whole code even  ) from the clienc file writer.
I plan to retransfer files to my iPod, transcoding them all so I figured I'd wait for these features first.

Actually, there is already a DSP filter that is applied by default - Advanced Limiter.  So I really just need to hook up a GUI to control the DSP filters applied during transcoding.  I considered it for the last release, but other than a limiter, there aren't many DSP filters that are useful (maybe EQ or Crossfeed being the exceptions).  So maybe I'll hook just those up, for simplicity.  ReplayGain could also be hooked up without much trouble, although a ReplayGain -> Volume conversion might be more useful, since it would be effective on both transcoded and normal files.

Quote
So how's that contract going? Profitable? I don't wanna sound pushy, but when do you think you would resume work on foo_pod? I understand that paying programming jobs would be way up higher on the list, but I'm just wondering if you have any foresight into how long it would be.

I'm actually just wrapping up a contract, so I'm enjoying a little extra free time right now.  But for what it is worth, stepping back from working on foo_pod has given me some different insights needs to be done.

As for a timeframe, I can't really say - although next week is looking promising.  I'd like to get a few more features in, then call it a 1.0 release and decide where to go next.

Quote
Thanks again for all the work you put into this wonderful plugin. Not a single iPod interfacer even comes close to it. Apple ought to get a contract with you before they loose you to those other guys who have a contract with you.

Heh...that would be fun.  I'm sure I could hang out with Steve Jobs, tell him all of the deficiences in the iPod, how I would do it better, and get fired - all in the same day! 
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-14 06:25:51
Aero, thanks for your reply about using the transcoder to turn an m4a file into a m4b.  Also interesting that the article you referenced suggests using "m4b " and not "m4b".  I've been using "m4b" with i tunes for a few days already and its worked just fine.

I didn't want to transcode the files again (they've already been from wav to mp3 to aac) so I decided to take a short cut:

Encoder: xcopy.exe
Extension: m4b
Parameters: %s %d
Format is: lossless
Highest BPS: 16
Tag: default

For those following along at home, this ends up simply copying the temp file to another temp file with the magic m4b extention.  No transcoding needed and its very quick.

Now I only need to make sure I don't accidently leave transcoding aac files enabled when I do a big sync/copy.

Aero, any chance you could add another logic grouping to the transcoding section.  I'm thinking "Transcode AAC files below xxx kbps".  And maybe have it trigger a seperate script...

Or maybe adding "convert to m4b" action somewhere is easier?

Thanks again!
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-14 06:34:41
What is the state of maintaining "ratings", "number of plays", and "date last played" data when using foo_pod?

This thread has discussed it, but I'm not clear where it stands now.  Am I correct that these values are read from the iPod and added to the Foobar database, but not written out to the iPod on a sync?

Slightly OT...
What are the proper TAGZ codes to get "ratings", "number of plays", and "date last played" data in Foobar?  I'm using the Columns UI and I've added a column for %rating% which seemed to work okay, but I can't figure out the others.  Is there a big list of these somewhere?  I couldn't find one searching with goodle.
Title: foo_pod - Foobar2000 meets the iPod
Post by: BoneJazz on 2004-09-14 07:56:37
Firts: Kudos for developers of this great plugin!

Then my little issue; in the Smart Playlist Editor once I've pressed the Add Button, I cannot see any choice in two of the drop-down menu: I mean if I try to change "Artist" or "Contains" no drop-down choice is showed ("All", "Songs" and "Random" are working...).
Am I wrong in something or what?

I'm running foo_pod with f2k 0.8.3 on a wk2 SP3 machine

Thanks in advance for your support and I'm sorry for my bad english.

BoneJazz
Title: foo_pod - Foobar2000 meets the iPod
Post by: rexy on 2004-09-14 13:13:47
Quote
there aren't many DSP filters that are useful (maybe EQ or Crossfeed being the exceptions).  So maybe I'll hook just those up, for simplicity.  ReplayGain could also be hooked up without much trouble, although a ReplayGain -> Volume conversion might be more useful, since it would be effective on both transcoded and normal files.


The EQ would be just fine. Figured it would be better to make it so you can just make your own DSP stack or to pass the files through the DSP stack configured in the DSP manager for personilization's sake, but if it's too time consuming to do it that way, just drop it and do only those DSPs which are important.
Apart from that, I'm not sure I understand this concept you talk of: "ReplayGain -> Volume coonversion." I don't know what you understood from what I wrote in my last post, but what I was thinking of is simply hard-encoding the RG calculations on the transcoded file's volume like diskwriter can do if you tell it to use RG in processing.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-14 15:55:31
Quote
Apart from that, I'm not sure I understand this concept you talk of: "ReplayGain -> Volume coonversion." I don't know what you understood from what I wrote in my last post, but what I was thinking of is simply hard-encoding the RG calculations on the transcoded file's volume like diskwriter can do if you tell it to use RG in processing.

There are 3 ways (in general) to get ReplayGain corrections onto the iPod:

1. Permanently modify the audio file so that its volume is changed.  The advantage of this is that it will playback at the correct volume level on all players, even if they don't support ReplayGain.  The disadvantage is that the file is altered, and you can't switch off the ReplayGain adjustments on the iPod.

2. Use the SoundCheck database field in the iPod database.  This is nice because it is already implemented in foo_pod and it can be switched on/off as needed on the iPod.  The downside is that the SoundCheck adjustment isn't available through the Line Out  port on 3G iPods (it does work on 4G iPods, though).

3. Use the Volume database field in the iPod database.  The major differences between SoundCheck and Volume is that Volume can't be turned off, but it is effective through the Line Out port on 3/4G iPods. 


I don't currently have a way to map ReplayGain values to Volume values, but it shouldn't be too hard to work something out.  Once that is ready, it would just be another choice in the Preferences - to either apply ReplayGain corrections to the SoundCheck or Volume fields in the database.  Most people would want to use the SoundCheck entry, but if you have a 3G iPod and want ReplayGain through the Line Out, you would choose the Volume option.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-15 07:10:05
I did some experimentation with iPod bookmarks tonight, and had some interesting results.

First of all, I cleared up another entry in the iPod database (Otto, if you're out there, mhit::unk6 is the bookmark time, in milliseconds).  The really weird thing this database field is only used if the filename ends in ".m4b".  The exact same file, named ".m4a", with the exact same database entries doesn't make use of the bookmark.  Technically, this could work for any supported iPod audio format, but for whatever reason, Apple is restricting it to their "protected AAC" audio book format.

So while the good news is that I can create bookmarked in foo_pod, the bad news is, like I mentioned before, that Foobar isn't set up to handle .m4b files.  So my earilier suggestion to transcode to file extension "m4b" won't work, since Foobar can't update the metadata after transcoding, so the transcoding fails.  I added a temporary workaround in foo_pod to make this work for testing, but the real solution is to get Peter to add m4b to the list of supported file extensions in mp4_parser.cpp, or at least find someone to rebuild foo_input_std.dll, and add M4B to the list of extensions.
Title: foo_pod - Foobar2000 meets the iPod
Post by: jarsonic on 2004-09-15 20:54:06
Aero -

What is error #76 or #78?  I get it on occasion (especially lately...) when trying to add music to my ipod using foo_pod - I have room to spare on the ipod, but it won't let me add more, citing that error.  Any ideas?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-15 21:08:41
Quote
What is error #76 or #78?  I get it on occasion (especially lately...) when trying to add music to my ipod using foo_pod - I have room to spare on the ipod, but it won't let me add more, citing that error.  Any ideas?

Would you post the relevant section of the Foobar console output, so I can see the error in context?
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-15 21:33:59
Quote
First of all, I cleared up another entry in the iPod database (Otto, if you're out there, mhit::unk6 is the bookmark time, in milliseconds).[a href="index.php?act=findpost&pid=241846"][{POST_SNAPBACK}][/a]


While I have not seen an actual Apple brand audio book, it is my understanding that they have several pre programmed "bookmarks" at the chapter stops.  I am guessing these are not temporary like the bookmark the iPod sets on its own.

That could account for more of those unknown entries in the database.

Quote
So while the good news is that I can create bookmarked in foo_pod, the bad news is, like I mentioned before, that Foobar isn't set up to handle .m4b files.  So my earilier suggestion to transcode to file extension "m4b" won't work, since Foobar can't update the metadata after transcoding, so the transcoding fails.  I added a temporary workaround in foo_pod to make this work for testing, but the real solution is to get Peter to add m4b to the list of supported file extensions in mp4_parser.cpp, or at least find someone to rebuild foo_input_std.dll, and add M4B to the list of extensions.


This is consistant with my xcopy.exe hack.  For some reason it worked once for me (when I had already loaded a handful of m4b files via itunes first), but its not working now on a blank iPod.  Could a simple hexedit on foo_imput_std.dll give us a stop gap solution by changing a currently suported (but not often used) format into "m4b"?  I'll have to give that a try.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-15 21:53:46
Quote
While I have not seen an actual Apple brand audio book, it is my understanding that they have several pre programmed "bookmarks" at the chapter stops.  I am guessing these are not temporary like the bookmark the iPod sets on its own.

That could account for more of those unknown entries in the database.

If there is more than one bookmark, then there must be some unknown list in the database, because there aren't that many unknowns left.  Or they could be creating multiple database entries, each pointing to the same audio file, with a start/stop time for each chapter.  Without knowing any more, I'd bet they are doing it like that.

Edit: BTW, is it possible to actually create/modify a bookmark on the iPod?  In my limited testing, I only saw that you could seek to a certain point in iTunes, and the iPod would start playing from that point.


Quote
This is consistant with my xcopy.exe hack.  For some reason it worked once for me (when I had already loaded a handful of m4b files via itunes first), but its not working now on a blank iPod.  Could a simple hexedit on foo_imput_std.dll give us a stop gap solution by changing a currently suported (but not often used) format into "m4b"?  I'll have to give that a try.

Yeah, you will need to do 2 substitutions:

1. Look for "*.MP4;*.M4A;*.M4P".  Change the MP4 to M4B.
2. Then approximately 16 bytes later, there will be the string "M4P M4A MP4" (the spaces shown here are actually the null (0) value).  Again, change MP4 to M4B. 

I actually just tested this to make sure I was giving the correct information, and uploaded the modified version of foo_input_std.dll (http://www.loodi.com/foo_input_std_M4B_SUPPORT.zip) (from Foobar v0.8.3).  If you want to try this out, make a backup copy of foo_input_std.dll, and realize that by adding support for .m4b files, supported for .mp4 files was removed.
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-16 04:32:44
I must have been mistaken about the multi bookmarks.  I downloaded some free audio books from the iTMS (just search for 9-11 hearing) but I didn't see any indexing bookmarks at all.  Oh well.  That would be a good idea for the future.

Thanks for the link to the patched foo_input_std.dll file.  I loaded it up and it works great.  I don't have any mp4 files so I don't care that they are gone.  And its easy enough to rename them if I ever need to support them.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-09-17 15:29:17
Quote
(Otto, if you're out there, mhit::unk6 is the bookmark time, in milliseconds).[a href="index.php?act=findpost&pid=241846"][{POST_SNAPBACK}][/a]

So this is just the last time that the file was at? Cool. I'll rename it to something more useful.

For what it's worth, I use my own M4B files all the time on the iPod and iTunes. Essentially, the iPod simply remembers the last point at which it was playing an M4B file. This transfers in both directions with iTunes, near as I can tell. I figured it was in there, but I had not found it yet.

I *think* that the one weird "timestamp" field in the Play Counts file contains the last point that the iPod played an M4B and this is how it transfers the info back to iTunes.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-19 05:04:10
Quote
I *think* that the one weird "timestamp" field in the Play Counts file contains the last point that the iPod played an M4B and this is how it transfers the info back to iTunes.

Yep - I checked, and PCEntry::unk1 is the bookmark time/last played location on the iPod.

So not only is another MHIT unknown discovered, but PCEntry is now also completely fleshed out.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-09-19 17:18:40
Quote
Yep - I checked, and PCEntry::unk1 is the bookmark time/last played location on the iPod.

So not only is another MHIT unknown discovered, but PCEntry is now also completely fleshed out.
[a href="index.php?act=findpost&pid=242751"][{POST_SNAPBACK}][/a]

Sweet. I've changed iPodDB to rename both of those entries to "bookmark". Seems descriptive enough.
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-20 16:44:58
I've just started to use the Smart Playlist Editor and I must say it does everything I could hope for.  I was able to create all kinds of interesting smart playlists for both music and my talk radio clips.

The problem I am having is that my Smart Playlists disappear from the iPod after every sync.  Is this normal?  Am I doing something wrong?

If this is normal, would it be possibile to add an import and export feature to the Smart Playlist Editor so we don't have to re-enter the lists constantly?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-21 05:01:54
Quote
I've just started to use the Smart Playlist Editor and I must say it does everything I could hope for.  I was able to create all kinds of interesting smart playlists for both music and my talk radio clips.

The problem I am having is that my Smart Playlists disappear from the iPod after every sync.  Is this normal?  Am I doing something wrong?

If this is normal, would it be possibile to add an import and export feature to the Smart Playlist Editor so we don't have to re-enter the lists constantly?

It isn't normal - the smart playlists should persist until you delete them.  Are you using iTunes or any other program (other than foo_pod) with your iPod?

I am currently working on adding support for import/export - not only of smart playlists, but of the whole iTunesDB database.  You can already export the database as XML, but I'm adding the ability to import it from XML as well.  Then I will create a subset of those functions to only include the smart playlists.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-09-21 07:55:43
Is it normal that when I go to Components --> foo_pod --> Smart Playlist Editor the two dropdowns (where I define the rules) aren't working?

I have to use the keyboard (arrows or first letter) to select an item because clicking on arrow button doesn't expand the field (hope this is clear ).

Please note that the Match All/Any dropdown is functioning correctly.

Thanks.

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-21 08:10:38
Quote
It isn't normal - the smart playlists should persist until you delete them.  Are you using iTunes or any other program (other than foo_pod) with your iPod?
[a href="index.php?act=findpost&pid=243208"][{POST_SNAPBACK}][/a]

Nope.  Just foo_pod.  I do have iTunes installed, but I haven't used it for quite some time.

I have two playlists on my PC which I use to load up my iPod.  One holds all of my music and the other holds some talk radio shows.  I have them both loaded in foobar (and no other play lists are loaded).

I create some SPL's which work okay.  I can mount and unmount my iPod all day long and the SPL's stay in place just fine.

If I go to the foo_pod menu and select "Sync All Playlists" it does it work and then comes back (if I haven't changed anything (like a rating) then no files are moved, but the iPod database gets rebuilt).  Now if I to do the SPL Editor, everything is blank and I have to start over with my SLP's.

I've done this twice now with the same results.  Next I will do a foo_pod "Delete all iPod music and playlists" and then a "Sync All Playlists", build some SLP's, sync again, and see if they still come up missing.

Quote
I am currently working on adding support for import/export - not only of smart playlists, but of the whole iTunesDB database.  You can already export the database as XML, but I'm adding the ability to import it from XML as well.  Then I will create a subset of those functions to only include the smart playlists.
[a href="index.php?act=findpost&pid=243208"][{POST_SNAPBACK}][/a]


Cool.  That will do exactly what I am looking for.

PS, I'm still trying to figure out exactly how the ratings, play count, and time of last play values are exchanged between the iPod and foo_pod.  I've read through the thread for the details, but it seems the thoughts were never completed.  I'm working with ratings now.  From what I can tell, I have to do the ratings in foo_pod and then load those into the iPod.  Is there any exchange of ratings from the iPod back to Foobar?
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-21 09:10:32
Okay, I wiped my pod, did a sync all playlists, made a SPL entry, did another sync all, and the SPL was missing again.  That should pretty much rule out intervention from an outside program like iTunes.

What can I do to help now?  I'm running windows XP SP2, foobar 0.8.3, and a 4th gen 20Gig iPod.  I'm not sure how to tell what version of foo_pod I have, but its 384,000 bytes and dated Spet 10th.

I'd post a XML dump, but I'm not sure its relevant quite yet.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Majdas on 2004-09-22 12:09:33
Hi, I would like to thank the author of this plugin, it's awesome.

There's just one little thing I would like to ask about if it's possible. Since the iPod likes to arrange the songs by the song title in the id3 tag if there's no tracknumber it gets kinda messy sometimes. Is it possible that the plugin can edit mp3s "on the fly" when transfering them and add a tracknumber? Lets say I have some songs that's name 01 - something.mp3 02 - something.mp3 and when transfering it adds 1 as tracknumber in the id3 tag if there isn't one without changing the mp3 on the harddrive? That would've been awesome.

Thanks again!
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-22 21:09:48
Quote
Hi, I would like to thank the author of this plugin, it's awesome.

Thanks!

Quote
There's just one little thing I would like to ask about if it's possible. Since the iPod likes to arrange the songs by the song title in the id3 tag if there's no tracknumber it gets kinda messy sometimes. Is it possible that the plugin can edit mp3s "on the fly" when transfering them and add a tracknumber? Lets say I have some songs that's name 01 - something.mp3 02 - something.mp3 and when transfering it adds 1 as tracknumber in the id3 tag if there isn't one without changing the mp3 on the harddrive? That would've been awesome.


Yes, that would be very possible, since the iPod relies solely on the database for metadata. 

There are a couple of ways that this could eventually be implemented.  First, I have been planning all along to embed a Lua scripting engine into foo_pod, so users could write simple scripts to do exactly what you are looking for.  It is more of a long term goal, though.

Another way to do it would be to use the (upcoming) XML database import feature.  Or I could extend the Pod interface so developers could create Foobar components that could better interface with foo_pod.  Finally, I could borrow code from Foobar's MassTagger to guess at missing metadata. 

Out of those possibilities, adding the scripting support would probably be the best solution.  I'll get around to adding it sooner or later! 


FreydNot and mobyduck - I'll look into your smart playlist problems tonight.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-23 04:56:31
Quote
Is it normal that when I go to Components --> foo_pod --> Smart Playlist Editor the two dropdowns (where I define the rules) aren't working?

I have to use the keyboard (arrows or first letter) to select an item because clicking on arrow button doesn't expand the field (hope this is clear ).

That isn't normal, but I can't reproduce it on my system, either. 

One question - when you press the tab key until the first drop down box is selected (Edit: or just click in the box), then press F4, what happens?
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-09-23 10:13:38
Quote
Quote
Is it normal that when I go to Components --> foo_pod --> Smart Playlist Editor the two dropdowns (where I define the rules) aren't working?

I have to use the keyboard (arrows or first letter) to select an item because clicking on arrow button doesn't expand the field (hope this is clear ).

That isn't normal, but I can't reproduce it on my system, either. 

One question - when you press the tab key until the first drop down box is selected (Edit: or just click in the box), then press F4, what happens?
Exaclty the same thing that happens when I click on the arrow button.

To be more precise, the item "loses focus" (it isn't highlighted anymore) and a black line appears below the combo.

As I said, all ohters combo are behaving correctly, su I suspect it may have something to do with the "repeat region" where the rules are drawn (BTW, tab order should be arranged, I think).

Using Win2K SP4 (no problem on XP).

Thanks for your time.

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: Majdas on 2004-09-23 15:17:05
Quote
Quote
There's just one little thing I would like to ask about if it's possible. Since the iPod likes to arrange the songs by the song title in the id3 tag if there's no tracknumber it gets kinda messy sometimes. Is it possible that the plugin can edit mp3s "on the fly" when transfering them and add a tracknumber? Lets say I have some songs that's name 01 - something.mp3 02 - something.mp3 and when transfering it adds 1 as tracknumber in the id3 tag if there isn't one without changing the mp3 on the harddrive? That would've been awesome.


Yes, that would be very possible, since the iPod relies solely on the database for metadata. 

There are a couple of ways that this could eventually be implemented.  First, I have been planning all along to embed a Lua scripting engine into foo_pod, so users could write simple scripts to do exactly what you are looking for.  It is more of a long term goal, though.

Another way to do it would be to use the (upcoming) XML database import feature.  Or I could extend the Pod interface so developers could create Foobar components that could better interface with foo_pod.  Finally, I could borrow code from Foobar's MassTagger to guess at missing metadata. 

Out of those possibilities, adding the scripting support would probably be the best solution.  I'll get around to adding it sooner or later! 


FreydNot and mobyduck - I'll look into your smart playlist problems tonight.
[a href="index.php?act=findpost&pid=243674"][{POST_SNAPBACK}][/a]


Sounds good. I'll be waiting.
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-09-23 15:44:03
Quote
Is it normal that when I go to Components --> foo_pod --> Smart Playlist Editor the two dropdowns (where I define the rules) aren't working?
I have to use the keyboard (arrows or first letter) to select an item because clicking on arrow button doesn't expand the field (hope this is clear ).
(...............)
To be more precise, the item "loses focus" (it isn't highlighted anymore) and a black line appears below the combo.

I have that too, and like mobyduck, i run on w2k sp4..
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-23 15:52:03
Quote
Quote
Is it normal that when I go to Components --> foo_pod --> Smart Playlist Editor the two dropdowns (where I define the rules) aren't working?
I have to use the keyboard (arrows or first letter) to select an item because clicking on arrow button doesn't expand the field (hope this is clear ).
(...............)
To be more precise, the item "loses focus" (it isn't highlighted anymore) and a black line appears below the combo.

I have that too, and like mobyduck, i run on w2k sp4..

I have a test version of foo_pod that might fix this problem.  Try foo_pod_comboboxtest.zip (http://www.loodi.com/foo_pod_comboboxtest.zip) and see if it helps.
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-09-23 16:48:31
Quote
I have a test version of foo_pod that might fix this problem.  Try foo_pod_comboboxtest.zip (http://www.loodi.com/foo_pod_comboboxtest.zip) and see if it helps.
Nope, sorry: no difference here.

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: richard123 on 2004-09-23 21:00:32
Great plug-in.  Thanks so much!

A request:  I like to have the music directory on my ipod arranged by artist and album (music\artist1\album2\song3), rather than F?? (music\f00\song3).  Is there any way to do this in foo_pod?  (I tried to read the whole thread, apologies if I missed this.)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-23 21:23:25
Quote
Great plug-in.  Thanks so much!

Thanks!

Quote
A request:  I like to have the music directory on my ipod arranged by artist and album (music\artist1\album2\song3), rather than F?? (music\f00\song3).  Is there any way to do this in foo_pod?  (I tried to read the whole thread, apologies if I missed this.)

You can not currently control how foo_pod places songs on the iPod.  I haven't done any experiments to see what you are requesting would actually work, but it might cause problems with other iPod utilities.

This isn't quite what you are asking for, but you can export songs from the iPod to your hard drive and have foo_pod place the songs in a directory structure like you suggested..  Just select one or more files in the iPod playlist, right click, and select Save iPod Files To Disk.
Title: foo_pod - Foobar2000 meets the iPod
Post by: richard123 on 2004-09-23 23:18:56
Quote
You can not currently control how foo_pod places songs on the iPod.  I haven't done any experiments to see what you are requesting would actually work, but it might cause problems with other iPod utilities.


There was an extensive discussion of this on some of the ipod forums a number of months ago.  No one reported any problems using this method.  People liked it because it made it easy to sync with a simple directory sync utility and because it made it easy to copy files to a hard disk without special software.  This was before the latest gen Ipod and iTunes.

In any event, could I set up the directory structure and songs on my ipod as I want, then use foo_pod to create a new iTunesDB?
Title: foo_pod - Foobar2000 meets the iPod
Post by: SoulEata on 2004-09-24 01:46:13
why not just make it so this could play music from any addon-harddrive?

Like thumb-drives, digital audio players , etc.

I know winamp has some plugin called gUSB that works like that
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-24 06:13:02
Quote
why not just make it so this could play music from any addon-harddrive?

Like thumb-drives, digital audio players , etc.

I know winamp has some plugin called gUSB that works like that

Is this a new question, or a follow up to an earlier post?

If you are asking why foo_pod doesn't support thumb drives and such, it is because there is no need for a plugin - Foobar can play songs from those devices without assistance. Since an iPod has a database that contains lots of metadata, even through the songs are technically playable directly from the iPod, a component like foo_pod is required.

If you also mean why doesn't foo_pod support other devices, then that is easy - I don't have any other players (other than an old unused Rio 500)...
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-24 06:37:17
Quote
In any event, could I set up the directory structure and songs on my ipod as I want, then use foo_pod to create a new iTunesDB?

Almost.  foo_pod has a "Repair iTunesDB" feature, which rebuilds a database based on the metadata contained in files on the iPod.  So in essence, this is just want you want - it will search for songs and create a functional database.

Unfortunately...it is currently hard coded to only look in the Music\Fnn directories, and only a single level deep.

There are only a few other dependancies on the Music\Fnn layout in foo_pod, so I guess I could make it more generic so at least Repair would search the entire Music directory and subdirectories.  Then you could just put your artist/album subdirectories under the iTunes\Music directory, run Repair, and you would be set.  Maybe I could even create a little utility that would just start up Foobar/foo_pod, automatically run the Repair feature, and then exit.  So updating your iPod would be as easy as using Windows Explorer to copy/remove files, and then running the utility to recreate the iTunesDB.  Hmm...that's not a bad idea, if I do say so myself! 


Another option would be to wait for my Import iTunesDB From XML.  Then assuming you could find a utility to create compatable XML, you could use that feature to convert XML to a iTunesDB file.
Title: foo_pod - Foobar2000 meets the iPod
Post by: SoulEata on 2004-09-24 07:11:49
Quote
Quote
why not just make it so this could play music from any addon-harddrive?

Like thumb-drives, digital audio players , etc.

I know winamp has some plugin called gUSB that works like that

Is this a new question, or a follow up to an earlier post?

If you are asking why foo_pod doesn't support thumb drives and such, it is because there is no need for a plugin - Foobar can play songs from those devices without assistance. Since an iPod has a database that contains lots of metadata, even through the songs are technically playable directly from the iPod, a component like foo_pod is required.

If you also mean why doesn't foo_pod support other devices, then that is easy - I don't have any other players (other than an old unused Rio 500)...
[a href="index.php?act=findpost&pid=244050"][{POST_SNAPBACK}][/a]



Ah. didnt know that. Good deal.
Title: foo_pod - Foobar2000 meets the iPod
Post by: rpop on 2004-09-24 07:22:17
Quote
Great plug-in.  Thanks so much!

A request:  I like to have the music directory on my ipod arranged by artist and album (music\artist1\album2\song3), rather than F?? (music\f00\song3).  Is there any way to do this in foo_pod?  (I tried to read the whole thread, apologies if I missed this.)
[{POST_SNAPBACK}][/a] (http://index.php?act=findpost&pid=243942")

As far as I know, the only program that can currently do this is [a href="http://dbpoweramp.com/sveta-portable-audio.htm]Sveta Portable Audio[/url], which does a pretty nice job:

Title: foo_pod - Foobar2000 meets the iPod
Post by: richard123 on 2004-09-24 12:31:14
Quote
There are only a few other dependancies on the Music\Fnn layout in foo_pod, so I guess I could make it more generic so at least Repair would search the entire Music directory and subdirectories.  Then you could just put your artist/album subdirectories under the iTunes\Music directory, run Repair, and you would be set.  Maybe I could even create a little utility that would just start up Foobar/foo_pod, automatically run the Repair feature, and then exit.  So updating your iPod would be as easy as using Windows Explorer to copy/remove files, and then running the utility to recreate the iTunesDB.  Hmm...that's not a bad idea, if I do say so myself! 


That would be great!
Title: foo_pod - Foobar2000 meets the iPod
Post by: richard123 on 2004-09-24 12:33:18
Quote
As far as I know, the only program that can currently do this is Sveta Portable Audio (http://dbpoweramp.com/sveta-portable-audio.htm), which does a pretty nice job:

It would be nice to see something just as customizable, if not even more so, in foo_pod
[a href="index.php?act=findpost&pid=244067"][{POST_SNAPBACK}][/a]


I've used Sveta.  It makes you load too much stuff just to get the one function.  I prefer foo_pod, if Aero can implement the change he suggests.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-09-24 15:35:23
The real question regarding this sort of thing is is it iTunes compatible? If you only use foo_pod, great, but if you switch around a lot and use iTunes, then this might cause issues. Of course this means a simple preference switch to toggle on/off or something, but you get my drift.
Title: foo_pod - Foobar2000 meets the iPod
Post by: zeer on 2004-09-24 21:21:27
Quote
The real question regarding this sort of thing is is it iTunes compatible? If you only use foo_pod, great, but if you switch around a lot and use iTunes, then this might cause issues. Of course this means a simple preference switch to toggle on/off or something, but you get my drift.
[a href="index.php?act=findpost&pid=244152"][{POST_SNAPBACK}][/a]


at least it is compatible in read-mode. itunes reads itunesDB and gets paths accordingly. deleting files from itunes works. (used anapod explorer and itunes combo with the above  mentioned directory structure - works except when you run itunes it recreates Fxx subdirs - no time to crack itunes just to remove this behavior)
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-24 22:41:30
Version 0.9.4 (http://www.loodi.com/foo_pod.zip) is now available.

Well, long time no build.  There isn't a whole lot new in this build, but it should fix the combo box problem people have been reporting on Windows 2000, and it also modifies the Repair iPod Database feature to support richard123's idea about supporting non-Fnn directories for the music.

It works like this - first, Repair iPod Database has been renamed to the friendlier "Rebuild iPod Database".  The other big change is that it will search for any iPod playable file in the iPod_Control\Music directory or any subdirectories, and add those songs to the database. 

What this means is that you can using Windows Explorer to copy any files or directories into the Music directory, run Rebuild iPod Database, and you should end up with those songs being playable on the iPod.  And since the database is completely rebuilt each time you run it, you can also delete and move files with Explorer (or other file utility).  So if you want, you can avoid using foo_pod to add/remove songs.

The major caveat is that rebuilding the database will wipe out all playlists (smart and normal), along with certain fields in the database, such as play counts and stars.  So this feature may not be appropriate for everyone, but if you just want to add/remove songs to your iPod, it could be useful.



From the Readme file:
Code: [Select]
Version 0.9.4 - September 24, 2004
*  Added support for lowering, as well as raising, the iPod pre-amp/volume setting

*  Hacked support for .m4b files.  These are nothing more than .m4a files with a different extension,
  but the iPod treats them differently in that it stores the last played position in the database.  foo_pod
  doesn't currently do anything with this, but it is used by iTunes.

*  Fixed a bug in the Smart Playlist editor on Windows 2000 where the drop down boxes would appear to be empty.

*  Changed the name of "Repair iPod Database" to "Rebuild iPod Database", and also added support for discovering
  files anywhere in the iPod_Control\Music directory.  This means that you can copy songs to the Music directory
  (or any subdirectories) using Windows Explorer, then run Rebuild iPod Database, and foo_pod will create a
  working database on the iPod.  This is useful if you want to store your songs in human readable directories,
  rather than in F00 - F99.
Title: foo_pod - Foobar2000 meets the iPod
Post by: richard123 on 2004-09-24 23:42:57
Thanks.
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-09-25 00:52:11
Quote
it should fix the combo box problem people have been reporting on Windows 2000

yup, works!
Title: foo_pod - Foobar2000 meets the iPod
Post by: zeer on 2004-09-25 17:44:28
2 Aero:

one more feature request:

please, add a checkbox and code that allows to rebuild database from the root of ipod ( eg. h:\ instead of h:\iTunes_Control\Music\)

i hope that should not be too hard... and i don't use iPod for other file storage so i prefer to access the drive for music only.

ps. the paths like H:\foo.mp3 works with ipod perfectly if it is written in itunesDB (should be :foo.mp3 in DB)

[edit]
pps.
ofcourse itunesDB should reside where it was.
[/edit]
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-25 19:01:37
Quote
please, add a checkbox and code that allows to rebuild database from the root of ipod ( eg. h:\ instead of h:\iTunes_Control\Music\)

i hope that should not be too hard... and i don't use iPod for other file storage so i prefer to access the drive for music only.

ps. the paths like H:\foo.mp3 works with ipod perfectly if it is written in itunesDB (should be :foo.mp3 in DB)


Yeah, that is no problem.  I guess the only question is if anyone would want another preference item that would limit it to iTunes_Control\Music?

I was actually thinking about this yesterday when I was using the Windows "Send To" feature to copy some files to my USB drive.  (When you have a removable device connected to a Windows machine, you can right click files or folders, and select the device under the Send To menu item, and Windows will copy the files to the root of the device).  So if Rebuild acted on the whole iPod, you wouldn't even have to open up Windows Explorer to copy files to the iPod - you could simply select Send To.  And with a global Foobar shortcut key set up for Rebuild, you wouldn't even have to go to the Foobar window to start the Rebuild process.

I am also going to modify Rebuild so that it doesn't destroy your smart playlists.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Majdas on 2004-09-25 19:03:29
Just a quick question. Where's this "Rebuild iPod database" located? I cant find it anywhere, haha.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-25 20:37:18
Quote
Just a quick question. Where's this "Rebuild iPod database" located? I cant find it anywhere, haha.

Do you have foo_pod 0.9.4 installed?  If so, it is located under the Components menu -> foo_pod -> Rebuild iTunesDB database on iPod
Title: foo_pod - Foobar2000 meets the iPod
Post by: .zolder on 2004-09-26 00:52:11
Hey aero, i have a couple of suggestions for you.

When i load my ipod tracks in foobar using components > foo_pod > load ipod songs to playlist, and i delete one or more tracks in that playlist using rightclick > foo_pod > delete file from ipod, the file gets removed from the ipod, but it will stay in the playlist. It would be cool if you could make it so that the file gets removed from the playlist as well.

My other question is concerning the synchronize option. I don't know how this option works (technically speaking), but is it possible to not let foo_pod's synchronization look at differences in certain (perhaps user defined) tags, cause now, whenever one of these tags (PLAY_COUNTER, PLAY_DATE, PLAY_TIME) get changed, foo_pod deletes the tracks from the ipod only to upload them again.
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-26 04:56:02
Quote
My other question is concerning the synchronize option. I don't know how this option works (technically speaking), but is it possible to not let foo_pod's synchronization look at differences in certain (perhaps user defined) tags, cause now, whenever one of these tags (PLAY_COUNTER, PLAY_DATE, PLAY_TIME) get changed, foo_pod deletes the tracks from the ipod only to upload them again.
[a href="index.php?act=findpost&pid=244497"][{POST_SNAPBACK}][/a]


I think the real problem is the play counter (and last played?) foobar plugins are writing the data into the id3 tags of the files.  This causes the size and date of the audio files to change and foo_pod has no way to knowing it should ignore them.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-09-26 05:57:48
I just wanted to confirm that iTunes works on the same principle. Any changes that cause the timestamp of the file to change will cause iTunes to resend the file to the iPod on a sync operation.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Majdas on 2004-09-26 07:37:51
Quote
Quote
Just a quick question. Where's this "Rebuild iPod database" located? I cant find it anywhere, haha.

Do you have foo_pod 0.9.4 installed?  If so, it is located under the Components menu -> foo_pod -> Rebuild iTunesDB database on iPod
[{POST_SNAPBACK}][/a]
(http://index.php?act=findpost&pid=244450")



I'm probably just stupid but I cant find it;

[a href="http://www.obnoxious.se/foo_pod.gif]foo_pod.gif[/url]
Title: foo_pod - Foobar2000 meets the iPod
Post by: SNAG on 2004-09-26 10:49:33
Quote
Quote
Quote
Just a quick question. Where's this "Rebuild iPod database" located? I cant find it anywhere, haha.

Do you have foo_pod 0.9.4 installed?  If so, it is located under the Components menu -> foo_pod -> Rebuild iTunesDB database on iPod
[{POST_SNAPBACK}][/a]
(http://index.php?act=findpost&pid=244450")



I'm probably just stupid but I cant find it;

[a href="http://www.obnoxious.se/foo_pod.gif]foo_pod.gif[/url]
[a href="index.php?act=findpost&pid=244542"][{POST_SNAPBACK}][/a]


Hi Majdas,

You can find the foo_pod options in the "Components" tab in the options menu above. There should be a foo_pod menu. It's not in the "Preferences" page.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Majdas on 2004-09-26 13:14:19
Haha. I understand now, thanks! I dont have the "Menu" there by default.
Title: foo_pod - Foobar2000 meets the iPod
Post by: FreydNot on 2004-09-27 05:58:47
I'm trying to add a column to show the last played time into a Columns UI preset (Watercolor by Silverbolt).  My problem is I'm not sure what format the date is in.  A string of "[%ipod_last_played_time%]" gives me values like "1096012076" which I'm guessing is seconds after some fixed date and time.

How is the ipod_last_played_time value formatted?  Is there an easy way to convert it to human readable form using TAGZ?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-09-27 06:06:27
Quote
I'm trying to add a column to show the last played time into a Columns UI preset (Watercolor by Silverbolt).  My problem is I'm not sure what format the date is in.  A string of "[%ipod_last_played_time%]" gives me values like "1096012076" which I'm guessing is seconds after some fixed date and time.

How is the ipod_last_played_time value formatted?  Is there an easy way to convert it to human readable form using TAGZ?
[{POST_SNAPBACK}][/a] (http://index.php?act=findpost&pid=244742")

It's the number of seconds since the epoch (1/1/1970). So 1096012076 = Friday, September 24, 2004 07:47:56 GMT. I dunno about "TAGZ", but here's a nice little conversion javascript page for you: [a href="http://dan.drydog.com/unixdatetime.html]http://dan.drydog.com/unixdatetime.html[/url]
Title: foo_pod - Foobar2000 meets the iPod
Post by: idioteque on 2004-09-30 15:10:39
First off, let me just say thanks for foo_pod, it's really great. 
Secondly, is there a foobar global variable to get the iPod drive usage so I could display it in the status bar like I do with "__bitrate" and "__samplerate"?
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-30 16:22:38
Quote
First off, let me just say thanks for foo_pod, it's really great. 
Secondly, is there a foobar global variable to get the iPod drive usage so I could display it in the status bar like I do with "__bitrate" and "__samplerate"?

Thanks!

By "iPod drive usage", do you mean the song's filesize, or the amount of free disk space on the iPod? 

If it is filesize, then I think %__filesize% is what you are looking for (or something like that, I am unable to check right now).  If you want the free iPod disk space, then I don't think that is available, although if you know the iPod's drive letter, maybe there is a TAGZ function to get free disk space?
Title: foo_pod - Foobar2000 meets the iPod
Post by: idioteque on 2004-09-30 21:15:16
Quote
By "iPod drive usage", do you mean the song's filesize, or the amount of free disk space on the iPod? 
[a href=\"index.php?act=findpost&pid=245503\"][{POST_SNAPBACK}][/a]

Sorry I was unclear there. Yes I meant iPod disk space.  What's TAGZ? Nevermind I get it.  Yeah I couldn't find any functions in the foobar2000 documents I read.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-09-30 21:32:34
Quote
Quote
If it is filesize, then I think %__filesize% is what you are looking for (or something like that, I am unable to check right now).  If you want the free iPod disk space, then I don't think that is available, although if you know the iPod's drive letter, maybe there is a TAGZ function to get free disk space?


Sorry I was unclear there. Yes I meant iPod disk space.  What's TAGZ?


I don't know of any way to get the free disk space in TAGZ (that is name for the formatting strings, like %__bitrate% or %__samplerate%).  Since it isn't a property of an individual song, it may not be possible - but I don't really know.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-10-03 22:03:18
I'm not sure if this is possible, but here goes:

I have a lot of album in high bitrate ogg/mpc.  I transcode these to lowbitrate AAC useing Nero + foobar then load them into my Ipod.  This works great for me.

I know the ipod keeps track of play counts, and that foobar can read these.  Is there someway to have foobar read in the playcounts on the ipod, and then increment the play times on the orginal high bitrate files as well so that they keep sync?

I realize this is a PITA since you'd some way to keep track of plays between syncs on both copies of the song, but its worth a shot.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-10-05 04:54:16
Quote
I have a lot of album in high bitrate ogg/mpc.  I transcode these to lowbitrate AAC useing Nero + foobar then load them into my Ipod.  This works great for me.

I know the ipod keeps track of play counts, and that foobar can read these.  Is there someway to have foobar read in the playcounts on the ipod, and then increment the play times on the orginal high bitrate files as well so that they keep sync?

I realize this is a PITA since you'd some way to keep track of plays between syncs on both copies of the song, but its worth a shot.

Hmmm...it sounds pretty tough.  I could write the original filename into the transcoded file.  Then when doing an update, it could write the playcounts and rating back to the original file.  Except a lot of people probably don't want their original files modified like this, and some formats might not be able to be tagged (like WAV or AIFF).

So while it can be done, I will have to make this a pretty low priority.  I have almost completed XML importing, and I have been considering adding functionality somewhat akin to iPodder (http://www.ipodder.org/), except it would also have some Notes support and ideally I would like to hook up with something along the lines of StreamRipper (http://streamripper.sourceforge.net/). 

It might be best to keep those as separate applications, and when they output to the iPod, have foo_pod wait for such files and automatically add them to the database.  Anyway, I have a lot of plans, so I really need to prioritize what I am able to work on.
Title: foo_pod - Foobar2000 meets the iPod
Post by: saratoga on 2004-10-09 00:19:52
This sounds like something that should be handled by foobar's internal database and not hacked in by a plugin then.  I'll ask in General if theres someway to link multiple files together into some sort of meta entry that represents the same song stored in two or more formats.
Title: foo_pod - Foobar2000 meets the iPod
Post by: r00tie on 2004-10-13 15:50:59
Hmmmm I don't know exactly if this is the right place, but I have a feature request.
I'm using foo_pod now, and very happy about it, great work
But I'm mainly using foobar for it's handling of mp3's+cuesheets.
Then I have 1 big mix, and cuesheet cuts it up with correct tags etc.
When I try to copy those files to my iPod trough foo_pod, it's not working, maybe you could implement some feauture which can handle the mp3's + cuesheets
It'll be r0x0ring

thnx in advance,

r00tie
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-10-13 16:07:09
Quote
Hmmmm I don't know exactly if this is the right place, but I have a feature request.
I'm using foo_pod now, and very happy about it, great work
But I'm mainly using foobar for it's handling of mp3's+cuesheets.
Then I have 1 big mix, and cuesheet cuts it up with correct tags etc.
When I try to copy those files to my iPod trough foo_pod, it's not working, maybe you could implement some feauture which can handle the mp3's + cuesheets
It'll be r0x0ring


I've had a few requests to add support for cuesheets and similar formats.  It would be a really nice feature to have and it will work on the iPod, but Foobar doesn't have very good programatic support for cue sheets, so I have to do custom parsing of the cue sheets. 

I'm actually about 50% complete on adding cue sheet support - I wrote a parser, and now I just need to add the code the manages the individual songs.
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-14 22:37:30
Quote
Is there someway to have foobar read in the playcounts on the ipod, and then increment the play times on the orginal high bitrate files as well so that they keep sync?
[a href="index.php?act=findpost&pid=246151"][{POST_SNAPBACK}][/a]


Hi, I would certainly like that  You can always make it optional (and not default obviously) so if you want it: turn it on

Anyway, my girlfriend just buy me an Ipod (20GB, 3 gen) and I'm playing with your plugin. I love foobar and I love it even more if I can use my Ipod with it, so just this: THANKS A LOT! Really.

Good work guys.
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-15 00:24:30
Ok, I got my first straneg behaviour 

I'm using latest version of foo_pod (0.9.4) with foobar 0.8.3. When I try to send playlist (whatever I selected some files or an entire playlist) I get the following error:

ERROR (foo_pod) : Error #3 copying d:\MP3\Electric six\Fire\Electric Six - 13 - Synthesizer.mp3 to j:

If files are non mp3 I get another error with some sort of transcoding failure (I can reproduce it if you wish).

The Ipod is unmounted and I can't mount it again directly with foobar or in Itunes (it just isn't there anymore). I have to reinitialise the Ipod, disconnect it from the PC and the reconnect again, and then I can mount it again. The files are there but only the first file on the playlist seems to play (completely), other are skipped.

I've reeboted several time the PC (windows Xp pro SP1) but didn't work 

I'll try to reformat again the Ipod, I'm surely missing something.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-10-15 02:20:39
Quote
I'm using latest version of foo_pod (0.9.4) with foobar 0.8.3. When I try to send playlist (whatever I selected some files or an entire playlist) I get the following error:

ERROR (foo_pod) : Error #3 copying d:\MP3\Electric six\Fire\Electric Six - 13 - Synthesizer.mp3 to j:

If files are non mp3 I get another error with some sort of transcoding failure (I can reproduce it if you wish).

The Ipod is unmounted and I can't mount it again directly with foobar or in Itunes (it just isn't there anymore). I have to reinitialise the Ipod, disconnect it from the PC and the reconnect again, and then I can mount it again. The files are there but only the first file on the playlist seems to play (completely), other are skipped.

How are you ejecting the iPod - from foo_pod or from the Windows "Safely Remove Hardware" systray thing?

If you use the "Safely Remove Hardware" method, you need to physically undock/disconnect the iPod from your computer, then hook it up again (and wait about 15 seconds for it to be recognized by Windows).  If you can't see the iPod drive in your My Computer window, foo_pod won't be able to write to it.

foo_pod's eject is a little different.  If you have the iPod Service installed (if you have iTunes installed, you have iPodService...), then foo_pod can do a "soft" eject.  That is different in that you can mount the iPod again without having to physically disconnect it from your computer.  If iPodService isn't available, foo_pod just does the regular eject and then you would have to disconnect it.
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-15 13:36:05
Quote
If you use the "Safely Remove Hardware" method, you need to physically undock/disconnect the iPod from your computer, then hook it up again (and wait about 15 seconds for it to be recognized by Windows).  If you can't see the iPod drive in your My Computer window, foo_pod won't be able to write to it.


Apparently the problem is that, once my iPod is recognised by the computer (I can see the tray icon (device) in the task bar) and I send several files via foo_pod, the process start but after some seconds the error message pop up and the device is unmounted immediately after that. The tray icon dissapear and foo_pod can't unmount it no matter how many times I try. Nevertheless, the files appears on the iPod, but they're all skipped.

Anyway, this seems not only a foo_pod problem, since it also happens with iTunes (I have it installed along with the Ipodservice). The only difference is that no error message pop-up and the program displays that the iPod was updated. The iPod still show in iTunes but the tray icon dissapear. Weird.

So, sorry to bother you since it doesn't seems at all a problem with foo_pod. At the same time, if someone knows something about this and can point me to the right direction I will really appretiate that 
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-10-15 16:01:55
Quote
if someone knows something about this and can point me to the right direction I will really appretiate that 
I had a similar experience when I started using my iPod a couple of months ago.

The first thing I tried was iTunes and it was awful: file xfer was slow and after loading a handful of songs the connection was failing with an error (which I don't recall at the moment).

Besides, I had problems disconnecting the iPod: I remember once I even had to wait for the battery to exhaust because I couldn't reset the device.

So I decided to completely remove iTunes (the iPod Service is still here, though... don't ask ), updated the firmware (using 3.0.1 ATM) and installed foo_pod: works like a charm!

It goes without saying that I'm no expert at all. Also, my usage is really basic: only mp3s, no fancy playlists, nothing else.

Reviewing my message, I realize it will be of little or no help, after all...

Oh well, my 2 cents

Good luck with your new toy.

Alessandro

PS: I confirm I can successfully disconnect the iPod, both when closing foobar and through the systray (yes, I also use it as external disk); after disconnecting, you can unplug it (you should see the iPod main menu) and if you plug it back you should see the device (both in Windows and in foobar).

PPS: please ignore all mistakes, that's just my ignorance.
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-15 16:33:33
Quote
I had a similar experience when I started using my iPod a couple of months ago.

Good to know I'm not the only one experiencing that, nor that I'm glad, but I feel less dumb 

Quote
So I decided to completely remove iTunes (the iPod Service is still here, though... don't ask ), updated the firmware (using 3.0.1 ATM) and installed foo_pod: works like a charm!

Same here, I've just removed iTunes, and updated the firmware to 3.0.1. iPod service still there and running... 

What I really find weird is that I still can't get foo_pod to recognize the iPod. I can see it on the taskbar, and under My computer as a external device. But in foo_pod, under 'iPod service' it won't show anything, just blank.

I've used a program called vpod (http://www.vonnieda.org/vPod/) and I just have to select the drive letter for the Ipod and it works. I can transfer to the iPod

But even when the iPod is mounted in vpod, foo_pod still doesn't recognize it 

Well, that's it. I don't know what it's wrong, if anyone is also experiencing this, but apaprently there's no reason it shouldn't work as mobyduck seems to have same configuration as me (no iTunes, just ipod updater, latest firmaware installed and ipod service running) and it works for him  Computer are crazy (or humans are just so dumb)
Title: foo_pod - Foobar2000 meets the iPod
Post by: mobyduck on 2004-10-15 17:07:22
Quote
What I really find weird is that I still can't get foo_pod to recognize the iPod. I can see it on the taskbar, and under My computer as a external device. But in foo_pod, under 'iPod service' it won't show anything, just blank.
Wait: it's blank here as well. Have you tried sending a file regardless? I have just checked and foo_pod also reports (incorrectly) 0 GB as available disk space (drive letter is correct, though): still I can transfer my mp3s.

HTH.

Alessandro
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-15 17:30:09
Quote
Wait: it's blank here as well. Have you tried sending a file regardless? I have just checked and foo_pod also reports (incorrectly) 0 GB as available disk space (drive letter is correct, though): still I can transfer my mp3s.
[a href="index.php?act=findpost&pid=247943"][{POST_SNAPBACK}][/a]

You're right  I can transfer files, and even transcoding them, wow! Thanks a lot!  I guess that the problem was caused by the old firmware...I don't know. I was confused since the iPod service tab on the foo_pod plugin was blank and I thought that it didn't recognize it and will again give me an error when transferring files. So, for sure foo_pod doesn't need ipodservice to be running to work 
Title: foo_pod - Foobar2000 meets the iPod
Post by: Otto42 on 2004-10-15 20:49:22
The iPodService is also installed with the iPod firmware updater program. It's not just included with iTunes. So if you have, basically, any Apple software on the machine, you get the iPodService. It's not a big deal though, foo_pod can work with it and use it.

But yes, it'll work fine without the iPodService as well. The iPod appears to Windows as a normal external hard drive, if you don't have the iPodService installed. When you have the iPodService installed, it recognizes the iPod attached and starts up some program like iTunes, as well as providing an interface for programs to do things like discover the ipod's drive letter and mount/unmount the iPod. But it's not absolutely critical or anything. It's not like a driver. Just a minor convience that is kinda unnecessary.

In case of any doubt, remove iTunes, remove the firmware updater, and disable the iPodService in the Services Control Panel (if it's still there). foo_pod will work fine.
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-17 16:29:28
Quote
Quote
My other question is concerning the synchronize option. I don't know how this option works (technically speaking), but is it possible to not let foo_pod's synchronization look at differences in certain (perhaps user defined) tags, cause now, whenever one of these tags (PLAY_COUNTER, PLAY_DATE, PLAY_TIME) get changed, foo_pod deletes the tracks from the ipod only to upload them again.
[a href="index.php?act=findpost&pid=244497"][{POST_SNAPBACK}][/a]


I think the real problem is the play counter (and last played?) foobar plugins are writing the data into the id3 tags of the files.  This causes the size and date of the audio files to change and foo_pod has no way to knowing it should ignore them.
[a href="index.php?act=findpost&pid=244526"][{POST_SNAPBACK}][/a]

Ok, now I understand why playcount isn't updated on my HDD files from iPod played files played. AFAIK there's no way of not writting play_counter tags into the file itself unless you block tag updated (and that means every tag operation  ). So, there's no way to link files between iPod and HDD since (ex.):

1) Let's take file bip.mp3 on HDD with play_counter=20. I transfer it to iPod. Aparently (from what I've read around here) this tag isn't transfered on the iPod.

2) I play this file 3 times on the iPod:

2a) bip.mp3 on HDD has not been played since so file size remain the same (no tag write). File should be updated with next sync with iPod and show play_counter=25 (on HDD).

2b) bip.mp3 on HDD has been played since so file size isn't the same (tag has been wirte). File can't be updated (on HDD) because for the iPod isn't the same file that was transfered.

Am I right or totally missing the point? 

Anyway, what I don't understand is why when I 'load iPod songs to the foobar2000 playlist' counter still empty, should I enter an specific string in the column to display it?
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-17 16:49:25
A little request and a question for/and about Smart Playlist Editor  :

- Request: Could it be possible to add custom tag use in the Smart Playlist Generator? But I guess it will break compatibility with iTunes. So it should if possible be an option and not default 

- Question: What tag/info uses SPE for the 'Date added' value? Does it use this foobar plugin (http://www.hydrogenaudio.org/forums/index.php?showtopic=23966&hl=system,and,date) or anything else? And does it refer to the date the file was added to the iPod or to foobar/HDD?

Thanks a lot.
Title: foo_pod - Foobar2000 meets the iPod
Post by: Aero on 2004-10-17 18:30:08
Quote
- Request: Could it be possible to add custom tag use in the Smart Playlist Generator? But I guess it will break compatibility with iTunes. So it should if possible be an option and not default

Ultimately, whatever I do needs to work on the iPod.  Since it wouldn't understand any custom tags, the Smart Playlist wouldn't work on the iPod.  What I mean by that is while I could add anything to the database, the iPod is designed only to look at certain values. 

Note that foo_pod already does support some additional Smart Playlist features that work on the iPod, but aren't supported in iTunes (such as the "Is Not Greater Than" rule).

Quote
\- Question: What tag/info uses SPE for the 'Date added' value? Does it use this foobar plugin (http://www.hydrogenaudio.org/forums/index.php?showtopic=23966&hl=system,and,date) or anything else? And does it refer to the date the file was added to the iPod or to foobar/HDD?


Date Added is whatever is in the database.  I'm not sure how iTunes fills in the date, but foo_pod uses the creation date of the file, not when it was added to a Foobar playlist (no way to get that info) or from any third party component.
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-19 19:21:51
Hmmm, I'm having some issues with foo_pod and iPod. When I try to transfer (Sync or send playlists command) a lot of songs to the iPod and if this require a lot of transcoding (from musepack and vorbis to mp3), the transfer process can take hours.

The problem is that after a while (let's say an hour) the console window pop-up a message with error #55 saying that there's no available disk space on the iPod. Of course, there's disk space available, what happens is that the iPod seems to have been ejected and therefore foo_pod can't send the songs to the iPod. I've checked and the hard drive power settings of my Windows (XP pro SP1) isn't to stop spinning when I'm not using it.

Is someone experiencing this?

Another thing, I guess related to the Ipod service (that I have installed and running) is that when i check for 'iPod free space' is always showing 0.00 GB. Not a big deal since I can check it on explorer 
Title: foo_pod - Foobar2000 meets the iPod
Post by: jkwarras on 2004-10-19 22:22:44
When transcoding from mpc to mp3, the filename is changed to something with number and letters, I thought by reading this topic that this only happens when foo_pod have a non-supported character (like ë, î...), and only for this specific character.

This happens to me with regular characters, and on every transcoded file via foo_pod:

ex. original filename: Offspring - 13 - Not the one.mpc
      trascoded filename on the ipod: 262bdb9804c4646d1.mp3

BTW, is possible to have some documentation about the errors that are shown in the console relatives to foo_pod? It will prevent users to bothe