Skip to main content

Topic: foo_random_pools (Read 77944 times) previous topic - next topic

0 Members and 2 Guests are viewing this topic.
  • fbuser
  • [*][*][*][*][*]
  • Developer
foo_random_pools
foo_random_pools is a foobar2000 component for creating random playlist  entries selected and grouped by various pool definitions.

Mainly you can define titleformat expressions for selecting random groups like albums including sorting and filtering from the media library.

Download the latest version: here
  • Last Edit: 16 September, 2011, 05:50:03 PM by fbuser

foo_random_pools
Reply #1
Thanks for this plugin. I'm finding it really great to use.

Is there any chance of adding, as an option to number of tracks to add, a duration - say 1hr. In this way I could easily configure any number of tracks with a total length of roughly 1 hr. Obviously not exactly the duration but upto.

Thanks.
  • Last Edit: 03 January, 2010, 04:01:29 AM by Black_Over_Bills_Mothers

foo_random_pools
Reply #2
Looks like a great idea - going to test it.

foo_random_pools
Reply #3
BRILLIANT!

Finally a way to add random albums to a playlist!
<insert signature here>

  • realhaiy
  • [*]
foo_random_pools
Reply #4
great plugin!
only one requset: option for preventing adding duplicates

foo_random_pools
Reply #5
THis is goddamn great!
If I want to select 7 random albums I use the group query "%album artist%-%album%, and the query works perfectly. But I want to filter it so I don't get 2 albums from the same album artist, how can I do it?

Also would love to limit the query for filesize instead of group/track count.

GJ!

  • Xezzy
  • [*][*][*]
foo_random_pools
Reply #6
Yes, limit the playlist by filesize would be great feature, especially for portable mp3 devices...

  • fbuser
  • [*][*][*][*][*]
  • Developer
foo_random_pools
Reply #7
A limiting by duration or filesize will be probably implemented, but I won't implement any kind of memory for the random pools, which means there will be no chance to prevent duplicates.

  • mrinferno
  • [*][*][*]
foo_random_pools
Reply #8
just noticed this last night and had a chance to try this morning.
very cool and thanks!!!
adding random albums to a playlist has been something I've always wanted to do with foobar.
this plug-in has lots of possibilities.  back to enjoying the randomness...

  • foosion
  • [*][*][*][*][*]
  • Moderator
