Help - Search - Members - Calendar
Full Version: foo_pod - Foobar2000 meets the iPod
Hydrogenaudio Forums > Hosted Forums > foobar2000 > 3rd Party Plugins - (fb2k)
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42
arty
QUOTE (Otto42 @ Mar 10 2005, 09:59 AM)
And there's the limitation, pretty much. In order for foo_pod to implement something like this at present, it'd have to have ID3v2 reading code built into it in order to get the JPG/PNG out of the tag with possibly an option to read JPGs in the same folder if somebody happens to be using that system (Windows Media Player and several other programs store album art in folder.jpg, in the same folder as the song/album).
*


Well, I use a folder.jpg system with my albums in combination with the foo_ui_e_albumart component, so if that would be an option that would be great. My brother has no desire to start using ID3v2 album cover art tags in particular, he's only been using that method to get it to work with iTunes. I'm sure he'd be far happier to use folder.jpg files for his albums if there was some way those could work with foo_pod and thus his iPod Photo smile.gif

arty
Ralluph
I have an iPod mini (1st version, not the new model) and the latest firmware. I'm running the most recent version of foo_pod. On my mini I like the setting to hear the click of the scrollwheel through my headphones and not through the internal speaker. The feature to custimise this was introduced in the last firmware release.

Everytime I do a sync current playlist or sync all playlists the setting for the click is set back to its default value of 'headphones'. Does someone experience the same inconvenience? I was wondering if this strange behaviour could be caused by foo_pod. I did not yet test with iTunes, since I uninstalled this program because foo_pod fulfills all my needs.

Are the global iPod settings stored in the iTunesDB as well? Or are they stored separately on my mini? In the XML dump of the DB I can find nothing about global settings. Is it possible foo_pod can corrupt the setting of my click?
Otto42
QUOTE (Ralluph @ Mar 10 2005, 05:47 PM)
Are the global iPod settings stored in the iTunesDB as well? Or are they stored separately on my mini? In the XML dump of the DB I can find nothing about global settings. Is it possible foo_pod can corrupt the setting of my click?
*

At present, I don't think we've ever seen the iPod store settings in the iTunesDB file. I find it unlikely that this is what is happening.

One obvious way to test would be to sync the thing, make a copy of the iTunesDB file before unplugging it. Then unplug it, change the setting, verify that it works. Plug it back in and make another copy of the iTunesDB file. Then run a bit for bit comparison (command line, use the cmp program) and see if there's any differences. There shouldn't be.
Aero
QUOTE (Otto42 @ Mar 10 2005, 11:59 AM)
And there's the limitation, pretty much. In order for foo_pod to implement something like this at present, it'd have to have ID3v2 reading code built into it in order to get the JPG/PNG out of the tag with possibly an option to read JPGs in the same folder if somebody happens to be using that system (Windows Media Player and several other programs store album art in folder.jpg, in the same folder as the song/album).
*

That is how I would probably do it - search the folder containing the song for the album art. I don't know if there is a utility to extract album art from an ID3v2 tag, but there should be.
jayzer
Just posting to say that foo_pod rocks my socks. Thanks!
Otto42
QUOTE (quazi @ Mar 10 2005, 09:19 AM)
edit: After re-testing this, I found out that there's not a problem with read-only files. There's one album that my iPod won't let me upload in its entirety. If I upload all the tracks at once, the iPod menus will freak out (for example, the Artist menu will not be shown in alphabetical order, and will display multiples). If I upload the album one track at a time, disconnecting after each one, the iPod menus won't freak out until after I have uploaded all of the tracks. It doesn't matter how many I upload at once, and it doesn't matter what order I upload them! Once I get that last file on there, it goes screwy.

But I can transfer those exact same files with iTunes just fine. ..and all at once.
*

Okay, there's nothing actually wrong with the files you sent me themselves, here's what I think is going on.

Aero: foo_pod, at the moment, doesn't rebuild the Type 52 indexes in the master playlist, right? I think this is suddenly very important to do so, or to remove those type 52 mhod's entirely when writing the iTunesDB. In the file he sent me, the only really important difference was that foo_pod stuck the final track at the top of the list of mhits while iTunes stuck it at the bottom. Sticking it at the top would make those indexes all wrong and cause what he's seeing, more or less. Dumping those indexes should solve the problem, or we can add code to rebuild them entirely now that we know how they work (it's documented in the wiki).

This will only be an issue if the user ever uses iTunes to sync and then comes back and tries to use foo_pod later. If the user uses foo_pod from scratch, never touching iTunes, he'll not see it occur.


Another minor, unrelated, nitpick is that foo_pod is writing a blank Type 12 MHOD (Composer) in most of his tracks. Might be a good idea to test for blank strings and avoid writing the MHOD entirely.
quazi
QUOTE (Otto42 @ Mar 10 2005, 11:24 PM)
Okay, there's nothing actually wrong with the files you sent me themselves, here's what I think is going on. (stuff)
*

Sorry for butting into a conversation between you and Aero (can you really do that on the internet?), but I did a little google search for "ipod "type 100"" and found that they're only referenced in playlist entries. If that's the case, should I get rid of my "recently uploaded" and "unheard" smart playlists? Because those songs will obviously be in both of them.

QUOTE
Another minor, unrelated, nitpick is that foo_pod is writing a blank Type 12 MHOD (Composer) in most of his tracks. Might be a good idea to test for blank strings and avoid writing the MHOD entirely.

Ah! We were wondering that earlier, thanks!
Otto42
QUOTE (quazi @ Mar 11 2005, 04:19 AM)
Sorry for butting into a conversation between you and Aero (can you really do that on the internet?), but I did a little google search for "ipod "type 100"" and found that they're only referenced in playlist entries.

Google has led you wrong! wink.gif

There's two types of type 100 MHOD's. There's one after each MHIP, and there's one in each playlist that defines the column display ordering/size used by iTunes for that playlist.

However, I did make a mistake too. The Library Playlist's indexes I was talking about are type 52 MHODs, not type 100. My bad. It was late and I was tired. biggrin.gif

The type 52 MHODs are in the main library playlist (the first playlist in the iTunesDB, which contains every song) and they define the order of the entries in those Music menus (Artist, Album, Song, Genre, Composer). These are basically referencing the MHIT by location (the first mhit in the file is number 0, the second is number 1, etc), so if foo_pod sticks one at the beginning, then all of those indexes are suddenly wrong, and what you get in the music menus will be chaos, essentially.

