Songbird vs Foobar

By mig mig Permalink

salmonmoose (not verified) Says:
Thu, 01/05/2006 - 5:27pm
RAM is an issue, even in the days of cheap 1gig sticks. I'm currently running foobar2k with approximately 10k of tracks and it's using just under 7 megs of ram.
I mention it, because foobar seems to be somewhat overlooked, but it has by far the most powerful database for tracks, and all the important features that get overlooked, like gapless playback, and replaygain.

Foobar and Winamp 2.666 epitomize the “other end” of the media player spectrum. Very tight, OS specific C and C++ code meant to do nothing but play music from a big playlist of tracks and do that one thing as well as possible.

And, unquestionably, they both do that very very well.

Regarding advanced playback features like crossfading or eq or othersuch, they beat us hands down right now. It’ll take us awhile to catch up to them, but it will happen. At the same time, however, even our “proof of concept” will do things from day 1 that neither of those players could possibly approach.

Their UI is based upon a playlist heuristic and the only two pieces of information kept in RAM per track are track name and track time. In foobar, you can load an extension to see album info in addition to just the basic items of the playlist. Add a simple find and that’s pretty much it for “rich interaction” with your media library.

However, once you embrace the functionality of a “filtered media library,” either with filter lists in the UI or with “Smart Playlists” based on database queries, you’re loading all of the track metadata into RAM. And instantly you’re way bigger than foobar’s svelte 7MB for a huge media library.

Hopefully what you get for that expense is a database format that makes it fast to retrieve queried subsets of all that metadata into the UI. And therefore a UI with lots more complex functionality.

If you want even more useful functionality — like, say, a “last-played” shuffle instead of a random number generator, or a smart playlist of the last 50 tracks added to the main library, or a “trackback” url for every downloaded file — you have to start saving extra run-time metrics for the tracks alongside the file-based metadata and you’re taking up still more RAM.

Now you might say you hate all those features and you strongly begrudge me the fact I would take lots more memory than foobar to hold the same sized media library.

So my natural instinct is to see if there’s anything I can do about that.

And the natural answer is, of course, I’m a programmer. I can do anything if given enough time. But what programmer is ever given enough time?

Certainly, we would make gathering of runtime metrics optional. That, itself, reduces memory somewhat.

Additionally, we could set an option to use a “reduced database” that only loads minimal Metadata, or even a “playlist only” form that only uses a very tiny database schema — essentially visibly identical to foobar or the old winamp playlist window, but still taking (only) slightly more RAM because we require some number of internal database columns to run properly.

These are not impossible to write, they just take considerable time given current code assumptions regarding a minimum db schema available. They’re not necessarily easy or cheap, so we have to be wary of blithely and blindly committing to them.

Further, since we believe in functionality first, anything we did implement would be “opt-out” items. If you care so much about RAM that you’re happy to sacrifice functionality, I do want to support you in that, but I also think that you’re in the minority.

Since the entire purpose of my blog is to foster bidirectional communication regarding the development of this product as well as the hopeful creation of a development community for it, I’ll ask the obvious questions out loud:

How much RAM usage for a media library of 5000 tracks is too much?

What functionality are you willing to surrender in exchange for a smaller RAM footprint?

Why?

It’s easy to offhandedly accuse people, Apple or us, of “memory bloat.” But I’m willing to actively engage with you all in a discussion of how to actually deal with it in a way that hopefully represents an acceptable compromise to all interested parties.

Are you willing to participate?

mig

——————–

Addendum:

So, I ran some numbers (and found a place where I could remove a few mb of ram usage), and I get the following:

XULRunner just starting up and loading nothing wants about 18MB (and that includes all the mozilla plugins).

Loading straight into a library display page with 4400 tracks in the library takes about 35MB (which the backscanner then slowly adds about 2 to).

If I start clicking around HTML pages that contain no media information, the mem usage grows to about 50MB quickly and then grows more slowly from there. This is all gecko page cache, I’m guessing.

The good news is that if you hate the idea of having a web browser, you don’t ever have to use the browser in Songbird and so *presto* — no bloat for you.

The bad news is I need to go figure out how to have more control over the page cache, then, to get a better handle on memory use. Firefox’s cache needs aren’t ours, and hopefully I can find where to better tune those values. Part of the problem is, obviously, living in a garbage-collected universe. But that doesn’t explain all of it.

The HTML numbers disappoint me, frankly, but our database numbers are pretty darn good.

Both comments and trackbacks are currently closed.

2 Trackbacks

  1. [...] Songbird vs Foobar)。前陣子釋出重要的里程碑:正式版 [...]

  2. [...] will do things from day 1 that neither of those players could possibly approach.”(摘自 Songbird vs Foobar)。前陣子釋出重要的里程碑:正式版 [...]

88 Comments