foo_random_pools
Reply #9
Nice idea. I've tried to make it crash, but I wasn't successful so far.  There are a few things that could be improved (keep in mind that I'm a perfectionist):
Discoverability
  • foo_whatsnew did not pick up the main menu commands after installation, so I suspect you don't enumerate any, when no pool is configured. I suggest to enumerate the "All pools" command always, but make is disabled and greyed, when there are no pools, and to add a "More..." command that opens the preferences page. The menu tree for foo_random_pools would then look like this:
    Code: [Select]
    File
      Random pools
        All pools
        [insert configured pools here]
        ---
        More...
Preferences
  • Link the "Help" button to the installed help file.
  • Use new preferences page API from the 1.0 SDK.
Dialogs
  • Improve dialog layout. For example, add some horizontal space between buttons. I think Microsoft recommends 7 DLUs.
  • End labels for edit controls with a colon.
  • Improve text for "Don't determine distinct group values" check box. See below for my suggestion.
Here's my suggestion how to modify the "Random pool" dialog with an image and source code. The main reason why I reduced the height of the large edit controls is that it was easiest to show what I wanted that way, Resource Hacker isn't the most convenient tool for editing dialogs.

Code: [Select]
103 DIALOG 50, 50, 332, 295
STYLE DS_FIXEDSYS | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Random pool"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "Ms Shell Dlg 2"
{
   CONTROL "", 1018, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 51, 11, 274, 12
   CONTROL "Determine probability for picking groups based on group size", 1004, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 76, 253, 14
   CONTROL "", 1019, EDIT, ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 51, 28, 274, 45
   CONTROL "", 1003, EDIT, ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 51, 93, 274, 45
   CONTROL "", 1020, EDIT, ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 51, 143, 274, 45
   CONTROL "", 1021, EDIT, ES_LEFT | ES_AUTOHSCROLL | ES_NUMBER | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 108, 205, 32, 12
   CONTROL "", 1000, EDIT, ES_LEFT | ES_AUTOHSCROLL | ES_NUMBER | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 108, 222, 32, 12
   CONTROL "", 1041, EDIT, ES_LEFT | ES_AUTOHSCROLL | ES_NUMBER | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 108, 239, 32, 12
   CONTROL "OK", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 220, 276, 51, 14
   CONTROL "Cancel", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 277, 276, 50, 14
   CONTROL "Name:", 1014, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 13, 22, 8
   CONTROL "Group:", 1015, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 30, 38, 8
   CONTROL "Filter:", 1016, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 144, 20, 8
   CONTROL "Priority:", 1017, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 207, 38, 8
   CONTROL "Sort order:", 1002, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 95, 38, 8
   CONTROL "Number of groups to add:", 1039, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 224, 93, 8
   CONTROL "0 = don't consider this pool, when adding items from all pools", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 150, 204, 171, 18
   CONTROL "Limit number of tracks to add:", 1040, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 6, 241, 100, 8
   CONTROL "0 = no limit", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 150, 241, 171, 8
}
http://foosion.foobar2000.org/ - my components for foobar2000

  • fbuser
  • [*][*][*][*][*]
  • Developer
foo_random_pools
Reply #10
Nice idea. I've tried to make it crash, but I wasn't successful so far.
Maybe you have to try harder. 

There are a few things that could be improved (keep in mind that I'm a perfectionist):
I'm always open to improvement suggestions.

Discoverability
  • foo_whatsnew did not pick up the main  menu commands after installation, so I suspect you don't enumerate any,  when no pool is configured. I suggest to enumerate the "All pools"  command always, but make is disabled and greyed, when there are no  pools, and to add a "More..." command that opens the preferences page.  The menu tree for foo_random_pools would then look like this:
    Code: [Select]
    [code]File
       Random pools
         All pools
         [insert configured pools here]
         ---
         More...
    [/code]
[/list][/quote]Good point, but I'll add another menu separator after "All pools". This should be possible now with SDK 1.0, at least I found no way to make this with the old SDK.

Preferences
  • Link the "Help" button to the installed help file.
  • Use new preferences page API from the 1.0 SDK.
I overlooked the first point, the second one is, of course, already planned.

Dialogs
  • Improve dialog layout. For example, add some horizontal space between buttons. I think Microsoft recommends 7 DLUs.
  • End labels for edit controls with a colon.
  • Improve text for "Don't determine distinct group values" check box. See below for my suggestion.
Personally, I don't like the first two points, but as a plugin should follow the host application, I will change that. For the third point, your text makes it more clear, what is meant, so I will use it. Regarding the dialog layout in general, I wasn't really happy with it by myself and I already got a proposal in a German Foobar200 forum, so I will also change the layout.[/li][/list]

  • exxecutor
  • [*][*]
foo_random_pools
Reply #11
Thank you for this component!

However, why is %added% DURING LAST 6 WEEKS an invalid filter expression?

  • fbuser
  • [*][*][*][*][*]
  • Developer
foo_random_pools
Reply #12
Will be fixed with the next version.

foo_random_pools
Reply #13
Anyone have any idea how I could rig a script for this in order to draw random pools of albums only from the past week/month/etc. using the %added% tag?

  • exxecutor
  • [*][*]
foo_random_pools
Reply #14
So, I have been using this component for some days and it has become one of the most important to me! I love its "weighted randomness". I am using it with album ratings (calculated outside of foobar with a script I wrote). In my case, the component automatically populates my playlist with random albums but in the long run makes me listen to more great albums than bad ones. It also has great synergy with playlist_attribute's "remove played/skipped tracks".

I think, the preferences page could be improved for the next version.  Right now it's pretty inefficient if you want to play around with priorities.

  • Xezzy
  • [*][*][*]
foo_random_pools
Reply #15
Great component. Is it still under development? Cause its listed as problematic, but its features are really cool.

  • fbuser
  • [*][*][*][*][*]
  • Developer
foo_random_pools
Reply #16
Thanks for the hint. I'm already using a newer version and never had a crash, so I wasn't aware of it. I requested the crash reports and will look into them.

  • mrinferno
  • [*][*][*]
foo_random_pools
Reply #17
Thanks for the hint. I'm already using a newer version and never had a crash, so I wasn't aware of it. I requested the crash reports and will look into them.


cool, glad to hear you're still developing.  i've had maybe one crash while running random pools, but i also have foo_uie_lyrics2 which has usually been the source of the crash.

either way, definitely looking forward to trying any new versions of random pools when your ready to release.
using it daily and i'm totally hooked on the ability to populate playlists with random albums!

foo_random_pools
Reply #18
haven't gotten any crashes yet.
this plugin sort of "resurrects" not popular albums in my library, the randomness that mixes known with unknown... damn useful little tool

foo_random_pools
Reply #19
How does this "weighted randomness" work that some people have been talking about?

  • exxecutor
  • [*][*]
foo_random_pools
Reply #20
How does this "weighted randomness" work that some people have been talking about?


It works best with parameters which are the same for whole albums (like date, genre, album rating). If you want to listen to more new music, create pools like f.i. (the more pools, the better):

Filter: %date% GREATER 2008, Priority: 20
Filter: %date% LESS 2009, Priority: 10
(Group: %album% for all)

After that specify a playlist for the autoadd feature and when the component should add a new album. Now when you listen to this playlist, the component will choose random albums but newer ones twice as often.

EDIT: I'm also looking forward to a new version. Amazing Plugin!
  • Last Edit: 31 March, 2010, 03:34:47 AM by exxecutor

foo_random_pools
Reply #21
Gotcha, thanks for the explanation

  • fbuser
  • [*][*][*][*][*]
  • Developer
foo_random_pools
Reply #22
Version 0.0.2 is available. See first post for DL and CL.

  • exxecutor
  • [*][*]
foo_random_pools
Reply #23
Thank you very much! Works great so far.

  • mrinferno
  • [*][*][*]
foo_random_pools
Reply #24
awesome thanks! looking forward to trying out more thoroughly tomorrow.

just FYI, it appears loading the new version blows away previous settings.

not a biggie for me at all i can easily recreate, just figured i would mention it though.