Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_pod - Foobar2000 meets the iPod (Read 1308535 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

foo_pod - Foobar2000 meets the iPod

Reply #100
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

foo_pod - Foobar2000 meets the iPod

Reply #101
Is it possible to use all of foo_pod's features without first installing iTunes (to get the IpodService)?

foo_pod - Foobar2000 meets the iPod

Reply #102
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.

foo_pod - Foobar2000 meets the iPod

Reply #103
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.

foo_pod - Foobar2000 meets the iPod

Reply #104
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.

foo_pod - Foobar2000 meets the iPod

Reply #105
Don't worry, I'll live

foo_pod - Foobar2000 meets the iPod

Reply #106
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.

foo_pod - Foobar2000 meets the iPod

Reply #107
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 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.

foo_pod - Foobar2000 meets the iPod

Reply #108
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

foo_pod - Foobar2000 meets the iPod

Reply #109
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

 

foo_pod - Foobar2000 meets the iPod

Reply #110
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 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.

foo_pod - Foobar2000 meets the iPod

Reply #111
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

foo_pod - Foobar2000 meets the iPod

Reply #112
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.

foo_pod - Foobar2000 meets the iPod

Reply #113
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

foo_pod - Foobar2000 meets the iPod

Reply #114
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.

foo_pod - Foobar2000 meets the iPod

Reply #115
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

foo_pod - Foobar2000 meets the iPod

Reply #116
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 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.

foo_pod - Foobar2000 meets the iPod

Reply #117
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? 

foo_pod - Foobar2000 meets the iPod

Reply #118
I have posted a new 0.5 preview version  (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.

foo_pod - Foobar2000 meets the iPod

Reply #119
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?

foo_pod - Foobar2000 meets the iPod

Reply #120
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.

foo_pod - Foobar2000 meets the iPod

Reply #121
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.

foo_pod - Foobar2000 meets the iPod

Reply #122
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

foo_pod - Foobar2000 meets the iPod

Reply #123
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 instead.

foo_pod - Foobar2000 meets the iPod

Reply #124
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