Benjamin Meyer, author of Kinkatta (the app formerly known as Kaim, renamed at the kind suggestion of AOL), is ready to present his next project, Sondra.
Sondra is an on-the-fly MP3 playlist generator that is really quite original in its concept. You can rank a song while listening to it, and this personal ranking, along with some other pertinent information such as the number of times you have listened to the song, is written to the MP3 using the new ID3 format. Sondra uses this information to generate the playlist on the fly, creating the amazing feeling that one is listening to a radio station but one that is particularly geared towards one's preferences. Sondra has a KDE-interface, a command-line interface, and the backend is implemented as a library, so anyone can use it with maximum flexibility.

According to Benjamin, this concept may well be unique and original enough that it probably hasn't been implemented elsewhere (including Windows-land). Currently, Sondra is tied to XMMS, but should be easy to generalize to use your favorite player. I also wonder if Sondra could be made to use Ogg Vorbis, given the patent troubles with MP3.

Comments

Excellent. The next step is to link it to a database that links the cut to a style, CD, artist list, date of composition, date of release, etc. and let each one of these variables influence the next selection. Going even further: tempo, theme, musical period, and significant lyrics could be linked. This is what radio djs do (or used to). Heck, a thesaurus function or pun linker could even get into the act!

As an Ogg supporter, I was wondering if you knew of a hardware player that supports Ogg. Otherwise, I'm getting a portable player that only supports MP3 due to the simple dual facts of 1) it's cheap and 2) it's really nicely engineered.

And, of course, that pretty much sets my personal format for the near future.

errmmh, it would be great, yes.
Until someone makes a chip for that you will have to handcode the decoding code in assembler for some one-chip micro-controller. (or in C, possibly)
Not impossible, but a lot of work.

Actually, that may not be true for some people, no offense to Iomega is intended.