You can deal with this one of two ways:
1. Delete the type 52 mhods. The iPod will figure it out on the fly, but it's a bit slower this way.
2. Run a sort on the data in memory and build your own indexes from it. This offers possibilities like ignoring "A, An, The" and also ignoring case (which the iPod does *not* do by default) and so on. You could even allow the user to sort the menus themselves if you cared to write an interface to allow it.

For the latest info on what we know about the iTunesDB, here's a link to the wiki: http://www.ipodlinux.org/ITunesDB
Aero
First of all, can either Otto or quazi send me the iTunesDB so I can take a look at it for myself?

QUOTE (Otto42 @ Mar 11 2005, 01:24 AM)
Okay, there's nothing actually wrong with the files you sent me themselves, here's what I think is going on.

Aero: foo_pod, at the moment, doesn't rebuild the Type 52 indexes in the master playlist, right? I think this is suddenly very important to do so, or to remove those type 52 mhod's entirely when writing the iTunesDB. In the file he sent me, the only really important difference was that foo_pod stuck the final track at the top of the list of mhits while iTunes stuck it at the bottom. Sticking it at the top would make those indexes all wrong and cause what he's seeing, more or less. Dumping those indexes should solve the problem, or we can add code to rebuild them entirely now that we know how they work (it's documented in the wiki).

This will only be an issue if the user ever uses iTunes to sync and then comes back and tries to use foo_pod later. If the user uses foo_pod from scratch, never touching iTunes, he'll not see it occur.

I almost have the code for creating Type 52 MHODs complete, but it needs more work. I will probably just strip the Type 52's from iTunesDB for now.

QUOTE
Another minor, unrelated, nitpick is that foo_pod is writing a blank Type 12 MHOD (Composer) in most of his tracks. Might be a good idea to test for blank strings and avoid writing the MHOD entirely.
*

I'm not sure this is a problem. An empty Composer string is not necessarily the same thing as no Composer. The reason that the Composer string is empty is that quazi is using the global alt. metadata feature, and his TAGZ string to generate the Composer often returns an empty string. So foo_pod is really just setting the information that the user requested.
Otto42
QUOTE (Aero @ Mar 11 2005, 12:01 PM)
First of all, can either Otto or quazi send me the iTunesDB so I can take a look at it for myself?

I've forwarded the PM quazi sent me to you.

QUOTE (Aero @ Mar 11 2005, 12:01 PM)
I almost have the code for creating Type 52 MHODs complete, but it needs more work.  I will probably just strip the Type 52's from iTunesDB for now.

Yeah, that's what I figured would be simplest.

QUOTE (Aero @ Mar 11 2005, 12:01 PM)
I'm not sure this is a problem.  An empty Composer string is not necessarily the same thing as no Composer.  The reason that the Composer string is empty is that quazi is using the global alt. metadata feature, and his TAGZ string to generate the Composer often returns an empty string.  So foo_pod is really just setting the information that the user requested.
*

True, I only mentioned it because I noticed it had a blank mhod string. 1 character of 0x0000. It's not a problem, just a nitpick. The upshot of doing so would be to insert a blank row in the Composer list on the iPod, I think. Still, it might be a good idea to change iPodDB to prevent blank mhod strings from being inserted entirely, since other apps might break from trying to parse 'em. iTunes doesn't seem to have an issue with it, as such, but it won't write out a blank mhod either (unless it gets one from the iTunesDB generated by foo_pod).
quazi
QUOTE (Otto42 @ Mar 11 2005, 06:43 AM)
For the latest info on what we know about the iTunesDB, here's a link to the wiki: http://www.ipodlinux.org/ITunesDB
*

blink.gif oh my. Until I work up enough courage to mess with that, I'll just sit here and play with TAGZ strings:

add this to the "Artist" metadata setting to sort albums by year:
CODE
[[$right(%date%,2)-]%album%]



issues:
-- You'd have to re-upload everything to get the full effect. (In order for this to work like it shoud, it would require a firmware upgrade.)
-- It works best if you navigate to Artist first then Album.
-- The 2-digit year brings back the Y2K bug (2000+ albums come first), but the 4-digit year takes up too much space.
-- Sgt. Pepper's came before Magical Mystery Tour. (It's gonna be tough since I don't like putting letters (ex- 1967b) in my date fields.)
jkwarras
QUOTE (Aero @ Mar 9 2005, 09:03 AM)
It doesn't have the OttoFill feature in there yet, but it won't take too much work to finish it. 

Cool smile.gif

QUOTE (Aero @ Mar 9 2005, 09:03 AM)
One interesting thing I have done with my Shuffle is I have copied a stripped down and compressed (with UPX) version of Foobar to the Shuffle.  Then I have an AutoRun.inf file on the Shuffle that sets the drive icon to a picture of a Shuffle, and when you double click on the drive, it automatically launches Foobar.
*

Is there anyway I could also do this for my fb2k? (I don't know anything about programming...)
Klato
2 questions: First, is there any way to use Play Counts with foo_pod and the iPod? (in other words, can I get my "Recently Played" and "Top 25" playlists back?) Second, why does my 'On-the-Go" playlist on my iPod get cleared whenever I do a sync? Thanks.
Aero
QUOTE (jkwarras @ Mar 13 2005, 10:37 AM)
Is there anyway I could also do this for my fb2k? (I don't know anything about programming...)

I'd send mine to you, except that it died with my Shuffle (it still played music, but wouldn't connect to the computer. BTW, this seems like it might be a common design or manufacturing flaw...just look at all of the posts on the Apple iPod Shuffle discussion forum...).

Creating the autorun.inf file is pretty simple - there is some rather wordy documentation here, but it is just a text file with a few sections.

When I recreate the file, I'll post it and some instructions.
jcarbonell
[quote=Aero,Mar 7 2005, 12:34 AM]
[/quote]
Are these crash dumps from 0.9.9d or e? I don't have the necessary file for debugging 0.9.9d handy, although I could recreate it if necessary. But if 0.9.9e fixed your problem (or at least you aren't experiencing it any more), then I'll wait to see if it happens in the future.
*

[/quote]
[/quote]

I tried sync'ing my Ipod w/ 0.9.9e and it crashed. (It's pretty reproducible) Here's the crash dump:

