foo_touchremote 0.2.5

U know ;)

foo_touchremote 0.2.2

This is a stability release.

- Fixed occasional JIT error when pairing with device.
- Fixed random foobar crashes.
- Volume and seekbar sliders are quite smooth now.

Download: foo_touchremote 0.2.2.1

foo_touchremote 0.2.1 (beta 1)

Ok guys, here’s a long-awaited update for foo_touchremote. It has been rewritten from scratch, so not all features of the previous versions may be replicated.
It still may have a lot of bugs, so feel free to leave your feedback in comments or by e-mail.

Requirements:

Grab and try: foo_touchremote 0.2.1.2

Long time no posts

Some time ago I’ve said there would be updates during New Year holidays. Well, that didn’t come true.
I have been moving to the new apartment and had no time to do something, even reading the e-mails was a problem.

Also I have a request to those of you who has a MacBook and a not-Touch iPod (i.e. Classic, Nano, etc.). Please post in the comments how does the player appear in the Mac OS X. Is it mounted to some directory (which exactly?) as a removable drive just like in Windows?

TouchRemote DACP server

InformationHistory
foo_touchremote
TouchRemote plugin (foo_touchremote) is an implementation of DACP server for foobar2000.

DACP is a protocol to remotely control audio playback from mobile devices. It allows you to:

  • Browse artists, albums and tracks in your media library
  • See now playing track along with album art
  • Search for tracks
  • Control playback state, position and volume
  • Create/edit/delete playlists (currently supported in Apple Remote only)

The key feature of DAAP is using Bonjour for discovery, so you need Bonjour Service (usually you already have one installed with iTunes).
You also need .NET Framework 3.5 SP1 installed.
For new versions (since 0.2.8) you need .NET Framework 4 and VC++ 2010 runtime installed.

You may use it with various client devices: iPhones, iPads or iPods Touch, Android-based phones or tablets, and Windows Phone 7 phones.
See FAQ page for a complete list of supported client applications on different platforms.

Download foo_touchremote 0.2.8.3.

Quick Start: after installation go to the plugin settings page and pair with your device.

If you have troubles installing or using this plugin, please refer to the FAQ page. Most likely you’ll find your answer there.

Mar 21 2012: Version 0.2.8.3.

  • Compatibility with Remote 2.3

Oct 15 2011: Version 0.2.8.2.

  • Fixes issues with Remote 2.2
  • Various fixes

Oct 02 2011: Version 0.2.8.

  • Now built with VS2010 with new SDK, requires .NET Framework 4.0 and VC++ 2010 runtime
  • Fixed preferences page hangs in latest versions of foobar
  • Fixed issue with missing artwork if image is built-in into WMA files
  • Some UI changes
  • No more “Service Name” available, it is autogenerated now. Re-pair with all your devices!
  • New option to stop playback instead of pause

Mar 16 2011: Version 0.2.7.2.

  • Editing tags in foobar is immediately reflected on remote side
  • Various fixes
  • Ability to set rating for now playing song even if it is not in library

Mar 2 2011: Version 0.2.7.1.

  • Various fixes
  • Compatibility fix for TunesRemote+ clients

Feb 26 2011: Version 0.2.7.

  • Playlist-related code improvements
  • Option to compress network traffic

Feb 19 2011: Version 0.2.6.

  • Network code reworked
  • Finally renamed to “TouchRemote DACP server”
  • Packaged as zip archive to make installation easier. Drag archive to the components list to install or update it.

Feb 13 2011: Version 0.2.5.2.

  • Removed limitation on port number. You don’t need this update unless you want to set port between 1000 and 5000.

Feb 11 2011: Version 0.2.5.

  • Customizable titleformat strings
  • Editable playlists
  • Bugfix for special symbols in artist names
  • Other small bugfixes

Feb 9 2011: Version 0.2.4.

  • Fixed crash on setting rating
  • Sorting now replicates that of iTunes
  • Sort headers (letters on the scrollbar) added

Feb 6 2011: Version 0.2.3.

  • Gets and sets song ratings (foo_playcount required).
  • Uses common titleformat strings rather than fixed tags to get track information. These would be customizable via UI.
  • Memory usage optimized.
  • Correct statuses are now sent to Remote clients on shutdown.
  • Less updates are sent to clients when playback state changes.

Feb 3 2011: Version 0.2.2.1.

  • A lot of fixes. Stable build.

