On Mon, 8 Aug 2005, Joerg Lehmann wrote:
On 05.08.05, Dag Wieers wrote:
Let me just add another data point. Last weekend, I had the pleasure to use PyTone on the yearly reincarnation of the party it was originally written for. We used two databases, one on a local disk with around 7500 songs and one on a NFS share with around 15000 songs. In total this amounted to more than 22500 songs in the "merged" database. The machine is powered by a quite ancient AMD with 700Mhz and has 256MB of RAM. All in all, the perforance was excellent, except for a few issues:
- From time to time, there was a dropout in the audio output when PyTone made a database access
- During a complete update of the repository these dropouts were quite frequent. Furthermore the log-files sometimes growed to more than 1GB. I had to abort the initial scan of the remote database.
- The memory usage of PyTone was initially quite ok (around 140MB), but it was growing slowly and we had to restart PyTone every 12-18 hours (the party ran for about 72 hours).
This conforms with my previous reports :)
The first issue only happened to me when updating several database at the same time (which worsens the situation). I used to press u everywhere before I understood the implications :)
The second issue was particularly bad since it filled my disk and caused my database to get corrupted when the disk was full. My work-around is to put my music files in different directories (1a, 1b, 1c, 2a, 2b, ...) and create seperate databases for each. So an update can never grow that big.
The third issue didn't hit me that hard since I moved the music player to a 1GB system. Since my last reboot 4 days ago, it grew to 358MB of virtual memory and 110MB of residential memory which is less than most other music players after startup :)
It would be nice however to see what the 248MB is going to :)
Debugging of the issues is, however, a non-trivial task...
Indeed :/
That said, updating your repository is hard and I always try to avoid it by going to the filesystem view and updating specific directories (that have been added/changed). The first time, however, you can't do it otherwise.
Yes, updating single directories would also be what I'd suggest.
This together with dividing songs over multiple databases/directories makes it quite painless to update.
I'm new to Python, have been coding with Perl for the last 5 years or so. I have been planning to write a playlist generator which will take additional parameters than what is currently in PyTone (tempo, texture, music style among others). Just starting to get into the code now, so any words of wisdom would of course be more than welcome :)
I'm very interested in what you're going to do. I would be interested in the following features/scenarios:
- Handling of favorite songs (stars) as I don't think pytone uses this information for its playlist yet. Of course the hard part is finding an algorithm that does what vaious people would expect. What do people expect ?
Oh, it uses the rating, but please don't look at the code. Again, please don't look: it's ugly and probably doesn't do anything reasonable.
Don't worry, didn't look at it yet. The main problem with this is what people expect of it. I bet different people have different expected behaviors and matching that with parameters will be very hard.
I wonder if other projects succeeded in doing this and how that went. I'm thinking eg. of a slider that you can pull to favor good songs, and options to eg. make unrated songs default to 3 (1=worse, 2=bad, 3=normal, 4=good, 5=favorite).
Or what about using stars and o's. So you have:
4 **** favorite 4 3 *** best 3 2 ** good 2 1 * ok 1 0 normal (unrated) 0 shft-1 o doable -1 shft-2 oo bad -2 shft-3 ooo worse -3 shft-4 oooo hate it -4
This would give a much better rating system that can be misused.
- Auto-tagging files to match genres with songs. I'd love to select 10 songs and have pytone only play similar songs than the ones selected based on the song itself, not a manually added genre-tag.
That's a tough problem which I think is beyond what PyTone can offer. Either you would need a very good tagging scheme and correspondingly good data. There are companies which offer you this kind of service, but it's obvious that this kind of information is not really cheap to get. Alternatively, one could make use of something like AudioScrobbler, which relies on the playback data supplied by the users. But AFAIK there is no interface to get this kind of information for a given set of songs. It even takes a few days to initially generate a recommendation of related artists from your playlist.
I understand. I wonder though if it can be done based on a number of criteria that can be automatically extracted from a song. The same way as rhythm and other criteria can be extracted.
It definitely is not something pytone would add, but if it existed it could use this metadata.
This fixes the problem where you have mixed genre CD's or where the genres are simply too general for most of the music.
I agree that genres are not very useful. But a more complex classification scheme may even be less useful if it requires that the user does the classification manually. In general, you are lucky if at least artist/album/title tags are correct, not speaking about tracknumber and year.
Indeed, manual classification other than a subjective/personal rating system is useless.
Kind regards, -- dag wieers, dag@wieers.com, http://dag.wieers.com/ -- [all I want is a warm bed and a kind word and unlimited power]