CODE
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 7C910F29h
Access violation, operation: read, address: 00000000h
Call path:
WinMain=>app_mainloop=>menu command: "Components/foo_pod/Sync Current Playlist"
This is the first crash logged by this instance.
Code bytes (7C910F29h):
7C910EE9h:  E8 14 D2 FF FF E9 32 FE FF FF 0F B7 0E 03 C8 81
7C910EF9h:  F9 00 FE 00 00 0F 87 45 FD FF FF 80 7D 14 00 0F
7C910F09h:  85 25 8B 03 00 8A 46 05 24 10 A8 10 88 47 05 0F
7C910F19h:  85 92 00 00 00 8B 4E 0C 8D 46 08 8B 10 89 4D 0C
7C910F29h:  8B 09 3B 4A 04 89 55 14 0F 85 EA 0F 00 00 3B C8
7C910F39h:  0F 85 E2 0F 00 00 56 53 E8 4E FC FF FF 8B 45 14
7C910F49h:  8B 4D 0C 3B C1 89 01 89 48 04 74 38 8A 46 05 A8
7C910F59h:  04 0F 85 A9 8B 03 00 0F B7 0E 8B 45 10 01 08 0F
Stack (0012E6BCh):
0012E69Ch:  00CADCDC 7C9C93A0 77F643DD 7C9C93A0
0012E6ACh:  00000004 00000000 00CAD1E8 00000000
0012E6BCh:  00890000 02638930 00000000 0012E79C
0012E6CCh:  7C910D5C 02640EF8 00000000 0012E780
0012E6DCh:  00000000 00000096 02638938 00000003
0012E6ECh:  01C30000 028C15A8 02638958 02638B58
0012E6FCh:  00890178 0012E7CC 7C910E91 02638960
0012E70Ch:  7C91056D 026438B8 028C15B0 02624FE0
0012E71Ch:  01C30000 02689318 00890198 00890178
0012E72Ch:  00000010 028C10A0 008901B0 02624978
0012E73Ch:  00000028 02684E70 00000018 026C1A70
0012E74Ch:  0012E820 02648F08 00890000 7C910E91
0012E75Ch:  00890608 7C91056D 00890000 00000000
0012E76Ch:  01010060 00000004 00000000 00000000
0012E77Ch:  0101E7C4 00001F5D 0012E6E0 0012E2E0
0012E78Ch:  0012E7D4 7C90EE18 7C910570 00000001
0012E79Ch:  0012E7E4 77C2C2DE 00890000 00000000
0012E7ACh:  02638938 00000096 02638938 00000003
0012E7BCh:  0012E7A0 7C90EE18 0012E810 77C35C94
0012E7CCh:  0012E7B0 0012E2E0 0012E810 77C35C94
Registers:
EAX: 02648400, EBX: 00890000, ECX: 00000000, EDX: 472C4400
ESI: 026483F8, EDI: 02638910, EBP: 0012E6C8, ESP: 0012E6BC
Crash location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "wcsncpy" (+0000049Ah)

Loaded modules:
foobar2000                       loaded at 00400000h - 00452000h
ntdll                            loaded at 7C900000h - 7C9B0000h
kernel32                         loaded at 7C800000h - 7C8F4000h
USER32                           loaded at 77D40000h - 77DD0000h
GDI32                            loaded at 77F10000h - 77F56000h
ole32                            loaded at 774E0000h - 7761D000h
ADVAPI32                         loaded at 77DD0000h - 77E6B000h
RPCRT4                           loaded at 77E70000h - 77F01000h
msvcrt                           loaded at 77C10000h - 77C68000h
COMCTL32                         loaded at 773D0000h - 774D2000h
SHLWAPI                          loaded at 77F60000h - 77FD6000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F9000h
SHELL32                          loaded at 7C9C0000h - 7D1D4000h
foo_abx                          loaded at 008D0000h - 008DC000h
foo_ac3                          loaded at 008E0000h - 008F3000h
foo_albumlist                    loaded at 00900000h - 0090B000h
foo_ape                          loaded at 00910000h - 0092F000h
foo_apl                          loaded at 00930000h - 0093A000h
foo_bitcompare                   loaded at 00940000h - 00949000h
foo_burninate                    loaded at 00950000h - 0095C000h
VERSION                          loaded at 77C00000h - 77C08000h
foo_cdda                         loaded at 00960000h - 0096E000h
foo_clienc                       loaded at 00970000h - 0097B000h
foo_console                      loaded at 00980000h - 00987000h
foo_convolve                     loaded at 00990000h - 009DF000h
foo_dbsearch                     loaded at 009E0000h - 009F8000h
foo_diskwriter                   loaded at 00A00000h - 00A12000h
WINMM                            loaded at 76B40000h - 76B6D000h
foo_dsp_crossfade                loaded at 00AA0000h - 00AA7000h
foo_dsp_crossfeed                loaded at 00AB0000h - 00AB6000h
foo_dsp_extra                    loaded at 00AC0000h - 00AD5000h
foo_dsp_nogaps                   loaded at 00AE0000h - 00AE7000h
foo_dsp_pause                    loaded at 00AF0000h - 00AF7000h
foo_dsp_skip_silence             loaded at 00B00000h - 00B07000h
foo_dsp_soundtouch               loaded at 00B10000h - 00B1B000h
MSVCP60                          loaded at 76080000h - 760E5000h
foo_dynamics                     loaded at 00B20000h - 00B27000h
foo_faac                         loaded at 00B30000h - 00B63000h
foo_festalon                     loaded at 00B70000h - 00CAE000h
foo_flac                         loaded at 00CB0000h - 00CCC000h
foo_flaccer                      loaded at 00CD0000h - 00CE6000h
foo_freedb                       loaded at 00CF0000h - 00D1E000h
WS2_32                           loaded at 71AB0000h - 71AC7000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_history                      loaded at 00D20000h - 00D30000h
foo_id3v2                        loaded at 00D30000h - 00D60000h
foo_infobox                      loaded at 00D60000h - 00D73000h
foo_input_std                    loaded at 00D80000h - 00E1E000h
MSACM32                          loaded at 77BE0000h - 77BF5000h
foo_lpac                         loaded at 00E20000h - 00E27000h
lpac_codec_api                   loaded at 00E30000h - 00E3A000h
lpaccodec                        loaded at 00E40000h - 00E69000h
foo_masstag                      loaded at 01090000h - 010A4000h
foo_matroska                     loaded at 010B0000h - 010F8000h
foo_mod                          loaded at 01100000h - 01109000h
BASS                             loaded at 01110000h - 0116A000h
foo_monkey                       loaded at 01170000h - 0118C000h
foo_mpeg4u                       loaded at 01190000h - 011B9000h
foo_nez                          loaded at 011C0000h - 011EB000h
foo_null                         loaded at 011F0000h - 011F7000h
foo_ofr                          loaded at 01200000h - 01206000h
OptimFROG                        loaded at 01210000h - 0123C000h
foo_oggpreview                   loaded at 01250000h - 01351000h
foo_output_std                   loaded at 01360000h - 01369000h
foo_out_dsound_ex                loaded at 01370000h - 01379000h
DSOUND                           loaded at 73F10000h - 73F6C000h
foo_out_ks                       loaded at 01390000h - 0139B000h
SETUPAPI                         loaded at 77920000h - 77A13000h
foo_playlistgen_ex               loaded at 013A0000h - 013AF000h
foo_pod                          loaded at 013B0000h - 01448000h
OLEAUT32                         loaded at 77120000h - 771AC000h
foo_podclienc                    loaded at 01450000h - 01469000h
foo_podtranscoder                loaded at 01570000h - 01580000h
foo_pphsresample                 loaded at 01580000h - 01590000h
foo_psf                          loaded at 01590000h - 0163C000h
foo_read_http                    loaded at 01640000h - 01649000h
foo_rgscan                       loaded at 01650000h - 0165D000h
foo_scroll                       loaded at 01660000h - 01666000h
foo_search_ex                    loaded at 01670000h - 01678000h
foo_shn                          loaded at 01680000h - 0168F000h
foo_sid                          loaded at 01690000h - 016D7000h
foo_spc                          loaded at 016E0000h - 016F1000h
foo_speex                        loaded at 01710000h - 01728000h
foo_tfmx                         loaded at 01730000h - 01739000h
foo_tta                          loaded at 01740000h - 01749000h
foo_tta_old                      loaded at 01750000h - 01759000h
foo_uie_volume                   loaded at 01760000h - 0176A000h
foo_ui_columns                   loaded at 01770000h - 017A7000h
foo_ui_std                       loaded at 017B0000h - 017C7000h
foo_unpack                       loaded at 017D0000h - 01801000h
foo_utils                        loaded at 01810000h - 01821000h
foo_vis_manager                  loaded at 01830000h - 01838000h
foo_vis_simple_spectrum          loaded at 01840000h - 0184A000h
foo_vorbisenc                    loaded at 01850000h - 01961000h
foo_wavpack                      loaded at 01970000h - 01982000h
foo_wma                          loaded at 01990000h - 019AA000h
WMVCore                          loaded at 086C0000h - 08904000h
WMASF                            loaded at 070D0000h - 0710B000h
foo_xa                           loaded at 019B0000h - 019BF000h
uxtheme                          loaded at 5AD70000h - 5ADA8000h
CLBCATQ                          loaded at 76FD0000h - 7704F000h
COMRes                           loaded at 77050000h - 77115000h
browseui                         loaded at 75F80000h - 7607C000h
browselc                         loaded at 20000000h - 20012000h
imagehlp                         loaded at 76C90000h - 76CB8000h
DBGHELP                          loaded at 59A60000h - 59B01000h

