DAAP Android Client Updates

The first release of the DAAP client for Android had a bit more problems than I would like to admit. We have been happily working with many users to get the application to work in their situations, and in doing so, we have made the DAAP client far better than it was in its initial release. The changes below are great:

  • Major memory optimizations
  • Minor bandwith optimizations
  • Automatically detect local shares
  • Playlist support
  • Queue support
  • Rhythmbox as server support

By eliminated many buffers that were created very frequently, the DAAP client is now able to handle much larger libraries. It is also easy to navigate thanks to playlist support. Queue support is nice, but the interface is probably in its beta. The auto-detection of local shares is really hit or miss and I can find no reason for it. According to a couple of android bug reports I have found, Android does not support connecting to multicast sockets, but it has worked for me a few times, but not very consistently. This is strange. Streaming will come as soon as I can find a good way to do it in Android without skips and jutters.

My main point in this post is to get feedback from the users. Is the DAAP client working for you, and if not, which server are you using? Are there any suggestions? Also, if you like the application, please rate it positively.

58 comments:

Doug said...

Hi
I just installed your program but haven't had much luck. I don't know if its user error or not. A few problems:
If I enter in a server uncorrecty how can I edit or delete it?
It doesn't ask for a username but only a password
it isn't connecting to my manual addition. I am using Freemasonry with mt-daap (firefly?). I entered the local open and port, http://192.168.100.148 this works on other pcs on the local network.
The program doesn't automatically detect the daap server.

Thanks

Chris Miceli said...

You can delete a server you entered incorrectly. You can long press it and there is a delete option. There is no method to edit at the moment, but you can just delete and enter a new server. I believe the problem that the problem you are having is your URL. You do not need to add http:// to the front. 192.168.100.148 should work just fine. Please keep me up to date.

Doug said...

Great, that works! So far daap seem to work as expected.

Cheers

Miguel said...

In the last version (5.2) DAAP play the wrong song if I select it from "All songs" section. Selecting the same song from "Artist" or "Album" DAAP play the correct song...

Chris Miceli said...

Miguel, I have fixed this issue and released an update. Thank you for noticing this! Hope you are enjoying the application. Please notify me if you find any more problems with the new version.

Sohum said...

A few feature requests, mostly:

a) Download to the sd card
b) Keep the files around after downloading
c) Download the files next in the playlist while the current song is playing

It's just not slick enough to show off yet :D

Chris Miceli said...

Sohum,
We just released an update (minutes ago) that allows you to have the option to use SD-card as temporary storage instead of internal storage (available in preferences). You can't keep the song after you download it though. We may add this after some other fixes. The reason that we don't download the next song while the first is playing is to save space. We don't want to eat up all available storage. We are working on streaming and that will solve this issue anyway.

Sohum said...

Oh, excellent. Yep, "Use SD Card as Cache" in latest update.

And yea, I'd like to be able to keep the song around after downloading - this seems like a neat way to "sync" my music collection to my phone with the songs I actually listen to.

Otherwise, the future plans sound cool!

Sohum said...

Oh, a couple more things:

Pressing back doesn't maintain where I am - where I've scrolled to - in the browser.

And sometimes it'll cut off a few seconds off the end of a song. Only if there's a song next on the playlist? Only if the screen's off? It was happening regularly, then I updated and it happened once and hasn't happened since. I'll keep trying to reproduce it.

frankendust said...
This comment has been removed by the author.
dust said...

I've installed the app on a Legend w/ 2.1 Eclair and have Firefly running on Linux, no user/pass. The app doesn't find the server, so I put it in manually. It says it's connecting, but then after half a minute it goes to a playlist screen which remains empty.

So did it actually connect? and if it did, why does it not load songs?

Thanks, I'd really like to get this running.

Chris Miceli said...

Sohum, I also would like the application to remember your position in a list. We need to address this in a future update. I am unsure why the song would cut short because android triggers when the song completes, perhaps our application is not downloading the full song? If you continue to experience this, please let me know. Dust, if it goes to the playlist screen, I believe it is successfully connecting. Maybe you don't have any playlists? If this is the case, maybe our application can skip this screen and go straight to the music. I will investigate this issue shortly.

dust said...

that's true, I'm not into playlists at all, I'd just like to access the files so it would be nice if it would just jump to the collection.

