Hydrogenaudio Forums

Hosted Forums => foobar2000 => 3rd Party Plugins - (fb2k) => Topic started by: odyssey on 2009-10-08 10:39:29

Title: foo_customdb: Custom Database
Post by: odyssey on 2009-10-08 10:39:29
I really love tagging and sometimes I want to tag the most outrages things. Even assignments for autoplaylists, so my playlists wouldn't get lost even if I moves my files (which I do a lot)...

So I've taken a look into the foo_customdb component (http://blog.99ravens.net/index.php?e=283) that is a separate database holding your tags without writing them to files.

First you should decide how you want to define a key (a unique identifier) for a tag. This is customizable which is cool, because then you can even define a key to match more than just one file/item. Here are a few examples:

ALBUMRATING: "%artist% %album%"
RATING: "%artist% %title%"

If you don't move your files around a lot, you could simply use "location" to store values for each file, but personally I would like a better ability to track a file no matter where it is. To achieve this, I use foo_biometrics (http://www.hydrogenaudio.org/forums/index.php?showtopic=65185) which can store a unique fingerprint in the %fingerprint_fooid% tag. However the tag itself is quite long and you might want to use a shorter key, so you can use the function $crc32(%fingerprint_fooid%) to define the key. However, it's important that you only allow writing to files that contain this tag, so make sure that you under Action define the "Set value:" to "$if(%fingerprint_fooid%,value,)".

Since I already have a lot of tags that I may need to store in foo_customdb, I was wondering if it was possible to transfer those tags back and forth if I ever decides maybe even to abandon the component or something else. This is actually possible! You simply define an action and define the "Set value:" to "$if(%fingerprint_fooid%,%tag_stored_in_file%,)".

Also it's possible to move the tags back in the files using the normal Properties dialog and "Automatically Fill Values". You define a Source from "Other" and sets the tagname you have defined in foo_customdb and defines the tag that it should be written to in the "Pattern". Unfortunately I have not been able to make this work using Masstagger.

Note that if you want to store a value in foo_customdb, you need to use it's own context menu. If you try to set a tag anywhere else (CUI, Properties etc.), it will be written directly to the file.

Please note that this component (0.0.9a) is currently listed under Problematic Components and it may cause crashes. I have experienced crashes after configuration if I don't restart foobar2000 before using the changes.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-08 18:28:01
It's good for me to see foo_custom usage examples here. The component has open database format which can be easily manipulated and if there is reason for some action there seems to be quite possibilities open.