Stack dump analysis:
Address: 7C910D5Ch, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "wcsncpy" (+000002CDh)
Address: 7C910E91h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "wcsncpy" (+00000402h)
Address: 7C91056Dh, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlFreeHeap" (+00000130h)
Address: 7C910E91h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "wcsncpy" (+00000402h)
Address: 7C91056Dh, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlFreeHeap" (+00000130h)
Address: 7C90EE18h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "strchr" (+00000117h)
Address: 7C910570h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlFreeHeap" (+00000133h)
Address: 77C2C2DEh, location: "msvcrt", loaded at 77C10000h - 77C68000h
Symbol: "free" (+000000C3h)
Address: 7C90EE18h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "strchr" (+00000117h)
Address: 77C35C94h, location: "msvcrt", loaded at 77C10000h - 77C68000h
Symbol: "except_handler3" (+00000000h)
Address: 77C35C94h, location: "msvcrt", loaded at 77C10000h - 77C68000h
Symbol: "except_handler3" (+00000000h)
Address: 77C12070h, location: "msvcrt", loaded at 77C10000h - 77C68000h
Symbol: "__non_rtti_object::`vftable'" (+00000C78h)
Address: 013E6C45h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013DFDC0h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013F9684h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013E6C18h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013DEF42h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013F95E7h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013E6BF8h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013D9EA5h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013F9490h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013E6B78h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013D9725h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013F9430h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013E8DC6h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013F9795h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013BC787h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013FA6FCh, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013FA6E8h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013FA52Ch, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 7C9140C0h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlDetermineDosPathNameType_U" (+00000721h)
Address: 013FAA94h, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 7C90EE18h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "strchr" (+00000117h)
Address: 013FA8FCh, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013FA99Ch, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013FAA9Ch, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013FA9CCh, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013FA9FCh, location: "foo_pod", loaded at 013B0000h - 01448000h
Address: 013FAA08h, location: "foo_pod", loaded at 013B0000h - 01448000h

Version info:
foobar2000 v0.8.3
UNICODE
quazi
QUOTE (infrared)
http://jevy.org/mediawiki/index.php/Foo_pod
*


Well, the Wiki's up and running but people are needed to update and maintainers for it.  Aero: How do you feel about moving updates and the changelog there?

Is there any objections about the Wiki?
*

The link is down. sad.gif

Also, the wiki is suffering from the same problems the thread itself is.. I wasn't aware that anyone was working on documentation until after I finished my own:

http://www.tinkafoo.com/log/foo_pod.html

Mine is unfortunately not a wiki, but I'll be more than happy to combine it with everyone else's documentation. Since I grabbed most of the info from the changelog (and a few pieces from the thread), it's not really my information to begin with.

(oh, and Aero, you misspelled "maintenance") tongue.gif
Aero
This is going to break the hearts of any iPod lover, but I've got bad news to report.

I was on my way out to the O'Reilly ETech Conference (BTW, anyone who is out in San Diego, give me a call in room 407 and we'll get together for some beers on me...or at least on my room tab!), and I apparently left my iPod Photo 60GB in the seat back, along with a pair of Etymotic ER-6i headphones! Yeah...so that kind of sucked...no word from the airline yet, but I'm guessing they are gone for good. Thus, the need for lots of company sponsored beer... :/
jkwarras
QUOTE (Aero @ Mar 15 2005, 12:20 AM)
This is going to break the hearts of any iPod lover, but I've got bad news to report.
*

Sorry to hear that crying.gif
jkwarras
Aero,