Chris Miceli said...

I thought that daap servers had a default playlist with everything, but I must be mistaken. Expect and update shortly with some exciting new features.

Jim said...

Hi, this is fantastic! This completely blows away Orb. My goal is to be able to replace my ipod with my droid, and here are the things I'd like to see:

1)Browsing enhancement. I have 25,000+ songs, and the way I browse is by drilling down to artist, and then album. On my ipod and in winamp, the album's tracks are then treated like a faux playlist, and playing the first track kicks off the whole album. It's more about being able to find just a single album by artist, instead of having to see the entire collection for an artist, which is really just too big to be convenient for most artists.

2)The buffering-lag is slow. Can the track begin to play before it's finished downloading? And can the next track in the playlist/album be queued up before the current track finishes?

These are the usability things I think would make this a total Orb killer. mt-daapd was so easy to install at home, and this app just *works* (unlike Orb, which I actually paid for). Thanks for the awesome work.

Matthew said...

Hi, I've spent a lot of time trying to get this to work with my HTC Hero and it's not seeing my firefly daap server. It'll scan and scan and eventually crash unexpectedly. Any ideas? I'm really looking forward to trying out your app!

Chris Miceli said...

The scan featureis extremely inconsistent due to a bug in android. Could you add the server manually? All you need is the IP address of your DAAP server.

Matthew said...

Adding the server manually hasn't worked one bit either. I've checked all of the port settings in firefly and on my router... all are set properly. My itunes sees my daap server on other pcs and I'm also running fireplay just fine outside of my network across the net. I don't know what else to try.

Chris Miceli said...