I found this page (http://translate.googleusercontent.com/translate_c?hl=en&sl=ru&tl=en&u=http://terpilovsky.ru/foobar2000/help/foo_customdb_manual/&rurl=translate.google.com&usg=ALkJrhjlYssNuoeTqHr79n3E7cSBnNV8VA) in the past and may be useful if someone is interested - example how to transfer some tag info to custom db and manipulate db

Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-08 20:47:57
Here is hotness algorithm for foo_custom:

Code: [Select]
$puts(baselinefrequency,90)$puts(baselinedecay,28)$puts(lp,[%last_played%])$puts(fp,[%first_played%])$puts(pc,[%play_count%])$puts(rating,[%rating%])$puts(avgrating,3)$puts(lp_mod,$sub($add($add($mul($year($get(lp)),365),$mul($month($get(lp)),30)),$day_of_month($get(lp))),730000))$puts(fp_mod,$sub($add($add($mul($year($get(fp)),365),$mul($month($get(fp)),30)),$day_of_month($get(fp))),730000))$puts(date_diff,$sub($add($add($mul($year(%now%),365),$mul($month(%now%),30)),$day_of_month(%now%)),730000))$puts(baselinefrequency,$mul($get(baselinefrequency),24))$puts(baselinedecay,$mul($get(baselinedecay),24))$puts(lp_age,$add($substr($get(lp),12,13),$mul(24,$get(lp_mod))))$puts(fp_age,$add($substr($get(fp),12,13),$mul(24,$get(fp_mod))))$puts(age,$sub($get(lp_age),$get(fp_age)))$puts(now_age,$add($time(%now%),$mul(24,$get(date_diff))))$puts(recentness,$sub($get(now_age),$get(lp_age)))$puts(decay,$div($div($mul($get(pc),$get(baselinefrequency),$get(baselinedecay),$if2($get(rating),$get(avgrating)),100),$mul($max($get(age),$get(baselinefrequency)),$get(avgrating))),100))$puts(rawhotness,$div($mul($max($sub($get(decay),$get(recentness)),0),100),$get(decay)))$puts(forecast,$div($mul($max($sub($get(decay),$add($div($max(0,$sub($get(baselinedecay),$get(recentness))),2),$get(recentness))),0),100),$get(decay)))$put(hotness,$div($add($get(rawhotness),$get(forecast)),2))


(http://img73.imageshack.us/img73/3153/fields.png) (http://img266.imageshack.us/img266/7392/action.png)

It uses: %last_played%, %first_played%, %play_count%, %rating%
It can be used for creating autoplaylists: i.e. %HOT% GREATER 90
It can be used for creating Autorating (also in custom_db): $div($add(%HOT%,4),20)

Following odyssey's "Album rating" idea, which also come to my mind in past but had no idea how to manage it, I can't make it work without context menu. What I was thinking is that "Album rating" should be some average of tracks ratings or auto ratings, but I can't make it work automatically - don't know if it's possible or is there some trick
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-10-08 20:53:34
As you can only define one value using the context menus, you can't get an average rating from a set of rating on a album. However, I think you can combine your first idea here with a neat select (or grouping maybe) to determine an average as such. I will have to find out the way the guide works, because I'm not familar with SQLite SQL usage - just some other proprietary SQL i work with everyday, but I'll probably manage it
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-08 21:11:31
However, I think you can combine your first idea here with a neat select (or grouping maybe) to determine an average as such.

You mean in the custom_db itself? It won't be hard but it doesn't sound like automatic solution

I tried using key: "%artist%, %album%" and hoped that it would solve by itself, but unfortunately not. If update is set to "Media Library (modified)" it accepts the value of only the last track modified.

But maybe using "playback" for update action and some script (like simplified hotness) can make this Album rating field - and that would only count from the time the field is made and on (because of playback update) - So this may sound like automatic solution: when Album rating field is created with "playback" update, populate the Album rating fields in custom_db by hand and than let the field autoupdate on playcount. I will try that and see if it works.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-09 07:07:46
OK, I've tried that: First it wasn't very easy as I thought. Lacking SQL skills, I exported custom_db to CSV and done the calculations in Excel.

I needed items with "fieldname" HOT and HOT_ALBUM so I can average the HOT_ALBUM with HOT values from it's tracks. (I wouldn't explain how I've done that, but if someone is interested I could, although I would like to know how this can be done using SQL)

After the averaging I imported the values in custom_db. Now what to use as value for HOT_ALBUM?
I ended using this simple code:
Code: [Select]
$if(%totaltracks%,$div($add($mul(%hot_album%,$sub(%totaltracks%,1)),%hot%),%totaltracks%))

It's not perfect but it generally works and I done all this quickly so if we involve little thinking it can be more correctly presented. Only consideration that timing should be set to more than 60s (i.e. 65s) so it can catch the playback statistics update

So we can now use this HOT_ALBUM as indicator for Album hotness, in autoplaylists, or for Album autorating (which was the idea): i.e. $div($add(%HOT_ALBUM%,4),20), but it's not good for using as column as the update is not for that use, but we can have it as a tag field which can be accessed from anywhere.

(http://img405.imageshack.us/img405/1521/clipboard01p.png)

Only that setted HOT_ALBUM value will not auto-decay - for that we'll need update on "Media Library (modified)" which can be used instead "playback" update if someone wants, but as I said it's not perfect and it can be improved with modifying hotness code for Album use, and for now this is just example
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-10-09 07:49:32
SQL isn't really that hard when you get into it. You should be able to sum data with a select string. Something like:

SELECT SUM(column_name) FROM TABLE WHERE something=something_else GROUP BY whatever

Title: foo_customdb: Custom Database
Post by: fbuser on 2009-10-09 07:53:48
@2E7AH

Does the timing work accurately for you?
I have the problem, that I'm not able to find a setting, where playcount is updated, when a track is completely played. If I you choose 9999 seconds as threshold, not all tracks are updated. The same problem occurs for using a percentage threshold. 100% doesn't work at all, and for 99% it is a similar problem as for a seconds threshold. The latter one is apperantly a resolution problem. It occurs mainly for short tracks less then 100 seconds.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-09 08:40:17
SELECT SUM(column_name) FROM TABLE WHERE something=something_else GROUP BY whatever

It seems easy but can you make that example to work for this table (average HOT_ALBUM with it HOT tracks):

(http://img515.imageshack.us/img515/3618/sql.th.png) (http://img515.imageshack.us/img515/3618/sql.png)

Does the timing work accurately for you?

I use official statistics, but trying now it's probably bug: 98, 99 and 100% doesn't update the field for length <= 90s and 100% doesn't update any length.
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-10-09 08:55:23
You will have to perform it outside foobar (or by a shortcut, or maybe even using a script). You need to extract the info using a SELECT and then adding the calculated values using INSERT INTO. customdb will just return the value from the db, so you can't sum when you view it. As I said before, I need to take a closer look into SQLite, and it probably won't be before this weekend.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-09 09:00:47
I don't mean to do that with foobar.
OK, I'll look in some SQL books on my PC - it's good to know the basic syntax
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-10-09 10:01:33
The SQLiteStudio you linked to seems to be a handy tool
Title: foo_customdb: Custom Database
Post by: Kent Wang on 2009-10-20 16:10:22
How do you show the fields from customdb in playlist view, in the columns? E.g., I want to show ratings in the columns view.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-20 16:18:15
Just use the field name: if it is RATING than something like this:

Code: [Select]
$if(%rating%,$repeat(★,%rating%)$repeat(☆,$sub(5,%rating%)))
Title: foo_customdb: Custom Database
Post by: Kent Wang on 2009-10-21 15:43:18
Thanks.

The problem was very strange. If I restart once, it would show, but if I restart again, it wouldn't, and then it would alternate. I think this was because I had RATING set to Location (foo_custominfo compatibility) instead of the custom value. I solved this by creating a TEMP value, setting TEMP to RATING, change RATING to custom value (the customdb default, instead of the foo_custominfo compatibility), then setting RATING to TEMP.

Now that I have this working I think it's a lot better than using the Playback Statistics component and slightly better than the outdated foo_custominfo.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-21 18:18:28
Please note that this component (0.0.9a) is currently listed under Problematic Components and it may cause crashes. I have experienced crashes after configuration if I don't restart foobar2000 before using the changes.

I tried to manage custom tags (artist, album, title and comment) for non-taggable files (MID, WAV...). So I added the fields and in actions set value to [font= "Courier New"]$if($or($stricmp(%codec%,mid),$stricmp(%codec%,pcm)),%field name%)[/font]. Tried to restart foobar as suggested but nothing happens. I guess it's not my day today (http://www.hydrogenaudio.org/forums/index.php?showtopic=75586)

I deleted customdb_sqlite.db and tried again: now new db is created with size or 4096 bytes, then failure.dmp with size 0 bytes and failure.txt with size 3 bytes (EF BB BF). And that's it.

I'm glad that I didn't deleted some file tags that I managed thorough this custom db, but I definitely lost all it settings. So be careful, again

[edit] and thanks to foo_jesus (http://www.hydrogenaudio.org/forums/index.php?showtopic=68528) I didn't saw too much trouble
Title: foo_customdb: Custom Database
Post by: fbuser on 2009-10-21 19:15:09
$if($or($stricmp(%codec%,mid),$stricmp(%codec%,pcm)),%field name%). Tried to restart foobar as suggested but nothing happens.
If there isn't a typo in your post, nothing happened because of a syntax error. Probably you wanted to use: $if($or($stricmp(%codec%,mid),$stricmp(%codec%,pcm)),%field name%,)
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-21 19:20:43
With "nothing happened" I meant foobar doesn't start.

[font= "Courier New"]$if($or($stricmp(%codec%,mid),$stricmp(%codec%,pcm)),%field name%)[/font]

is the same as:

[font= "Courier New"]$if($or($stricmp(%codec%,mid),$stricmp(%codec%,pcm)),%field name%,)[/font]

and the problem is in the fields names used I think: ARTIST, ALBUM and TITLE
Title: foo_customdb: Custom Database
Post by: fbuser on 2009-10-21 19:38:20
Good to know, I never recognized that the last comma is optional.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-10-21 19:44:39
OK
The problem was in field names indeed: if I use ARTIST, ALBUM and TITLE it happens again and with _ARTIST, _ALBUM and _TITLE i.e. it's all right. Maybe the cause is in just one of this names, but I would suggest avoiding field names that conflicts tag names
Title: foo_customdb: Custom Database
Post by: fbuser on 2009-10-21 19:46:44
I just wanted to suggest you something like that, because I successfully tested it that way. But you were faster.
Title: foo_customdb: Custom Database
Post by: mgl2k on 2009-10-31 17:58:01
Hello,

first of all thanks for this great component.

I'm trying to get tags with multiple values to work with this component so I can use these tags in the Album List panel of the DUI, but I haven't had any luck so far.
Example: A file with a tag named %style% and the value "a;b" should appear in the Album List panel in the two branches with the names "a" and "b".
Problem: The %<style>% syntax of Album List doen't show anything for CustomDB-tags. Showing %style% is no problem.

Is this possible? Is there anything you can do about it or can this problem only be addressed in the Album List component?

Thanks again for this component, very much appreciated.
Title: foo_customdb: Custom Database
Post by: Tonto on 2009-11-09 03:08:52
This component is way cool and really important to me, so this insight is really cool (in fact, reading this thread helped me understand the component much better!)

But I am wondering! WHY DO I, or, DO I have to use the customdb context menu?

I want to use the lyricsdb component to download the lyrics to the customdb, and also for tagging/properties to write information to the customdb, and similar things. Is there any way that I am able to do this?

Thanks
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-11-09 09:34:07
But I am wondering! WHY DO I, or, DO I have to use the customdb context menu?

Yes. This also makes it easier to understand that this component works separately from other tags, but still provides great integration with foobar2000.

I want to use the lyricsdb component to download the lyrics to the customdb, and also for tagging/properties to write information to the customdb, and similar things. Is there any way that I am able to do this?

In this case I recommend you to create a folder to store your lyrics in. lyricsdb component also allows you to define an identifier to associate specific lyrics, so you can link a file the same way I explained in the first post. This is probably the best way, as it's not stored in the tags, but still possible to access through foobar2000.

Alternatively you have to do a lot of work, first tagging to files and then moving the tags to customdb. Another alternative is to store them in files and create a script or something that will update the SQLite database for you, but this requires that foobar2000 is shut down. Also I don't see what you will gain from this compared to just storing the lyrics in files, but maybe you can elaborate?
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-11 20:36:25
I've tried this out and find it very interesting indeed.  Seems to work.  Couple of questions.

This for me is the most important part -- the ability to get at my data if/when required, and write it into the files themselves:

Since I already have a lot of tags that I may need to store in foo_customdb, I was wondering if it was possible to transfer those tags back and forth if I ever decides maybe even to abandon the component or something else. This is actually possible! You simply define an action and define the "Set value:" to "$if(%fingerprint_fooid%,%tag_stored_in_file%,)".

Also it's possible to move the tags back in the files using the normal Properties dialog and "Automatically Fill Values". You define a Source from "Other" and sets the tagname you have defined in foo_customdb and defines the tag that it should be written to in the "Pattern". Unfortunately I have not been able to make this work using Masstagger.


However, I can't get this to work.  For the first option above, could you be so kind as to post a screenshot showing the settings you use in the Action tab, for the example custom tag "RATING_CD"?  I couldn't get the second option to work either.

And is there a good (free) SQLite database viewer / editor you can recommend?

Thanks,

Mike
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-11-11 22:27:38
You create the field properties:

You can remove this action when they are transferred. Make sure they are properly transferred with a column displaying the fieldname %rating_cd%

Finally you want to setup a way to tag files using the contextmenu:

(http://i35.tinypic.com/11tmtr5.png)



Regarding an SQLite editor... Well, there's a few, but why do you want to do it? You should only do updating through foobar2000. Anyway, if you are curious, you should read up on the SQL syntax and use the sqlite3.exe you can download from SQLite's official homepage.
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-11 22:43:30
This series of screenshots is very useful.  I will check out the biometrics plugin.  For the time being I rather like the idea of using artist-album-track as the key, since it will apply to any duplicates.  That concept is very powerful -- as you've pointed out -- since you annotate based on album, or artist, or artist-album, etc, covering multiple tracks with each key.

Anyhow, the help I am really after is how I get the custom tags written into the files themselves.  For example, in 5 years' time I decide I don't want to use this component anymore, and I want my custom ratings written into ID3 tags for permanence, how do I do it?  You did state two methods in your original post, but I can't get either to work.  Some screenshots showing those methods would be great, again using the RATING_CD example -- i.e. writing the custom RATING_CD information into the file's ID3 tag so that you can then e.g. see it in foobar2000's Properties like any other tag.

Thanks!

Mike

P.S. I'll check out the SQLlite DB viewer -- reason is that I want my data to be as open as accessible as possible, and if it ever came to it (e.g. foobar2000 and customdb component vanished overnight) I would still be able to extract my data from the database file itself.  I'd just like to poke around 

Edit to correct typo
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-11-11 23:57:38
Anyhow, the help I am really after is how I get the custom tags written into the files themselves.  For example, in 5 years' time I decide I don't want to use this component anymore, and I want my custom ratings written into ID3 tags for permanence, how do I do it?  You did state two methods in your original post, but I can't get either to work.  Some screenshots showing those methods would be great, again using the RATING_CD example -- i.e. writing the custom RATING_CD information into the file's ID3 tag so that you can then e.g. see it in foobar2000's Properties like any other tag.

[/quote]
Just keep a backup of the SQLite database. If foobar2000 config is destroyed, you just recreate the pages with the same values. That's the power of using an identifier in the files that are unique to the files and not to something internal in the db (e.g. the file location, which I think is one of the official playcount's weaknesses).
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-12 07:40:05
Thanks.  Works well.  I'm also curious about another method of writing custom tags to files which you mentioned in your OP:

[quote author=odyssey link=msg=0 date=]You simply define an action and define the "Set value:" to "$if(%fingerprint_fooid%,%tag_stored_in_file%,)".[/quote]

I couldn't get that to work (I replaced %fingerprint_fooid% with %rating_cd% because I don't use the fingerprint method).  After some playing to try and get the right settings, I ended up with a context menu item that crashed foobar2000, so that when I restarted foobar2000, the bad context menu item was still there, but the corresponding setting in customdb was NOT.  So, I had no way (I could see) of removing the bad context menu item.  Since I am still testing, I could just delete the customdb database file and start from scratch.

How would I remove that bad menu item without having to delete my entire custom DB?  This makes me slightly nervous -- database corruption I don't know how to fix.

Thanks,

Mike
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-11-12 12:06:49
Thanks.  Works well.  I'm also curious about another method of writing custom tags to files which you mentioned in your OP:

Quote
You simply define an action and define the "Set value:" to "$if(%fingerprint_fooid%,%tag_stored_in_file%,)".


This is not a way to transfer tags from customdb to files. There is only one way (maybe more, but I didn't test them) to do that, and I already explained that. The action menu is ONLY for storing tags in the customdb, hence you shouldn't write the customdb-field to itself as you are currently trying to.

Also remember always to restart foobar2000 when the component tells you to.

[quote author= link=msg=667274 date=0]How would I remove that bad menu item without having to delete my entire custom DB?  This makes me slightly nervous -- database corruption I don't know how to fix.[/quote]
The foobar2000 configuration and customdb-file are not dependant on each other. As I also explained before, if you mess up the foobar2000 config, it doesn't (at least it shouldn't) invalidate the customdb database-file.

Just to clear up, the "bad context menu" does not reside in the customdb-file - it's purely in foobar2000 config, so deleting the database does not get rid of it.

Anyway, always backup your data. Use a backupservice that uses versioning so you can always go back to a certain point in time. There are many great services offering this on internet.
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-12 13:30:09
This is not a way to transfer tags from customdb to files. There is only one way (maybe more, but I didn't test them) to do that, and I already explained that. The action menu is ONLY for storing tags in the customdb, hence you shouldn't write the customdb-field to itself as you are currently trying to.


OK, I now see that this method mentioned in your OP was to move tags from the file to customdb, not the other way.

The foobar2000 configuration and customdb-file are not dependant on each other. As I also explained before, if you mess up the foobar2000 config, it doesn't (at least it shouldn't) invalidate the customdb database-file.

Just to clear up, the "bad context menu" does not reside in the customdb-file - it's purely in foobar2000 config, so deleting the database does not get rid of it.


So the various actions you define in the customdb settings are stored in the foobar2000 config, not the customdb database?  The problem I was having is that I set up a new context menu item in customdb, which created an entry in the customdb dialog and a corresponding new context menu appeared.  I then used that new context menu, and it caused foobar2000 to crash.  When I restarted foobar2000, the entry in the customdb dialog was gone, but the context menu was still showing.  So, how would you get rid of that phantom context menu?  Me deleting the customdb database and restarting did seem to address the problem, though maybe it was some coincidence.

On another issue, if I decide that using a biometric-based database key is too much hassle (extra components, more to go wrong or be obsoleted), and settle on the simplicity of an artist-album-title combo for the key, what happens when you rename a track (e.g. to correct a typo)?  Presumably the tags for the old combo are still stored in the db, but no track points to those tags?  That is how I think it would probably work.  My next question would be: is there a way of locating any orphaned tags, i.e. those which are not referenced by any track in the foobar2000 library?  I don't like the idea of hidden garbage building up in any database.

Thanks,

Mike
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-11-12 14:27:52
On another issue, if I decide that using a biometric-based database key is too much hassle (extra components, more to go wrong or be obsoleted), and settle on the simplicity of an artist-album-title combo for the key, what happens when you rename a track (e.g. to correct a typo)?  Presumably the tags for the old combo are still stored in the db, but no track points to those tags?  That is how I think it would probably work.  My next question would be: is there a way of locating any orphaned tags, i.e. those which are not referenced by any track in the foobar2000 library?  I don't like the idea of hidden garbage building up in any database.

You got it right. You have to decide what you think is the best way for you. You can use file-location (similar to official playcount) to store ratings, which can be lost when you move files, use the title identifier with the risk of loss when you rename it or as i suggest use the fingerprint that will ALWAYS be the same for a particular file no matter where it resides. You can even erase the tag, which will hide the tags, but once you've fingerprinted the file, the tags will re-appear.

That said, I hardly doubt foo_biometrics will become obsolete. It's not exactly an ongoing development (rather an experiment), but it's musicmusic that's behind the component (developer of columnsui), so I'm fairly sure it will be updated regularly if new SDK's requires it.
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-12 14:50:48
OK, and to address the question of how to clean up a custom db to find and remove any old tags that are no longer referenced by any track in your collection?  I'm guessing this is going to be difficult, so that you'll be left with a lot of "space debris" floating around in your database.

With the fingerprint key scheme, is there an easy way to ensure that each track is analysed, and fingerprint written, or is it a manual process?  E.g. if I add a new track to my collection, do I have to remember to fingerprint it, or will the component be triggered on a new import?

Mike

P.S. it looks like customdb is at least being actively developed still -- it's quite new?  Does the author ever drop in to these forums?
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-11-12 17:21:59
OK, and to address the question of how to clean up a custom db to find and remove any old tags that are no longer referenced by any track in your collection?  I'm guessing this is going to be difficult, so that you'll be left with a lot of "space debris" floating around in your database.

Sounds like you're a perfectionist  Me too.... However, I think you should just try to get used to a certain amount of "orphaned" entrys in the db. It shouldn't slow down the database that much as it's relatively few values we're talking about.

With the fingerprint key scheme, is there an easy way to ensure that each track is analysed, and fingerprint written, or is it a manual process?  E.g. if I add a new track to my collection, do I have to remember to fingerprint it, or will the component be triggered on a new import?

YES  with foo_new_file_stamper_mod (http://www.hydrogenaudio.org/forums/index.php?showtopic=68139). You just set it to "Save fingerprints to file" in it's property-page, and any new added file will be analyzed. It works really really well! (Umm... except that if you, like me, have net-streams defined in files e.g. asx, biometrics will crash on it).

To analyze all your existing files, create an autoplaylist with
Code: [Select]
FINGERPRINT_FOOID MISSING AND %length_seconds% GREATER 10


P.S. it looks like customdb is at least being actively developed still -- it's quite new?  Does the author ever drop in to these forums?

No, not really and it hasn't had an update since this spring. I still hope for multivalue support and no restarting foobar2000.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-11-12 18:00:11
OK, and to address the question of how to clean up a custom db to find and remove any old tags that are no longer referenced by any track in your collection?  I'm guessing this is going to be difficult, so that you'll be left with a lot of "space debris" floating around in your database.

component can take care of that (database tab):
(http://img137.imageshack.us/img137/103/sshot6.png)
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-12 20:49:31
Thanks, guys.

To analyze all your existing files, create an autoplaylist with
Code: [Select]
FINGERPRINT_FOOID MISSING AND %length_seconds% GREATER 10


How do I create such a custom autoplaylist?  I have so far only worked out how to do it from the Album List context menu, but that is tied to a branch in that list.  I've been wondering how to create a completely free-form autoplaylist like the above.

Mike

Edit: Aha.  Do you just right-click on the All Music (root) branch and create autoplaylist from there?
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-12 22:08:54
Now another question ;-)

I am moving towards a system where I have my own ratings embedded into tags in the file (let's say, in tag "mike rating").

And then each other user of my PC can listen to my music, and use my ratings by default, but they can also override my ratings with their own (stored in customdb under tag "user rating").

So, the logic is: if "user rating" exists, use that.  Otherwise, use "mike rating".

I've worked out how to display this "combined" rating in a column, using this pattern:

$if(%user rating%,$repeat(●,%user rating%)$repeat(o,$sub(5,%user rating%)),$if(%mike rating%,$repeat(●,%mike rating%)$repeat(o,$sub(5,%mike rating%)),ooooo))

However, I now want to filter the users' autoplaylists based on this "combined" rating, too.

For just me (in my own account), I'd use the following in the filter:

%mike rating% GREATER 1

(since my highest rating is 3*)

However, what do I use as the filter for a "combined" rating for the user accounts?  I can't see that you can use IF/THEN logic in the filter.  Perhaps I need an auto-calculated field (calculate using the IF/THEN logic), and filter on that?

Thanks for any help!

Mike
Title: foo_customdb: Custom Database
Post by: Benji99 on 2009-11-12 22:20:42
Hey guys, I have a question about this plugin,

When I first read about this, I got a really cool idea. I like to store lots of additional (and would like to store more) information about artists, composers, etc that are not vital. (For example artist date of birth, death, composer country, reviews, biographies, etc... into the Custom DB instead of directly to tags

I was thinking of using Python grabber scripts to get and store the information in the custom DB.
Can this be done fairly easily? Meaning I'd like the custom DB tags to act and behave somewhat like regular tags.

Thanks!
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-11-13 00:16:05
I was thinking of using Python grabber scripts to get and store the information in the custom DB.

That's a really cool idea! Actually you should be able to inject values directly in the db-file if you need to do external work (at least i managed to do so, even while foobar2000 was running using the official sqlite3.exe)

Can this be done fairly easily? Meaning I'd like the custom DB tags to act and behave somewhat like regular tags.

They do  If you define a field with %composer_cd%, then it will show anywhere you use this tag (except for masstagger afair).
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-11-13 00:19:10
However, I now want to filter the users' autoplaylists based on this "combined" rating, too.

However, what do I use as the filter for a "combined" rating for the user accounts?  I can't see that you can use IF/THEN logic in the filter.  Perhaps I need an auto-calculated field (calculate using the IF/THEN logic), and filter on that?

How about %mike_rating% GREATER 1 OR %user_rating% GREATER 1 ??? You should take a look at the help pages to understand the query-logic.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-11-13 01:27:52
I was thinking of using Python grabber scripts to get and store the information in the custom DB.

good idea
while sqlite3 module is included in python 2.5 (used by python grabber) it's not included in python grabber
however it works seamlessly, and I'll include it optionaly in my future/modified scripts based on key %album artist% %album% (%title%)
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-13 06:28:43
How about %mike_rating% GREATER 1 OR %user_rating% GREATER 1 ??? You should take a look at the help pages to understand the query-logic.


OK, I got it.  The logic is not quite as you say, because if %user rating% has been set then it overrides %mike rating%, rather than adds to %mike rating%.

The following seems to do what I want:

(%user rating% GREATER 1) OR (%user rating% MISSING AND %mike rating% GREATER 1)

Incidentally, I make a distinction between "MISSING" and "EQUAL 0".  If the user has explicitly set the user rating to 0, that is a positive statement that he/she doesn't like the track.  If the user rating is just missing, it is probably just because the user hasn't got around to applying a rating yet (or is happy to accept my rating).

Mike
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-14 07:22:35
OK, and to address the question of how to clean up a custom db to find and remove any old tags that are no longer referenced by any track in your collection?  I'm guessing this is going to be difficult, so that you'll be left with a lot of "space debris" floating around in your database.

component can take care of that (database tab):
(http://img137.imageshack.us/img137/103/sshot6.png)


Just tried this, and it doesn't seem to do anything to clear out unlinked data.  I changed a track name so that it no longer matched the key in the database, and so that its custom rating vanished from display.  No other tracks matched the old key either.  So there is orphaned data in the database now.  I ran the above tool, trying each of the three options, and the orphaned data remained.  When I renamed the track to what it was, the rating came back.

So, I don't really think the above tool is for this purpose.

Mike
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-11-14 08:00:12
It doesn't say: "Remove entries without key", does it?
If you remove your custom tag field value or custom tag field itself, its db entry(ies) will gone when using the tool
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-14 08:09:37
It doesn't say: "Remove entries without key", does it?


No, but I was only following your suggestion ;-)

If you remove your custom tag field value or custom tag field itself, its db entry(ies) will gone when using the tool


Remove where?  I'm really interested in finding and removing any data in the database that doesn't match to any key in any track in your collection, and I'm not sure anything yet suggested will enable this?

Mike

Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-11-21 22:53:46
Here is hotness algorithm for foo_custom:

Code: [Select]
$puts(baselinefrequency,90)$puts(baselinedecay,28)$puts(lp,[%last_played%])$puts(fp,[%first_played%])$puts(pc,[%play_count%])$puts(rating,[%rating%])$puts(avgrating,3)$puts(lp_mod,$sub($add($add($mul($year($get(lp)),365),$mul($month($get(lp)),30)),$day_of_month($get(lp))),730000))$puts(fp_mod,$sub($add($add($mul($year($get(fp)),365),$mul($month($get(fp)),30)),$day_of_month($get(fp))),730000))$puts(date_diff,$sub($add($add($mul($year(%now%),365),$mul($month(%now%),30)),$day_of_month(%now%)),730000))$puts(baselinefrequency,$mul($get(baselinefrequency),24))$puts(baselinedecay,$mul($get(baselinedecay),24))$puts(lp_age,$add($substr($get(lp),12,13),$mul(24,$get(lp_mod))))$puts(fp_age,$add($substr($get(fp),12,13),$mul(24,$get(fp_mod))))$puts(age,$sub($get(lp_age),$get(fp_age)))$puts(now_age,$add($time(%now%),$mul(24,$get(date_diff))))$puts(recentness,$sub($get(now_age),$get(lp_age)))$puts(decay,$div($div($mul($get(pc),$get(baselinefrequency),$get(baselinedecay),$if2($get(rating),$get(avgrating)),100),$mul($max($get(age),$get(baselinefrequency)),$get(avgrating))),100))$puts(rawhotness,$div($mul($max($sub($get(decay),$get(recentness)),0),100),$get(decay)))$puts(forecast,$div($mul($max($sub($get(decay),$add($div($max(0,$sub($get(baselinedecay),$get(recentness))),2),$get(recentness))),0),100),$get(decay)))$put(hotness,$div($add($get(rawhotness),$get(forecast)),2))


I'm trying to adapt this for my purpose.  I have two ratings, one in tag %mike_rating% which is stored in the file, and another in custom tag %user_rating% which is stored in the custom_db database.  The logic I use around the place, e.g. in filters, is to use %user_rating% if it exists, else use %mike_rating%.

So I've tried to amend the appropriate part in the above algorithm as follows:

Code: [Select]
$puts(rating,$if2(%user_rating%,%mike_rating%)


However, this doesn't seem to work.  What syntax should I be using here?

Thanks,

Mike
Title: foo_customdb: Custom Database
Post by: marc2003 on 2009-12-05 16:50:18
i'm just wondering.... how many people are using this and how (un)stable is it for you? i know it says "unstable" in the first post but i've had 2 crashes within the first hour of use which is just ridiculous.
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2009-12-05 17:03:58
what have you been doing?
if it says please restart foobar, than restart foobar
also don't use field names that you usually use for tags
maybe even trying something with your script caused those crashes?
Title: foo_customdb: Custom Database
Post by: marc2003 on 2009-12-05 17:39:14
i hadn't even got as far as trying to manipulate the db with any scripts. it just bombed out when playing music in the background. i was just a little bit concerned about wasting time scripting for it if it's really that bad. maybe i just got unlucky. anyway, i'm trying version 0.0.8c and no problems so far (touch wood).
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-12-05 19:11:44
It's been very stable for me.  I'm wondering whether anyone has tried it with the new beta?

Incidentally, I think I figured out what the syntax should be for my post just above:

Code: [Select]
$puts(rating,$if(%user_rating%,[%user_rating%],[%mike_rating%]))


Mike
Title: foo_customdb: Custom Database
Post by: TomBarlow on 2009-12-05 23:03:43
It works OK for me. I'm only using it for stream names, which is nice because I can have art for them. I don't play around with it much so it hasn't crashed.
Title: foo_customdb: Custom Database
Post by: marc2003 on 2009-12-05 23:30:50
i must admit it, i'm been running it for a few hours now and hammering it with all sorts of silly queries and it's been fine. just bad luck to start with, i guess.

but as with everything i do, i'm running into problems with encoding.   

looking at the database table in this screenshot. the url values look identical....

large screenshot (http://k5sbdw.blu.livefilestore.com/y1p4vLQU8rAeb3JdOgOedwJjVpipf963f2BcyiqeubcLlTbkbGSynQ1oO9_67DhcsOlydlzIeI_ooUVAFDzJiVt-peE-AMmYWnp/argh.png)

one of those db fields was created using the context menu and of course it shows fine in the properties. the other was created using sqlite3.exe triggered from wsh panel mod. i really have no idea why it doesn't show.  plain text entries show fine.

i guess i'll have to stick with updating my files instead.
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2009-12-06 07:55:18
My only guess, if I understand even a little what you're up to, is that the text encoding is different, since you have non-standard characters (accented / Greek) making up your key names.  Perhaps that is what you've decided as well.

Actually, I have to thank you for that screenshot, because I never knew that you could see the custom database entries for a track under the Properties tab of the Properties dialog... neat.

Mike

P.S. I like this custom_db plugin a lot.  I only hope that the developer is still interested in developing it.
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-12-06 09:32:05
I'm using it with foobar2000 1.0 with no problems. I've never had a crash on it, when I do as it says - RESTART WHEN TOLD!
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-12-06 09:36:05
but as with everything i do, i'm running into problems with encoding. 

Could be a bug or just a limitation. I avoid such problems, by using $ascii to limit the character sets.
Title: foo_customdb: Custom Database
Post by: marc2003 on 2009-12-06 10:45:12
P.S. I like this custom_db plugin a lot.  I only hope that the developer is still interested in developing it.


yup, it's certainly a great concept. for what i'm trying to achieve, it would be perfect. updating my files on every play is hardly ideal but it's the only way i can enter truly dynamic values. fetching my playcount statistics from last fm can be anything from 1 into the 100's. i suppose i could create a context menu item for every possible response. that would work.   
Title: foo_customdb: Custom Database
Post by: Dvvarf on 2009-12-06 14:23:05
Was looking for plugin like that. But it crashes sometimes.
P.S. This plugin is useful for p2p-users: you can set any tag to your favorite music, still preserving its hash, size and so on.
Title: foo_customdb: Custom Database
Post by: marc2003 on 2009-12-06 14:35:10
I avoid such problems, by using $ascii to limit the character sets.


ah that's a great suggestion. at first i thought you meant convert my tags (silly me). but of course you mean just for the keys. it works. 
Title: foo_customdb: Custom Database
Post by: odyssey on 2009-12-06 14:50:33
Sure it works  Having some knownledge of databases, I would say that the unique identifier should be kept as simple as possible... Even better, let it just be a number. Not sure if it will increase the speeds of it, as it will probably be a char/string field anyway (as opposed to integer).
Title: foo_customdb: Custom Database
Post by: Nemphael on 2009-12-06 15:26:01
How about $crc32(%fingerprint_fooid%)? I don't know how collision resistant it is, but meh, can't be that bad. Given a library of 10k tracks, I assume that's a chance of 1/(10^10-10^4) = 1/1000 anyway. (I don't think it produces values of less than 9-10 numbers).
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2010-01-22 19:39:05
Does anyone happen to know whether this component will be developed further?  Any contact from the developer?  Seems to work under foobar2000 v1, though all the keyboard shortcuts I have set which point to this component seem now to be lumped together under submenu "Legacy Commands (unsorted)".

Would be a real shame if this excellent component faded away.

Mike
Title: foo_customdb: Custom Database
Post by: Hitchhiker427 on 2010-01-22 20:18:03
^ I came here to ask the same thing.  Ever since using marc2003's excellent last.fm syncing script and storing this data in the customdb, my legacy components sub-menu is flooded with customdb commands.  It'd be much better if these could be contained within their own customdb sub-menu.
Title: foo_customdb: Custom Database
Post by: odyssey on 2010-01-22 21:28:21
It's still functional. Yeah the commands are just thrown randomly under "Legacy" - Blame Peter for that.

Yet, I don't expect this will be updated unless it becomes unusable as it hasen't been updated for a long time and still could use some improvements.
Title: foo_customdb: Custom Database
Post by: Jugdish on 2010-04-11 21:47:14
I'm using foo_customdb v0.1.0_beta1 with foobar2000 v1.0.1 and it crashes almost every time when playback advances from one track to the next. Anybody else having these sorts of crashes? Here's an example crash report:

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 01A71945h
Access violation, operation: read, address: 00000000h
Last win32 error: 2

Call path:
titleformat_object::run

Code bytes (01A71945h):
01A71905h:  C7 06 14 59 AF 01 89 75 F0 89 46 04 89 46 08 89
01A71915h:  46 0C FF 75 0C 89 45 FC FF 75 08 89 46 10 E8 7E
01A71925h:  00 00 00 8B 4D F4 8B C6 5E 64 89 0D 00 00 00 00
01A71935h:  C9 C2 08 00 33 C0 39 44 24 08 76 11 8B 4C 24 04
01A71945h:  80 3C 08 00 74 07 40 3B 44 24 08 72 EF C3 E9 E1
01A71955h:  FF FF FF 56 8B 74 24 10 85 F6 76 13 8B 4C 24 08
01A71965h:  8B 44 24 0C 2B C1 8A 14 08 88 11 41 4E 75 F7 5E
01A71975h:  C3 56 57 8B 7C 24 10 8D 47 01 50 8B F1 E8 BB 01

Stack (0A38F87Ch):
0A38F85Ch:  00000000 00000000 00000000 00000000
0A38F86Ch:  00000000 00000000 00000000 00000000
0A38F87Ch:  01A715DB 00000000 FFFFFFFF 01B0A3A0
0A38F88Ch:  01A76C9E 01B24380 01A8FA61 01B24380
0A38F89Ch:  01A7157E 0A38F964 01AF4248 FFFFFFFF
0A38F8ACh:  0A38F970 01ACDE6A 00000000 FFFFFFFF
0A38F8BCh:  5C05B46A FFFFFFFE 01B22660 02F1C880
0A38F8CCh:  01B22660 7C91B24B 00010604 01B24778
0A38F8DCh:  0A38F838 0A01FA00 0A38F924 7C900030
0A38F8ECh:  7C910060 FFFFFFFF 7C91005D 01AE0146
0A38F8FCh:  01B20000 00000000 01AE0165 5C05B42E
0A38F90Ch:  00000000 0A38F9A0 00000008 0A38F9BC
0A38F91Ch:  0A38F908 00407B87 0A38F9B0 00000000
0A38F92Ch:  01AF58DC 01B24410 00000002 00000002
0A38F93Ch:  00000001 01AF58DC 01B298C0 0000007C
0A38F94Ch:  00000080 0000007B 00000064 01B27E70
0A38F95Ch:  01B0A3A0 01474F3F 0A38F9B0 01AF33E3
0A38F96Ch:  00000002 0A38F9BC 01ACE229 00000008
0A38F97Ch:  02F1E6E0 0A38F99C 5C05B4A6 0A38F998
0A38F98Ch:  0A38F97C 01B0A3A0 01B0A394 0A38F97C

Registers:
EAX: 00000000, EBX: 00000008, ECX: 00000000, EDX: 01A71574
ESI: 0A38F99C, EDI: 0A38FA00, EBP: 0A38F8AC, ESP: 0A38F87C

Crash location:
Module: foo_customdb
Offset: 1945h

Stack dump analysis:
Address: 01A715DBh (foo_customdb+15DBh)
Address: 01B0A3A0h (foo_customdb+9A3A0h)
Address: 01A76C9Eh (foo_customdb+6C9Eh)
Address: 01A8FA61h (foo_customdb+1FA61h)
Address: 01A7157Eh (foo_customdb+157Eh)
Address: 01AF4248h (foo_customdb+84248h)
Address: 01ACDE6Ah (foo_customdb+5DE6Ah)
Address: 7C91B24Bh (ntdll+1B24Bh), symbol: "RtlpWaitForCriticalSection" (+8Ch)
Address: 7C900030h (ntdll+30h)
Address: 7C910060h (ntdll+10060h), symbol: "RtlFreeHeap" (+133h)
Address: 7C91005Dh (ntdll+1005Dh), symbol: "RtlFreeHeap" (+130h)
Address: 01AE0146h (foo_customdb+70146h)
Address: 01AE0165h (foo_customdb+70165h)
Address: 00407B87h (foobar2000+7B87h)
Address: 01AF58DCh (foo_customdb+858DCh)
Address: 01AF58DCh (foo_customdb+858DCh)
Address: 01B0A3A0h (foo_customdb+9A3A0h)
Address: 01474F3Fh (foo_audioscrobbler+24F3Fh)
Address: 01AF33E3h (foo_customdb+833E3h)
Address: 01ACE229h (foo_customdb+5E229h)
Address: 01B0A3A0h (foo_customdb+9A3A0h)
Address: 01B0A394h (foo_customdb+9A394h)
Address: 01AF58DCh (foo_customdb+858DCh)
Address: 01AF3409h (foo_customdb+83409h)
Address: 0047510Eh (foobar2000+7510Eh)
Address: 0052CD18h (foobar2000+12CD18h)
Address: 00474FC9h (foobar2000+74FC9h)
Address: 01B0A3A0h (foo_customdb+9A3A0h)
Address: 7C900000h (ntdll+0h)
Address: 0052F808h (foobar2000+12F808h)
Address: 004752DEh (foobar2000+752DEh)
Address: 004749D6h (foobar2000+749D6h)
Address: 00550C34h (foobar2000+150C34h)
Address: 004C84D5h (foobar2000+C84D5h)
Address: 0057A960h (foobar2000+17A960h)
Address: 00554FD4h (foobar2000+154FD4h)
Address: 0057A960h (foobar2000+17A960h)
Address: 004C978Dh (foobar2000+C978Dh)
Address: 0057A960h (foobar2000+17A960h)
Address: 0052D088h (foobar2000+12D088h)
Address: 004C9710h (foobar2000+C9710h)
Address: 0057A960h (foobar2000+17A960h)
Address: 00559FD0h (foobar2000+159FD0h)
Address: 005331D9h (foobar2000+1331D9h)
Address: 004754CAh (foobar2000+754CAh)
Address: 00550C34h (foobar2000+150C34h)
Address: 00550C2Ch (foobar2000+150C2Ch)
Address: 0057A980h (foobar2000+17A980h)
Address: 00550D3Ch (foobar2000+150D3Ch)
Address: 004E87FCh (foobar2000+E87FCh)
Address: 7C80AE90h (kernel32+AE90h), symbol: "GetProcAddress" (+50h)
Address: 00559FD0h (foobar2000+159FD0h)
Address: 64005BCEh (mdnsNSP+5BCEh)
Address: 6401FDACh (mdnsNSP+1FDACh)
Address: 64007695h (mdnsNSP+7695h)
Address: 64020530h (mdnsNSP+20530h)
Address: 64006E18h (mdnsNSP+6E18h)
Address: 64006E10h (mdnsNSP+6E10h)
Address: 64000000h (mdnsNSP+0h)
Address: 7C800000h (kernel32+0h)
Address: 64003A90h (mdnsNSP+3A90h)
Address: 64006E10h (mdnsNSP+6E10h)
Address: 6400519Dh (mdnsNSP+519Dh)
Address: 640051A5h (mdnsNSP+51A5h)
Address: 64000000h (mdnsNSP+0h)
Address: 6400523Bh (mdnsNSP+523Bh)
Address: 64000000h (mdnsNSP+0h)
Address: 640052C4h (mdnsNSP+52C4h)
Address: 71A51515h (mswsock+1515h)
Address: 64003A90h (mdnsNSP+3A90h)
Address: 640052C4h (mdnsNSP+52C4h)
Address: 640052E2h (mdnsNSP+52E2h)
Address: 64000000h (mdnsNSP+0h)
Address: 7C90118Ah (ntdll+118Ah), symbol: "LdrInitializeThunk" (+24h)
Address: 64000000h (mdnsNSP+0h)
Address: 7C91B0C4h (ntdll+1B0C4h), symbol: "CsrNewThread" (+1Ah)
Address: 7C91B1B7h (ntdll+1B1B7h), symbol: "CsrNewThread" (+10Dh)
Address: 7C910222h (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address: 7C90E920h (ntdll+E920h), symbol: "strchr" (+113h)
Address: 7C910228h (ntdll+10228h), symbol: "RtlAllocateHeap" (+164h)
Address: 7C910222h (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address: 7C91019Bh (ntdll+1019Bh), symbol: "RtlAllocateHeap" (+D7h)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 7C9100C4h (ntdll+100C4h), symbol: "RtlAllocateHeap" (+0h)
Address: 7C90D06Ah (ntdll+D06Ah), symbol: "NtContinue" (+Ch)
Address: 7C90E45Fh (ntdll+E45Fh), symbol: "KiUserApcDispatcher" (+Fh)
Address: 7C910060h (ntdll+10060h), symbol: "RtlFreeHeap" (+133h)
Address: 0044E580h (foobar2000+4E580h)
Address: 00517311h (foobar2000+117311h)
Address: 7C8106F9h (kernel32+106F9h), symbol: "CreateThread" (+22h)
Address: 0110070Ah (foo_playlist_tree_mod+3070Ah)
Address: 7C90DF5Ah (ntdll+DF5Ah), symbol: "ZwWaitForSingleObject" (+Ch)
Address: 7C91B24Bh (ntdll+1B24Bh), symbol: "RtlpWaitForCriticalSection" (+8Ch)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 005175B6h (foobar2000+1175B6h)
Address: 00474F3Fh (foobar2000+74F3Fh)
Address: 0057D7C4h (foobar2000+17D7C4h)
Address: 0053814Eh (foobar2000+13814Eh)
Address: 010E7ECAh (foo_playlist_tree_mod+17ECAh)
Address: 00475323h (foobar2000+75323h)
Address: 004B72A2h (foobar2000+B72A2h)
Address: 004B9277h (foobar2000+B9277h)
Address: 0052C090h (foobar2000+12C090h)
Address: 0044E55Ch (foobar2000+4E55Ch)
Address: 0052B630h (foobar2000+12B630h)
Address: 0044E589h (foobar2000+4E589h)
Address: 7C80B729h (kernel32+B729h), symbol: "GetModuleFileNameA" (+1BAh)
Address: 7C839AD8h (kernel32+39AD8h), symbol: "ValidateLocale" (+2B0h)
Address: 7C80B730h (kernel32+B730h), symbol: "GetModuleFileNameA" (+1C1h)
Address: 0044E580h (foobar2000+4E580h)
Address: 01000100h (foo_ui_columns+C0100h)
Address: 010E0170h (foo_playlist_tree_mod+10170h)
Address: 7C801629h (kernel32+1629h), symbol: "DeviceIoControl" (+0h)
Address: 7C80176Fh (kernel32+176Fh), symbol: "GetSystemTime" (+0h)
Address: 7C8017E9h (kernel32+17E9h), symbol: "GetSystemTimeAsFileTime" (+0h)
Address: 7C801812h (kernel32+1812h), symbol: "ReadFile" (+0h)
Address: 7C801A28h (kernel32+1A28h), symbol: "CreateFileA" (+0h)
Address: 7C801A61h (kernel32+1A61h), symbol: "VirtualProtectEx" (+0h)
Address: 7C801AD4h (kernel32+1AD4h), symbol: "VirtualProtect" (+0h)
Address: 7C801AF5h (kernel32+1AF5h), symbol: "LoadLibraryExW" (+0h)
Address: 7C801D53h (kernel32+1D53h), symbol: "LoadLibraryExA" (+0h)
Address: 7C801D7Bh (kernel32+1D7Bh), symbol: "LoadLibraryA" (+0h)
Address: 7C801E1Ah (kernel32+1E1Ah), symbol: "TerminateProcess" (+0h)
Address: 7C801E54h (kernel32+1E54h), symbol: "GetStartupInfoW" (+0h)
Address: 7C801EF2h (kernel32+1EF2h), symbol: "GetStartupInfoA" (+0h)
Address: 7C8021D0h (kernel32+21D0h), symbol: "ReadProcessMemory" (+0h)
Address: 7C802213h (kernel32+2213h), symbol: "WriteProcessMemory" (+0h)
Address: 7C802336h (kernel32+2336h), symbol: "CreateProcessW" (+0h)
Address: 7C80236Bh (kernel32+236Bh), symbol: "CreateProcessA" (+0h)
Address: 7C8023A0h (kernel32+23A0h), symbol: "SleepEx" (+0h)
Address: 7C802446h (kernel32+2446h), symbol: "Sleep" (+0h)
Address: 7C8024B7h (kernel32+24B7h), symbol: "ReleaseMutex" (+0h)
Address: 7C802530h (kernel32+2530h), symbol: "WaitForSingleObject" (+0h)
Address: 7C802550h (kernel32+2550h), symbol: "WaitForSingleObjectEx" (+0h)
Address: 7C809011h (kernel32+9011h), symbol: "AddVectoredExceptionHandler" (+0h)
Address: 7C809036h (kernel32+9036h), symbol: "DecodePointer" (+0h)
Address: 7C80904Dh (kernel32+904Dh), symbol: "DecodeSystemPointer" (+0h)
Address: 7C80906Ah (kernel32+906Ah), symbol: "DeleteCriticalSection" (+0h)
Address: 7C809089h (kernel32+9089h), symbol: "EncodePointer" (+0h)
Address: 7C8090A0h (kernel32+90A0h), symbol: "EncodeSystemPointer" (+0h)
Address: 7C8090BDh (kernel32+90BDh), symbol: "EnterCriticalSection" (+0h)

Environment:
App: foobar2000 v1.0.1
OS: Windows 5.1.2600 Service Pack 3 x86
CPU: Intel® Pentium® D CPU 3.20GHz, features: MMX SSE SSE2 SSE3
Audio: HTO STRIKER 7.1 Audio Device
UI: Columns UI 0.3.8.5

Components:
Core (2010-03-06 13:44:16)
foobar2000 core 1.0.1
foo_albumlist.dll (2010-03-06 13:42:18)
Album List 4.4
foo_audioscrobbler.dll (2010-02-07 16:16:48)
Audioscrobbler 1.4.6
foo_cdda.dll (2010-03-06 13:42:14)
CD Audio Decoder 3.0
foo_converter.dll (2010-03-06 13:42:12)
Converter 1.4
foo_customdb.dll (2010-03-04 13:10:54)
Custom Database 0.1.0_beta1
foo_dop.dll (2010-04-02 18:09:34)
iPod manager 0.6.7.4
foo_dsp_std.dll (2010-03-06 13:42:26)
Standard DSP Array 1.0
foo_fileops.dll (2010-03-06 13:41:12)
File Operations 2.1.2
foo_input_std.dll (2010-03-06 13:42:00)
Standard Input Array 1.0
foo_jesus.dll (2010-01-03 13:41:18)
Autosave & Autobackup 8
foo_playlist_tree_mod.dll (2010-01-09 15:37:50)
Playlist Tree Mod Panel 3.0.6.3 Scheme [Jan  9 2010 - 15:37:18]
foo_rgscan.dll (2010-03-06 13:41:56)
ReplayGain Scanner 2.0.9
foo_skip.dll (2010-01-16 15:43:34)
Skip Track 0.7
foo_ui_columns.dll (2010-03-21 00:43:13)
Columns UI 0.3.8.5
foo_ui_std.dll (2010-03-06 13:42:34)
Default User Interface 0.9.5
Title: foo_customdb: Custom Database
Post by: odyssey on 2010-04-12 00:17:59
I'm using foo_customdb v0.1.0_beta1 with foobar2000 v1.0.1 and it crashes almost every time when playback advances from one track to the next. Anybody else having these sorts of crashes? Here's an example crash report:

1. Use codebox-tag when posting crash-reports.
2. I think you might want to review your settings. I'm using the latest versions with no problem, but customdb can be quite picky if you didn't configure it properly. If you post your settings, I'll try to test them on my system
Title: foo_customdb: Custom Database
Post by: 2E7AH on 2010-04-23 12:48:25
For making this thread active - example for skip_count (assuming using official playback statistics, but it's easily manageable with other statistics too):

1. main problem: transferring current playcount to custom_db

2. After this change PLAY_COUNT_RAW filed in custom_db preferences to update on playback (auto count) and select some small interval like 5 sec

3. Add another field SKIP_COUNT with value: $if($and(%play_count%,%play_count_raw%),$sub(%play_count_raw%,%play_count%),0)

This will auto count files that were skipped (or stopped and similar) within first minute of playback, which seems perfect to me for using it as skip count. And all this, only to be able to automate foo_skip to automatically skip tracks with desired number of skip_counts by appending to current foo_skip condition: "OR %skip_count% GREATER 5"

[edit] on the second thought first step isn't needed at all, just create one playcount for 1min interval and other for 5sec, doh
Title: foo_customdb: Custom Database
Post by: marc2003 on 2010-04-24 11:09:36
anybody here familiar with the sqlite3.exe command line tool? i'm messing around with a script to import last.fm library playcounts all in one go and testing on my collection is yielding very strange performance results. first of all i'm using WSH panel mod to generate the SQL....

Code: [Select]
INSERT OR REPLACE INTO quicktag(url,subsong,fieldname,value) VALUES("2400150164","-1","LASTFM_PLAYCOUNT_DB","247");
INSERT OR REPLACE INTO quicktag(url,subsong,fieldname,value) VALUES("3525150206","-1","LASTFM_PLAYCOUNT_DB","211");
INSERT OR REPLACE INTO quicktag(url,subsong,fieldname,value) VALUES("1873881640","-1","LASTFM_PLAYCOUNT_DB","201");


i'm running the sqlite3 like this...

Code: [Select]
sqlite3 customdb_sqlite.db <test.sql


my library is embarrassingly small - just 1600 odd tracks. now get this.

windows 7 x64, e5200 dual core @ 3.4ghz, 4gb ram
3 minutes 40 seconds 

windows xp sp3 in VMWARE on the above host, single core assigned, 512mb ram
18 seconds

WTF? 

EDIT: i've put the files into a zip. it's totally self contained and doesn't require foobar. can anybody test this on their pc. just extract contents into it's own folder and run the batch file.

http://cid-649d3bfeaf541fbb.skydrive.live..../foobar/sql.zip (http://cid-649d3bfeaf541fbb.skydrive.live.com/self.aspx/.Public/foobar/sql.zip)

it shows a start and finish time. you just need to calculate how long it took.
Title: foo_customdb: Custom Database
Post by: fbuser on 2010-04-24 13:48:37
About 15 seconds here with Athon 3200+, 2.0 Ghz, WinXP SP3, but 0.170 seconds by changing the script a little bit:

Code: [Select]
BEGIN TRANSACTION;
INSERT ...
INSERT ...
...
COMMIT;

I don't know why it takes so long for windows 7, but putting the insert statements into one transaction, increases the speed dramatically. This is a known behaviour of SQLite.
Title: foo_customdb: Custom Database
Post by: marc2003 on 2010-04-24 13:55:54
thanks. funnily enough, i've just had that solution given to me on another forum. as you can tell, i know nothing.
Title: foo_customdb: Custom Database
Post by: Jugdish on 2010-06-15 11:11:38
I'm using foo_customdb v0.1.0_beta1 with foobar2000 v1.0.1 and it crashes almost every time when playback advances from one track to the next. Anybody else having these sorts of crashes? Here's an example crash report:
1. Use codebox-tag when posting crash-reports.
2. I think you might want to review your settings. I'm using the latest versions with no problem, but customdb can be quite picky if you didn't configure it properly. If you post your settings, I'll try to test them on my system 

OK, I've discovered that the crash occurs when using foo_customdb in conjunction with foo_playlist_tree_mod (http://www.hydrogenaudio.org/forums/index.php?showtopic=64623). I have defined a foo_customdb field called RATING. Then, with foo_playlist_tree_mod, I have created the following query:

Source: @database
Criteria: %rating% GREATER -1

If you refresh this query, about 1 in 3 times foobar will crash. I have spoken to the author of foo_playlist_tree_mod and he says the fault lies within foo_customdb according to the crash report (below):
Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h,  address: 01A01945h
Access violation, operation: read, address:  00000000h
Last win32 error: 2

Call path:
entry=>app_mainloop=>titleformat_object::run

Code  bytes (01A01945h):
01A01905h:  C7 06 14 59 A8 01 89 75 F0 89 46 04  89 46 08 89
01A01915h:  46 0C FF 75 0C 89 45 FC FF 75 08 89 46 10 E8  7E
01A01925h:  00 00 00 8B 4D F4 8B C6 5E 64 89 0D 00 00 00 00
01A01935h:    C9 C2 08 00 33 C0 39 44 24 08 76 11 8B 4C 24 04
01A01945h:  80 3C  08 00 74 07 40 3B 44 24 08 72 EF C3 E9 E1
01A01955h:  FF FF FF 56 8B  74 24 10 85 F6 76 13 8B 4C 24 08
01A01965h:  8B 44 24 0C 2B C1 8A 14  08 88 11 41 4E 75 F7 5E
01A01975h:  C3 56 57 8B 7C 24 10 8D 47 01 50  8B F1 E8 BB 01

Stack (0012EF4Ch):
0012EF2Ch:  7750051A  0158F7E0 0158F7E0 77DDEDF1
0012EF3Ch:  00000000 0158F800 00000000  00000000
0012EF4Ch:  01A015DB 00000000 FFFFFFFF 01A9A3A0
0012EF5Ch:    01A06C9E 01AB4398 01A1FA61 01AB4398
0012EF6Ch:  01A0157E 0012F034  01A84248 FFFFFFFF
0012EF7Ch:  0012F040 01A5DE6A 00000000 FFFFFFFF
0012EF8Ch:    6E4136DD FFFFFFFE 01AB2660 02CFA598
0012EF9Ch:  01AB2660 7C91B24B  0001041C 01AB5730
0012EFACh:  0012EF08 0001F0D0 0012EFF4 7C900030
0012EFBCh:    7C910060 FFFFFFFF 7C91005D 01A70146
0012EFCCh:  01AB0000 00000000  01A70165 6E413699
0012EFDCh:  00000000 0012F070 00000008 0012F08C
0012EFECh:    0012EFD8 00407B87 0012F080 00000000
0012EFFCh:  01A858DC 01AB4428  00000002 00000002
0012F00Ch:  00000001 01A858DC 01AB7BC8 0000005F
0012F01Ch:    00000080 0000005E 00000064 01AB7C88
0012F02Ch:  01A9A3A0 01474F3F  0012F080 01A833E3
0012F03Ch:  00000002 0012F08C 01A5E229 00000008
0012F04Ch:    02D01110 0012F06C 6E413611 0012F068
0012F05Ch:  0012F04C 01A9A3A0  01A9A394 0012F04C

Registers:
EAX: 00000000, EBX: 00000008,  ECX: 00000000, EDX: 01A01574
ESI: 0012F06C, EDI: 0012F0D0, EBP:  0012EF7C, ESP: 0012EF4C

Crash location:
Module: foo_customdb
Offset:  1945h

Loaded modules:
foobar2000                      loaded  at 00400000h - 005BA000h
ntdll                            loaded at  7C900000h - 7C9B2000h
kernel32                        loaded at  7C800000h - 7C8F6000h
COMCTL32                        loaded at  773D0000h - 774D3000h
msvcrt                          loaded at  77C10000h - 77C68000h
ADVAPI32                        loaded at  77DD0000h - 77E6B000h
RPCRT4                          loaded at  77E70000h - 77F02000h
Secur32                          loaded at  77FE0000h - 77FF1000h
GDI32                            loaded at  77F10000h - 77F59000h
USER32                          loaded at  7E410000h - 7E4A1000h
SHLWAPI                          loaded at  77F60000h - 77FD6000h
DSOUND                          loaded at  73F10000h - 73F6C000h
ole32                            loaded at  774E0000h - 7761D000h
VERSION                          loaded at  77C00000h - 77C08000h
WINMM                            loaded at  76B40000h - 76B6D000h
UxTheme                          loaded at  5AD70000h - 5ADA8000h
SHELL32                          loaded at  7C9C0000h - 7D1D7000h
shared                          loaded at  10000000h - 1002B000h
imagehlp                        loaded at  76C90000h - 76CB8000h
dbghelp                          loaded at  59A60000h - 59B01000h
COMDLG32                        loaded at  763B0000h - 763F9000h
IMM32                            loaded at  76390000h - 763AD000h
LPK                              loaded at  629C0000h - 629C9000h
USP10                            loaded at  74D90000h - 74DFB000h
PowerMenuHook                    loaded at  003A0000h - 003B3000h
WINTRUST                        loaded at  76C30000h - 76C5E000h
CRYPT32                          loaded at  77A80000h - 77B15000h
MSASN1                          loaded at  77B20000h - 77B32000h
wdmaud                          loaded at  72D20000h - 72D29000h
msacm32                          loaded at  72D10000h - 72D18000h
MSACM32                          loaded at  77BE0000h - 77BF5000h
midimap                          loaded at  77BD0000h - 77BD7000h
msctfime                        loaded at  755C0000h - 755EE000h
foo_cdda                        loaded at  00AF0000h - 00B3E000h
foo_input_std                    loaded at  00F40000h - 0108E000h
foo_dop                          loaded at  01090000h - 0123C000h
SETUPAPI                        loaded at  77920000h - 77A13000h
gdiplus                          loaded at  4EC50000h - 4EDFB000h
WS2_32                          loaded at  71AB0000h - 71AC7000h
WS2HELP                          loaded at  71AA0000h - 71AA8000h
QUARTZ                          loaded at  74810000h - 7497E000h
OLEAUT32                        loaded at  77120000h - 771AB000h
foo_ui_std                      loaded at  01290000h - 0139E000h
MSIMG32                          loaded at  76380000h - 76385000h
foo_rgscan                      loaded at  013C0000h - 0140F000h
foo_jesus                        loaded at  01450000h - 01477000h
foo_playlist_tree_mod            loaded at  01480000h - 01500000h
libmzsch360_000                  loaded at  10400000h - 105D0000h
WSOCK32                          loaded at  71AD0000h - 71AD9000h
libmzgc360_000                  loaded at  01520000h - 015C4000h
foo_audioscrobbler              loaded at  01610000h - 01643000h
foo_dsp_std                      loaded at  01670000h - 016B9000h
foo_albumlist                    loaded at  016E0000h - 0173C000h
foo_skip                        loaded at  01760000h - 01781000h
foo_converter                    loaded at  017B0000h - 01821000h
foo_ui_columns                  loaded at  01850000h - 019DB000h
foo_customdb                    loaded at  01A00000h - 01AA5000h
foo_fileops                      loaded at  01AC0000h - 01B08000h
CLBCATQ                          loaded at  76FD0000h - 7704F000h
COMRes                          loaded at  77050000h - 77115000h
CFNetwork                        loaded at  05500000h - 05599000h
WININET                          loaded at  3D930000h - 3DA16000h
Normaliz                        loaded at  021B0000h - 021B9000h
urlmon                          loaded at  78130000h - 78263000h
iertutil                        loaded at  3DFD0000h - 3E1B8000h
CoreFoundation                  loaded at  055A0000h - 0566A000h
MSVCR80                          loaded at  056C0000h - 0575B000h
pthreadVC2                      loaded at  021D0000h - 021E0000h
objc                            loaded at  05860000h - 0587C000h
MSVCP80                          loaded at  7C420000h - 7C4A7000h
icuin40                          loaded at  05980000h - 05A7D000h
icuuc40                          loaded at  05D20000h - 05E01000h
icudt40                          loaded at  4AD00000h - 4BA5B000h
ASL                              loaded at  05E60000h - 05E70000h
SQLite3                          loaded at  05E80000h - 05EE3000h
zlib1                            loaded at  05F00000h - 05F13000h
iphlpapi                        loaded at  76D60000h - 76D79000h
iTunesMobileDevice              loaded at  062D0000h - 063E9000h
mswsock                          loaded at  71A50000h - 71A8F000h
hnetcfg                          loaded at  662B0000h - 66308000h
wshtcpip                        loaded at  71A90000h - 71A98000h

Stack dump analysis:
Address: 01A015DBh  (foo_customdb+15DBh)
Address: 01A9A3A0h (foo_customdb+9A3A0h)
Address:  01A06C9Eh (foo_customdb+6C9Eh)
Address: 01A1FA61h  (foo_customdb+1FA61h)
Address: 01A0157Eh (foo_customdb+157Eh)
Address:  01A84248h (foo_customdb+84248h)
Address: 01A5DE6Ah  (foo_customdb+5DE6Ah)
Address: 7C91B24Bh (ntdll+1B24Bh), symbol:  "RtlpWaitForCriticalSection" (+8Ch)
Address: 7C900030h (ntdll+30h)
Address:  7C910060h (ntdll+10060h), symbol: "RtlFreeHeap" (+133h)
Address:  7C91005Dh (ntdll+1005Dh), symbol: "RtlFreeHeap" (+130h)
Address:  01A70146h (foo_customdb+70146h)
Address: 01A70165h  (foo_customdb+70165h)
Address: 00407B87h (foobar2000+7B87h)
Address:  01A858DCh (foo_customdb+858DCh)
Address: 01A858DCh  (foo_customdb+858DCh)
Address: 01A9A3A0h (foo_customdb+9A3A0h)
Address:  01474F3Fh (foo_jesus+24F3Fh)
Address: 01A833E3h  (foo_customdb+833E3h)
Address: 01A5E229h (foo_customdb+5E229h)
Address:  01A9A3A0h (foo_customdb+9A3A0h)
Address: 01A9A394h  (foo_customdb+9A394h)
Address: 01A858DCh (foo_customdb+858DCh)
Address:  01A83409h (foo_customdb+83409h)
Address: 0047510Eh  (foobar2000+7510Eh)
Address: 0052CD18h (foobar2000+12CD18h)
Address:  00474FC9h (foobar2000+74FC9h)
Address: 01A9A3A0h  (foo_customdb+9A3A0h)
Address: 7C9101DBh (ntdll+101DBh), symbol:  "RtlAllocateHeap" (+117h)
Address: 7C9100C4h (ntdll+100C4h), symbol:  "RtlAllocateHeap" (+0h)
Address: 0052F808h (foobar2000+12F808h)
Address:  004752DEh (foobar2000+752DEh)
Address: 004749D6h (foobar2000+749D6h)
Address:  00550C34h (foobar2000+150C34h)
Address: 004C84D5h  (foobar2000+C84D5h)
Address: 0057A960h (foobar2000+17A960h)
Address:  00554FD4h (foobar2000+154FD4h)
Address: 0057A960h  (foobar2000+17A960h)
Address: 004C978Dh (foobar2000+C978Dh)
Address:  0057A960h (foobar2000+17A960h)
Address: 0052D088h  (foobar2000+12D088h)
Address: 004C9710h (foobar2000+C9710h)
Address:  0057A960h (foobar2000+17A960h)
Address: 00559FD0h  (foobar2000+159FD0h)
Address: 005331D9h (foobar2000+1331D9h)
Address:  004754CAh (foobar2000+754CAh)
Address: 7C810687h (kernel32+10687h),  symbol: "CreateRemoteThread" (+1BBh)
Address: 00550C34h  (foobar2000+150C34h)
Address: 00550C2Ch (foobar2000+150C2Ch)
Address:  0057A980h (foobar2000+17A980h)
Address: 00550D3Ch  (foobar2000+150D3Ch)
Address: 00559FD0h (foobar2000+159FD0h)
Address:  7C910222h (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address:  7C90E920h (ntdll+E920h), symbol: "strchr" (+113h)
Address: 7C910222h  (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address: 7C9101DBh  (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 7C9100C4h  (ntdll+100C4h), symbol: "RtlAllocateHeap" (+0h)
Address: 7C90E920h  (ntdll+E920h), symbol: "strchr" (+113h)
Address: 7C910060h  (ntdll+10060h), symbol: "RtlFreeHeap" (+133h)
Address: 0044E580h  (foobar2000+4E580h)
Address: 00517311h (foobar2000+117311h)
Address:  7C8106F9h (kernel32+106F9h), symbol: "CreateThread" (+22h)
Address:  7C910222h (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address:  7C90E920h (ntdll+E920h), symbol: "strchr" (+113h)
Address: 7C910228h  (ntdll+10228h), symbol: "RtlAllocateHeap" (+164h)
Address: 7C910222h  (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address: 7C91019Bh  (ntdll+1019Bh), symbol: "RtlAllocateHeap" (+D7h)
Address: 7C9101DBh  (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 7C9100C4h  (ntdll+100C4h), symbol: "RtlAllocateHeap" (+0h)
Address: 004C9584h  (foobar2000+C9584h)
Address: 7C910222h (ntdll+10222h), symbol:  "RtlAllocateHeap" (+15Eh)
Address: 7C91019Bh (ntdll+1019Bh), symbol:  "RtlAllocateHeap" (+D7h)
Address: 7C9101DBh (ntdll+101DBh), symbol:  "RtlAllocateHeap" (+117h)
Address: 7C9100C4h (ntdll+100C4h), symbol:  "RtlAllocateHeap" (+0h)
Address: 00531BABh (foobar2000+131BABh)
Address:  005304ECh (foobar2000+1304ECh)
Address: 004C9687h  (foobar2000+C9687h)
Address: 7C9100B8h (ntdll+100B8h), symbol:  "RtlFreeHeap" (+18Bh)
Address: 7C910041h (ntdll+10041h), symbol:  "RtlFreeHeap" (+114h)
Address: 7C91005Dh (ntdll+1005Dh), symbol:  "RtlFreeHeap" (+130h)
Address: 00534481h (foobar2000+134481h)
Address:  004B71FDh (foobar2000+B71FDh)
Address: 7C90E920h (ntdll+E920h),  symbol: "strchr" (+113h)
Address: 7C910060h (ntdll+10060h), symbol:  "RtlFreeHeap" (+133h)
Address: 7C91005Dh (ntdll+1005Dh), symbol:  "RtlFreeHeap" (+130h)
Address: 00517311h (foobar2000+117311h)
Address:  00517330h (foobar2000+117330h)
Address: 004BB599h  (foobar2000+BB599h)
Address: 0051B0F0h (foobar2000+11B0F0h)
Address:  004ED4EDh (foobar2000+ED4EDh)
Address: 7C91005Dh (ntdll+1005Dh),  symbol: "RtlFreeHeap" (+130h)
Address: 00517311h (foobar2000+117311h)
Address:  00517330h (foobar2000+117330h)
Address: 7C90DF5Ah (ntdll+DF5Ah),  symbol: "ZwWaitForSingleObject" (+Ch)
Address: 7C91B24Bh  (ntdll+1B24Bh), symbol: "RtlpWaitForCriticalSection" (+8Ch)
Address:  00517330h (foobar2000+117330h)
Address: 0058888Dh  (foobar2000+18888Dh)
Address: 7C90DF5Ah (ntdll+DF5Ah), symbol:  "ZwWaitForSingleObject" (+Ch)
Address: 7C91B24Bh (ntdll+1B24Bh),  symbol: "RtlpWaitForCriticalSection" (+8Ch)
Address: 7C90DC2Ah  (ntdll+DC2Ah), symbol: "ZwSetEventBoostPriority" (+Ch)
Address:  7C91B2A9h (ntdll+1B2A9h), symbol: "RtlpUnWaitCriticalSection" (+22h)
Address:  7C901046h (ntdll+1046h), symbol: "RtlEnterCriticalSection" (+46h)
Address:  0057D7C4h (foobar2000+17D7C4h)
Address: 00474F3Fh  (foobar2000+74F3Fh)
Address: 0057D7C4h (foobar2000+17D7C4h)
Address:  0053814Eh (foobar2000+13814Eh)
Address: 00475323h  (foobar2000+75323h)
Address: 004B72A2h (foobar2000+B72A2h)
Address:  004B9277h (foobar2000+B9277h)
Address: 0052C090h  (foobar2000+12C090h)
Address: 004B9804h (foobar2000+B9804h)
Address:  0148AF80h (foo_playlist_tree_mod+AF80h)
Address: 00579684h  (foobar2000+179684h)
Address: 0148AF80h (foo_playlist_tree_mod+AF80h)
Address:  014D34E0h (foo_playlist_tree_mod+534E0h)
Address: 005305EAh  (foobar2000+1305EAh)
Address: 004B951Eh (foobar2000+B951Eh)
Address:  0054B958h (foobar2000+14B958h)
Address: 01488937h  (foo_playlist_tree_mod+8937h)
Address: 0148AF80h  (foo_playlist_tree_mod+AF80h)
Address: 0057A724h (foobar2000+17A724h)
Address:  0112F7CCh (foo_dop+9F7CCh)
Address: 01494D04h  (foo_playlist_tree_mod+14D04h)
Address: 01490D23h  (foo_playlist_tree_mod+10D23h)
Address: 0057A724h  (foobar2000+17A724h)
Address: 0149EB5Fh  (foo_playlist_tree_mod+1EB5Fh)
Address: 0149DD0Fh  (foo_playlist_tree_mod+1DD0Fh)
Address: 014DC73Ch  (foo_playlist_tree_mod+5C73Ch)
Address: 014DC5C8h  (foo_playlist_tree_mod+5C5C8h)
Address: 014DC5C8h  (foo_playlist_tree_mod+5C5C8h)
Address: 014DC5C8h  (foo_playlist_tree_mod+5C5C8h)
Address: 014DC5C8h  (foo_playlist_tree_mod+5C5C8h)
Address: 014DC5C8h  (foo_playlist_tree_mod+5C5C8h)
Address: 014D4DD8h  (foo_playlist_tree_mod+54DD8h)
Address: 01489941h  (foo_playlist_tree_mod+9941h)
Address: 7E428EABh (USER32+18EABh),  symbol: "DefWindowProcW" (+18Bh)
Address: 7E44048Fh (USER32+3048Fh),  symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E428EB0h  (USER32+18EB0h), symbol: "DefWindowProcW" (+190h)
Address: 7E428EABh  (USER32+18EABh), symbol: "DefWindowProcW" (+18Bh)
Address: 7E428EECh  (USER32+18EECh), symbol: "DefWindowProcW" (+1CCh)
Address: 014DC73Ch  (foo_playlist_tree_mod+5C73Ch)
Address: 7C90E473h (ntdll+E473h),  symbol: "KiUserCallbackDispatcher" (+13h)
Address: 0148AF80h  (foo_playlist_tree_mod+AF80h)
Address: 7E428E53h (USER32+18E53h),  symbol: "DefWindowProcW" (+133h)
Address: 7E4194BEh (USER32+94BEh),  symbol: "GetWindowLongA" (+61h)
Address: 7E42C174h (USER32+1C174h),  symbol: "SetPropW" (+BBh)
Address: 014DC5C8h  (foo_playlist_tree_mod+5C5C8h)
Address: 014DC5C8h  (foo_playlist_tree_mod+5C5C8h)
Address: 014D4E7Eh  (foo_playlist_tree_mod+54E7Eh)
Address: 014CC1FBh  (foo_playlist_tree_mod+4C1FBh)
Address: 7E42B326h (USER32+1B326h),  symbol: "MoveWindow" (+88h)
Address: 0148AF80h  (foo_playlist_tree_mod+AF80h)
Address: 7E44048Fh (USER32+3048Fh),  symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E42B330h  (USER32+1B330h), symbol: "MoveWindow" (+92h)
Address: 7E42B326h  (USER32+1B326h), symbol: "MoveWindow" (+88h)
Address: 7E4278D0h  (USER32+178D0h), symbol: "GetWindowTextLengthW" (+9Ah)
Address:  7E4278E0h (USER32+178E0h), symbol: "GetWindowTextLengthW" (+AAh)
Address:  7C90E473h (ntdll+E473h), symbol: "KiUserCallbackDispatcher" (+13h)
Address:  018B3870h (foo_ui_columns+63870h)
Address: 7E42B341h  (USER32+1B341h), symbol: "MoveWindow" (+A3h)
Address: 7E46CF6Eh  (USER32+5CF6Eh), symbol: "TrackPopupMenuEx" (+Ch)
Address: 7E465339h  (USER32+55339h), symbol: "TrackPopupMenu" (+1Bh)
Address: 014D26F6h  (foo_playlist_tree_mod+526F6h)
Address: 014CCC74h  (foo_playlist_tree_mod+4CC74h)
Address: 01484194h  (foo_playlist_tree_mod+4194h)
Address: 014CC360h  (foo_playlist_tree_mod+4C360h)
Address: 7E44048Fh (USER32+3048Fh),  symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E41882Ah  (USER32+882Ah), symbol: "GetDC" (+163h)
Address: 7E428EA0h  (USER32+18EA0h), symbol: "DefWindowProcW" (+180h)
Address: 0148AF80h  (foo_playlist_tree_mod+AF80h)
Address: 7E428EABh (USER32+18EABh),  symbol: "DefWindowProcW" (+18Bh)
Address: 003A1860h  (PowerMenuHook+1860h)
Address: 7E44048Fh (USER32+3048Fh), symbol:  "DeregisterShellHookWindow" (+1CFh)
Address: 7E428EB0h  (USER32+18EB0h), symbol: "DefWindowProcW" (+190h)
Address: 7E428EABh  (USER32+18EABh), symbol: "DefWindowProcW" (+18Bh)
Address: 7E428EECh  (USER32+18EECh), symbol: "DefWindowProcW" (+1CCh)
Address: 7E428EFCh  (USER32+18EFCh), symbol: "DefWindowProcW" (+1DCh)
Address: 014D26F6h  (foo_playlist_tree_mod+526F6h)
Address: 014CCD4Ch  (foo_playlist_tree_mod+4CD4Ch)
Address: 014F06F4h  (foo_playlist_tree_mod+706F4h)
Address: 01496F3Fh  (foo_playlist_tree_mod+16F3Fh)
Address: 014F06F4h  (foo_playlist_tree_mod+706F4h)
Address: 01494DAFh  (foo_playlist_tree_mod+14DAFh)
Address: 014F06F4h  (foo_playlist_tree_mod+706F4h)
Address: 01494E4Dh  (foo_playlist_tree_mod+14E4Dh)
Address: 014DBCE4h  (foo_playlist_tree_mod+5BCE4h)
Address: 014D276Dh  (foo_playlist_tree_mod+5276Dh)
Address: 0148B278h  (foo_playlist_tree_mod+B278h)
Address: 014D9410h  (foo_playlist_tree_mod+59410h)
Address: 014D9410h  (foo_playlist_tree_mod+59410h)
Address: 7E4278E0h (USER32+178E0h),  symbol: "GetWindowTextLengthW" (+AAh)
Address: 003A1420h  (PowerMenuHook+1420h)
Address: 7E4318D1h (USER32+218D1h), symbol:  "UnhookWinEvent" (+25h)
Address: 7E43E1ADh (USER32+2E1ADh), symbol:  "User32InitializeImmEntryTable" (+E18h)
Address: 7E43E18Ah  (USER32+2E18Ah), symbol: "User32InitializeImmEntryTable" (+DF5h)
Address:  7E41970Eh (USER32+970Eh), symbol: "IsChild" (+0h)
Address: 014D4AE8h  (foo_playlist_tree_mod+54AE8h)
Address: 7E418734h (USER32+8734h),  symbol: "GetDC" (+6Dh)
Address: 0148AF80h  (foo_playlist_tree_mod+AF80h)
Address: 0148AF80h  (foo_playlist_tree_mod+AF80h)
Address: 7E418816h (USER32+8816h),  symbol: "GetDC" (+14Fh)
Address: 0148AF80h  (foo_playlist_tree_mod+AF80h)
Address: 7E44048Fh (USER32+3048Fh),  symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E44048Fh  (USER32+3048Fh), symbol: "DeregisterShellHookWindow" (+1CFh)
Address:  7E418830h (USER32+8830h), symbol: "GetDC" (+169h)
Address: 7E4189CDh  (USER32+89CDh), symbol: "GetWindowLongW" (+127h)
Address: 0148AF80h  (foo_playlist_tree_mod+AF80h)
Address: 7E4191C6h (USER32+91C6h),  symbol: "GetMessageW" (+0h)
Address: 7C90FE30h (ntdll+FE30h), symbol:  "RtlRestoreLastWin32Error" (+0h)
Address: 7E44048Fh (USER32+3048Fh),  symbol: "DeregisterShellHookWindow" (+1CFh)
Address: 7E4189F0h  (USER32+89F0h), symbol: "GetWindowLongW" (+14Ah)
Address: 7E418A10h  (USER32+8A10h), symbol: "DispatchMessageW" (+Fh)
Address: 7E41929Bh  (USER32+929Bh), symbol: "PeekMessageW" (+0h)
Address: 004646DBh  (foobar2000+646DBh)
Address: 004654C4h (foobar2000+654C4h)
Address:  0054F5E8h (foobar2000+14F5E8h)
Address: 0054F5E8h  (foobar2000+14F5E8h)
Address: 0055A2ACh (foobar2000+15A2ACh)
Address:  00400000h (foobar2000+0h)
Address: 0055A290h (foobar2000+15A290h)
Address:  7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address:  0051F52Ch (foobar2000+11F52Ch)
Address: 0051B0F0h  (foobar2000+11B0F0h)
Address: 0051F52Ch (foobar2000+11F52Ch)
Address:  0051D514h (foobar2000+11D514h)
Address: 7C91027Fh (ntdll+1027Fh),  symbol: "RtlAllocateHeap" (+1BBh)
Address: 00517E02h  (foobar2000+117E02h)
Address: 10002778h (shared+2778h), symbol:  "uPrintCrashInfo_OnEvent" (+B0h)
Address: 0054F238h  (foobar2000+14F238h)
Address: 00537D77h (foobar2000+137D77h)
Address:  0054F238h (foobar2000+14F238h)
Address: 00465707h  (foobar2000+65707h)
Address: 00400000h (foobar2000+0h)
Address:  00517B01h (foobar2000+117B01h)
Address: 005420B8h  (foobar2000+1420B8h)
Address: 0057F090h (foobar2000+17F090h)
Address:  0053FCE0h (foobar2000+13FCE0h)
Address: 004157A6h  (foobar2000+157A6h)
Address: 0051B0F0h (foobar2000+11B0F0h)
Address:  00517B01h (foobar2000+117B01h)
Address: 00517B15h  (foobar2000+117B15h)
Address: 0053FCE0h (foobar2000+13FCE0h)
Address:  0053817Dh (foobar2000+13817Dh)
Address: 00518F46h  (foobar2000+118F46h)
Address: 00400000h (foobar2000+0h)

Environment:
App:  foobar2000 v1.0.1
OS: Windows 5.1.2600 Service Pack 3 x86
CPU:  Intel® Pentium® D CPU 3.20GHz, features: MMX SSE SSE2 SSE3
Audio: HTO  STRIKER 7.1 Audio Device
UI: Columns UI 0.3.8.5

Components:
Core  (2010-03-06 13:44:16)
    foobar2000 core 1.0.1
foo_albumlist.dll  (2010-03-06 13:42:18)
    Album List 4.4
foo_audioscrobbler.dll  (2010-02-07 16:16:48)
    Audioscrobbler 1.4.6
foo_cdda.dll  (2010-03-06 13:42:14)
    CD Audio Decoder 3.0
foo_converter.dll  (2010-03-06 13:42:12)
    Converter 1.4
foo_customdb.dll  (2010-03-04 13:10:54)
    Custom Database 0.1.0_beta1
foo_dop.dll  (2010-04-02 18:09:34)
    iPod manager 0.6.7.4
foo_dsp_std.dll  (2010-03-06 13:42:26)
    Standard DSP Array 1.0
foo_fileops.dll  (2010-03-06 13:41:12)
    File Operations 2.1.2
foo_input_std.dll  (2010-03-06 13:42:00)
    Standard Input Array 1.0
foo_jesus.dll  (2010-01-03 13:41:18)
    Autosave & Autobackup 8
foo_playlist_tree_mod.dll  (2010-01-09 15:37:50)
    Playlist Tree Mod Panel 3.0.6.3 Scheme  [Jan  9 2010 - 15:37:18]
foo_rgscan.dll (2010-03-06 13:41:56)
      ReplayGain Scanner 2.0.9
foo_skip.dll (2010-01-16 15:43:34)
      Skip Track 0.7
foo_ui_columns.dll (2010-03-21 00:43:13)
      Columns UI 0.3.8.5
foo_ui_std.dll (2010-03-06 13:42:34)
      Default User Interface 0.9.5

Recent events:
Custom Database:  Initialize
Custom Database: table quicktag already exists (1)
Custom  Database: table database_version already exists (1)
Custom Database:  index url_idx already exists (1)
Custom Database: Completed
Startup  time : 0:07.007730
iPod manager: Listening for Apple mobile  devices.
Title: foo_customdb: Custom Database
Post by: foofrank on 2010-09-21 22:42:02
From reading this forum, it looks like this component may be updated anymore, but I thought I'd ask anyway:

Is there anyway to specify the name of the database file.  The reason I'd like to do this is so that the SQL DB would be compatible with foo_playback_custom, which seems to expect custominfo_sqlite.db, not customdb_sqlite.db .

thanks in advance.
Title: foo_customdb: Custom Database
Post by: odyssey on 2010-09-22 14:14:11
The component work.

You should NOT try to force it to use a database file it did not create itself.

Why would you even want to do that? As far as I'm concerned, customdb replaces the outdated custominfo.

If you have tags in custominfo db, you may be able to transfer them using the method I mentioned, however I have not tried this, as I never used the custominfo component.
Title: foo_customdb: Custom Database
Post by: foofrank on 2010-09-22 18:55:28
I didn't say that the customdb component did not work.  I guess that I wasn't unclear.  The foo_playback_custom component uses the db from foo_customINFO, which is customINFO_sqlite.db.  What I was wondering is if foo_customDB can use or create a DB with a different name (in this case, customINFO_sqlite.db).  The alternative is to get foo_playback_custom component to use customDB_sqlite.db.

I hope that this clears up any confusion, and thanks for your response.

The component work.

You should NOT try to force it to use a database file it did not create itself.

Why would you even want to do that? As far as I'm concerned, customdb replaces the outdated custominfo.

If you have tags in custominfo db, you may be able to transfer them using the method I mentioned, however I have not tried this, as I never used the custominfo component.

Title: foo_customdb: Custom Database
Post by: marc2003 on 2010-09-23 11:05:29
maybe you could use an sqlite manager type program to migrate the data across from one database to another? it's quite likely the database table structure created by each component is completely different but you might be able to migrate data if you mess around.
Title: foo_customdb: Custom Database
Post by: Hitchhiker427 on 2010-09-23 19:15:10
I didn't say that the customdb component did not work.  I guess that I wasn't unclear.  The foo_playback_custom component uses the db from foo_customINFO, which is customINFO_sqlite.db.  What I was wondering is if foo_customDB can use or create a DB with a different name (in this case, customINFO_sqlite.db).  The alternative is to get foo_playback_custom component to use customDB_sqlite.db.


Out of curiosity, if you rename customdb_sqlite.db to custominfo_sqlite.db, does the foo_playback_custom component play nice with this new file? 

If you can verify that foo_playback_custom is in fact compatible with the database generated by foo_customdb, then you can accomplish your goals by creating an NTFS symbolic link (http://en.wikipedia.org/wiki/NTFS_symbolic_link).  Essentially, you create a custominfo_sqlite.db symlink that points to customdb_sqlite.db.
Title: foo_customdb: Custom Database
Post by: foofrank on 2010-09-26 01:34:44
Thank for the pointer to NTFS symbolic links - I didn't realize that Windows could do that!  Unfortunately, even though I created the symlink to custominfo_sqlite.db, I still get the error messages from foo_playback_custom.

Thanks again for your help.

I didn't say that the customdb component did not work.  I guess that I wasn't unclear.  The foo_playback_custom component uses the db from foo_customINFO, which is customINFO_sqlite.db.  What I was wondering is if foo_customDB can use or create a DB with a different name (in this case, customINFO_sqlite.db).  The alternative is to get foo_playback_custom component to use customDB_sqlite.db.


Out of curiosity, if you rename customdb_sqlite.db to custominfo_sqlite.db, does the foo_playback_custom component play nice with this new file? 

If you can verify that foo_playback_custom is in fact compatible with the database generated by foo_customdb, then you can accomplish your goals by creating an NTFS symbolic link (http://en.wikipedia.org/wiki/NTFS_symbolic_link).  Essentially, you create a custominfo_sqlite.db symlink that points to customdb_sqlite.db.

Title: foo_customdb: Custom Database
Post by: Kamy on 2010-12-14 19:19:03
Hello

I would like to have option for rating songs like:

Journey - Don't Stop Believin' *****
Whitesnake - Is This Love ****
Chris Rea - I Can Hear Your Heartbeat *****

and afair foo_customdb allows such feature, but I don't know how should I set it. My actual config:
(http://img88.imageshack.us/img88/1488/foobarf.th.png) (http://img88.imageshack.us/i/foobarf.png/)
Title: foo_customdb: Custom Database
Post by: tpijag on 2010-12-14 19:23:37
Not sure why you are using customdb, nevertheless, meta$(rating) as your pattern. may work for you.
If that works, here is a bit more info http://www.hydrogenaudio.org/forums/index....c=85583&hl= (http://www.hydrogenaudio.org/forums/index.php?showtopic=85583&hl=)
Title: foo_customdb: Custom Database
Post by: Kamy on 2010-12-15 09:46:56
Thank you for respond. I am using customdb because I don't want to interfere in mp3 files.
I've tried meta$(rating) but then column rating display: meta[UNKNOWN FUNCTION], so either I'm doing something wrong or I'm missing something or something else is wrong.
Title: foo_customdb: Custom Database
Post by: Maximus31 on 2011-05-08 11:44:51
I'm getting error when i search with query: %rating% PRESENT. But this query tested in other foobars and it was valid.
After I tried change value "rating" to "myrate" in database. And then execute query %myrate% PRESENT in foobar and foobar is crashed.
Help me please. I don't know what to do.
if you will need more my settings, i will give it to you.

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 01D71945h
Access violation, operation: read, address: 00000000h

Call path:
titleformat_object::run

Code bytes (01D71945h):
01D71905h:  C7 06 14 59 DF 01 89 75 F0 89 46 04 89 46 08 89
01D71915h:  46 0C FF 75 0C 89 45 FC FF 75 08 89 46 10 E8 7E
01D71925h:  00 00 00 8B 4D F4 8B C6 5E 64 89 0D 00 00 00 00
01D71935h:  C9 C2 08 00 33 C0 39 44 24 08 76 11 8B 4C 24 04
01D71945h:  80 3C 08 00 74 07 40 3B 44 24 08 72 EF C3 E9 E1
01D71955h:  FF FF FF 56 8B 74 24 10 85 F6 76 13 8B 4C 24 08
01D71965h:  8B 44 24 0C 2B C1 8A 14 08 88 11 41 4E 75 F7 5E
01D71975h:  C3 56 57 8B 7C 24 10 8D 47 01 50 8B F1 E8 BB 01

Stack (0837F7B4h):
0837F794h:  0012F7C8 03C779A8 0012F6FC 03C5BA60
0837F7A4h:  0138DA38 00DA0178 7C9101DB 08F30270
0837F7B4h:  01D715DB 00000000 FFFFFFFF 01E0A3A0
0837F7C4h:  01D76C9E 01E22810 01D8FA61 01E22810
0837F7D4h:  01D7157E 0837F89C 01DF4248 FFFFFFFF
0837F7E4h:  0837F8A8 01DCDE6A 00000000 FFFFFFFF
0837F7F4h:  417AEC6B 00000000 01E22660 03324B88
0837F804h:  01E22660 010003E0 0837F7EC 01E25AC0
0837F814h:  00313588 0042A815 0837F7EC 00000001
0837F824h:  7C910060 FFFFFFFF 7C91005D 01DE0146
0837F834h:  0837F848 0040791A 0837F938 03C9663C
0837F844h:  03C96640 0837F87C 00407A15 01DF5A80
0837F854h:  01DF5A80 00000008 0837F8E8 00000000
0837F864h:  01DF58DC 01E29C88 00000003 00000004
0837F874h:  00000002 01DF58DC 04A5D110 00000060
0837F884h:  00000080 0000005F 00000064 01E27E28
0837F894h:  00480AE1 015AAABC 0837F8E8 01DF33E3
0837F8A4h:  00000002 0837F8F4 01DCE229 00000008
0837F8B4h:  03325088 0837F8D4 417AEC37 01E0A3A0
0837F8C4h:  0837F8B4 01E0A3A0 0042DC28 0837F8B4

Registers:
EAX: 00000000, EBX: 00000008, ECX: 00000000, EDX: 01D71574
ESI: 0837F8D4, EDI: 0837F938, EBP: 0837F7E4, ESP: 0837F7B4

Crash location:
Module: foo_customdb
Offset: 1945h

Loaded modules:
foobar2000                      loaded at 00400000h - 005F2000h
ntdll                            loaded at 7C900000h - 7C9B3000h
kernel32                        loaded at 7C800000h - 7C8F8000h
snxhk                            loaded at 64D00000h - 64D31000h
COMCTL32                        loaded at 773C0000h - 774C3000h
msvcrt                          loaded at 77C00000h - 77C58000h
ADVAPI32                        loaded at 77DC0000h - 77E6C000h
RPCRT4                          loaded at 77E70000h - 77F02000h
Secur32                          loaded at 77FE0000h - 77FF1000h
GDI32                            loaded at 77F10000h - 77F59000h
USER32                          loaded at 7E360000h - 7E3F1000h
SHLWAPI                          loaded at 77F60000h - 77FDC000h
DSOUND                          loaded at 73ED0000h - 73F2C000h
ole32                            loaded at 774D0000h - 7760D000h
VERSION                          loaded at 77BF0000h - 77BF8000h
WINMM                            loaded at 76B20000h - 76B4E000h
UxTheme                          loaded at 5B260000h - 5B298000h
SHELL32                          loaded at 7C9C0000h - 7E339000h
zlib1                            loaded at 5A4C0000h - 5A4D4000h
shared                          loaded at 10000000h - 1002B000h
imagehlp                        loaded at 76C80000h - 76CA8000h
dbghelp                          loaded at 59C60000h - 59D01000h
COMDLG32                        loaded at 76380000h - 763C9000h
CRYPT32                          loaded at 77A70000h - 77B06000h
MSASN1                          loaded at 77B10000h - 77B22000h
gdiplus                          loaded at 4EBE0000h - 4ED8B000h
MSCTF                            loaded at 746E0000h - 7472C000h
WINTRUST                        loaded at 76C20000h - 76C4E000h
wdmaud                          loaded at 72CE0000h - 72CE9000h
msacm32                          loaded at 72CD0000h - 72CD8000h
MSACM32                          loaded at 77BD0000h - 77BE5000h
midimap                          loaded at 77BC0000h - 77BC7000h
foo_uie_wsh_panel_mod            loaded at 01030000h - 010F2000h
OLEAUT32                        loaded at 77110000h - 7719B000h
IMM32                            loaded at 76360000h - 7637D000h
Msimg32                          loaded at 76350000h - 76355000h
foo_ui_std                      loaded at 01250000h - 01368000h
foo_uie_biography                loaded at 01390000h - 013E8000h
foo_input_std                    loaded at 01410000h - 01560000h
foo_input_monkey                loaded at 01580000h - 015C9000h
foo_albumlist                    loaded at 015F0000h - 0164D000h
foo_uie_lyrics2                  loaded at 01670000h - 0175E000h
WININET                          loaded at 771A0000h - 77261000h
foo_uie_explorer                loaded at 01780000h - 017BD000h
CLBCATQ                          loaded at 76FC0000h - 7703F000h
COMRes                          loaded at 01840000h - 01915000h
foo_out_wasapi                  loaded at 017F0000h - 01816000h
foo_audioscrobbler              loaded at 01930000h - 01963000h
foo_texttools                    loaded at 01990000h - 019C4000h
foo_utils                        loaded at 019F0000h - 01A34000h
foo_rgscan                      loaded at 01A60000h - 01AAD000h
foo_converter                    loaded at 01AD0000h - 01B4B000h
foo_uie_elplaylist              loaded at 01B70000h - 01BE3000h
foo_run                          loaded at 01C10000h - 01C6F000h
foo_w7shell                      loaded at 01C90000h - 01CCD000h
foo_uie_panel_splitter          loaded at 01CF0000h - 01D49000h
foo_customdb                    loaded at 01D70000h - 01E15000h
foo_unpack_7z                    loaded at 01E30000h - 01E5B000h
foo_ui_columns                  loaded at 01E80000h - 02010000h
urlmon                          loaded at 02020000h - 020C5000h
USP10                            loaded at 75540000h - 755AB000h
foo_freedb2                      loaded at 02100000h - 02140000h
foo_masstag                      loaded at 02190000h - 021E4000h
foo_dsp_std                      loaded at 021F0000h - 02238000h
foo_softplaylists                loaded at 02260000h - 022C8000h
foo_out_asio                    loaded at 022F0000h - 02326000h
foo_uie_graphical_browser        loaded at 02350000h - 023E4000h
foo_quicksearch                  loaded at 02400000h - 02431000h
MSVCP90                          loaded at 78480000h - 7850E000h
MSVCR90                          loaded at 78520000h - 785C3000h
foo_urlencode                    loaded at 02460000h - 02483000h
foo_discogs                      loaded at 024A0000h - 02501000h
foo_input_dts                    loaded at 02530000h - 02593000h
foo_abx                          loaded at 025C0000h - 025F2000h
foo_input_alac                  loaded at 02620000h - 0263D000h
foo_cdda                        loaded at 02660000h - 026AE000h
foo_uie_albumlist                loaded at 026D0000h - 02713000h
foo_lyricsdb                    loaded at 02740000h - 02770000h
foo_unpack                      loaded at 02790000h - 027BE000h
foo_musicbrainz                  loaded at 027E0000h - 0283C000h
WINHTTP                          loaded at 4D550000h - 4D5A9000h
foo_fileops                      loaded at 029C0000h - 02A07000h
SXS                              loaded at 7E690000h - 7E748000h
JScript                          loaded at 75C20000h - 75C9D000h
xpsp2res                        loaded at 04FF0000h - 05317000h
scrrun                          loaded at 73560000h - 7358A000h
wshom                            loaded at 66EC0000h - 66EE1000h
MPR                              loaded at 71B00000h - 71B12000h
mscms                            loaded at 73AF0000h - 73B05000h
WINSPOOL                        loaded at 72FC0000h - 72FE6000h
icm32                            loaded at 58BE0000h - 58C21000h
msxml3                          loaded at 74940000h - 74AA4000h
msxml6                          loaded at 58800000h - 58946000h
SETUPAPI                        loaded at 77910000h - 77A04000h
appHelp                          loaded at 77B30000h - 77B52000h
cscui                            loaded at 08A60000h - 08B09000h
CSCDLL                          loaded at 765D0000h - 765ED000h
USERENV                          loaded at 769A0000h - 76A55000h

Stack dump analysis:
Address: 01D715DBh (foo_customdb+15DBh)
Address: 01E0A3A0h (foo_customdb+9A3A0h)
Address: 01D76C9Eh (foo_customdb+6C9Eh)
Address: 01D8FA61h (foo_customdb+1FA61h)
Address: 01D7157Eh (foo_customdb+157Eh)
Address: 01DF4248h (foo_customdb+84248h)
Address: 01DCDE6Ah (foo_customdb+5DE6Ah)
Address: 0042A815h (foobar2000+2A815h)
Address: 7C910060h (ntdll+10060h), symbol: "RtlFreeHeap" (+133h)
Address: 7C91005Dh (ntdll+1005Dh), symbol: "RtlFreeHeap" (+130h)
Address: 01DE0146h (foo_customdb+70146h)
Address: 0040791Ah (foobar2000+791Ah)
Address: 00407A15h (foobar2000+7A15h)
Address: 01DF5A80h (foo_customdb+85A80h)
Address: 01DF5A80h (foo_customdb+85A80h)
Address: 01DF58DCh (foo_customdb+858DCh)
Address: 01DF58DCh (foo_customdb+858DCh)
Address: 00480AE1h (foobar2000+80AE1h)
Address: 015AAABCh (foo_input_monkey+2AABCh)
Address: 01DF33E3h (foo_customdb+833E3h)
Address: 01DCE229h (foo_customdb+5E229h)
Address: 01E0A3A0h (foo_customdb+9A3A0h)
Address: 01E0A3A0h (foo_customdb+9A3A0h)
Address: 0042DC28h (foobar2000+2DC28h)
Address: 01DF58DCh (foo_customdb+858DCh)
Address: 01DF3409h (foo_customdb+83409h)
Address: 00480CDCh (foobar2000+80CDCh)
Address: 0054CD38h (foobar2000+14CD38h)
Address: 00480BD6h (foobar2000+80BD6h)
Address: 01E0A3A0h (foo_customdb+9A3A0h)
Address: 7C910222h (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address: 0054FDF8h (foobar2000+14FDF8h)
Address: 00480EBBh (foobar2000+80EBBh)
Address: 0047EAB4h (foobar2000+7EAB4h)
Address: 004E51A2h (foobar2000+E51A2h)
Address: 0057B23Ch (foobar2000+17B23Ch)
Address: 005A7B30h (foobar2000+1A7B30h)
Address: 0054B6E9h (foobar2000+14B6E9h)
Address: 004DE3B1h (foobar2000+DE3B1h)
Address: 0054CED8h (foobar2000+14CED8h)
Address: 004DE8F5h (foobar2000+DE8F5h)
Address: 005A7B30h (foobar2000+1A7B30h)
Address: 004E5651h (foobar2000+E5651h)
Address: 004E6406h (foobar2000+E6406h)
Address: 005A7B30h (foobar2000+1A7B30h)
Address: 0054D1D1h (foobar2000+14D1D1h)
Address: 00481176h (foobar2000+81176h)
Address: 7C80262Ch (kernel32+262Ch), symbol: "WaitForSingleObjectEx" (+DCh)
Address: 7C97E178h (ntdll+7E178h)
Address: 00576688h (foobar2000+176688h)
Address: 00576680h (foobar2000+176680h)
Address: 005A7B50h (foobar2000+1A7B50h)
Address: 005767D4h (foobar2000+1767D4h)
Address: 01CBF47Fh (foo_w7shell+2F47Fh)
Address: 7C91343Dh (ntdll+1343Dh), symbol: "RtlDecodePointer" (+0h)
Address: 7C91343Dh (ntdll+1343Dh), symbol: "RtlDecodePointer" (+0h)
Address: 7C917719h (ntdll+17719h), symbol: "RtlCompareUnicodeString" (+461h)
Address: 7C80E6CBh (kernel32+E6CBh), symbol: "GetModuleHandleW" (+1EEh)
Address: 0200DBE4h (foo_ui_columns+18DBE4h)
Address: 7C90E920h (ntdll+E920h), symbol: "strchr" (+113h)
Address: 7C9101E0h (ntdll+101E0h), symbol: "RtlAllocateHeap" (+11Ch)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 5885AF24h (msxml6+5AF24h), symbol: "DllGetClassObject" (+4A51Bh)
Address: 5885AF35h (msxml6+5AF35h), symbol: "DllGetClassObject" (+4A52Ch)
Address: 749617B0h (msxml3+217B0h), symbol: "DllMain" (+569Ah)
Address: 5886E14Fh (msxml6+6E14Fh), symbol: "DllCanUnloadNow" (+49Eh)
Address: 5885AF38h (msxml6+5AF38h), symbol: "DllGetClassObject" (+4A52Fh)
Address: 5885AF35h (msxml6+5AF35h), symbol: "DllGetClassObject" (+4A52Ch)
Address: 5885AF5Dh (msxml6+5AF5Dh), symbol: "DllGetClassObject" (+4A554h)
Address: 5884AEE4h (msxml6+4AEE4h), symbol: "DllGetClassObject" (+3A4DBh)
Address: 5884AEEBh (msxml6+4AEEBh), symbol: "DllGetClassObject" (+3A4E2h)
Address: 5884AF42h (msxml6+4AF42h), symbol: "DllGetClassObject" (+3A539h)
Address: 765D12B8h (CSCDLL+12B8h), symbol: "Ordinal19" (+12B8h)
Address: 765D0000h (CSCDLL+0h), symbol: "Ordinal19" (+0h)
Address: 7C90118Ah (ntdll+118Ah), symbol: "LdrInitializeThunk" (+24h)
Address: 765D0000h (CSCDLL+0h), symbol: "Ordinal19" (+0h)
Address: 7C91AAF4h (ntdll+1AAF4h), symbol: "CsrNewThread" (+1Ah)
Address: 7C91ABE7h (ntdll+1ABE7h), symbol: "CsrNewThread" (+10Dh)
Address: 7C910222h (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address: 7C90E920h (ntdll+E920h), symbol: "strchr" (+113h)
Address: 7C910228h (ntdll+10228h), symbol: "RtlAllocateHeap" (+164h)
Address: 7C910222h (ntdll+10222h), symbol: "RtlAllocateHeap" (+15Eh)
Address: 7C91019Bh (ntdll+1019Bh), symbol: "RtlAllocateHeap" (+D7h)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 7C91AB30h (ntdll+1AB30h), symbol: "CsrNewThread" (+56h)
Address: 7C91AAD4h (ntdll+1AAD4h), symbol: "RtlUnicodeStringToInteger" (+213h)
Address: 7C90DE9Ah (ntdll+DE9Ah), symbol: "ZwTestAlert" (+Ch)
Address: 7C91AA5Ah (ntdll+1AA5Ah), symbol: "RtlUnicodeStringToInteger" (+199h)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 00580700h (foobar2000+180700h)
Address: 7C90E920h (ntdll+E920h), symbol: "strchr" (+113h)
Address: 7C91AA60h (ntdll+1AA60h), symbol: "RtlUnicodeStringToInteger" (+19Fh)
Address: 7C91AA5Ah (ntdll+1AA5Ah), symbol: "RtlUnicodeStringToInteger" (+199h)
Address: 7C90D06Ah (ntdll+D06Ah), symbol: "NtContinue" (+Ch)
Address: 7C90E45Fh (ntdll+E45Fh), symbol: "KiUserApcDispatcher" (+Fh)
Address: 7C91019Bh (ntdll+1019Bh), symbol: "RtlAllocateHeap" (+D7h)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 004568C0h (foobar2000+568C0h)
Address: 7C8106F9h (kernel32+106F9h), symbol: "CreateThread" (+22h)
Address: 7C8106F9h (kernel32+106F9h), symbol: "CreateThread" (+22h)
Address: 7C8106F9h (kernel32+106F9h), symbol: "CreateThread" (+22h)
Address: 7C8106F9h (kernel32+106F9h), symbol: "CreateThread" (+22h)
Address: 7C8106F9h (kernel32+106F9h), symbol: "CreateThread" (+22h)
Address: 7C90DF5Ah (ntdll+DF5Ah), symbol: "NtWaitForSingleObject" (+Ch)
Address: 7C91AC7Bh (ntdll+1AC7Bh), symbol: "RtlpWaitForCriticalSection" (+8Ch)
Address: 0055AE5Eh (foobar2000+15AE5Eh)
Address: 00539716h (foobar2000+139716h)
Address: 00480EF2h (foobar2000+80EF2h)
Address: 004D1F41h (foobar2000+D1F41h)
Address: 004D1CA8h (foobar2000+D1CA8h)
Address: 004D54C1h (foobar2000+D54C1h)
Address: 7C91019Bh (ntdll+1019Bh), symbol: "RtlAllocateHeap" (+D7h)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 0054B740h (foobar2000+14B740h)
Address: 0045689Ch (foobar2000+5689Ch)
Address: 7C91019Bh (ntdll+1019Bh), symbol: "RtlAllocateHeap" (+D7h)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 0054AC10h (foobar2000+14AC10h)
Address: 004568CBh (foobar2000+568CBh)
Address: 7C80B729h (kernel32+B729h), symbol: "GetModuleFileNameA" (+1BAh)
Address: 7C91019Bh (ntdll+1019Bh), symbol: "RtlAllocateHeap" (+D7h)
Address: 7C9101DBh (ntdll+101DBh), symbol: "RtlAllocateHeap" (+117h)
Address: 7C839AA8h (kernel32+39AA8h), symbol: "ValidateLocale" (+2B0h)
Address: 7C80B730h (kernel32+B730h), symbol: "GetModuleFileNameA" (+1C1h)
Address: 004568C0h (foobar2000+568C0h)
Address: 7C901000h (ntdll+1000h), symbol: "RtlEnterCriticalSection" (+0h)
Address: 7C9010E0h (ntdll+10E0h), symbol: "RtlLeaveCriticalSection" (+0h)
Address: 7C901118h (ntdll+1118h), symbol: "RtlTryEnterCriticalSection" (+0h)
Address: 7C901166h (ntdll+1166h), symbol: "LdrInitializeThunk" (+0h)
Address: 7C901198h (ntdll+1198h), symbol: "RtlActivateActivationContextUnsafeFast" (+0h)
Address: 7C9011DDh (ntdll+11DDh), symbol: "RtlDeactivateActivationContextUnsafeFast" (+0h)
Address: 7C90120Eh (ntdll+120Eh), symbol: "DbgBreakPoint" (+0h)
Address: 7C901212h (ntdll+1212h), symbol: "DbgUserBreakPoint" (+0h)
Address: 7C90121Eh (ntdll+121Eh), symbol: "NtCurrentTeb" (+0h)
Address: 7C901225h (ntdll+1225h), symbol: "RtlInitString" (+0h)
Address: 7C90125Dh (ntdll+125Dh), symbol: "RtlInitAnsiString" (+0h)
Address: 7C901295h (ntdll+1295h), symbol: "RtlInitUnicodeString" (+0h)
Address: 7C9012D1h (ntdll+12D1h), symbol: "CIsin" (+0h)
Address: 7C9012E5h (ntdll+12E5h), symbol: "sin" (+0h)
Address: 7C90137Fh (ntdll+137Fh), symbol: "CIsqrt" (+0h)
Address: 7C901393h (ntdll+1393h), symbol: "sqrt" (+0h)
Address: 7C90143Bh (ntdll+143Bh), symbol: "alldiv" (+0h)
Address: 7C9014E5h (ntdll+14E5h), symbol: "alldvrm" (+0h)
Address: 7C9015C4h (ntdll+15C4h), symbol: "allmul" (+0h)
Address: 7C9015F8h (ntdll+15F8h), symbol: "chkstk" (+0h)
Address: 7C9015F8h (ntdll+15F8h), symbol: "chkstk" (+0h)
Address: 7C901635h (ntdll+1635h), symbol: "allrem" (+0h)
Address: 7C9016E9h (ntdll+16E9h), symbol: "allshl" (+0h)
Address: 7C901708h (ntdll+1708h), symbol: "allshr" (+0h)
Address: 7C901729h (ntdll+1729h), symbol: "aulldiv" (+0h)
Address: 7C901791h (ntdll+1791h), symbol: "aulldvrm" (+0h)
Address: 7C901826h (ntdll+1826h), symbol: "aullrem" (+0h)

Environment:
App: foobar2000 v1.1.5
OS: Windows 5.1.2600 Service Pack 3 x86
CPU: Intel® Pentium® 4 CPU 2.60GHz, features: MMX SSE SSE2
Audio: SoundMAX Digital Audio
UI: Columns UI 0.3.8.8

Components:
Core (2011-02-27 19:44:04 UTC)
    foobar2000 core 1.1.5
foo_abx.dll (2009-05-21 14:57:38 UTC)
    ABX Comparator 1.3.4
foo_albumlist.dll (2011-02-27 19:42:12 UTC)
    Album List 4.5
foo_audioscrobbler.dll (2010-06-04 05:27:04 UTC)
    Audioscrobbler 1.4.7
foo_cdda.dll (2011-02-27 19:42:04 UTC)
    CD Audio Decoder 3.0
foo_converter.dll (2011-02-27 19:41:48 UTC)
    Converter 1.5
foo_customdb.dll (2010-03-04 09:10:54 UTC)
    Custom Database 0.1.0_beta1
foo_discogs.dll (2010-07-22 12:59:06 UTC)
    Discogs Tagger 1.25
foo_dsp_std.dll (2011-02-27 19:42:22 UTC)
    Standard DSP Array 1.0
foo_fileops.dll (2011-02-27 19:40:50 UTC)
    File Operations 2.1.3
foo_freedb2.dll (2011-02-27 19:40:56 UTC)
    freedb Tagger 0.6.3
foo_input_alac.dll (2011-02-26 14:05:53 UTC)
    ALAC Decoder 1.0.7
foo_input_dts.dll (2010-09-05 09:31:04 UTC)
    DTS decoder 0.3.0
foo_input_monkey.dll (2011-02-26 14:05:53 UTC)
    Monkey's Audio Decoder 2.1.5
foo_input_std.dll (2011-02-27 19:41:24 UTC)
    Standard Input Array 1.0
foo_lyricsdb.dll (2009-10-05 08:35:38 UTC)
    foo_lyricsdb 0.0.8 beta 0
foo_masstag.dll (2009-09-18 06:01:36 UTC)
    Masstagger 1.8.4
foo_musicbrainz.dll (2009-04-10 20:27:30 UTC)
    MusicBrainz Tagger 0.2
foo_out_asio.dll (2011-01-15 17:36:45 UTC)
    ASIO support 1.2.7
foo_out_wasapi.dll (2009-05-19 19:45:18 UTC)
    WASAPI output support 2.1
foo_quicksearch.dll (2010-10-20 13:48:46 UTC)
    Quick Search Toolbar 2.3
foo_rgscan.dll (2011-02-27 19:41:56 UTC)
    ReplayGain Scanner 2.0.9
foo_run.dll (2009-06-07 12:15:18 UTC)
    Run services 0.3.7
foo_softplaylists.dll (2011-02-25 18:01:09 UTC)
    Soft Playlists 2011-02-05
foo_texttools.dll (2010-09-05 09:31:06 UTC)
    Text Tools 1.0.5
foo_ui_columns.dll (2011-02-27 20:22:58 UTC)
    Columns UI 0.3.8.8
foo_ui_std.dll (2011-02-27 19:42:12 UTC)
    Default User Interface 0.9.5
foo_uie_albumlist.dll (2009-06-13 22:49:20 UTC)
    Album list panel 0.3.5
foo_uie_biography.dll (2010-12-11 05:47:22 UTC)
    Biography View 0.4.2.4
foo_uie_elplaylist.dll (2010-10-30 18:51:16 UTC)
    ELPlaylist 0.6.9.1.2(beta)
foo_uie_explorer.dll (2010-02-22 13:51:30 UTC)
    Explorer Tree 2.04.8
foo_uie_graphical_browser.dll (2008-04-19 19:37:54 UTC)
    Graphical Browser rev015
foo_uie_lyrics2.dll (2010-04-12 16:19:24 UTC)
    Lyric Show Panel 2 0.4.6.15
foo_uie_panel_splitter.dll (2009-12-09 21:16:12 UTC)
    Panel Stack Splitter 0.3.8.3(alpha)
foo_uie_wsh_panel_mod.dll (2011-01-08 08:11:34 UTC)
    WSH Panel Mod 1.4.2
foo_unpack.dll (2011-02-27 19:41:36 UTC)
    ZIP/GZIP/RAR Reader 1.6
foo_unpack_7z.dll (2011-01-15 17:36:49 UTC)
    7-Zip reader 1.5
foo_urlencode.dll (2009-03-11 11:24:48 UTC)
    UrlEncode 0.0.2
foo_utils.dll (2008-02-08 19:26:58 UTC)
    Playlist Tools 0.6.2 beta 6
foo_w7shell.dll (2010-01-17 01:09:20 UTC)
    Windows 7 integration 0.2.9.1

Recent events:
Autoplaylists initialized in: 0:02.013139
">2" : 0:01.966924
"HITS" : 0:00.046178
w7shell: init started
w7shell: GDI+ initialized
w7shell: COM initialized
w7shell: running on Windows NT 5.1.2600 Service Pack 3
w7shell: Windows 7 (NT 6.1) or later required
Startup time : 11:23.669423
Custom Database: unknown error (21)
Title: foo_customdb: Custom Database
Post by: odyssey on 2011-05-08 23:23:17
Did you remember to restart foobar2000 as recommended after you made changes to customdb preferences?
Title: foo_customdb: Custom Database
Post by: Maximus31 on 2011-05-10 17:30:08
Did you remember to restart foobar2000 as recommended after you made changes to customdb preferences?

yes, i restarted foobar after changing.

Also often when i start foobar he is crashed, because i have two autoplaylists with query %rating% GREATER <number>. But sometimes he is started normal.
What will i do with it?
Title: foo_customdb: Custom Database
Post by: Maximus31 on 2011-05-26 16:29:27
I took previous version of custom_db and my errors is pushed off. It's cool. Finally my foobar work.
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2011-12-16 22:41:38
I'm trying to use foo_customdb as a means to transfer my custom ratings from one set of ripped tracks to another.  Basically, I rated a collection of lossy files, and now I want to transfer those ratings across to a re-ripped collection of lossless files.

Now, it struck me that foo_customdb might come in handy.  Copy ratings from source collection into customdb, then copy those ratings into the destination collection. 

The crucial part is creating a key that will be consistent between the two collections.  Something like "album / artist / tracknumber" will be close, but I can already see lots of instances where the album name is slightly different (capitalisation, punctuation, etc), so it won't be foolproof.

So I then thought what about foo_biometrics (http://www.hydrogenaudio.org/forums/index.php?showtopic=65185)... the FINGERPRINT_FOOID is bound to be the same, surely, between identical tracks, ripped from the same CDs, even if in lossy vs lossless formats... so would be a good key to use (or maybe crc32 version of it) for customdb?

Well, I tried an experiment, and it comes close, but it's not exact.  foo_biometrics reports a high confidence of the tracks being the same, but there are slight differences in the FINGERPRINT_FOOIDs.  So not a useful thing to use as the key in customdb after all

Any bright ideas for possibly using FINGERPRINT_FOOID in some way to reference my tracks for this purpose?  Any other ideas for getting my ratings across?

Thanks!
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2011-12-17 20:57:43
P.S. What about taking only a part of the FINGERPRINT_FOOID as the key? 

For example, from a small sample, I've noticed that the digits 1 to 4 and 9 to 12 seem always to be "0", while digits 5 to 8 appear to be different for different tracks, but the same for the same tracks ripped in different formats. 

Perhaps those digits might be used as a key to match up the same tracks from different formats for the purpose of copying ratings using foo_customdb?  Or maybe there are more appropriate snippets to take from FINGERPRINT_FOOID that are more meaningful?
Title: foo_customdb: Custom Database
Post by: drmrbrewer on 2011-12-24 14:23:25
OK a quick update.  I managed to use this method to pretty good effect to transfer ratings across to the new ripping format.  I used the following key in the end:

$substr(%FINGERPRINT_FOOID%,5,8)%tracknumber%%totaltracks%

I know that this isn't perfect, because I know for sure that there were a couple of instances where more than one track mapped to the same key, but it came quite close to being a unique key.  In the end I just wanted to get the bulk of the ratings across accurately, even if there were a couple that transferred incorrectly (taking the rating of a different track).

I have a feeling that $substr(%FINGERPRINT_FOOID%,5,8) is just equivalent to the duration of the track, but I didn't investigate too closely.  Certainly, adding %tracknumber%%totaltracks% helped to make a more unique key... good enough for my purposes anyway.
Title: foo_customdb: Custom Database
Post by: D.Sync on 2012-06-14 10:28:26
Hey guys, is there any way to store multiple value into a tag field created in foo_customdb? From what I had noticed it seemed to ignore the ; deliminator, causing the whole string (with  to be displayed.
Title: foo_customdb: Custom Database
Post by: neothe0ne on 2012-08-08 11:19:38
I just learned about this component today and migrated my ratings from Playback Statistics in order to use half-star ratings*.  I deleted most of the preloaded customdb fields (restarting foobar2000 after each individual delete) and right now it seems to work fine.  No crashes yet.

*if anyone cares, I'm just using the "1/2" fraction unicode character.
Code: [Select]
$pad($repeat(★,%rating_cd%)$if($strcmp($substr(%rating_cd%,2,3),'.5'),½),5,☆)


Also made an action to increase rating by .5
Code: [Select]
$if($strcmp($substr(%rating_cd%,2,3),'.5'),$add(%rating_cd%,1),%rating_cd%'.5')



Issues so far?
- doesn't seem possible to reorder Actions.  I guess I'll have to delete them all and remake them to put them in order from the beginning?  (Or just use keyboard shortcuts, but wish foobar2000 accepted 3-key shortcuts, not just 2 key limit)

- on startup, Console shows an error...
Quote
Custom Database: Initialize
Custom Database: table quicktag already exists (1)
Custom Database: table database_version already exists (1)
Custom Database: index url_idx already exists (1)
Custom Database: Completed
Custom Database: unknown error (21)


- and of course startup of foobar2000 is slower now
Title: foo_customdb: Custom Database
Post by: neothe0ne on 2012-08-08 13:14:09
I don't seem to be allowed to edit my above post anymore, so some other observations...

- changing the key for a CustomDB tag will cause tags to be "lost" upon restarting foobar2000.  (Added track+disc to the predefined Rating tag to fix some "false" collisions).  Good thing I save all (auto)playlists as m3us regularly.
Title: foo_customdb: Custom Database
Post by: neothe0ne on 2012-10-30 06:54:05
Just wanted to add that I had complete stability with this component in Windows 7, but it seems to crash when combined with many Autoplaylists in Windows 8.  I've deleted all my autoplaylists and moved generation of static versions of those playlists into foo_uie_sql_tree, and so far I haven't had a crash...
Title: foo_customdb: Custom Database
Post by: Kent Wang on 2014-01-09 00:31:52
Does anyone still have this file? I just upgraded and didn't back up my old extensions. I have a lot of ratings stored.
Title: foo_customdb: Custom Database
Post by: marc2003 on 2014-01-09 00:41:56
here you go: https://dl.dropboxusercontent.com/u/2280132...oo_customdb.zip (https://dl.dropboxusercontent.com/u/22801321/wsh/foo_customdb.zip)
Title: foo_customdb: Custom Database
Post by: Tre0n on 2014-12-27 09:08:23
Hey guys, is there any way to store multiple value into a tag field created in foo_customdb? From what I had noticed it seemed to ignore the ; deliminator, causing the whole string (with  to be displayed.


Anyone figure this out? I wanted to migrate my genre tags to customdb but this issue makes it unfeasible.

%cdb_genre% -> %<cdb_genre>% unfortunately doesn't work either.
Title: foo_customdb: Custom Database
Post by: fbuser on 2014-12-27 12:22:50
Hey guys, is there any way to store multiple value into a tag field created in foo_customdb? From what I had noticed it seemed to ignore the ; deliminator, causing the whole string (with  to be displayed.


Anyone figure this out?
There is nothing to figure out here. It is simply not supported.
Title: foo_customdb: Custom Database
Post by: davideleo on 2015-04-26 06:04:11
Is this component still available?
Title: foo_customdb: Custom Database
Post by: スラッシュ on 2015-04-27 22:07:14
Hi!

I was using customdb to store my First played statistics from last.fm. Recently I've built a new PC, and now I am missing those stats once again. I used marc2003's WSH script to load the stats from the export from last.fm into customdb. It looks like the script in question was removed from his Dropbox, so I was just wondering if anyone (including marc2003 himself) still has it?
Title: foo_customdb: Custom Database
Post by: marc2003 on 2015-04-28 12:56:33
i've stuck the component in the upload forum for anyone who wants it.

http://www.hydrogenaud.io/forums/index.php?showtopic=109065 (http://www.hydrogenaud.io/forums/index.php?showtopic=109065)
Title: foo_customdb: Custom Database
Post by: davideleo on 2015-04-28 14:48:58
i've stuck the component in the upload forum for anyone who wants it.

http://www.hydrogenaud.io/forums/index.php?showtopic=109065 (http://www.hydrogenaud.io/forums/index.php?showtopic=109065)


Great! Thanks
Title: foo_customdb: Custom Database
Post by: davideleo on 2015-04-30 15:21:12
I'm using this component since 3 days only, but I'm already excited about it. I've been messing with it quite intensively and (with windows 7) I didn't have any crash up to now. I only noticed that switching views in the CUI album list is slower, but it's worth it. Foo_customdb finally allows me to organize tags in a relational-like data model. For me it's a must-have. I only wish I knew more about SQLite in order to implement and personalize the database structure. I'm familiar with SQL and I work a lot with MS Access, but after a quick look at the customdb_sqlite with SQlite Studio I feel lost. It would be nice to have some directions and links to online resources to start off with for beginners.
Title: foo_customdb: Custom Database
Post by: davideleo on 2015-04-30 17:40:59
I think you should just try to get used to a certain amount of "orphaned" entrys in the db. It shouldn't slow down the database that much as it's relatively few values we're talking about.


I probably did something you shouldn't do, but since I also hate having orphan entries in the database and I deleted all the default actions, I deleted all the related entries as well. Everything seems to be working fine for now.
Title: foo_customdb: Custom Database
Post by: davideleo on 2015-05-14 23:53:36
After reinstalling foobar I found out that custom fields and actions are not saved in the theme back up (.fcl). Fortunately I took notes of what I had done and was able to restore everything, but I wonder if it is possible to save them some how.
Title: foo_customdb: Custom Database
Post by: marc2003 on 2015-05-15 10:42:32
like all components which are not layout related and have settings accessed through the main preferences, there is a .cfg file for it inside the configuration folder.
Title: foo_customdb: Custom Database
Post by: davideleo on 2015-05-15 10:58:05
like all components which are not layout related and have settings accessed through the main preferences, there is a .cfg file for it inside the configuration folder.


Thanks. So, can I just copy and overwrite the .cfg file in the new configuration folder?
Title: foo_customdb: Custom Database
Post by: davideleo on 2015-05-15 11:09:37
like all components which are not layout related and have settings accessed through the main preferences, there is a .cfg file for it inside the configuration folder.


Thanks. So, can I just copy and overwrite the .cfg file in the new configuration folder?



Alright, I tried it with another component and it works.
Title: Re: foo_customdb: Custom Database
Post by: yindesu on 2020-06-14 21:44:35
foo_customdb still regularly crashes during titleformatting queries, so I spent the weekend looking into the foobar2000 SDK.

I managed to rig up a proof-of-concept component that can query the SQLite database inside metadb_display_field_provider.process_field without crashing (knock on wood).  Unfortunately, I'm seeing a LOT of SQLite 21 errors with my alternate titleformatting field as I open and close the database inside process_field, but they do not appear to affect the integrity of titleformatting search results as I have occasionally seen with foo_customdb's titleformatting field.

I suspect foo_customdb's crashes may be a result of not using sqlite3_column_bytes() to find the size of the previous call to sqlite3_column_text() as described on https://www.sqlite.org/c3ref/column_blob.html
Title: Re: foo_customdb: Custom Database
Post by: Awesomeo on 2020-06-14 22:34:14
I can't wait for the results. I've been waiting years for a proper replacement of custom_db, nothing comes close.
SimplePortal 1.0.0 RC1 © 2008-2020