Subscribe
  1. Chris Jan 6, 2006 5:27 pm Permalink

    I have used and loved foobar years now. It literally is the Swiss Army Knife of audio (IMHO). I’m also a Linux user running Amarok, another Swiss Army Knife (IMHO). And yet I’m avidly following Songbird which is looking so promising. Here’s hoping for another great audio player and tool and don’t worry (too much) about the bloat, just follow *your* vision for *your* player ;)

  2. mig Jan 6, 2006 5:40 pm Permalink

    Am I wrong in wanting this to be *our* vision for *our* player?

    I’m not so arrogant yet as to think I have all the answers. That’s one of the wonderful things about open source.

    I don’t expect we’re all always going to agree, but I really do want to hear everybody’s honest opinion. Even the hostile ones say something useful every long occasionally.

  3. mig Jan 6, 2006 5:47 pm Permalink

    Also, let me ask, what about foobar makes it a “swiss army knife” ?

    The fact that it can load plugins for a zillion different audio formats?

    Out the gate we’re going to ship with a vlc that’ll play anything we can legally let you play. Unfortunately, it looks like plugins for the current public vlc binary won’t work with ours, so we’ll have to be resolving that in subsequent releases.

    From a certain perspective, Songbird’s purpose is to act as a “shell” on top of any mozilla plugin that can playback media. Right now it’s just vlc, but that will be something as easily swappable as a skin. Eventually.

    But one thing we DON’T do is specify yet another audio codec plugin architecture that we would expect codec developers to support. We think there’s enough of that in the world already.

  4. Anonymous Jan 6, 2006 5:48 pm Permalink

    Not at all. I don’t follow a lot of software development like I have Songbird, but it seems reasonable to assume that some software is created by the developers and THEN shown to the public to let them initially “ooh” and “ahh” over. Then the suggestions start coming in and tweaking begins. It begins as software that meets the needs that the developers want to address, and then once their happy and let the public check out their solution, they can expand upon it with feedback from the public.

    I think you’d be fighting a losing battle (well, a very hard one, at the least) if you continue to spend so much time picking everyone’s brains to find out what they want. The public doesn’t know what it truly wants. All it knows is that it wants a media player that gets the job done well. Focus on what *you* and the developers want (it sounds like you’ve had amazing ideas already) and then come back and add extensions (or wings?) to Songbird.

  5. mig Jan 6, 2006 6:01 pm Permalink

    Well, sure, that’s the plan.

    But since I can’t release my product right now, all I can do is talk about it. I like talking about it.

    It makes me feel happy. :)

    I’m asking questions about issues I’m going to be worrying about getting implemented 3-5 months from now. I find that rather appropriate, since they deal with real user feedback I know I’m going to be dealing with in a matter of days.

    Trust me, I know rather exactly what I have to do until sometime in at least April. I’m trying to get people to see the path that it’s going to take, and ask them questions about what is important to them about where to go from there.

    Depending partly upon peoples’ response to my questions today, and partly upon a number of other different issues, I need to decide how much priority to assign to those proposed options and how much in the way of resources I need to commit.

    Heheh, maybe I’m thinking a bit longer term than most people would expect?

  6. Anonymous Jan 6, 2006 6:07 pm Permalink

    Yeah, I’d definitely say you’re looking much longer term than people would expect. In a fast-paced world, talking about “eventually” (since you do live around that word as you’ve admitted) only drives them insane. They want it and they want it NOW or else. Or else what? I dunno, I guess they’ll go cry about it.

    But watch out now that you’ve mentioned April… that will be the new date assumption for when the proof of concept gets released :p

  7. Anonymous Jan 6, 2006 6:09 pm Permalink

    Why can’t you release it now. (I remember you said something about having to vote on it, but why not call some people.) I think everybody here is excited to get their hands on it.

    If your worried about inexperienced users getting angry about troubleshooting and frequent crashes, then why not just send it by email instead of putting it straight out for download (just to kind of put more emphasis on the beta aspect for those who “don’t” read.

  8. mig Jan 6, 2006 6:30 pm Permalink

    I also mentioned “a matter of days.”

    :)

  9. Anonymous Jan 6, 2006 6:54 pm Permalink

    Let’s all say it one more time together. “It’s *not* a beta”

  10. Adam Bramwell Jan 6, 2006 7:10 pm Permalink

    To answer your RAM usage question, my current Winamp installation on a library of 8000 songs, with quite a few plugins is rarely more than 30 Mb, 15 when minimised, its usual state. How’s that for a starting point?

  11. David Jan 6, 2006 9:56 pm Permalink

    My library in iTunes has 1700+ items and iTunes usually takes up about 40mb. Now that I’m running with 1GB of RAM, that works just fine. But, before, when I only had 512MB, everything was competing for RAM and iTunes often ended up in swap space which resulted in its UI being very very sluggish whenever I’d switch out of mini mode. I kept trying to go back to Winamp, but iTunes gave me a much better experience so I put up with it.

    Moral of the story? It depends, but offering a good experience makes a big difference.

    I’m looking forward to playing with Songbird, but I don’t expect it to take me off of iTunes. Basically, the only thing that could get me out of iTunes right now (a.k.a. an experience I’m actually concerned about improving at the moment) is better iPod support when there is more music than the player supports. iTunes does a horrid job with that right now. </vent>

  12. Anonymous Jan 6, 2006 10:43 pm Permalink

    I think we need to realize that the whole “not a beta” thing is really stupid. I define a beta as any software that isn’t functional enough to be used primetime yet. In other words. NOT meant to replace the current version.

    As long as the software doesn’t load a virus or something on my computer, I could careless how badly it functions. I JUST WANT TO SEE SOMETHING!

    I think the longer you go without a release, the more people start to lose interest in your product.

  13. Salmonmoose Jan 6, 2006 10:49 pm Permalink

    Hey look at that, my post started debate ;)

    Foobar 0.9 has ‘live’ playlists, built off of queries on tags, and still has a sub-10 meg footprint – admitedly it’s interface is possibly the most ugly on the planet, with exception perhaps to mplayer.

    However lots of stuff is written to the files themselves (last played, play count, ratings).

    Perhaps if we have some way to select what information the software keeps track of;

    As far as metrics, I’d be happy with 10 megs, given enough functionality (like, you’re going to suport podcasts out of the box, arne’t you? :) ) I’d probably go up to about 25 megs, before i became appauled at the program.

    No, I’m not game player who tweaks their system to within an inch of it’s life, I work as an animator, and spend a lot of my day smashing my head against the 2 gigs of ram in my workstation, whilst listening to music of course ;)

  14. salmonmoose Jan 6, 2006 10:52 pm Permalink

    I always thought beta software was feature complete. If it’s not feature complete it’s alpha software, if it’s “pre-alpha” no code exists.

    if it’s feature complete and bug free, it’s a release candidate.

  15. mig Jan 6, 2006 11:09 pm Permalink

    Which winamp?

  16. mig Jan 6, 2006 11:10 pm Permalink

    For numerics, I’d say 1.0 is a release, 0.9 is a beta and 0.8 is an alpha.

    And I’d say we’re 0.1

  17. mig Jan 6, 2006 11:22 pm Permalink

    Yah, we’re going to be bigger than 25MB with 10k tracks in the library. That’s why I want to start talking now about what people will accept to make that number smaller (given a much larger absolute minimum footprint, just from being on Xulrunner).

    Also, we handle “podcasts” (media rss) by saying RSS is a playlist type and any playlist created through http can be “subscribed” to automatically update and download periodically (I think aus said he got the RSS reader done, but I haven’t tested it).

    Anything, however, can be subscribed. Including M3Us, HTML pages, etc.

    And since they all wind up as database tables, “aggregation” between all playlist types will be a single magic piece of sql syntax (along with a bunch of annoying UI).

    Using standard off the shelf items will of course make things heavier. But it also makes things far easier and far more flexible.

  18. james Jan 6, 2006 11:24 pm Permalink

    this got nothing much to do with the blog post but

    how about having album cover support.

    For example like how there is a lyric bit when you right click on the song title (i guess) there should be a add album cover

    goodwork so far

    (speed up with the release please)

  19. Thrasher Jan 7, 2006 12:07 am Permalink

    My itunes is currently at 65 meg ram usage on OS X, 1100 items in the library, I have about 80 playlists (I make one for each complete playlist)

    If you can beat out or match that I would be plenty happy

  20. Thrasher Jan 7, 2006 12:08 am Permalink

    Make that a playlist for each complete cd in my collection

  21. james Jan 7, 2006 12:40 am Permalink

    this got nothing much to do with the blog post but

    how about having album cover support.

    For example like how there is a lyric bit when you right click on the song title (i guess) there should be a add album cover

    goodwork so far

    (speed up with the release please)

  22. mig Jan 7, 2006 1:08 am Permalink

    Uhm, yah. When we start off we’ll be much bigger than foobar and certainly smaller, hopefully significantly smaller, than iTunes.

    I need to sit down and run real numbers before I make any actual statements of numeric fact, however.

  23. salmonmoose Jan 7, 2006 4:18 am Permalink

    The multiple codecs out of the box is a big seller for foobar.

    Also, gapless playback and replaygain, and a hugely powerful database.

    After that is how configureable the interface is, you can strip it down to little more than simple play controls, or, expand it to show all sorts of information about whats in your media library, your playlist and what you’ve been playing.

    What got me interested in songbird is that it’s built on firefox, which i love for it’s extensibility, something I hope to see here as well.

    Whilst not a programmer, I understand most of the concepts, and something foobar seems to be aiming for is nothing being part of the actual program, if you don’t like the UI, you can replace it, if the database isn’t good enough, pull it out and put a new one in, etc etc.

  24. Andrew Jan 7, 2006 4:18 am Permalink

    I just fired up itunes, with 3000 songs in my library its using 40mb before i do anything, but i wouldnt say that was much of an issue, i dont mind my media player beinga little on the heavy side, as long as its responsive, sometimes itunes takes a couple seconds to minimise or maximize, and is generally sluggish. I hope songbird will be responsive and quick like firefox and thunderbird

  25. dao Jan 7, 2006 4:57 am Permalink

    Using musikCube here with 30 megs of ram.
    There are 9,700 songs in my library, and I have one playlist with all the songs shuffled.
    There are also dynamic playlists.
    It uses SQLite.

  26. dao Jan 7, 2006 5:40 am Permalink

    Also interesting: When minimized, it (musikCube) only uses 2.5 megs! Pretty neat, I think.

  27. Dave Harper Jan 7, 2006 8:22 am Permalink

    I’m running Winamp 5.1 with a 1500 track playlist, and it’s taking up around 8MB RAM and 45MB of VM.

    I’d be quite happy to accept up to 30MB though for Songbird, as I’m hoping it’ll do a lot more than Winamp 5. (…and as long as it has a WindowShade mode, I’ll be very happy!).

    The Winamp CD Art Widget for the Yahoo Widget Engine does a good job of getting CD covers. Maybe you could take some inspiration from that.

    On a seperate note, would CD ripping/burning be able to be handled by extensions? If people want that then fine, but I’d rather have a thinner player and use DB Power Amp and Nero… :)

  28. Apollo Jan 7, 2006 10:15 am Permalink

    Guys have you tried Apollo? is very light and it has a high quality sound (lighter than foobar and better quality), I don’t know how is it done but maybe you can learn a little bit of this precious work, the web page is http://koti.welho.com/hylinen/apollo/ I would love a songbird with a sound like this

  29. Alterion Jan 7, 2006 10:22 am Permalink

    i take it you’ve seen the wmp demo from bill gates at ces?.. if not a quick search should find it for you.. what are your thoughts on their ideas of a “visual player?” I would be interested to see your thoughts if any?

  30. Anonymous Jan 7, 2006 10:35 am Permalink

    I currently use iTunes predominantly so if you can beat its memory usage them I’ll be happy.

    Featurewise, iTunes makes it pretty easy to make a list of music which I’m in the mood to hear. One area that is problematic for me is metadata maintenance. It takes a lot of time and effort for me to update my mp3s with the style information needed to allow iTunes to dynamically create the perfect playlist (I tend towards huge shuffled sets instead of single artists or albums) and I’ve had varying success trying to use auto-updaters which set styles I don’t agree with.

    It might be really interesting to intregrate a music genome project like pandora.com which might provide a more realistic grouping of songs.

  31. Matt Jan 7, 2006 11:19 am Permalink

    things are so hard in the on demand world ….

  32. Billyvnilly Jan 7, 2006 11:29 am Permalink

    Running winamp 5.12pro with a butload of plugins, a playlist of 15,000 uses 5 ram and 85 vm. a 7,000 plalist drops down to a vm of 56.

    just to see how much a change plugins make, a clean install w/o yet scanning the media library, results in a 7,000 playlist w/ 3 ram and 9 vm. with a library of 15,000, same playlist’s vm jumped to 53. is winamp’s biggest downfall their media library?

  33. Anonymous Jan 7, 2006 11:58 am Permalink

    iTunes for me for over 2000 tracks ate up almost 40mb of memory, sometimes even 60. On two separate machines. I don’t know what would be removed to alleviate that in a SB point of view, but even though some of SB’s point is to browse the web I would say to remove the web browser.

  34. Anonymous Jan 7, 2006 12:20 pm Permalink

    It will in some ways. But some buttons when you push them will pause the ui for a few seconds as we process the command through the database.

  35. mig Jan 7, 2006 12:22 pm Permalink

    Yes, now, this sounds fairly close to us. Oh, wait, they use SQLite, too. Hmmmm….

    Could this be a pattern?

  36. Anonymous Jan 7, 2006 12:27 pm Permalink

    See, this is why I’m talking about bloat.

    We’re a xulrunner product. We’re built on mozilla. While we could certainly make an app under xulrunner that NEVER rendered a webpage, that app would not take up any less ram or space than if it did render a webpage.

    Think of it this way — the whole UI is a “local webpage” that has an internal iframe that loads the external webpage. Can’t “get rid of the browser” if you yourself are a page.

    The browser is free. The browser is automatic. The browser is unquestionably necessary.

    Trying to fight misunderstandings like that is why I open my mouth in the first place.

  37. Anonymous Jan 7, 2006 12:37 pm Permalink

    Yay, someone else ran real metrics!

    Ya, so, on windows, if you see “X RAM and Y VM”
    the app is taking up all the VM space and the RAM number really isn’t something a programmer can easily control (and don’t send me email quibbling the definition of “easily”).

    Winamp using a playlist heuristic: 9MB
    Winamp using a library heuristic: 53MB

    That kinda clarifies my point about what having “a media library” means to the memory usage of any media player, eh?

  38. Anonymous Jan 7, 2006 12:46 pm Permalink

    See, I wonder about consumers.

    How does foobar have a “hugely powerful database” ?

    What makes you say that other than it’s something you’ve already said?

    What about its database is huge and powerful? How can you do anything “powerful” with a database if you only keep barely any information in it?

    It might have a tool to go through and fuck with the id3 tags on your hd, but that’s not really a “database.” Nor is that tool, really, day to day usage.

    As of yet, I’ve seen nothing impressive about foobar’s data management. This is not to say there is nothing impressive about foobar, but neither its database nor UI seem to be things in which to take much pride.

  39. jsherlock Jan 7, 2006 1:02 pm Permalink

    well I have been a long time winamp user from back int he 1.xx days. I use 5.11 now and love it. I tried itunes for awhile and it was too resource heavy. It did things nicely but it was too sluggish. I have a gig of ram and a fast machine but itunes was too much bloat. Winamp currently runs at about 15 mb memory usage with my full 7000 song list loaded up. This is about where I’d like to stay but I would sacrifice memory for more functionality. As long as SB beats itunes in bloat ill most likely be a user when it comes out. Podcast and RSS suport is a must have on my list of wants though, and if SB did this well I’ll be happy.

  40. bjtitus Jan 7, 2006 1:06 pm Permalink

    I love the idea of using Songbird with Pandora’s Music Genome Project. You guys should talk to the guys in charge of that and try to see if you can implement it in your program.

  41. mig Jan 7, 2006 2:26 pm Permalink

    That’s what we hope to benefit from using the inherently extensible mozilla architecture.

    I want to make it really easy for any music-recommendation service in the world to put a node in the left hand tree and create their own playlists from which you can directly play.

    There’s a good handful of people who do something similar to Pandora. We want to have a place at the table for all of them.

  42. mig Jan 7, 2006 2:28 pm Permalink

    And I’ll bet you that you don’t use the media library with winamp 5.11 if your usage is that small?

  43. mig Jan 7, 2006 3:00 pm Permalink

    I am always astounded by people who talk about “sound quality” of a computer software player using an 1/8th inch minijack connected to a set of computer speakers or directly into an amp for 60 cycle love hum.

    That might not be you, you might have a really expensive digital-to-speaker setup for your computer. You might really be an audiophile. Most people don’t and most people aren’t. All the “sound quality” dsps I’ve seen out there are questionable at best and usually only valid for a specific speaker configuration.

    Changing the quality of the sound isn’t necessarily making the sound “better.” And if you actually care about stuff like that, the tools that come with high end sound cards are usually better at it than the software dsps in media players.

    We don’t control the playback core in songbird. We have the same “quality” as vlc at the moment.

    That’s not to say there’s no room for improvement. We recognize people want stuff like dsp and eq. Especially the ability to set your own eq per track and automatically “normalize” the sound from track to track.

    At the moment, however, our only response is “that’s vlc, not us.”

    If those are your criterea for switching to us, we totally understand you’ll likely be switching to us later than others. But we do want to include your needs too.

    It’s not so much a “what to do?” question as “what order to do it all in?”

  44. Billyvnilly Jan 7, 2006 4:10 pm Permalink

    On my second comp, my laptop, i ran the same test, not worrying about uninstalling my plugins and just toggling the media libary. vm went from 18 to 33. though this was just a library of 3,000.

    Dynamic library plugin(http://nunzioweb.com/joonas/dl/beta/) uses only 2MB of vm, it does not fill all the features of the packaged media library in winamp, but it’s database is very good as far as this user is concerned.

    OT/ as far as im concerned, winamp is great because of plugins. foobar is great because of its library, itunes is great because of its UI. I presented all three to my mother, who doesnt use computers…and she immedietly went to itunes.

    And is it only the power user that cares about mem usage? i would think the avg user would giving a flying fudge.

  45. Anonymous Jan 7, 2006 4:36 pm Permalink

    Does your mom even know what mem usage is?

    I think there’s too many “sub-power” users who know what mem usage is but not why mem usage is. And they have problems properly determining what is or is not appropriate mem usage.

    I’m still waiting to hear some responses on what’s “great” about foobar’s library. How is it better than Winamp or iTunes (besides having less info and thus taking less ram)?

    Certainly, I’m not thinking foobar “sucks,” or anything, I’m just apparently ignorant of the specifics of why that would be a “great feature.”

  46. kourge Jan 7, 2006 5:18 pm Permalink

    As a matter of fact, when considering which media player I’ll use, I don’t care about memory use or sound quality.
    You see, there’s no difference in memory use.
    People install 83 extensions in Firefox and say Windows Vista is pretty promising while bashing iTunes , Winamp, or Sonique takes up too much memory.
    For the sound quality, there’s only a small group of people that can actually tell the difference. The rest is just psychological effects.

  47. Billyvnilly Jan 7, 2006 5:59 pm Permalink

    Ill refrain from really discussing foobar actually, because im almost a strict WA user. I’ve looked at foobar’s library and seen that i like the album list & its views.

    As a WA guy, the media library lacks a tree structure, enqueue features, diversity of tags, and the .m3u playlist structure restricts customizing playlists that are imported into the library.

    //and no, she doesnt. she knows knows what task manager is, and she likely knows that numbers over 100MB are bad…

  48. Assymptote Jan 7, 2006 7:19 pm Permalink

    I know yo momma knows a few more things that you wish she didn’t. Something to do with tasks and bars.

  49. Anonymous Jan 7, 2006 11:52 pm Permalink

    So, I ran some numbers (and found a place where I could remove a few mb of ram usage), and I get the following:

    XULRunner just starting up and loading nothing wants about 18MB (and that includes all the mozilla plugins).

    Loading straight into a library display page with 4400 tracks in the library takes about 35MB (which the backscanner then slowly adds about 2 to).

    If I start clicking around HTML pages that contain no media information, the mem usage grows to about 50MB quickly and then grows more slowly from there. This is all gecko page cache, I’m guessing.

    The good news is that if you hate the idea of having a web browser, you don’t ever have to use the browser in Songbird and so presto no bloat for you.

    The bad news is I need to go figure out how to have more control over the page cache, then, to get a better handle on memory use. Firefox’s cache needs aren’t ours, and hopefully I can find where to set those values.

    The HTML numbers disappoint me, frankly, but our database numbers are pretty darn good.

  50. Farhad Daruwalla Jan 8, 2006 4:27 am Permalink

    It’s great to know you are actually comparing Songbird to Foobar, though maybe you have missed out a few things.

    The great thing about foobar is it empowers the user to make their own choices about how to organise their music.

    Take the folder structure for example:
    $if2(%album artist%,%artist%)\[%date%-]%album%\[Disc %disc%]\$num(%tracknumber%,2) – %title%

    We can encode to flac to make backups of our cds and by the same token transcode the flac files to mp3 directly to our portable devices. And we can choose a folder structure for all the converted files.

    We can add our own custom metadata to files and use album list to organise it any way we choose.

    For example, many other media players out there don’t seem to use the “Disc” tag and their libraries make a complete mess of viewing albums with multiple CDs.

    I categorise my files into Music, Podcasts, Lectures, Audiobooks etc using my self-created Category tag, and then navigate them using the album list panel. Its a shame that no media player other than perhaps itunes (which separates podcasts and audiobooks from music) does this in an intuitive way.

    All this and much more, I’ve only just scraped the surface.

    I’m not saying that I want to see Songbird to become a port of foobar. What I would however like to see is a degree of customisation ability, a great set of defaults, and a consistant and well thought through way of organising music and other audio content. In other words, the best of iTunes and foobar.

    And it should automatically sync my iriver with the media library!

    I would sacrifice an additional 50 MB or more of RAM if you make Songbird the killer app it could be. Foobar has opted to serve the power user market but many of the things I have described about it are equally relevant to ordinary users. The library is the most important feature in any media player – its what users experience.

  51. Farhad Jan 8, 2006 4:33 am Permalink

    In case you were wondering, my foobar2000 occupies 11MB memory and 16MB virtual memory

  52. Paw Jan 8, 2006 5:24 am Permalink

    can u please tell me if the search function in songbird gives results also based on the folder name?

    for example, i have a folder named ‘pqz’ and have some songs in it.

    if i search for ‘pqz’ in itunes or foobar, i get no result. but when i do the same in mediamonkey or musikcube, the songs in that folder are shown as results.
    this feature is very very useful and i hope songbird has it.

    does it???

  53. Anonymous Jan 8, 2006 5:26 am Permalink

    Also mig, I use the columns UI interface with the album list panel, looks like any media library with a lot of metadata visible:

    In the playlist
    Album Artist, Artist, Album, Date, Track number, Title, and time

    In the album list panel i use the following string:
    $if2(Category: %category%,Other)|$if3(%subcategory%,…%category%,Other)|$if2(%album artist%,%artist%)|$if3(%date% – %album%,%album%,)|[Disc %disc%]

    The foobar2000 database is very powerful and doesn’t occupy a lot of memory – I have a playlist of size 2217 open currently.

    I don’t know the ins andouts of database programming but it seems to me foobar has got something right – its fast and functional. I hope SQL has the power to do similar things

  54. kourge Jan 8, 2006 5:58 am Permalink

    If you want to search your criteria using SQL, it would be something like
    SELECT name,artist,album FROM `sb_db` WHERE path REGEXP "pqz";

    (edited, just to close the code tag and not screw up the rest of the fonts — mig)

  55. kourge Jan 8, 2006 6:00 am Permalink

    By the way, I see the 0.1 release as not even an alpha version, but a pre-alpha.

  56. Paw Jan 8, 2006 6:07 am Permalink

    hey u misunderstood me to be a techie.
    may b bcos of the teram that i used ’search function’

    so basically i dont know wat ur talkin about

    but i hope my question is clear

  57. Anonymous Jan 8, 2006 8:43 am Permalink

    While I was aware of this, I never thought of it that way. I had first thought that ram usage would have been related to just the databases, considering that may or may not have been why iTunes was doing it.

    What I did mean by “removing the browser” meant that removing that web functionality within the app would have reduced usage because of the cache.

  58. csabo2 Jan 8, 2006 11:51 am Permalink

    It’s obvious that SB uses more ram than any player out there simply by your clever way of never giving us a NUMBER. You just say it uses more than others, and give reasons why, yet no number. must be total shit..

  59. mig Jan 8, 2006 12:40 pm Permalink

    Right. Once you turn on all the cool features (that you need to understand token based string parsing to see), you take lots more memory than the guy that took 7MB. And he had 10000 tracks, how many do you have? 2217? A fifth of the tracks for more than twice the ram usage?

    See my point about managing information in a media library?

    Now, that’s an impressive level of scalability, but it shows how quickly you have to sacrifice RAM for any sort of useful amount of information in your library.

    You have magic token strings. I have SQL. Takes me a little more RAM but once I open that up to the advanced user, who gets to do more?

    I compare foobar to songbird not to say one is “better” than the other but to show how the extremely different philosophies of design create extremely different products.

    And how the moment you start trying to “blend” features, the one unapproachable superkeen thing about foobar/wa26, their low mem usage, vanishes rapidly.

    Hell, if only 10 people walk away from this blog with even something vaguely resembling an understanding of where all the ram goes in a media player, I’ll be totally happy.

  60. mig Jan 8, 2006 12:51 pm Permalink

    Well, what kourge is trying to say is that it could.

    And, actually, at the moment, I could do it to with 2 extra lines of code (so you can charsearch the “url” metadata as well as the “title” and “artist”)

    Honestly, however, I worry about the user response to that. Since the url value itself is never displayed directly in the library, if you search for “pqz” then you get results that don’t visibly contain the string “pqz” and very alot quickly you have upset users screaming that your search be broked.

    This seems like something of an option to enable for later rather that something that should be handed to all users.

  61. salmonmoose Jan 8, 2006 3:05 pm Permalink

    Actually, I had many of the features enabled, specifically a tree based database explorer sorting music into Album / Artist / Date and Genre. As well as the track info plugin which can show all sorts of information about any track in the database (seemingly) instantaneously.

    I do use Kernel Streaming, and my soundcard is able to decode mp3s onboard, which could lead to some savings.

  62. salmonmoose Jan 8, 2006 3:41 pm Permalink

    At the current release (0.83) the database only sorts by a last read of information stored in tags.

    a query like:

    By Artist|$if(%artist%,%artist%)|$if(%artist%,%album%)

    in the explorer panel will display a tree of artists, with the next level being their albums, or, if tracks are not in albums, the tracks, and then finally the tracks of the albums.

    However, if i had previously added a ‘rating’ tag to my mp3’s I could sort by artist, then rating, or whatever.

    Version 0.9 supports playlists generated from queries in realtime, so I can make a playlist of all songs by tori amos, with a rating of 4 stars, that I havn’t played in at least 2 weeks. There has yet to be something i’ve wanted to ask the database to do that it hasn’t been capable of. (I’d love the realtime playlists, but unfortunately there is no Last.fm support in 0.9 yet).

    As for metrics:
    with a 6.38mb VBR mp3 playing, with the database, database explorer, text search, track info, last.fm, and Album Art plugins running, and fancy kernel streaming and hardware acceleration turned off;

    Memusage is 10,732k
    Peak Memusage is 11,732k (Hit when browsing the database)
    VM size is 9,252k

    No, the UI in foobar isn’t very “flash” but it’s functional and if you use the columns UI it is highly configureable. There are alternative UIs that give it a more “winampy” look and feel, but to be honest, my mediaplayer spends most of it’s life minimised, so as long as it matches windows ok, i’m usually not fussed what it looks like, so long as i can find my music in a few keystrokes or mouse clicks.

  63. Juman Jan 8, 2006 4:52 pm Permalink

    I NEED ORACLE FOR MY PALM PILET

  64. kourge Jan 8, 2006 6:31 pm Permalink

    I think a “URL” column (or any other column) should be constructed, and it should be hidden by default.
    It could show up on one of the following situations:
    1) The users chooses it to be shown
    2) It contains a piece of data the user searched for
    So normally the URL column would be hidden, and if the URL has “pqz” and the user searched for it, the URL column should automatically show up and get highlighted.
    (That’s the solution to the UI concern)

    mig: I think I did close the code tag…maybe something went wrong

    To paw:
    I think it’s pretty easy to make that happen.

  65. mig Jan 8, 2006 8:43 pm Permalink

    Hmmm. Then something’s up. 7 and 15 aren’t the same numbers.

    Maybe yours wasn’t actually 7?

  66. mig Jan 8, 2006 8:47 pm Permalink

    Right now we have 3 kinds of metadata columns. Hidden, not visible, and default visible.

    Columns marked as “not visible” don’t display in the tree unless you use the moz columnpicker to make them show.

    Columns that are hidden are hidden.

    In general, showing the url column isn’t valuable because it takes way more space than is usually available in a multicolumnar list.

    We could maybe make it “not visible” instead of hidden if the user cares.

    However, again, I’m not going to magically enable and disable the visibility of columns just because the user made a query in the search box. That’s bad UI.

  67. mig Jan 8, 2006 8:50 pm Permalink

    How obvious? I added my “addendum” to the post up there at midnight last night (with NUMBERS), and you complained about them not being there at noon today.

    Not only did I give numbers, I broke them down into a general idea of what’s causing those numbers.

    And now I’m doubly glad I did it _before_ someone complained, hmm?

  68. Paw Jan 9, 2006 12:36 am Permalink

    how about an option to enable it, by default being disabled.
    it seems very hard for me to do without it.
    i live in india and have a music collection of different languages ofcourse including english.
    i name folders primarliy by language and then name subfolders by the composer’s name.

    so whenever i wish to listen to a language or a composer, i just type the name and the song list in that folder comes up.

    this way it is something i cannot do without. i hope u consider it seriously

  69. mig Jan 9, 2006 1:49 am Permalink

    Well, sure. Once we’ve gotten to the point where we actually have a preferences window, we can go hog wild. Like I said, this one’s easy to implement just not good default behaviour.

  70. s427 Jan 9, 2006 4:37 am Permalink

    Hi,
    I just want to point out that this is already the behaviour of the Winamp 5 ML. If you create a filter that says “filename contains xyz”, it will actually look for xyz in the filename OR path of the files. This has some advantages since it allows to create wiews in the ML that reflect some folder structures on the hard drive (for instance if I have a folder called “JPop & Asia”, I just have to make a search on “JPop” to have its content listed in the ML –which could not necessarily be achieved based on the “genre” tag, for instance). However, it may be a better approach (more flexible) to have the two criteria (path, filename) being kept distinct.

    Also, it may be a little out of subject, but I just thought about it : maybe it would be nice if we could assign any number of keywords for each song. So that I could easily find files corresponding to the keywords “slow”, “peaceful” AND “female voice” (just as an example). Kind of like the tag systems on last.fm.

  71. mig Jan 9, 2006 11:40 am Permalink

    Tagging aggregation is the holy grail of web-aware systems. Also a UI nightmare, but that’s not your problem.

  72. kourge Jan 9, 2006 12:12 pm Permalink

    I’m aware of that. SQL querying tags, splitting it into arrays using PHP, and then output it to HTML using JavaScript is scary.
    Really scary.
    Not to mention how to add, modify, and delete tags.

  73. s427 Jan 9, 2006 1:09 pm Permalink

    Your nightmares make us dream. ;-)

  74. Josh Jan 9, 2006 1:18 pm Permalink

    I think you spend to much time reponding to people’s critisism. I respect that you’re trying to educate people based on what is said in response to your blog, but I think it ends up coming across as being defensive. Rather than spending your time explaining why songbird won’t be as compact as foobar2000 or why it looks like iTunes, I think you should give us a progress report, some insight into shortterm goals and longterm visions, etc.

    Obviously people don’t understand the “proof of concept” and/or pre-alpha idea. By responding the way you do to peoples misconceptions you’re just solidifying their belief in thinking this is going to be a 1.0 product when it’s released.

    Josh

  75. Apollo Jan 9, 2006 1:28 pm Permalink

    Have you tried Apollo? if not you shouldn’t give opinions so freely, first try it and then comment what can be done and what can’t

  76. Anonymous Jan 9, 2006 2:22 pm Permalink

    good for you

  77. Rullingen Jan 9, 2006 2:24 pm Permalink

    I really dont mind, i just want to get my mits on thos shiney buttons and url slurper :D

  78. Anonymoose Jan 9, 2006 2:47 pm Permalink

    You really don’t get any, do you. Seriously.

  79. mig Jan 9, 2006 4:27 pm Permalink

    Hah. Well, to display it to the UI I use the mozilla RDF datasources API. Makes things slightly more sane. Slightly. :)

    Tagging is a difficult solution in the database schema tho. I can store an unbounded tag list in a way that takes less memory and is slow to access… or allow fast access by consuming significantly more memory.

    Just like everything else, it’s a tradeoff game.

  80. mig Jan 9, 2006 4:29 pm Permalink

    Did I give an opinion on Apollo? Nope.

    Perhaps I gave an opinion on it’s motto, but that’s different.

  81. Anonymous Jan 10, 2006 1:45 am Permalink

    My foobar2000 uses 16MB when decoding flac files and 9MB when idle. Not far from 7 eh? The extra RAM usage is due to resampling to 48kHz and other DSP filters.

  82. Farhad Jan 10, 2006 1:45 am Permalink

    My foobar2000 uses 16MB when decoding flac files and 9MB when idle. Not far from 7 eh? The extra RAM usage is due to resampling to 48kHz and other DSP filters.

  83. Farhad Jan 10, 2006 1:59 am Permalink

    I’m sorry that I’m being so critical, I will be using songbird if it lets me organise my music to my taste out of the box with reasonable performance. So far foobar2k is the only player that is functional enough to allow for this.

  84. Anonymous Feb 11, 2006 5:15 pm Permalink

    Is an alliance with foobar possible?

  85. mig Feb 12, 2006 2:15 pm Permalink

    Define “alliance” ?

    If Peter wants to port his internal core to be a Mozilla plugin and release it under GPL, sure.

    Anybody wanna take bets on his likelihood of doing that?

  86. Anonymous Mar 3, 2006 8:23 am Permalink

    I’m a longtime foobar user (4 years or so) having switched from winamp solely for the reason of gapless playback. That said, I find it to be highly flawed and feature lacking due to an obnoxious developer who refuses to develop a UI, and is now working on 0.9 which from what I gather has no purpose other than to break all of the existing plugins. If you peruse the hydrogenaudio.org forums tons of users have created very powerful player UI’s but of course to do so takes hours of time and they really aren’t widespread.

    Therein I see an opening for you.

    Here are the most important features from foobar which you ought to implement

    1. gapless via LAME tags.
    2. diskwriter support. the best feature of foobar is the diskwriter plugin which allows you to convert from one format to another, even using command lines for encoders like LAME (ex: v2-q2-vbr new). It also allows you to specify how you want directories created, getting information from the metatags. Extremely powerful, you should implement this in some form.
    3. Masstagger, which allows me to change up the tags for multiple files quickly and efficiently.
    4. freedb. This plugin allows me to select a number of tracks and lookup info regarding them on the freedb (say if they’re all part of an album)

    Now, I have a few other ideas.

    1. visual cd burning support. What I mean by this is to have each song that is put in the burn list be represented by a bar, that can be made to overlap with otherbars, and you can choose to either have them overlap or have one cut off the other.
    2. EAC-like cd ripping functionality.

    and on the memory thing, I think that you can afford to be less than frugal, due to the huge amounts of RAM in modern systems, but still keep watch. 7mb is nothing when you have 1gb, and I personally wouldn’t really care if memory usage went up to 50-70 mb. That said, don’t go above 100mb.

    Anyways, I like the player so far, it has great potential, keep it up!!

  87. mig Mar 6, 2006 12:51 pm Permalink

    Heheheh, you think Peter is obnoxious? No!

    Damn, that would be like thinking mig is sarcastic or something.

    Anyhow, your comments about functionality and memory are exactly my point.

    Because we are on top of mozilla, we’re the mozilla plugin system, not yet-another-custom-C/C++ plugin system. One writes plugins for Songbird in the same scripting language that web programmers use, not yet-another-custom-scripting-language.

    We’re inheriting a skilled developer community of thousands of thousands of eager programmers, so I have absolute and unquestioning faith that such functionality you request will eventually get implemented by somebody. Even if it might not be us.

    That’s why we believe, eventually, we will stomp every other media player. That’s why we chose Mozilla and XUL.

    And, to be honest, that’s why we put up with the fact that it wants to eat so much RAM.

    We can tune the RAM usage. That’s way easier than trying to train up 10,000 skilled developers from scratch.

    You have to really “have the vision” to see it, right now, because there’s only 4 or 5 extensions out there so far, and there’s nothing on the website set to present this to the users.

    But we have the vision. We have the religion.

    We’re on the way.

  88. SAR May 8, 2009 10:38 pm Permalink

    Songbird can’t even compare to Foobar, to much bloat and commericalism going on.

    NOW if the developers want to give users the OPTIONS of removing items during the installation this will help a lot in giving people a streamlined player without all the BS!