Fermion has just released a foo_quicktag mod which uses the same sqlite approach as foo_playcount mod (from kode54), which stores the tags in a DB (sql) instead of the file itself. This one is mainly use for rating files and the main feature is that it'll not change your file everytime you rate it.

I don't know if this is also unusable as you said foo_playcount mod is to be used by foo_pod, but just wanted to let you know that finally it's there: playcounts and ratings in fb2k don't changes your files. Hopefully, even if sync can't be achieved between the ipod and fb2k for those fields, at least no more duplicates problem in your ipod wink.gif
Aero
QUOTE (jkwarras @ Mar 15 2005, 03:58 AM)
Fermion has just released a foo_quicktag mod which uses the same sqlite approach as foo_playcount mod (from kode54), which stores the tags in a DB (sql) instead of the file itself. This one is mainly use for rating files and the main feature is that it'll not change your file everytime you rate it.

I don't know if this is also unusable as you said foo_playcount mod is to be used by foo_pod, but just wanted to let you know that finally it's there: playcounts and ratings in fb2k don't changes your files. Hopefully, even if sync can't be achieved between the ipod and fb2k for those fields, at least no more duplicates problem in your ipod wink.gif
*

I'll take a look at it and see if it will work. As long as it handles an external component (i.e. foo_pod) setting the rating, then foo_playcount storing the new rating, it should work.
quazi
QUOTE (Aero @ Mar 15 2005, 12:20 AM)
... bad news ... iPod Photo 60GB ... Etymotic ER-6i ... no word from the airline ... gone for good
*

My hair stood on end just reading that.

..keep bugging the airline. sad.gif

QUOTE (Aero @ Mar 15 2005, 07:17 AM)
I'll take a look at it and see if it will work.  As long as it handles an external component (i.e. foo_pod) setting the rating, then foo_playcount storing the new rating, it should work.
*

Not that it's a bad thing, but this will be the first time that foo_pod will depend on another plugin for some of its functionality. It shouldn't be a bad thing, because this looks like the best option right now.

It makes me think of how (at least for my copy of Foobar) foo_uie_tabs, foo_uie_albumlist, foo_uie_albumart, and foo_uie_trackinfo all depend on foo_ui_columns. Sure, there's the occasional compatibility problem during an upgrade, but if everything's running good, it's a nice system.
Aero
QUOTE (quazi @ Mar 15 2005, 04:23 PM)
QUOTE (Aero @ Mar 15 2005, 12:20 AM)
... bad news ... iPod Photo 60GB ... Etymotic ER-6i ... no word from the airline ... gone for good
*

My hair stood on end just reading that.

..keep bugging the airline. sad.gif

Unfortunately, United isn't being too helpful. They won't even call back unless they find it.

QUOTE
QUOTE (Aero @ Mar 15 2005, 07:17 AM)
I'll take a look at it and see if it will work.  As long as it handles an external component (i.e. foo_pod) setting the rating, then foo_playcount storing the new rating, it should work.
*

Not that it's a bad thing, but this will be the first time that foo_pod will depend on another plugin for some of its functionality. It shouldn't be a bad thing, because this looks like the best option right now.

It makes me think of how (at least for my copy of Foobar) foo_uie_tabs, foo_uie_albumlist, foo_uie_albumart, and foo_uie_trackinfo all depend on foo_ui_columns. Sure, there's the occasional compatibility problem during an upgrade, but if everything's running good, it's a nice system.
*


foo_pod won't actually do anything with foo_playcount, so it won't be required or even known to foo_pod. I will just set metadata as I'm already doing, and foo_playcount will take care of writing it to its database.
dsuliman
How about the COPY_TO_PORTABLE functionality? If I use foo_quicktab_mod, it will give the metadata to be __COPY_TO_PORTABLE. Will you able to to provide this fuctionality as well? smile.gif
Aero
QUOTE (dsuliman @ Mar 15 2005, 09:28 PM)
How about the COPY_TO_PORTABLE functionality? If I use foo_quicktab_mod, it will give the metadata to be __COPY_TO_PORTABLE. Will you able to to provide this fuctionality as well?  smile.gif
*

I'm not sure that I'm following you - you want foo_pod to support __COPY_TO_PORTABLE in additional to COPY_TO_PORTABLE?
hunted
I think what hes saying, is if he were to use foo_quicktag_mod it would be called __copy_to_portable instead of copy_to_portable, and he is wondering if foo_pod will support this.
clunesy
The idea of putting the last 2 digits of the year before the album is great.
I just switched from Ephpod, and I think foo_pod rocks.
Unfortunately because foobar won't read .lnk (windows shortcuts), I've had to change my 'folder full of .m3u links' approach to syncing the pod that worked so well with Ephpod. I always found playlists named Artist-Year-Album the easiest way to navigate, so -

Sorry if this is more of a foo tagger question, but could someone tell me the string
for renaming the albums in the ipod db to

xxxxx-yy-zzzzzzzzzzzzzzzz

where xxxxx is the first 5 characters of the album artist
-should be blank if its comp. cd.
-also should remove string 'The ' from the front of the artist if present.

yy = last two digits of year

zzzzzzzzzzzzz = as much of the album string that can be fit on.

I ask this because if you have a great number of V/A CDs, it can be hard to browse through the artist list, and the album list is sorted by year regardless of artist !