Jan 30 2011: Version 0.2.1.

  • Complete rewrite of the component. First public beta.

Sep 29 2010: Version 0.1.2.1 v2.

  • Quick fix to support Remote v2

Feb 7 2010: Version 0.1.2.1.

  • Fixes XP compatibility issue of 0.1.2

Feb 6 2010: Version 0.1.2.

  • Sorting according to client hints
  • Search makes no difference between letters with grave, acute etc. (requires Vista or later)
  • Album tracks when flipped from Now Playing screen (but no rating yet)
  • Pairing now uses foobar’s built-in http client (and doesn’t rely on WinInet and IE settings anymore)

Jan 31 2010: Version 0.1.1.

  • Library support
  • Autoplaylist from library selection
  • Traffic compression
  • New (foobar 1.0) album art configuration support

Nov 04 2009: Version 0.0.7.1.

  • Better pairing
  • Fixed crash on exit on WinXP

Oct 30 2009: Version 0.0.6.

  • Some minor fixes
  • Ability to control process or system-wide volume instead of foobar’s built-in one

Oct 17 2009: Initial public build 0.0.5 alpha.

New iTunes library is here

I’ve just got why you should use new iTunes (8.2) since beta 5. They have replaced old iTunesDB library with new one based on SQLite, so sync is a bit odd thing now.
Device itself doesn’t use iTunesDB at all, but iTunes still does – I think it’s for compatibility reasons. When syncing, iTunes writes both iTunesDB and new library files to device. If there’s no iTunesDB file on device, iTunes will also purge new library and all your music will appear as “other” data.

I wonder whether new library will completely supersede iTunesDB or will they continue coexisting for compatibility reasons. But anyway, linux guys would be happy since SQLite format is open and much more clear for understanding.

Sync: “Slide to cancel”

Slide to CancelYeah, I’ve just found out how to handle this and terminate sync when user slides cancel switch.

We need following functions (meta-language):

ERROR AMDObserveNotification(HANDLE proxy, CFSTR notification);
ERROR AMDListenForNotifications(HANDLE proxy, NOTIFY_CALLBACK cb, USERDATA data);

and callback delegate:

typedef void (*NOTIFY_CALLBACK)(CFSTR notification, USERDATA data);

First, we need AMDObserveNotification to subscribe notifications about “com.apple.itunes-client.syncCancelRequest”. Then we should start listening for notifications (second function) until we get “AMDNotificationFaceplant”.
That’s it. When notification got, you should unlock and close lock file handle (don’t sure if you need to post “syncDidFinish” to proxy, seems it doesn’t matter) and terminate sync gracefully.

P.S. The same notification is also got when you unplug your device, so you should always be ready for errors.

ArtDoctor for Mac OS X: possible!

Some time ago a Mac port of Mono was released, so it made completely possible to run .NET applications there. But ArtDoctor needs to operate directly with device and was strictly tied with iTunesMobileDevice.dll, which has no analog on a Mac.

And today I’ve managed to create a fully cross-platform .NET library to deal with Apple devices. It even works without re-compiling for target platform. The trick is to use MobileDevice (dll on Windows and framework on Mac OS X) instead and apply some dll redirections for Mono.

However, it’s not just to change referenced library name. Unlike iTunesMobileDevice, MobileDevice framework doesn’t use native threads on both platforms. Also it is more strict about strings, so hand-made CFStrings most likely won’t do.

P.S. I really have no idea why both of these libraries are included in Windows distribution of Apple Mobile Device Support, ’cause they don’t even reference each other.

ArtDoctor future

For some time I thought that current ArtDoctor version (1.0.2) can fix any artwork-related issues. Well, I was wrong: maybe in case of iTunes that’s true, but other managers could not be trusted a bit.

A few days ago I was trying to resolve a reported issue with “parameter is not valid” error.
At first I thought there were some changes in thumbnail formats (error was got on iTouch 2G, and I’ve never tested it on that device). Then I looked in ArtworkDB and noticed that it had invalid information inside, like overlapping offsets in cache files.
So I understood ArtDoctor must also be able to rewrite artwork database, not only cache. It still doesn’t affect main database and is safe for your player. Even if something goes wrong, you won’t lose your music.
Continue Reading »

ArtDoctor page added

No updates yet, it is still version 1.0.2.

Go to product page.