If you didn't change the port settings of mt-daapd, all that is necessary is to
Add Server
Enter a name to remember it by (doesn't even have to be the share name)
Type the ip address (ex. 192.168.1.1)
Leave the port number the default (3689)
Save
Click on that server
What happens now?

Matthew said...

Ok I tried that and I'm getting the following error: "The application DAAP (process org.mult.daap) has stopped unexpectedly." and it prompts to force close the app.

Chris Miceli said...

@Matthew
Strange. So you enter in the daap share name, and the ip address. Then when you hit "Add Server", you get that message? Are you using a password. What is the name that you used? If you have adb to gather the log files, that'd help, but if not, we'll still help you figure it out. If you want, maybe and uninstall and reinstall my fix your issue. Something may have gotten corrupted; since, no one has reported this issue.

Matthew said...

Btw I'm running Android 2.1 on my Hero.

Matthew said...
This comment has been removed by the author.
Chris Miceli said...

@Matthew
Let's continue this offline. Could you e-mail me back. Since, your IP address is public, I tried adding it and it did not force close. However, I was unable to connect, but just couldn't get past connecting. Could you try your local ip address on when connected to wifi? chrismiceli at gmail dot com

Boyd Thomson said...

I am running DAAP .8.3 on a Nexus One with Android 2.2

I typically use Rhythmbox but I have tried to connect to some other DAAP servers and I always get:
"The application DAAP (process org.mult.daap) has stopped unexpectedly." and it prompts to force close the app.

I installed this latest version just today and sometimes it will connect to a server and see the playlists but as soon as I click on "All Songs" it pauses for a minute and then crashes. I have successfully connected if I create a playlist with only one song. I only have 136 tracks in my library.

I used to do software development and I'd love to help with the DAAP project. Please let me know if I can help with some debugging.

Boyd Thomson said...
This comment has been removed by the author.
Chris Miceli said...

Hello Boyd Thomson, I am sorry that the application is not working for you. It is good news though that you were a developer. You should have no problem getting ADB as part of the android SDK. ADB is the Android Debug Bridge and can capture the stack trace of the crashing application via the logcat command. Once you have ADB installed and successfully picking up your device, all you have to do is issue a
adb logcat
and copy the output to me in an email at chrismiceli at gmail.com

Ludovic said...

Hi
first, thanks for your work..!
i have just installed the application but i can't manage to make it works.
so i've got few questions:
i've tried to make it work with a pc with itunes 9 installed on it.
i can see the shared library but when i try to connect i 've got message "connexion impossible".
Itunes see the connection because i can see the number of user increased when i try to connect.

i've tou got some issue for this..?
is it supposed to work with itunes 9, what can i do to see some log ?

Chris Miceli said...

@Ludovic
I am sorry to inform you that while an iTunes 9 share will be discovered by our application, we are unable to work with it. DAAP is a protocol developed by apple, but later changed to prevent 3rd party applications such as ours from working with it. If you had a very old version of iTunes (< 7.0), then our application would happily work. Fortunately for you though, there have been many 3rd party implementations of DAAP that do work with our application very well. I encourage you to check out mt-daap (http://www.fireflymediaserver.org/) or Rhythmbox (http://projects.gnome.org/rhythmbox/) or even FreeNAS (http://freenas.org/). Good luck and sorry for the invonenience.

Ludovic said...

@Chris
Thank you for the quick answer,
that confirm what i was feared to believe...
Don't really understand of what apple is protecting from...but it is what it is.
I used to manage a shared lib why a mt-daap server and itunes, but it seems that in their twisted mind this is possible.
I will try your solutions, thank you for you support.

Ronnie said...

I was just trying this out on my phone. I can't get it to connect at all. It just pops up a message that says unable to connect. Not sure what the deal is.

Chris Miceli said...

@Ronnie
Please make sure that you are on WiFi (or your DAAP server is visible over the internet) and that other DAAP clients such as Banshee, RhythmBox, some versions of iTunes, etc. are successfully connecting. If they are, could you download the aLogCat application and send me an error report?

Ronnie said...

Well, it apparently doesn't like working in wifi mode. No worries there though. That's why I have a Roku at home. Appears fine over my 3G connection. Nice little app! :D

Chris Miceli said...

@Ronnie
I am glad that you are enjoying it. There will be an update soon with some nice features, but I need to get some time together to do that.

Ronnie said...

@Chris
I'm not sure why it wouldn't work in WiFi mode. I can connect to my server with my Roku and iTunes. When I tried adding the server, it just kept saying it couldn't connect. However, once I took my phone out of WiFi and put in the address over my server over the DNS forwarding, it worked like a charm. Now I don't have to worry about my 16GB limit for music! Thanks a ton!

sdou64 said...

hey,

i am using mt-daapd on my dns323 to stream from the nas to my galaxy s with android 2.2.

it works via wlan on the local network. so far so good.

do you take any requests for enhancements? is the project still alive?

thx
br
-sdou

Chris Miceli said...

@sdou64
The project is still alive and well. There is a google project set up here where you can download the latest source. There is also a bug and feauture tracker there where you can observe any feature requests. Development does slow sometimes but it is because the other developer and I are both in school. Here is the project page: http://code.google.com/p/daap-client/

sdou64 said...

ok i added the request.
maybe it's the wrong category.

Teddy said...

I can connect over WiFi locally, but cannot over 3g. it says unable to connect. I've got the port forwarded. I'm running a freenas server. any thoughts?

Chris Miceli said...

@Teddy
I am not sure why this is happening. The code doesn't treat local and remote servers differently. Try using an ip address instead of a hostname and see if that resolves the problem. You should only need to forward that one port. If you can look at the logs, that may be helpful. There is an app I believe called aLogcat that can do this for you.

Alessandro said...

I have a mt-daapd server running on my dd-wrt router. With the DAAP app, I'm able to connect just fine and I see the songs, but when I select them, sometimes they don't start. The song, album, etc. comes up, as does the track duration, but hitting the play button does nothing.

There's no telling when a certain track will work or not - seems more like a random occurrence. I'd say about 60% of the tracks won't play in any given session. The mt-daapd log says they songs are being streamed, and I don't have this problem with my other devices.

Chris Miceli said...

@Alessandro
Hm, which device are you using and what is the format of your songs? Some devices don't have the ability to play certain songs because the android build doesn't have certain codecs. Also, are you using tthe newest market version? There was a major difference in how streaming is handled in this version. If you aren't I would recommend trying it. If you are, there is an old version uploaded at the prject page, could you give that a try?

Andrew said...

Hey,

Ive got Ubuntu Linux 10.10, a HTC Wild fire and am using rythmbox.

Ive enabled the sharing feature in rythbox, and put in

avahi-browse -a -r -t

into terminal, and i see the iTunes Audio Access running from the right port.

However it doesn't pick up any servers automatically on my phone, and just says, unable to connect when i manually type in ip address. tried with and without password.

i am using a shared complex wireless router, that both my phone and linux pc are connected to. ive managed to get other pc control apps working over the same link, but with a windows pc (couldnt find any nice apps for linux.)

Any ideas?

Chris Miceli said...

@Andrew
Some phones will not automatically detect shares, especially HTC phones. It has to do with some driver issue to save battery life but that's another story. I'm not why it won't connect with the IP address, it should. Can you get the error logs with aLogCat or adb logcat and tell me what they say? If the port is open and IP reachable, it should connect fine.

Andrew said...

seems the read out is too long to post here. how can i get it to you?

Chris Miceli said...

@Andrew
You can post a bug on the google code page and I'll read it there. http://code.google.com/p/daap-client/issues/list

Andrew said...

Okay, so now ive solved that problem, i have another one. ive downloaded itunes 6. and it attempts to connect, even asks me for the password and all, but then it just cuts out, says unable to connect, on the device. in itunes it flashes "one user connected" for a second. reinstalled it and all. any ideas before i put in a report at the daap client site?

HamishL said...
This comment has been removed by the author.
HamishL said...

Hi Chris,
I found your fantastically useful app (v0.92) after a few failed experiments to stream .WMA music from my home NAS (D-Link DNS-323 running Firefly SVN-1696) to my HTC Desire (Froyo 2.2) phone. Setup was simple and worked first time and I'm impressed with the speed of the browser and the clean interface (I'm used to Windows Media Player 11).
I have one problem though, and I'm trying to determine if it's the device or the app that's at fault:

Despite my .WMA files appearing in the DAAP Client library/playlists on my HTC Desire, none of them play - only .MP3 files seem to work. I can successfully stream to my PC from the same Firefly server on the NAS, so this issue is only when streaming to the phone.
The weird part is that .WMA files play fine on any of the media players I normally use on the phone, so it doesn't look like this is just a case of a missing codec.
I've also tried streaming .FLAC and .OGG files to the phone, and these don't work either - only .MP3.

My question is: What audio formats does DAAP Client support, or is it format-agnostic?

Thanks in advance,
-Hamish

Chris Miceli said...

@HamishL
The DAAP application should stream every file type supported by your phone as I just use the media player of the phone progrmattically. My guess would be that your phone has the ability to play full .wma files, but perhaps your phone does not have the capability to stream that file type. This is unfortunate. If you go to the daap page on google code (linked in the market), you can try an older version of DAAP that used a different streaming algorithm that may work, but it is a slightly older version. Hope my response is helpful to you. Also, depending on your daap server, you may be able to transcode wma files on the fly yo mp3 or wav. I think mt-daapd/firefly can do this, but I am not 100%.

HamishL said...
This comment has been removed by the author.
HamishL said...
This comment has been removed by the author.
HamishL said...

@Chris
Sorry, I just wrote a whole report on my efforts to get this working, then deleted it in an attempt to edit one point. I don't suppose you can see my deleted post? There's a lot of info in there and I managed to get it working in the end.

Oh well.

Tera Flop said...

Have had Ubuntu server running Firefly for about half a year. Ubuntu client works fine, just not DRM'd content from iTunes. Now using DAAP - Media Player for Android. Password-protected with a custom port. No complaints, works fine.

KeithG said...

Just tried the client. No luck on this side. I am running forked-daapd 0.16 on my server. I can see the server and the music list, but cannot play anything. Please let me know how I can help. I would like this to work on our android phones/tablet.

Chris Miceli said...

@KeithG
Hey, I would love to be able to help you out. If you could get the logs from your server and the logs from your Android device, that would be the most helpful thing. Also, to better track this issue, you cuold open an issue on the project homepage. You may find the aLogCat utility in the market useful for gathering logs.

JanN said...

Many thanks for your work. Unfortunately your App doesn't run on my Xoom: it starts and it finds my server (Zyxel NSA 320 with mt-daap). When i click on the server, it tries to read the database and crashes after 2 minutes. I have around 75000 audiofiles on my server...
Perhaps that's too much? Any ideas?
Best regards
Jan

Christopher Miceli said...

@JanN
The songs are currently stored in memory instead of some device storage (such as a database), so it is entirely possible that your collection is too large to fit in memory. A while ago I was working on implementing the database approach, but never got around to it yet. In the mean time, can you try reducing the size of the library you are trying to access with your Android device?