However, those "pocketzip" disks (formerly "clik!" -- guess that name didn't work out too well ;)) aren't common, and I doubt they ever will be. They're (not even) the Bernoulli carts of the early 21st century ... I don't trust Zip drives, and have no reason to trust the little version either. If they were the only alternative, maybe I would, but I can't think of any area in which a CD-R / CD-RW is beaten by Zip except longest dimension, since the Zips are small and rectangular.

If Iomega sees the potential in Ogg, as they seem to, I wish they would come out with a player with a better chance of survival -- like one that plays burned CD-Rs or CD-RWs, or even DVD-RAM. Or if big-spinning-disks players are too bulky, maybe one using SmartMedia or CompactFlash?

Even (and I say this because I'd like to see more of the tiny CD-Rs ;)) tiny CD-Rs? I'd like to see a cute little round clamshell that plays vorbis from those mini-disks (not MiniDisks). iomega would be a perfectly adequate name to have on the outside of it, but so would a lot of others.

Iomega isn't wedded to Zip anymore, which is good -- I just wish they would make a clean break from them, since they have low capacity and low speed, and are not particularly reliable.

Hmmm. That small-CD clamshell player is sounding like a good idea to me, anyone want to sell one to me? :)

the intel blah blah mp3man has support for adding new codecs.
When I emailed them about this they said they were polling for input on what codecs people would like support for in future upgrades (thats software upgrades too).
my vote has been added. has yours?
(of course its windows only... but so dinky )

Actually, .ogg files have a generic name-value system for adding arbitrary fields to each file, so if anything it should be _easier_ to implement this for ogg. A quick eyeballing of the libvorbis headers would probably get one most of the way there.

So its not exactly the same thing, but it is similar in concept. Play the kind of music that I like. What? I've been listening to a lot of Clasical? Oh, well lets see what other clasical music we have on disk and queue it up for playback.

I'm curious if this couldn't be extended to include Tivo favorite list like features for TV tuners. Or to search MP3.com or some other online free repository of music for music similar to what is being played. I'd DEFINATELY use something like that.

Yeah, that way it could, say, dial-up in the middle of the night and download songs it thinks you might like. Perhaps the system could even be set to occasionaly download a random song, just to see if you like it and might want to get into that subgenre/artist.

I put my MP3 files in a directory accessible from the LAN so that other users can play them as well. This conflicts with writing the information inside the MP3 file. First problem is that I made the files read-only, to avoid silly mistakes putting holes in my MP3 collection. Second problem is that every listener has a different taste in music, therefore their listening records should be kept separately.

So I would prefer if the gathered information would be stored outside of the MP3 file. There are other arguments in favor of external storage. Not every format can hold additional info; XMMS has a large number of input plugins and can play for example all the tracker formats (MOD, S3M, XM etc). Another argument for external storage is file sharing: if you swap music with others, you don't want their listening info mixed with yours.

the whole purpose of this inventnion is that the ranking happens dynamically. every time you manually select a file, the rankings change. if you made the mp3's read only (as almost EVERY person i know does) then the dynamic ranking cannot happen. this defeats the wholr purpose of the entire technology.

If you use an OS with a sensible file permission system, it is trivial to make the files read-only to everyone who doesn't know your password, but still allow yourself to write to them. I don't see what the fuss is about.

The other problem (that music preferences shouldn't be shared along with the music) is actually much more of a problem. The only way this could be solved is if Sondra started storing its data in an external database instead of inside the .mp3 files (which sounds quite sensible to me, actually).

Err - i can clearly understand what the problem is when you store your data inside the mp3file.

It results in _no_ multi user ability.

You know, most ppl like different kinds of music like one has punk as his favourite - and the other would like to hear some techno music.
Their rankings probably won't match.

Besides, I really don't like to save _any_ data
except the music itself inside the mp3.
id3 sucks big times.
Use a clear structure for your mp3's like "artist - album - track# - title.mp3" and store data like ranking information in a separate library (mysql would be a good choice fe.)

The free (but not open source) program MP3 Control does this exact same thing. It is in a .7 release at the moment. More info can be found at http://mp3control.virtualave.net/. I've been using the feature that track song usage for a while, and it generally works pretty well. Reading the faq, it sounds like the auther wrote it for the same reason a lot of free software gets written: nothing else did what he wanted.

It can integrate with winamp or be used on its own. Don't know how it works under wine.

I've had a similar idea in the past. What I was considering was having a ranking system the same as Sondra, except the music would come from an Icecast server, and the rankings would be sent back there from multiple users (think an office of people listening to the same speakers).

That way, more popular songs would be played a little more often than the obscure ones, and, as people get sick of a song being played too much, the ratings go down and the song gets played less. A "veto" option would also be good...

Now that you mention it, I swear I saw this used as an example in some Linux magazine. Could have been L. Journal or L. Magazine. IIRC, it was used as an example of using PERL to make interactive web pages. People ranked the song that was playing, the page was sent back to the server and then the playlist weightings were changed. Darned if I can remember more about it at this point.

Umm, I've seen things like this on Freshmeat for years now. I think it was Freshmeat, anyway, it might have been on sourceforge, but it definately existed and it definately sounded just like this. It didn't mention storing information in ID3 tags, but that was the only difference.

Please Bring forth this fantome! Quick search here, quick search there, nada. You are probably thinking of playlist generators, that would just scan files This is nothing special. Sondra generates the playlist based upon rank which is special.

Please stop trying to push your software as some new "nifty wowie-gee I can't imagine anyone else even thinking of this idea before me" plugin. Many many people have had this idea before you, and I'm sure many more before them. Hell even I did (I used to be a DJ and actually started a database with genre, bpm, beginning and ending "style", etc.) -- Your idea is *not* original. It's a hard lesson to learn but once learned it saves a lot of head/heartache in the future.

With that being said, let me commend you for actually getting software out the door. *That* is what many many people with the idea have *NOT* done (or not done well), and that is exactly what you should be proud of. When I get home I will be installing sondra and giving it a whirl.

Now as far as ideas for improvement go:
- plugins for your plugin so the ranking system can be modified
- database support (metadata on 8000 mp3s in a flat file is not a good idea), I humbly reccomend PostgreSQL, as it is capable of stored functions and I can modify the database based on the modifications you make
- the ability to "clump" songs together. i.e. if I have a ripped trance CD where each individual track is a song but they're meant to be played as a group, tag this so when a song in the clump is selected, it actually plays the first song in the clump and then plays the entire clump (subject to ranking, of course) before bouncing out of it.
- a ranking system which is more or less automatic:
..- if I let a song play all the way through, bump it up slightly.
..- if I skip a song after it's started playing, bump it down slightly.
..- if I repeat a song, bump it up more
- try to make it player-agnostic. I use XMMS myself so it's not a personal request, but I'm sure many others would like to use this on their favourite player
- try to make it cross-platform so the Win32, QNX and MacOS guys can get at it
- Add support for a tracker-style mixer, perhaps as a plugin. (this is something I was working on when I was a DJ) -- it's bascially a little "procedure" which gets executed when tracks start and/or end. (Think Scream Tracker interface) -- Of course the procedure would need to know what song is playing and what song is next so it could choose the appropriate mix track. Mix tracks would allow things like volume changes/slides, playback speed slides, sample playing/offsetting, sfx keying and so on.

I'm sure there used to be a web site which would ask you to rate albums, and then recommend new music to you, based on previous ratings by other people. Does anyone remember this, and know if it's still going (I doubt it's still there, this was quite a while ago: before MP3s became as big as they are now).

On a different tack, there used to be a site which was a sort of stock market in event probabilities (from coin flips, to thermonuclear war). This would be about 4 years ago as well. Does anyone remember this?

I used to have all these sites bookmarked, but on computers that I don't own anymore :)

I love the idea, but I don't want the MP3s themselves written! Does it support writing it to a separate database, even just a text file?

How can you make a shared MP3 database for the house, if everyone's different preferences are written to the MP3 files themselves? That also suggests that you have WRITE access to the MP3 filesystem, where a good jukebox would lock off most writes to avoid accidental deletions.

Well generally you would rank the songs simply based upon how good they were. Generally people will rank the songs about the same. You could then rank it before you mark it read-only. Also if you want to have a file or database then you can simply re-write one of the files in Sondra (song.cpp) and you are all set.

Does anyone know the status of KDE2.2 ? According to the updated release schedule (posted on the Dot a few weeks back), KDE2.2 would be available via ftp on the 3rd (two days ago), and announced tomorrow.

I don't see the packages on ftp.kde.org, but the CVS has been tagged as KDE_2_2_RELEASE, so it looks like things are rolling.

Interesting idea, however just because you've listened to the Macarena 99 times doesn't mean that it is now the only song you ever want to hear. Going to have to be careful how those playlists are generated.

I like to keep my mp3's high quality and sharable. I prefer to keep them in pristine condition, without tainting them with my own personal ID3 tags. I also don't want to find mp3's with other peoples commentary other than that of the original creator/etractor/ripper....