Last question - To listen to my ipod on my work mac rig (I'm an audio engineer) - I have no choice but to listen to it thru itunes. Arrogant piece of software that it is, it rewrites the itunes db with the album tag info (cos it knows best !!!) - whenever it plays any file, which screws the db when you listen to the pod undocked. I have tried permission-locking the db as root user - no dice.

Instead of / As well as using the above format for the album name, is it possible to get foo_pod to create a playlist in the ipod for each album on the ipod using a custom string syntax? If you copy .m3u files onto the ipod itself, and you rebuild the database with foo_pod, can it read .m3u's on the ipod ?

Sorry for being an irritating noob ! Hope someone can shed some light. smile.gif
hunted
QUOTE (clunesy @ Mar 16 2005, 02:11 PM)
Unfortunately because foobar won't read .lnk (windows shortcuts)
*

have you tried foo_lnk, it resolves shell links, http://pelit.koillismaa.fi/plugins/search....lsearch=foo_lnk
dsuliman
QUOTE
I think what hes saying, is if he were to use foo_quicktag_mod it would be called __copy_to_portable instead of copy_to_portable, and he is wondering if foo_pod will support this.


Yup that's what I meant. I need this since foo_quicktag_mod will create __copy_to_portable instead of copy_to_portable.

Thanks in advance. laugh.gif
quazi
QUOTE (clunesy @ Mar 16 2005, 02:11 PM)
-should be blank if its comp. cd.
*

If the artist section is sometimes blank, that means some of them will start with artist and some of them won't, and that means it won't sort right.

How do you check if it's a compilation CD? %various% = 1, %album artist% = "VA", VA or OST in the album name (or path)? Do you use %album artist% and %artist%, %artist% and %track artist% (or %composer%) or just %artist% without a track artist?

therefore, this ain't right yet:
CODE
(code removed to alleviate confusion)
clunesy
Thanks very much for this !
I mistated myself - the artist field in my tags is never 'blank', I'm just saying for albums where each track has a different artist, it could 'appear' blank, - or VA would do. The test for this is %various% = 1 then, is it ?
I don't knowingly use %track artist% %album artist% or %composer%. Only different info in each artist tag.

I just don't want it to come up under the artist from Track #1 for instance, like some programs do. Is it possible to say - insert string 'VA' for artist, if
%various% = 1

And hunted, thanks for that foo_lnk info, I'll give it a try. Is there any way I can get foobar to edit my playlist names to the format above ?
I take it the answer to foo_pod creating new ipod playlists for each album is no ?

thanks
quazi
QUOTE (clunesy @ Mar 17 2005, 12:49 AM)
The test for this is %various% = 1 then, is it ?
I don't knowingly use %track artist% %album artist% or %composer%. Only different info in each artist tag.

I just don't want it to come up under the artist from Track #1 for instance, like some programs do. Is it possible to say - insert string 'VA' for artist, if
%various% = 1
*

Adding %various% = 1 is one way to do it.

I personally use %album artist% because of the Foobar Encouraged Tag Standards.

For more details, I recently wrote up a naming scheme tutorial.. specifically check out my naming schemes and see if they make sense.

If you decide to go that route, this would be the metadata setting you're looking for:

CODE
$left($if(%album artist%,$if($strcmp($left(%album artist%,4),The ),$right(%album artist%,$sub($len(%album artist%),4)),%album artist%),$if($strcmp($left(%artist%,4),The ),$right(%artist%,$sub($len(%artist%),4)),%artist%)),5)[[-$right(%date%,2)]-%album%]


If you don't want to use %album artist%, and would rather use %various%, this would work:

CODE
$if($stricmp(1,%various%),VA,$left($if($strcmp($left(%artist%,4),The ),$right(%artist%,$sub($len(%artist%),4)),%artist%),5))[[-$right(%date%,2)]-%album%]


QUOTE
Is there any way I can get foobar to edit my playlist names to the format above ?

Check out the Advanced Playlist Generator. I've never used it, so I'm not quite as familiar with that as, say TAGZ strings. biggrin.gif
clunesy
once again - thanks for your help. Gratefully received.
Like you say, it nearly works, but creates one album per track on each VA album !
It occurs to me that you aren't talking about ID3v2 tags, are you ?
[I don't think that spec has anything other than artist, album, title].
Do I need to use APEv2 to make this work ? My files only have ID3v1/2 right now.
Although I'm thinking of using APE to RG them.

Is there a TAGZ string that would be clever enough to do what I'm after based only on info available in ID3v2 ? eg (if an album has more than one artist, then show blank field). Strikes me you'd be the guy to come up with it if there were smile.gif
quazi
QUOTE (clunesy @ Mar 17 2005, 06:57 AM)
Like you say, it nearly works, but creates one album per track on each VA album !
*

You are putting this under "Album", right?

I used the first string (the 'album artist' one) here (ignore the other fields, they don't matter for this), and these albums came out looking like this (the bottom two).

It doesn't matter what type of tags you use. (If you're wondering, I use ID3v2.)

To make 'various' albums return a blank field, remove the bold part from whichever string you're using:

$left($if(%album artist%,$if($strcmp($left(%album artist%,4),The ),$right(%album artist%,$sub($len(%album artist%),4)),%album artist%),$if($strcmp($left(%artist%,4),The ),$right(%artist%,$sub($len(%artist%),4)),%artist%)),5)[[-$right(%date%,2)]-%album%]
( EDIT: note the bold comma right before ",5)[[" )

or

$if($stricmp(1,%various%),VA,$left($if($strcmp($left(%artist%,4),The ),$right(%artist%,$sub($len(%artist%),4)),%artist%),5))[[-$right(%date%,2)]-%album%]
Aero
QUOTE (dsuliman @ Mar 16 2005, 07:54 PM)
QUOTE
I think what hes saying, is if he were to use foo_quicktag_mod it would be called __copy_to_portable instead of copy_to_portable, and he is wondering if foo_pod will support this.


Yup that's what I meant. I need this since foo_quicktag_mod will create __copy_to_portable instead of copy_to_portable.

Thanks in advance. laugh.gif
*


Is there any particular reason why foo_quicktag_mod won't create COPY_TO_PORTABLE, instead of __COPY_TO_PORTABLE? My first reaction is that I probably will not add support for __COPY_TO_PORTABLE, unless there is a good reason why the 2 underscores are there.
jkwarras
QUOTE (Aero @ Mar 17 2005, 08:35 AM)
Is there any particular reason why foo_quicktag_mod won't create COPY_TO_PORTABLE, instead of __COPY_TO_PORTABLE?  My first reaction is that I probably will not add support for __COPY_TO_PORTABLE, unless there is a good reason why the 2 underscores are there.
*


Afaik, all metadata stored in the database is called via title formatting with a double underscore. i.e. %__fieldname% inserts tech info field named <fieldname> like this

bitrate is returned via %__bitrate%, extrainfo is returned via %__extrainfo% and so on...

As playcount mod and quicktag mod both uses sql are available as techinfo, and so you can call them via titleformatting using the double underscore. that's why if you use quicktag mod to write copy to portable tag, it'll in fact write %__copy_to_portable%, idem for rating.

Hope it helps cool.gif
clunesy
QUOTE (quazi @ Mar 17 2005, 07:50 AM)
QUOTE (clunesy @ Mar 17 2005, 06:57 AM)
Like you say, it nearly works, but creates one album per track on each VA album !
*

You are putting this under "Album", right?

It doesn't matter what type of tags you use. (If you're wondering, I use ID3v2.)

To make 'various' albums return a blank field, remove the bold part from whichever string you're using:

$left($if(%album artist%,$if($strcmp($left(%album artist%,4),The ),$right(%album artist%,$sub($len(%album artist%),4)),%album artist%),$if($strcmp($left(%artist%,4),The ),$right(%artist%,$sub($len(%artist%),4)),%artist%)),5)[[-$right(%date%,2)]-%album%]

or

$if($stricmp(1,%various%),VA,$left($if($strcmp($left(%artist%,4),The ),$right(%artist%,$sub($len(%artist%),4)),%artist%),5))[[-$right(%date%,2)]-%album%]
*



Yep - I'm putting it all under album. I've tried every variant with and without the bold sections. Every time it makes an album for EVERY artist on the album sad.gif
It is trimming all 'The ' strings though smile.gif

The best I've had - it made one album, but called it

',5[Syntax Err.......'

any ideas ?
Aero
QUOTE (jkwarras @ Mar 17 2005, 10:58 AM)
Afaik, all metadata stored in the database is called via title formatting with a double underscore. i.e. %__fieldname% inserts tech info field named <fieldname> like this

bitrate is returned via %__bitrate%, extrainfo is returned via %__extrainfo% and so on...

As playcount mod and quicktag mod both uses sql are available as techinfo, and so you can call them via titleformatting using the double underscore. that's why if you use quicktag mod to write copy to portable tag, it'll in fact write %__copy_to_portable%, idem for rating.
*

Yeah, that is how the TAGZ interface works, to get the tech info. I guess what I really meant was why is COPY_TO_PORTABLE saved as technical info, instead of metadata.
quazi
QUOTE (clunesy @ Mar 17 2005, 09:24 AM)
Yep - I'm putting it all under album. I've tried every variant with and without the bold sections. Every time it makes an album for EVERY artist on the album sad.gif
It is trimming all 'The ' strings though smile.gif

The best I've had - it made one album, but called it

',5[Syntax Err.......'

any ideas ?
*

I've tried removing tags one by one from a test track, adding various=1 to test the other string, and everything is working fine for me.

Copy your string right out of the foo_pod window and paste it here. I want to see if your copy is somehow different from mine. (If it's coming up with ",5[", that sounds like your missing a parenthesis somewhere. You're not typing these in by hand are you?) tongue.gif

Other than that, can anyone else test this for us? (You don't have to copy files to your iPod to do it either, just use the masstagger rename window -- without pressing 'Run' of course.)
clunesy
QUOTE (quazi @ Mar 17 2005, 09:34 AM)
QUOTE (clunesy @ Mar 17 2005, 09:24 AM)
Yep - I'm putting it all under album. I've tried every variant with and without the bold sections. Every time it makes an album for EVERY artist on the album sad.gif
It is trimming all 'The ' strings though smile.gif

The best I've had - it made one album, but called it

',5[Syntax Err.......'

any ideas ?
*

I've tried removing tags one by one from a test track, adding various=1 to test the other string, and everything is working fine for me.

Copy your string right out of the foo_pod window and paste it here. I want to see if your copy is somehow different from mine. (If it's coming up with ",5[", that sounds like your missing a parenthesis somewhere. You're not typing these in by hand are you?) tongue.gif



I'm copying it straight off the screen sad.gif - I've tried it MANY times

Custom playlist generator might be a better way to go...

BTW - I tried Prefs -> Main -> Send / Sync Playlist Settings
ticked Create iPod Playlists - and entered

[[$right(%date%,2)-]%album%]

in the custom format.

Each playlist is now called rnd_xxxxxx [artist name etc]

.... huh ?
quazi
QUOTE (clunesy @ Mar 17 2005, 10:15 AM)
I'm copying it straight off the screen sad.gif - I've tried it MANY times
*

you know why it didn't work? *I* didn't test my bold edits! tongue.gif

try this one (sorry about all the confusion!):
CODE
$left($if($strcmp($left(%artist%,4),The ),$right(%artist%,$sub($len(%artist%),4)),%artist%),5)[[-$right(%date%,2)]-%album%]
foosion
QUOTE (Aero @ Mar 17 2005, 06:28 PM)
Yeah, that is how the TAGZ interface works, to get the tech info.  I guess what I really meant was why is COPY_TO_PORTABLE saved as technical info, instead of metadata.
*
Because metadata is saved to files, but tech info is not.
Aero
QUOTE (foosion @ Mar 17 2005, 01:48 PM)
QUOTE (Aero @ Mar 17 2005, 06:28 PM)
Yeah, that is how the TAGZ interface works, to get the tech info.  I guess what I really meant was why is COPY_TO_PORTABLE saved as technical info, instead of metadata.
*
Because metadata is saved to files, but tech info is not.
*


I would expect that people would specifically want the COPY_TO_PORTABLE saved to disk so it would be serialized. But it isn't any extra work for me to check the tech info COPY_TO_PORTABLE (and IPOD), so I'll add that for the next version.
mhuxley
hi all,

first of all, foo_pod rocks, nice work !

i recently bought an ipod shuffle,
the only real problem i have with it is a lack of any 'album seek' functionality.
i was browsing my ipod thru explorer and noticed the two text files (Track_Order.txt, Shuffle_Order.txt) which i understand are created by foo_pod.
i came up with the idea of editing the shuffle list to include only the first track from each album (instant album seek !!!) but it doesn't work sad.gif
Whats the deal here, can i make this work ?

thanx in advance

Matt
Aero
QUOTE (mhuxley @ Mar 18 2005, 12:12 AM)
first of all, foo_pod rocks, nice work !

Thanks!

QUOTE
i recently bought an ipod shuffle,
the only real problem i have with it is a lack of any 'album seek' functionality.
i was browsing my ipod thru explorer and noticed the two text files (Track_Order.txt, Shuffle_Order.txt) which i understand are created by foo_pod.
i came up with the idea of editing the shuffle list to include only the first track from each album (instant album seek !!!) but it doesn't work sad.gif
Whats the deal here, can i make this work ?
*

Those files are written when foo_pod writes the iPod Shuffle's database, but are there only for reference; they aren't used by foo_pod.

Currently, there is no way to manually set the shuffle order - and even if you could, the iPod Shuffle can and does automatically reshuffle songs on its own. For example, when you have listened to all of the songs in shuffle mode, the iPod Shuffle will re-randomize the shuffle list. Also, quickly pressing the play key 3 times will reshuffle the list.

I'm more than willing to try different ideas to enhance the iPod Shuffle's shortcomings, but I don't think your album seek idea would work. I guess the best you can do is transfer the songs in album order, then use the non-shuffle mode for playback.
clunesy
QUOTE (quazi @ Mar 17 2005, 10:54 AM)
QUOTE (clunesy @ Mar 17 2005, 10:15 AM)
I'm copying it straight off the screen sad.gif - I've tried it MANY times
*

you know why it didn't work? *I* didn't test my bold edits! tongue.gif

try this one (sorry about all the confusion!):
CODE
$left($if($strcmp($left(%artist%,4),The ),$right(%artist%,$sub($len(%artist%),4)),%artist%),5)[[-$right(%date%,2)]-%album%]

*



Sorry - no dice - still one album entry for EVERY artist on a VA album.
When I think about it - I don't understand how it COULD work. My files only have
ID3 (v1+2). They only contain, %artist% %album% and %title% fields. How can the TAGZ string know whether a track is from a various album, without comparing it to all the other tracks on the same album ?

I think I might have to get into the EPG, or rewrite APEv2 tags on all albums with %album artist% and %various% tags completed.

Thanks very much for your help though smile.gif

Clunes
quazi
QUOTE (clunesy @ Mar 18 2005, 09:18 AM)
Sorry - no dice -  still one album entry for EVERY artist on a VA album.
*

That is what happens when you browse by artist first, as opposed to album first. (Unless you've got a mutant iPod that goes Album / Artist / tracks.)

Have you tried moving the artist tag to Composer, and putting VA in Artist? (just for foo_pod, don't actually change your tags):

Metadata strings
-------------------
Artist: VA
Composer: %artist%

But even this will only work for your compilation albums. In order for foo_pod to tell the difference bewteen VA-albums and non-VA, use either %album artist% or %various%=1 and check for it with $if statements. (Check the other examples on my website.)

And yes, trust me, ID3v2 *will* take an %album artist% tag! smile.gif (but APEv2 will update 100x faster)
jaypaulw
I know this is probably considered a waste of a post, but I just have to say that after using foo_pod for quite some time, I am extremely happy with it.

Keep up the excellent work!

JP
Aero
QUOTE (jaypaulw @ Mar 18 2005, 03:26 PM)
I know this is probably considered a waste of a post, but I just have to say that after using foo_pod for quite some time, I am extremely happy with it.

Keep up the excellent work!
*

Nope - not a wasted post...I always appreciate praise! smile.gif


Thanks!
Aero
Verison 0.9.9f is now available

This is an interesting release, but more on that in a little bit.

The biggest fix is that I fixed quazi's bug (discussed here). Also, I added support for __COPY_TO_PORTABLE and (re)added the textbox in the Main foo_pod Preferences to set the "Load iPod Songs To Foobar2000 Playlist" sorting format. I also fixed the problem with writing empty metadata to the iPod database.

But the fun feature is a side-effect of the change I did for quazi's bug. As Otto discovered, there is a special item in the iTunesDB file that controls how the browse menus (Artist/Album/Song Name/Genre/Composer) are sorted. I had written some code to do this, but never quite got it finished until quazi's bug popped up.

So tonight, I finished adding support for controlling the sort order of these menus. And unlike how iTunes does it, I do it strictly in an alphabetical order. So previously, "The Doors" would appear before "Mojo Nixon", since the "The" in "The Doors" was ignored, and 'D' comes before 'M'. But with the current foo_pod sorting, "The Doors" will appear along with the rest of the "The"s in the 'T's. I don't have support for any other sorting orders yet, but it would be easy to add them.

The real benefit of using doing the sort in foo_pod instead of on the iPod is that the browse menus are much, much faster now - especially when you first undock your iPod and try to display all of the artists, for example. If you want to test this out, there is are 2 menu items under the Maintenance smile.gif menu called "Add iPod Browse Menu Speedup" and "Remove iPod Browse Menu Speedup" (quazi - either one should fix your problem, BTW). These are only temporary, and the next time foo_pod writes to the database, it will use the setting found in the Advanced tab of the foo_pod Preferences. Feel free to test this feature out - I have only been testing it for an hour or so, but worst case, you will be able to go back to the old iPod sorting mechanism by unchecking the option on the Advanced tab and using "Remove iPod Browse Menu Speedup".


Also, I added section in the Readme if you are interested in donating a little money in support of foo_pod. This is all I'm going say about this...if you are interested, check it out.


From the Readme:
CODE
Version 0.9.9f - March 21, 2005
*  Fixed a potentially serious bug that occured when using both foo_pod and iTunes to add songs to the same iPod.
  Symptoms of this problem are weird (missing or out of order) items in the Artist/Album/Genre browse menus on the iPod.

*  Along with the aforementioned fix, added *experimental* support for super fast iPod browse menus.  There are two ways to use/test this feature.  Under the Maintenance menu, there are "Add iPod Browse Menu Speedup" and "Remove iPod Browse Menu Speedup".
  These will allow you to test out this feature, as well as removing it is you discover that it causes problems.  Note that adding or deleting songs will undo this.  To make your choice permanent, there is a checkbox called "Speed up iPod Browse Menu" on the Advanced tab of the foo_pod Preferences.

  One interesting side-effect of this feature is that instead of the lexigraphical order used by iTunes (e.g. "The Doors" is listed before "Duran Duran", foo_pod currently uses a strictly alphanumeric sort).  There may be alternate sorting schemes available in future versions.
 
*  Fixed the alternate metadata behavior so that empty or "?" strings aren't written to the iPod database.

*  Added support for "COPY_TO_PORTABLE" as a technical info metadata item (i.e. accessible in TAGZ as %__COPY_TO_PORTABLE%).

*  Added support for choosing the sorting format used for "Load iPod Songs To Foobar2000 Playlist", on the Main Preference tab.
quazi
QUOTE (Aero @ Mar 20 2005, 11:36 PM)
The biggest fix is that I fixed quazi's bug (discussed here).
*

I'm flattered! cool.gif

But I fixed that original problem by starting from scratch -- deleting all songs, nuking the database and reuploading everything.

Everything is fine now, but this happens when I try the menu speedup option,

for example, this album is already on my iPod:


Without browse menu speedup (the temporary option):


With browse menu speedup:


When I navigate Music / Artist / Album, the tracks for each album are out of order. When I navigate Music / Songs, that list is in order. When I disable menu speedup, everything is fine.

This might have something to do with it: Right after I upgraded to this latest version, Foobar abended while my iPod was mounting. When I restarted it, and ejected the iPod, none of the songs showed up and I had to rebuild the database. *shrug*

I could flatten my iPod again and that would probably fix it, or I could send you a before and after iTunesDB file if you want to look at them.

(excellent update otherwise!) smile.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2009 Invision Power Services, Inc.