finally a shuffle plugin! thanks kode
minor request: is it possible to also add a shuffle-menu-entry for the systray?
- Lyx
kode54: Awesome, exactly what myself and others were looking for. Is it possible to maintain the functionality of Follow Cursor while using shuffle?
Thanks Kode54.
Indeed another great plugin from you.
Do you think it's possible to add a "minimum" jump range to the shuffle ? to be able to avoid playing next song in the album (fustrating when the playlist is big).
SU
Done.
great plug in !!
Nice; is it possible for you to add a "random album" mode (play all the songs of an album in order and then random to another album etc.) ?
please!!!
Random Album is exactly what I'm looking for. Also, I'm looking for it to shuffle between playlists as well, I like to sort my genres between different playlists.
Controlling which playlist the core plays from is beyond the power of a playback flow control service such as Shuffle.
Shuffle album is not. I'll see what I can do.
Uploaded v1.0.3.
- Added album mode. Jump settings do not apply within album track selection.
It may need some tuning, or perhaps a proper way of staying a sufficient distance away from the previous track in the album, without screwing up the range. For now, it just uses the MT random function to pick from the unplayed tracks of the current album. When it finishes with the current album, it uses the original method to pick a new random track.
It works ! thanks!
The only problem is for classic music albums and for "pop concepts albums" , the tracks are still shuffled inside the album...the shuffle needs to be based on albums, not on the tracks...
http://www.hydrogenaudio.org/forums/index....hl=random+album (http://www.hydrogenaudio.org/forums/index.php?showtopic=13266&hl=random+album)
Quality plugin! Nice work kode54! Thanks for making it.
Any chance of being able to choose which field it uses for Album Shuffle? This would make it even more powerful (shuffle within categories, genres, artists etc.)
Ooh and a Next Album shortcut key would be wonderful too
...being able to choose which field it uses for Album Shuffle? ... shuffle within categories, genres, artists etc.
this is a GREAT idea simple feature, endless possibilites
- Lyx
Uploaded v1.0.4.
A set of unplayed tracks will be compiled based on the tag rule set.
Example:
Rules: -album|+genre
Previous track:
album=blah
genre is unset
Only the album rule will be observed, in which case the choice list will contain all unplayed tracks with unset album, blank album, or non-matching album.
If no matches are found, it will fall back on the standard shuffle track jump behavior.
For now, it only supports the first defined tag for each rule. More than one is possible, but will be complicated. (new conditions, ie. at least one match, or all must match; each value present in the checked tracks will have to be verified against all of the values collected from the previous track)
Uploaded v1.0.4.A set of unplayed tracks will be compiled based on the tag rule set.
Example:
Rules: -album|+genre
Previous track:
album=blah
genre is unset
Only the album rule will be observed, in which case the choice list will contain all unplayed tracks with unset album, blank album, or non-matching album.
If no matches are found, it will fall back on the standard shuffle track jump behavior.
For now, it only supports the first defined tag for each rule. More than one is possible, but will be complicated. (new conditions, ie. at least one match, or all must match; each value present in the checked tracks will have to be verified against all of the values collected from the previous track)
great! even better than I'd hoped (in theory). But..
If I understand your descriptions correctly, if I put
+album as the rule and choose
Shuffle tag set for the order, it should behave the same as
Shuffle album? I tried this and it just seems to do normal random shuffle (not within album)... In fact I can't seem to get any + rule working..
kode54, could you add another kind of "random album" ?
it takes any album , starts at track 1, play all of them in order until the album is finished, then starts another album ?
Thanks already for your great foo_shuffle
Uploaded v1.0.5.
- Fixed tag set + condition. (stupid typo)
kode54, could you add another kind of "random album" ?
it takes any album , starts at track 1, play all of them in order until the album is finished, then starts another album ?
Thanks already for your great foo_shuffle
Uploaded v1.0.6.
- Added second album shuffle mode that does exactly what you want.
kode54, could you add another kind of "random album" ?
it takes any album , starts at track 1, play all of them in order until the album is finished, then starts another album ?
Thanks already for your great foo_shuffle
Uploaded v1.0.6.- Added second album shuffle mode that does exactly what you want.
where at??
"Shuffle album 2" in the order control list.
Note that if the history is smaller than the number of tracks in the current album, it will cycle through the album endlessly. If this is a problem, add more tracks to your playlist, or increase the history size. :B
no. 1.0.6 has not been uploaded anywhere
your site still has 1.0.5
Oops. Issue corrected.
i don't suppose there is any way to play the randomly selected album in order (starting from track 1), then move on to another album?
i figure some sort of internal queue could be used to queue up the entire cd in order or something.
just a thought.
i don't suppose there is any way to play the randomly selected album in order (starting from track 1), then move on to another album?
i figure some sort of internal queue could be used to queue up the entire cd in order or something.
just a thought.
Uhm, that's what "Shuffle album 2" is supposed to be doing, unless your files lack proper TRACKNUMBER values.
Maybe if everyone could vote on a better name than "Shuffle album 2..."
Component name - foo_shuffle
Component type (appropriate section) - General
Which foobar2000 version the component works with - 0.7.1
Short description of the component - Shuffle control with play history.
Compile date - October 17, 2003
Download link - http://www.saunalahti.fi/cse/kode54/foo_shuffle.zip (http://www.saunalahti.fi/cse/kode54/foo_shuffle.zip)
Author website link - http://www.saunalahti.fi/cse/kode54/ (http://www.saunalahti.fi/cse/kode54/)
This pluggin is amazing !!! Great work kode54
Maybe if everyone could vote on a better name than "Shuffle album 2..."
How about 'Shuffle Whole Albums'?
Maybe if everyone could vote on a better name than "Shuffle album 2..."
"Random album"?
trying to use shuffle album 2 gives me an error:
ERROR (CORE) : playback flow control "Shuffle album 2" failure
ERROR (CORE) : Illegal operation:
Code: C0000005h, flags: 00000000h, address: 011D3B48h
Access violation, operation: read, address: 00000000h
Module: "foo_shuffle", loaded at 011D0000h - 011D9000h
Additional info: playlist / calculate_next
This is the first crash logged by this instance.
Code bytes:
011D3B28h: 10 8B F0 E8 1C FF FF FF 59 3B C6 59 76 05 83 C8
011D3B38h: FF 5E C3 1B C0 5E F7 D8 C3 56 8B F1 FF 74 24 0C
011D3B48h: 8B 06 FF 74 24 0C FF 50 28 85 C0 7D 04 33 C0 EB
011D3B58h: 08 8B 16 50 8B CE FF 52 10 5E C2 08 00 A1 A4 6D
Crash info dumped to failure_00000006.txt in your program directory.
If you are reading this, you should restart the program as soon as possible to avoid further trouble, and report this exact message to the developer.
This also happens is shuffle album and shuffle tag modes
Uploaded v1.0.7.
- Added error checking to all handle_query_locked calls. (Didn't RTFM thoroughly.)
It's failing to retrieve info from some of the entries in your playlist. File missing, file broken, whatever. Now it will properly skip files when this happens.
Either way, maybe you should prune your playlist of all .txt files or something. :B
minor request: is it possible to also add a shuffle-menu-entry for the systray?
Finally responding to this request...
I suppose I could do this. Of course, shuffle is an order mode, not an action. I could make it toggle between Shuffle and Default, but now that there are more shuffle order modes....
I could reduce all shuffle modes down to a single order item and add a behavior selection to preferences, but this will complicate matters with 3rd party software accessing and changing the order. (I will have to expose behavior setting through a public config_var_string.)
Uhm, that's what "Shuffle album 2" is supposed to be doing, unless your files lack proper TRACKNUMBER values.
Maybe if everyone could vote on a better name than "Shuffle album 2..."
actually, i would propose to REMOVE all the different shuffle modes put all the features into a single mode. Then, simply add two input-fields to the shuffle-preferences:
shuffle ruleset: __________________ (this provides the same functionality as "tag set rule mode")
play in order based on: __________________ (this provides the funtionality of "album 2" and more)
if you would leave both fields empty, you get the standard shuffle mode. If you leave the first fields empty, you get "album 2"-style behaviour. If you leave 2nd empy, you get "tag set rule mode"-style play. And finally, you could also combine both methods.
This would also solve the problems with the systray kind of thing, because then there's only one mode.
- Lyx
The "shuffle2" works great! Thank you kode54, at last we got a real shuffle plug-in
with all modes!!!
Uhm, that's what "Shuffle album 2" is supposed to be doing, unless your files lack proper TRACKNUMBER values.
Maybe if everyone could vote on a better name than "Shuffle album 2..."
actually, i would propose to REMOVE all the different shuffle modes put all the features into a single mode. Then, simply add two input-fields to the shuffle-preferences:
[..]
This would also solve the problems with the systray kind of thing, because then there's only one mode.
- Lyx
If this were to be done, it would definitely require drop-down histories (like in Masstagger->rename and other places) so you could easily swap between rules.
@kode54: Absolutely wonderful where this plugin is going. The two main 3rd party plugins I use all the time are by you (OSD and shuffle). I'm wondering if the following situation could be catered for (assume all field names could be changed to others - they are there for the sake of example):
I would like to be able to write a rule which said
1. play all tracks with the same ALBUM field, ordered by the TRACKNUMBER field,
2. then choose the next track to have the same ARTIST and use rule 1 to proceed.
3. if you can't find an unplayed track in either situation choose a random track that hasn't been played (isn't in the history). I think this is already the default action?
I would then be able to play through all albums by a certain artist and then shuffle to a different artist and play all of theirs etc. I'm sure a generalised way of doing this would open up huge possibilities..
I can see that the generalisation of 1. is what Lyx is proposing (use both set rule and order rule for shuffle). What I am proposing is to use cascading rules (where a rule is both set and order) - "try to satisfy rule 1, if you can't, try rule 2 etc." I think it's important that each time it has to choose a new track that it starts at the beginning though.
Am I making sense? (and is it a crazy idea?) Please feel free to reject it as stupid, insane, impossible or just over complicated
PS apologies for being such a demanding end-user - I'm not quite ready to jump into programming plugins yet.
Hi there!
And thank you very much for this plug-in. I love it... But, hmmm... I don't know if this is a bug or having something to do with my settings/machine... If I close the Foobar when playing something, and I have your Album shuffle 2 enabled... then I restart the program and when foobar has played the song to the end it starts from the first track of the played album.
I'm guessing that the plug-in doesn't save the history when exited? I can live with this But just felt like reporting... Hope I wasn't a total dumbass
just to say thankyou very much !
Uploaded v1.0.8.
- Shuffle album 2 mode now checks DISC and should play large albums in proper order. (Of course, this calls for even bigger history, or rather large playlist. :B)
I'm guessing that the plug-in doesn't save the history when exited?
You are correct.
Hope I wasn't a total dumbass
Nope.
I believe foo_history has a saving/loading feature, but it's commented out. It's probably not terribly stable, unless it saves the history as a FPL, as metadb_handles definately will not work across instances.
I reference by playlist indices, rather than by keeping metadb_handles. I could extend the history system to be able to save and load itself from a file, but it would further necessitate having a history reset feature.
Speaking of history reset, I'll add a menu item or two for that after I grab some sleep. (Reset for current playlist, reset all.)
I believe foo_history has a saving/loading feature, but it's commented out. It's probably not terribly stable, unless it saves the history as a FPL, as metadb_handles definately will not work across instances.
I reference by playlist indices, rather than by keeping metadb_handles. I could extend the history system to be able to save and load itself from a file, but it would further necessitate having a history reset feature.
foo_history's history saving feature is stable, it saves items as locations (path and subsong index) plus a timestamp (an experimental and rather useless feature, I think). I didn't want to store those timestamps in the database, so I did my own format.
The reason why this feature wasn't enabled in the official release, is that I was too lazy to do the following things:
1) Add automatic history truncation based on history length/item age.
2) Save the history in an appropriate place (saving it in the components folder is not a good a idea, when profiles are enabled).
So now you know.
When history's size is set on , the album 2 shuffle mode plays everytime the sames albums (10 differents) in circle on a playlist containning 700 albums!!! (i've tried differents settings but it's always the same).
When history's size is set to zero that does'nt happen...
When history's size is set on , the album 2 shuffle mode plays everytime the sames albums (10 differents) in circle on a playlist containning 700 albums!!! (i've tried differents settings but it's always the same).
When history's size is set to zero that does'nt happen...
What size is ","? ... unless you forgot to type some indicative figure before that comma.
My meaning whas : when the history's size is set to a value (between 1 and max size)...
Setting it to minimum would probably cause it to cycle to the next or previous unplayed album in the list.
Uploaded v1.0.9.
- Album 2 now uses full random within the unplayed set, rather than relative jumping.
Sorry, always the same problem with the last update, after around 20 albums it loops (jump to the first one again)! can't understansd why...
Uploaded v1.0.10.
- Changed to behave like Default when there is only one item in the playlist.
- Properly applies history reduction on 100% history with all other shuffle modes.
- Fixed stupid problem with album 2 that would cause it to pick mostly items from the start of the list, regardless of whether they were already played.
Simply Perfect!!! Thanks !!
Does this work with the 'Playback/Next or Random' action, or should there be a need for a 'Playback/Next or Shuffle' action?
EDIT: Oh wait, 'Playback/Next' works huh?
Sorry, already pm'ed about that question :
is there a way to disable some of the original (now useless) play orders ?
SU
Sorry to bother again... Again, love your work Kode and don't want to be a bother... I was just thinking... (that's a surprise ) About the shuffle album 2, that would it be possible to make it behave in a way that when having album shuffle 2 on and clicking on some song, it would play the current album to the end from the point I've clicked and not moving to the first song of the album? This would also help to the "problem" I was talking about earlier that when closing the player and restarting it jumps to the first song of the album. Hmmm... I hope I was clear enough. But then again, it's not my plug-in, and you can do what ever you feel like. Damn, I should start learning c++ (again, learned the basics at uni, but didn't have time to learn more...).
IDEA : Controlling Replaygain settings.
If using shuffle or shuffletag, then use trackgain. if using shuffle album 1 or 2, use albumgain.
cya next suggestion.
Simple User
This is like a dream come true, thanks so much for this plug-in!
Great plugin indeed. I specially like the "tag set" shuffle. No player has ever achieved that before (as far as i know).
foo_suffle makes me dance and scream!
Great PlugIn!
Hi! It's me again... (sorry ;P)
Could you also make shuffle album 2 check the artist and album when playing the albums? I have both Opeths and Corrosion of Conformitys albums Deliverance, and it skipped from COCs first track to Opeths first track and then back to COCs second track.
Thanks
Hi! It's me again... (sorry ;P)
Could you also make shuffle album 2 check the artist and album when playing the albums? I have both Opeths and Corrosion of Conformitys albums Deliverance, and it skipped from COCs first track to Opeths first track and then back to COCs second track.
Thanks
Another argument for being able to use both tag set and order rules at the same time (you would then be able to use +album|+artist with tracknumber as the order to make this problem go away)
i really like your plugin but there ist one thing i can't live with:
- i set playback order to "Playback/Order/Shuffle" and made a keyboard-shortcut to "Playback/next or Random"
- i play track 5 (for example) and highlight track number 9
- when i press the next/random key the selected song is played and not a random song from the list.
i can understand that this behavior can makes sense but 9 out of 10 times i want a random song (isn't this the purpose of the plugin?) and not the song that is highlighted.
perhaps you can add a checkbox to control this behavior.
janjan: Do you have "Follow cursor" enabled under "Playback"? If yes disable it and try again.
If i disable "Follow Cursor" then foobar will not jump to the new song. So this isn't an option for me
If i disable "Follow Cursor" then foobar will not jump to the new song. So this isn't an option for me
Either I don´t understand you or the behaviour you wish is illogical to me because in my opinion foobar2000 behaves in the right way regarding "follow cursor" enabled in shuffle mode.
If i disable "Follow Cursor" then foobar will not jump to the new song. So this isn't an option for me
Either I don´t understand you or the behaviour you wish is illogical to me because in my opinion foobar2000 behaves in the right way regarding "follow cursor" enabled in shuffle mode.
You have many songs in the playlist, the playlist-position is at the bottom and you disable "Follow Cursor". If a song is played that is located at the top of the playlist then foobar will not center the playlist at the new song.
My Problem is:
If I enable "Follow Cursor" then the plugin will jump to a highlighted song (if there is a single highlighted song) instead of picking a random song -> I don't like this
If I disable "Follow Cursor" foobar does the thing I described above -> I don't like this either
Well...I don´t see a solution in the current state. But you know that a double click on the status bar will fokus the currently played file?
...funny, and I just love the behaviour this way... I just can't understand why you want to highlight some song and then want to playlist to skip to some other position... If you want to "unselect" the selection while playing the current song, just double click on the status bar...
I've just found a solution for my problem:
1: disable "Follow Cursor"
2: goto http://www.dago.pmp.com.pl/foobar/ (http://www.dago.pmp.com.pl/foobar/) and download/install foo_focus.dll
I've just found a solution for my problem:
1: disable "Follow Cursor"
2: goto http://www.dago.pmp.com.pl/foobar/ (http://www.dago.pmp.com.pl/foobar/) and download/install foo_focus.dll
how do i enable this focus component?
nothing seems to be different in my foobar
I've just found a solution for my problem:
1: disable "Follow Cursor"
2: goto http://www.dago.pmp.com.pl/foobar/ (http://www.dago.pmp.com.pl/foobar/) and download/install foo_focus.dll
how do i enable this focus component?
nothing seems to be different in my foobar
Preferences, Display, Track auto-focus.
I've just found a solution for my problem:
1: disable "Follow Cursor"
2: goto http://www.dago.pmp.com.pl/foobar/ (http://www.dago.pmp.com.pl/foobar/) and download/install foo_focus.dll
how do i enable this focus component?
nothing seems to be different in my foobar
Preferences, Display, Track auto-focus.
muchos gracias
While I've been wanting something like "Shuffle Album 2" for a really damn long time now and it's really awesome, but could there be an option to make hitting play skip to another album? Right now I have to click my way through the entire playlist to do this, which is annoying
, but could there be an option to make hitting play skip to another album? Right now I have to click my way through the entire playlist to do this, which is annoying
The playlist hopper plugin by paulski seems to do what you want. You can find it here (http://www.hydrogenaudio.org/forums/index.php?showtopic=12421&) .
Great plugin I really hope it implements saving history between sessions anytime soon B)
kode: can you make a functionality like "next random album"
currently i can do this by setting it to shuffle album 2, hitting the random button, then hitting the next button (to get to the beginning of the CD).
If this were possible with a single command it would be awesome.
i know it's not directly related to shuffle, but could there be special play mode (done as order type) 'intro', which would play say 10secs from middle of song (or beginning - selectable by user in preferences)?
Uploaded v1.0.11.
- Fixed a bug that would cause both album modes to deadlock if handle_query_locked on the previous track returned NULL. (Invalid file, core failed to load info, etc. I was not thorough enough with v1.0.7.)
some bugs (for shuffle album 2)
- when tracknumber isn't padded with zero, it does anything
- for me album is not based only on %album% tag but with %album% AND %disc%
- sometimes a track is jumped
some suggestions- shuffle album" and "shuffle album 2" aren't very explicit
- an another idea to mix the playlist: not based on the position in the list, but give a weight to tracks according to a tag like %artist%
Example:
%artist% - %title% (weight)
TOTO - A (0.7)
TOTO - B (0.7)
TOTO - C (0.7)
TOTO - D (0.7)
Tricky - A (1)
Tricky - B (1)
Another - A (1.2)
Thus "TOTO - A" has a little less chance to be played than "Another - A"
- Shuffle album 2 mode now checks DISC and should play large albums in proper order. (Of course, this calls for even bigger history, or rather large playlist. :B)
Would it be possible to add a switch for "shuffle album 2" to switch after every disc as opposed to every album? I have some multi disc recordings, that I'd like to treat as individual albums for the purposes of shuffling; even though they're tagged with the same album name, but different disc numbers.
Thanks for the great plugin!
if I understand,
shuffle album = "suffle tag set" with "+artist|+album"
would it be possible to :
- remove other order like "random" ?
- define or rename orders (like in french, etc...) ("shuffle album 2" really needs a new title... "album in order" comes to mind.
- define suffle tag presets : "+artist|-album" comes to mind, as well as
"-album|-artist|+genre".
Simple User
some bugs (for shuffle album 2)- for me album is not based only on %album% tag but with %album% AND %disc%
This is already catered for.. Albums play in order starting with Disc 1 Track 1 then Disc 1 Track 2, to the end of Disc 1, then moving on to Disc 2 Track 1 etc.
Isn't that what you want it to do?
I have never been a
shuffle and
random user, but this plugin is great. I simply love the
Shuffle tag set mode in combination with a huge playlist and this rule set:
-album|-artist|+genre
The only negative aspect is that I will probably waste alot of time trying to come up with a good solution for the genre tag. I find it far from easy to settle on what to put in it. Guess I need more tags like %subgenre%, %category% and such.
Thanks for making this great plugin!
hi, this is a really great plugin.
for me it would be even better, if the values of the tags shuffle is based upon could be defined.
so eg. you would be able to shuffle through all tracks tagged as 'Rock' or 'Hard Rock'.
sth like this:
-artist|-album|+genre('Death Metal' OR 'Black Metal')
(maybe it should be AND, dunno, but u guess what i mean?)
also it would be great if those 'shuffle-strings' could be saved and than placed in the 'order'-dropdown-list as sth like 'Metal Shuffle' eg
again great work, tnx alot
Scheisen2000
I second this.
I like the way it works now, but if it could be extended to include Scheisen2000's idea it would be even better IMHO. The good thing about the way it works now is that you can easily change the genre to be shuffled just by selecting another track with av different genre. The negative side effect of that, is that you have to find a track with the specific genre you want to listen to in the first place.
A save/load option would also be appreciated, but then it would also be nice if it could be accessed from the context menu or something.
Sorry about all the nagging, I still like it alot as it is already.
This is already catered for.. Albums play in order starting with Disc 1 Track 1 then Disc 1 Track 2, to the end of Disc 1, then moving on to Disc 2 Track 1 etc.
Apparently i have a problem:
for me it play Track 1 on Disc 1, then Track 1 on Disc 2...
my files are properly tagged in APEv2 and ID3v1 with ARTIST, ALBUM, TITLE, DISC, TRACKNUMBER, GENRE and DATE.
There is no ID3v2 tags
for DISC the format is like "Volume 1/2", "Volume 2/2" but if it's a numeric value like 1,2,3 it occurs the same thing.
Uploaded v1.0.12.
- Added synchronized deconstructor to shuffle_history, might fix strange FLAC crash.
- Added text skipping for TRACKNUMBER and DISC, which shouldn't contain text anyway.
@julien_32: Text in DISC will also mess up most title formatting scripts which also handle DISC, since they expect it to be numerical... well, sort of. The old default format will probably result in an album display like...
For ALBUM="Blah", DISC="Volume 1/2", TRACKNUMBER="15":
[Blah #Volume 1/2/15]
I don't if it is a bug or not but I find it quite annoying:
When I shutdown my computer without closing foobar, foobar seems to start on the same song than the first it played before.
More explaination:
I play songA, closed foobar, start foobar and play -> it play songA, then playing many other songs, I shutdown the computer without closing foobar, the next day I boot my computer then start foobar and play -> it play songA then many others...
the others songs are always different but the first song is always the same.
foobar 0.7.2 shuffle 1.0.12
It's not foobar's or foo_shuffle's fault. When you shut down your computer like that, foobar can't write the new config file and when you start it up again, it reads the "old" configuration file, where the song that should be played is "songA".
You can solve this by disabling "resume playback after restart" under prefs|core, or just close foobar first and after that your computer.
Shuffle history is not saved, and linear album mode always starts on or skips ahead to the first unplayed track in the current album.
Suggestion for the names of the "Album shuffle" modes: "Shuffle album (track)" and "Shuffle album (full)", perhaps?
Shuffle history is not saved, and linear album mode always starts on or skips ahead to the first unplayed track in the current album.
I'm in suffle mode, the "resume palyback" is not checked. Do I HAVE to close foobar before shutting down ? :-/
Suggestion for the names of the "Album shuffle" modes: "Shuffle album (track)" and "Shuffle album (full)", perhaps?
i suggest:
"shuffle inside album" and "shuffle albums"
Furthermore, a customizable album grouping pattern (ie. new ReplayGain) would be nice. Perhaps the whole thing could be generalized to "Shuffle within group" and "Shuffle groups" or something.
or
- Shuffle Albums
- Shuffle Tracks per Album
Sorry for failing to grasp this. But if all shuffle does is randomize your playlist, what's wrong with the already implemented "Random" option?
Random mode can (and likely will) play songs twice before all the songs are played.
(but I use it anyway)
stripe
Random mode can (and likely will) play songs twice before all the songs are played.
(but I use it anyway)
stripe
I was shuffling music all day today and would hear several songs before some of the new stuff. It seems no better than randomize. Plus it crashes .74.4.. I take out foo_shuffle and all is fine.
Good. I don't use it either. Randomize playlist for me, if I'm not just manually picking songs or listening to a single song for hours on end, or more often not listening to anything at all.
Wait for Case to develop a sane solution.
It's not foobar's or foo_shuffle's fault. When you shut down your computer like that, foobar can't write the new config file and when you start it up again, it reads the "old" configuration file, where the song that should be played is "songA".
You can solve this by disabling "resume playback after restart" under prefs|core, or just close foobar first and after that your computer.
actually it is foobar's fault, since it's entirely possible to halt the shutdown process until it finishes what it needs to do and then allow windows to proceed. I've seen this behaviour in who knows how many programs. I know at least one that takes so long with all the stuff it needs to clean up that windows pops up a 'not responding' dialog for this program. But once its done doing what it has to do, windows continues shutting down just fine. No reason foobar can't do what it needs to do before allowing windows to shut down.
Yes, it's true, Peter forgot the magic "halt shutdown long enough to save our shit" feature that every Windows programmer should normally add to their applications.
Phew, smells like bullshit to me. The only time an application would be force killed during shutdown is either when the shutdown is forced, or when the user has configured their system to automatically kill applications that have been unresponsive for 30 seconds.
Seems like every time I start foobar and shuffle the same playlist, it always starts with the same song, and shuffles through the EXACT same songs. I've tried it several times. Open foobar, hit play.. hit forward track a few times and make a note of the songs.
Close, hit play.. same first song, hit forward track.. same songs.
shrug, back to random.
What's new in 1.0.13 version?
A bit of extra startup and shutdown security related to playlist switcher crashes some may have been experiencing. The core of Foobar2000 v0.7.4 was already changed to make this version unnecessary, but every little bit of security helps... or something. :B
i know it's not directly related to shuffle, but could there be special play mode (done as order type) 'intro', which would play say 10secs from middle of song (or beginning - selectable by user in preferences)?
I like this idea, it's a good way to make an opinion fastly of an album.
It would be nice if you could integrate this feature in shuffle plugin or a new plugin.
Could tagset use macros like playlist display?
[ -album|-artist|+genre ]
would be:
same:[ %genre% ]
diff: [%album% %artist%]
Plugin would then compare generated strings. That would allow making powerful shuffles :)
If its not possible I suggest adding directory "tag" (eh, tagging mp3s is endless struggle :)
and little bug report:
shuffe album with Playback->Random option doesn't cooperate. That randomly chosen track is played twice.
Just wanted to know if the save suffle list between sessions in the TODO list. It's something very important for me.
Is there any way to play the randomly selected album in order (starting from track 1), then move on to another album, but only pick albums from a specified genre (or group of genres)? So, for example, I could play complete jazz albums in a random order.
Shuffle2 plays random albums
tagset seems to let you restrict songs to a specified genre
but I can't figure out a way to combine the two
Is it possible to add a feature like groups just in the way scheissenxxxx mentioned it? i hear music in different related genres (Techno,Dance,Trance) and it would be nice if I could just get them together to one group of genres.
you could define for each tag field several groups.Sth like this (Each line is a group):
GROUPS
GENRE
Techno,dance,trance
Love,Soft Rock,Pop
etc
ARTIST
Beatles,doors
Fleetwood Mac,Alan Parson's Project
...
i'm curious if its possible to use the tagset to set percentage values that it would use to calculate whether to keep shuffling the same artist/album/genre.
i.e. - +album|+artist|+genre,$random(33,-album|+artist|+genre),$random(5,-artist|-genre),$random(1,-genre)
or someway to have it make determine whether to switch albums/artists/genres
shuffle as normal but
have a 33% chance the next shuffle to be -album|+artist|+genre
have a 5% chance the next shuffle to be -artist|+genre
have a 1% chance the next shuffle to be -genre
i'm also curious if foo_shuffle does +-year
Maybe you could add the feature i requested by changin foo_Shuffles tag set control to e.g.:
+genre(Pop;Rock) will play only Pop or Rock
-genre(Pop;Rock) will play everything except from Pop and Rock
combinations of them
Just a suggestion, but would be really nice if you have >17000 songs of all different kinds and just want to hear different styles except from... or more from more than one genre / album / artist.
I got idea how tag sets could be implemented, but that deserves its own thread (http://www.hydrogenaudio.org/show.php/showtopic/17898)
But you know that a double click on the status bar will fokus the currently played file?
Wow! I didn't know that either! Where do you find out useful stuff like this?
regarding the "tag-set-mode":
I've noticed some confusion in the current thread regarding what the tag set mode "means". How about we agree on the following meaning (and syntax that I'm proposing here)?
The tag-set format string has the following format:
rule1[|rule2[|rule3...]] etc
where each rule is optional and has the syntax
=/-/1 tag
which means:
= next item on tag-set shuffle has to have the same tag value
- next item on tag-set shuffle has to have different value
1 next item on tag-set shuffle has to have next numerical value
If more than one rule is specified by the | operator, the first rule takes precendence over the next. When a rule cannot apply (because the history exhausts the playlist respecitvely), it is ignored for the previous one.
In this case, "album mode 1" (shuffle a track from each album but never from the same album twice) would be =artist|-album
"Album mode 2" (shuffle albums but play each album completely) would be =artist|=album|1tracknumber (or possible =artist|=album|1disc|1tracknumber).
Total shuffle of whole playlist would be the empty string.
Shuffling tracks from different genres would be -genre.
Shuffling tracks from different artists but keeping the genre would be =genre|-artist.
Does this structure make sense intuitively? I think so! Maybe this is the way to disambiguate the different structures/sorting/shuffling schemes suggested previously.
Your description does not appear to allow for people wanting to specify that the tags have a specific value. How, for example, would you tell it to shuffle between all your tracks with genre=Rock?
Zoominee has some great ideas! I really really want a shuffle tag incrementer.
I really like his ideas. Would be nice to include a readme in the next version to understand the syntax of it.
For example i would really like to have "=album|1partinset|1tracknumber"
that would shuffle my albums perfectly. (i haven't started to use the disc field since itunes raped my tags. It uses partinset to differentiate discs )
Teetee, does have a point. It would be nice to shuffle with set tags:
"=genre(rock)|etc"
or
"=artist(Bleh)|=album(bleh)"
or
"=date(2003)"
then of course you need some booleans
"=date('2003' or '2004')"
Even add some more fields:
"=genre(rock)|1playlist_number"
this would play all the rock tracks in order as they are in the playlist.
This is shaping up to be a killer plugin.
Your description does not appear to allow for people wanting to specify that the tags have a specific value. How, for example, would you tell it to shuffle between all your tracks with genre=Rock?
If it's just one value for the tag that you want to keep shuffled, make sure it's first on the shuffle tag-set string, and start playing a song that fits.
Like, when you play a song from an album in "shuffle album 2" mode, it keeps playing that album (because, in my notation, "shuffle album 2" is =album|1tracknumber, so to stick to the first rule, =album, the album stays the same as long as possible).
So for what you want, simply stick =genre| at the beginning of your formatting string, and as long as there are songs left in your playlist which match the genre you're currently playing, you'll get more of the same.
Of course, if you need to select more than one value from the genre field (and ignore the other values), then my notation isn't good enough - xecter's =genre(...)extension would be useful in that case.
I would also like to see the cascading rules I mentioned earlier in the thread (http://www.hydrogenaudio.org/forums/index.php?showtopic=14293&view=findpost&p=145212).. (not explained particularly well though!)
It would allow me to distinguish between "shuffle between all Rock and Metal tracks" and "shuffle between all Rock tracks and then shuffle between all Metal tracks". So in a similar way to your
If more than one rule is specified by the | operator, the first rule takes precendence over the next. When a rule cannot apply (because the history exhausts the playlist respecitvely), it is ignored for the previous one.
If a whole line of rules is called a rule-group (for want of a better word). Then when one rule-group cannot apply (because even the first rule cannot apply), the plugin moves onto the next rule-group.
If a maximum of 10 (arbitrary to make the preference page easier to handle) rule-groups was allowed, this would be quite possible to do (I think).
My example from above would be as simple as:
rule-group 1: =genre('Rock')
rule-group 2: =genre('Metal')
An example with perhaps more apparent use would be if you had tagged your files with a personal rating 1-5:
rule-group 1: =rating(5)
rule-group 2: =rating(4)
Just a thought
I hope all these improvements will be included in the new version of foo_shuffle (under the 0.8SDK)
The version for v0.8+ can be found at kode54's foobar2000 plugins page (http://www.cqasys.com/projects/kode54/index.php), like usual.
And, after a short, rather odd version snafu, it works just perfectly. Thanks for the great component, kode54!
The version for v0.8+ can be found at kode54's foobar2000 plugins page (http://www.cqasys.com/projects/kode54/index.php), like usual.
However, it's not working here, so I dunno...
it works for me with 0.8 beta 2...thanks kode for fast upgrading your plugins!
Hi,
is there a kind of tutorial how to use shuffle control? I have been looking around but couldn't find anything!
Just to give your English native speaker an impression what problems you have to face if your mother-tongue is not English: in any English-German dictionary "random" and "shuffle" has the same meaning, namely by accident! So what is the real difference between both???
What is the correct meaning of shuffle album, shuffle album2, etc???
I have tagged my files with a "trackrating" tag (from 1 to 6 points) and would like to know how to manage that all songs with five points should be played (or five and six points) by accident?
Thanks for any help
Martin
Random means that the next song is randomly chosen from ALL songs of the playlist, which means that the next song could be a song you just heard some minutes ago.
Shuffle works with a history (all suffle modes), which means it knows which songs have already been played during a session and will avoid them to play again.
Shuffle album2: plays complete albums in the right trackorder (1st track - last track of an album), then changes to the next randomly chosen album
Shuffle album: shuffles inside an album until all songs of this album have been played, then goes to the next randomly chosen album
Shuffle tag set: You can configure the "shuffle process" in the preferences of the plugin (theres an example of how it works). You can play with that feature to approximatly get what you want to do.
Regards,
The Link
@ Link,
thanks a lot for your reply! But one question is still left! Even if I "play around" I don't achieve to play all tagged files (%trackrating%) with a given number of points I have set!
Shuffle tag set: You can configure the "shuffle process" in the preferences of the plugin (theres an example of how it works). You can play with that feature to approximatly get what you want to do.
Could you please give some further explanations??
Thanks a lot
Martin
I said "approximatly" because I don't know if you can exactly do what you want at the moment (but i didn't really think hard about it). You could try setting "+trackrating" and manually begin playing a song that has the wanted trackrating. It then should shuffle through all songs with the same trackrating (no guarantee that it will work!!).
Regards,
The Link
First: this is an awesome plugin. Thanks kode. Exactly what fb2k has been missing since the very first version.
Second: would it be possible to somehow 'highlight' tracks that have been played in a different colour? So at a glance you can tell which songs have yet to be played? Maybe this could somehow be done with formatting scripts, but I'm not quite up on all the latest syntax, I'll admit.
Uploaded v1.0.15. [already obsolete, wow]
- Added persistent shuffle history, enable in preferences
- Reset current history from preferences or menu item (Sorry, global reset for now. If you want per-playlist, save and reload the list.)
Uploaded v1.0.16. [obsolete too!]
- It's only been a few hours and I have already changed the history format. It will now take up less space, depending on the history size. Of course, now I don't support the older format, so you'll lose your newly built history if you upgrade. Yeah, that's right, I don't really think these things through too well, do I?
Uploaded v1.0.17.
- Calling services during cfg_var initialization is a bad idea. There wouldn't have been a problem unless the configuration file was trashed anyway, but better safe than sorry.
Kode, could you add a feature to have multiple (named) "shuffle tag set" orders, with different tag sets?
Thanks for implementing history saving. Very much appreciated. Particularly useful when using Shuffle Album 2.
I'm sorry, i don't get this. ;_____;
I was looking for a way so that foobar would go through the entire list (when in random) before it would play a song twice. That is, instead of 'true' random, like
song 01, song 07, song 02, song 01, song 08, song 03, song 06, song 05, song 09, song 01, song 04
i want it to go through the whole list, like
song 01, song 07, song 02, song 08, song 03, song 06, song 05, song 09, song 04, (start over)
So... i found a thread where another person wanted this function, and someone replied that the solution was foo_shuffle. So i got foo_shuffle, and played with the configuration a little, but i'm not getting it. It's doing pretty much the exact same thing it's always been doing. On a play list of thirty songs, it'll play the same song like five or six times before it actually plays through all thirty. Really annoying. I must be using it wrong? There is a way to get a Winamp-style shuffle using foo_shuffle, right? :/
You should have history size set to maximum to go through all songs before starting to repeat the songs... (as far as I know, that is...)
And just a check... you are using "Shuffle" option as the playback order, right?
BLEH!
v1.0.20 uploaded.
- Improper gap removal in history saving resulted in losing the most recent entry on every shutdown.
Version 1.0.20 is simply ingenious with history FINALLY memorized!
Now all we could possibly want is "just" memory per each tab (playlist) preferrably.
Reset button is not needed under configuration / shuffle, but can be put as a part of context menus when rightclicked on tab - reset shuffle history.
It sounds quite simple to me, but i'm not quite sure how much coding does it involve...
THE plugin of all time, definitely!
Now all we could possibly want is "just" memory per each tab (playlist) preferrably.
It has always done this.
Reset button is not needed under configuration / shuffle, but can be put as a part of context menus when rightclicked on tab - reset shuffle history.
I will add this.
Hey kode, this is kinda related and kinda not related to foo_shuffle, but is it possible to make a plugin that would skip (or backtrack) a certain number of tracks in the playlist? Like 5, 10, etc? This would be useful (with keyboard shortcuts) in games, where you could skip to tracks you like.
Moneo found out the hard way that you can assign multiple actions to the same key and they will all be executed. I am not sure they will be executed in the order you assigned them, or if this works for global shortcuts. Of course, it would be kind of messy, having 5-10 actions assigned to the same key in the list.
What happens if you manually select one song after ie 10 songs have been played ? It doesnt affect the shuffle history, does it ?
Not unless you use Follow cursor and play/next to skip to that track.
If you want, you can use that repeatedly to queue up several specific tracks and then skip back to the track you were originally playing.
And just a check... you are using "Shuffle" option as the playback order, right?
y helo thar im retarded ;______;
I always leave that thing on 'Random', so i never noticed it added new options. Whoops. New problem, though. Now that i've got it set to that, it doesn't repeat songs anymore, but it's definitely not random. Like, say i'm on the tenth item in the list. It'll play 10, and then it'll go to, say, 60. Then the next song will be 09. The song after that will be 59. The song after that will be 08. The song after that will be 58. The song after that will be 07. The song after that will be 57. Notice the pattern? :,)
It does this in all the different shuffle methods ('Shuffle album', 'Shuffle', 'Shuffle tag set', it doesn't matter). I've got all the sliders set to max. Is that the problem? I'm not entirely sure of what the bottom two sliders do (the explanation is confusing), so i'm guessing it must be. Of course, i
am retarded. :/
TIA~
Like, say i'm on the tenth item in the list. It'll play 10, and then it'll go to, say, 60. Then the next song will be 09. The song after that will be 59. The song after that will be 08. The song after that will be 58. The song after that will be 07. The song after that will be 57. Notice the pattern? :,)
I've got all the sliders set to max. Is that the problem?
Indeed.
Set size depending on how long you want before it can recycle files it has already played. Set to 100% if you want it to exhaust the entire playlist before stopping. (Though you could just use Random playlist sort and play from start to finish...)
Pretend the jump range slider is like the shuffle morph rate slider in Winamp. As for the minimum parameter, that is the minimum distance from the current track. If you set it to 100%, it will always jump to the middle of the playlist, then back to the nearest unplayed file at the top, then back to the middle again, etc.
1. So, if i understood it correctly, no action can affect mp3s allready written in history, except resetting the history from options. If i use follow cursor, the songs i've marked will be played, but not written in the history ( with a chance of being played again, after the que i selected finished playing ).
2. Using next will skip to the next shuffled track AND that track will be written in history, right ?
3. What happens with the history in this case?
i have tracks 1,2,3,4,5.
it play randomly 1,4,3 then i click previous, it goes back to 4.
4 finishes playing. Will it skip to the "same track 3 that was previously written in history" or will it skip to the next of the unplayed track?
4. Also, what happens to the history entry when a song was played 2 times with user interference with previous track button?
5. No matter how much i switch through the playlists, does it REALLY REALLY memorize all the songs per each playlist? ( i've been waiting for this too long, so, naturally i cannot believe you coded it )
I'm asking all this things because i can't really pinpoint what it actually does.
Thanx
1. So, if i understood it correctly, no action can affect mp3s allready written in history, except resetting the history from options. If i use follow cursor, the songs i've marked will be played, but not written in the history ( with a chance of being played again, after the que i selected finished playing ).
Songs that are played manually by use of Follow cursor will be inserted into the history. Replaying a song that is already in the history will move it to the top, rather than inserting it twice.
2. Using next will skip to the next shuffled track AND that track will be written in history, right ?
Yes.
3. What happens with the history in this case?
i have tracks 1,2,3,4,5.
it play randomly 1,4,3 then i click previous, it goes back to 4.
4 finishes playing. Will it skip to the "same track 3 that was previously written in history" or will it skip to the next of the unplayed track?
It will skip to 3 again. Then, since there are no more tracks in the history, it will pick a new track.
4. Also, what happens to the history entry when a song was played 2 times with user interference with previous track button?
The same track cannot be in the history twice, unless it is in your playlist twice. Pressing previous twice will skip back two tracks.
If you use previous to skip back once, let that track finish playing, the press previous again to replay it, it will have no effect on the history. Navigating back or forward in the history does not change it, unless you reach the end. Skipping past the end will cause it to pick new tracks, which will be added to the end.
5. No matter how much i switch through the playlists, does it REALLY REALLY memorize all the songs per each playlist? ( i've been waiting for this too long, so, naturally i cannot believe you coded it )
Yes. I designed it that way in the first place, so that the playlist switcher would not interfere with shuffling. The fact that the core can play from one list while you view/edit another was a welcome change.
The only minor problem may come if you do something like add a bunch of duplicate entires, then use "remove duplicates." That option doesn't seem to remove items from any particular place in the list, so you can add dupes, then the existing entries may be removed instead.
Since my history works by playlist item index, already played dupes may be removed from the history. Then, the copies you just added will be replayed again.
There should not be any problems with just reordering the playlist, or adding/removing items manually, or swapping the playlist tabs around.
There is currently a problem if you delete the track which is currently playing. Skipping afterward will probably restart you in the history. The only solutions are to either:
1) Make sure saving is enabled. Stop, quit, restart, skip to previous track. It is designed so that on restart, previous will always skip to the last track played, and play/next will start on a new random track.
2) Skip to a new track and delete the previous one.
Thank you, and have a nice day.
Perfect
Ok, now lemme think ideas:
Optional toolbar:
1. playlist reduction info ( ie. played 34/100 songs in the playlist )
2. reset button ( for current playlist )
3. history browser
4. for the heck of it, put playlist sort buttons ( randomize, file path, artist, title, etc.. )
Misc:
- tab rightclick context menu - reset history
- notifications when played all items from the playlist / resetting the playlist.
- rename shuffle methods as people said, to be more "logical". First glance at the current methods create quite a confusion.
Crazy:
- various statistics about music played throughout a single and all playlists ( listening time, artst most listened to, etc ... )
Thank YOU and have a pretty darn nice day
1. playlist reduction info ( ie. played 34/100 songs in the playlist )
I can create a status window at some point.
2. reset button ( for current playlist )
I'll think about adding a context menu item for this.
3. history browser
Right, maybe when I add that status window...
4. for the heck of it, put playlist sort buttons ( randomize, file path, artist, title, etc.. )
That is not really the job of my component. Besides, there is not a universal way to add a toolbar to all user interfaces, at least not that I know of.
- notifications when played all items from the playlist / resetting the playlist.
When history size is set to 100%, it will stop after it finishes playing the last track. What kind of notification do you want?
- rename shuffle methods as people said, to be more "logical". First glance at the current methods create quite a confusion.
Goody. I can't think of any better names, and I didn't really like the suggestions that much either. I might change them to the suggested names anyway, though...
- various statistics about music played throughout a single and all playlists ( listening time, artst most listened to, etc ... )
The core already logs total playback time, shown in realtime in preferences, under Playback -> Status display. Artist/album/etc statistics can be implemented as a separate component.
kode54 I've noticed some odd behaviour which I think may be a bug..
I'm running version 20. I have Shuffle album 2 on. If I have follow cursor off, and I move to look at another playlist, it doesn't stay inside the album I'm playing when it finishes the song it was on.
It jumps to another random song and then plays part of that album before jumping to another random song etc. Not really fitting any of the descriptions of the shuffle modes.. This means I can't use shuffle album 2 mode and look at other playlists
Advance apologies for asking what seems to be a daft question, but how do I access the shuffle play history? Reading this thread, it seems clear that there is a history maintained somewhere (and yes, I have clicked the "save history" box in the foo_shuffle options page), but for the life of me, I can't figure out how to access it.
Thanks,
itazura
Why yes, I forgot to post about that.
v1.0.21 uploaded.
- Fixed album and tag set shuffle modes, which have been broken since v1.0.14, unless you always viewed the playing list during track changes.
Thanks kode54, you (and your fb2k components) really do rock.
...how do I access the shuffle play history? ....
It occurs to me that maybe I should have provided a bit more information with this question....
For starters -- thanks for this great component. I use it almost exclusively to listen to my collection, usually in "shuffle album 2" or standard "shuffle" mode with some very large (25,000+ item) playlists. I use an FM transmitter to broadcast the output from the computer to various tuners elsewhere in the house. The effect is that I get something like my own little personal radio station playing only stuff that I like (with foo_shuffle ensuring that tracks/albums don't get repeated).
At any rate, I'll often hear a song playing while I'm away from my computer and later I'll want to go back and confirm the artist or album information (my modest brain cannot always keep track of my out of control music collection). Can the shuffle history from foo_shuffle be opened and viewed somehow, allowing me to scroll back through, say, the past 50, 100 or 1000 items played? I know that I can go to "components" --> "show console" to see a list of the most recently played items -- but that list is limited to items played since the program was last launched, and it also seems to be limited to a finite number of entries.
Thanks for your feedback,
itazura
Not at this time, but I may add a dialog for this some time soon...
Not at this time, but I may add a dialog for this some time soon...
Well that explains why I couldn't figure out how to access it! Thanks for clearing that up.
I suppose that works for me. Thanks, kode54. :,)
Can the shuffle history from foo_shuffle be opened and viewed somehow, allowing me to scroll back through, say, the past 50, 100 or 1000 items played? I know that I can go to "components" --> "show console" to see a list of the most recently played items -- but that list is limited to items played since the program was last launched, and it also seems to be limited to a finite number of entries.
Thanks for your feedback,
itazura
You could use foo_text to write down all the tracks you play.
or foo_history with user defined string...
Sorry, a simple question: where can I get it?
http://www.hydrogenaudio.org/forums/index....howtopic=19611& (http://www.hydrogenaudio.org/forums/index.php?showtopic=19611&)
A small bug in the latest release (1.0.21) of foo_shuffle causes a song to be played twice is you dubbel click on the first song of an album you want to hear if you are in "shuffle album 2" mode.
Also is it possible to change the behavior of the random next button to alway select the first track of an album if in "shuffle album 2" mode?
The behavior of the core's random and next/random functions are beyond my control.
As for double clicking, that's not something I can easily monitor. Sure, I can have a play_callback do this, but that's a bit hackish, especially since I get those callbacks regardless of whether shuffle is enabled or not. So, I'd have to check for a shuffle flow control being enabled, then mark the current track if it hasn't already been marked as played.
I'll think about it.
It might not be the dubbel clicking specifically, it's the manual starting to play the first track of an album. If it becomes to complicated to implement you can leave it out np, I can life with it. I just though I should mention this behavior in case you didn't know about it.
A small bug in the latest release (1.0.21) of foo_shuffle causes a song to be played twice is you dubbel click on the first song of an album you want to hear if you are in "shuffle album 2" mode.
Hi! I think the problem that is reported here is more general... Here's my "uninsightful" explanation of the reason that the track plays twice (maybe kode54 can confirm that this is how his code works):
The song (which you dubbelklicked to play it) ends and the next song has to be determined, so foo_shuffle is engaged. Foo_shuffle looks in its history, sees that from the same album the song which just has finished playing hasn't been started (by foo_shuffle) before - so it's the first unplayed song on the album and gets played next.
An easy fix would be to force foo_shuffle to check at the end of a song that it's contained in the foo_shuffle history. I guess usually that history contains songs because foo_shuffle started to play them, but it would be much better to put them into the history when they end playing (or at least make sure they're ticked as "played" then).
The other issue is, which song do you want to hear after, say, track 5 in an album was played? Do you want to hear track 6 next, or the first unplayed song in the album? In the latter case, you'll probably hear track 1 if you've dubbelklicked track 5 to begin with. Or, if you only have one track from that album on the list, you'll hear it again as it's the first one and not ticked.
kode - I don't know if you can easily find out "last track played" when foo_shuffle is asked to give the next track to play. But then it'd be easy to fix the history issue (the first point that I mention here). The other issue is about identifying if "next in album" means the track that has the next highest tracknumber from the track that just finished, or the track that has the least highest tracknumber and hasn't been played yet. I would vote for the first definition, but this is really just a matter of preference.
v1.0.22 uploaded.
Now, if you manually play a track in the visible playlist while a shuffle mode is enabled, it will be added to the top of the history if it hasn't already been marked as played. (If I always mark the tracks, it will kill history navigation. :B)
I was wondering if you could add (or if there's already a way) to make the history reset when pressing stop ... the current behaviour that I can see is that the shuffling history will keep going on even after a stop (which can be useful), but there should be a way to reset the history every time you press play
I guess when you quit and restart foobar, the shuffle history is still persistant too? if so you should make this option too ...
<X> Remember shuffle history accross multiple playback
and
<X> Remember shuffle history accross multiple session of fb2k
Thanks for that component anyway
nIRV
Some suggestions:
- with shuffle album 2, when random button is pressed, play the FIRST track of a (random) album.
- a new mode based on a weight, i explain:
for a playlist with five titles:
ARTIST A - TRACK 1 (weight 1)
ARTIST B - TRACK 1 (weight 0.8)
ARTIST B - TRACK 2 (weight 0.8)
ARTIST B - TRACK 3 (weight 0.8)
ARTIST C - TRACK 1 (weight 1)
the first track have more chance to be played than the second or third, and equal the last. It's just an exemple based on artist tag. - please, change shuffle modes names
and thank you for your component.
nIRV, would a bindable "wipe history" button do that?
basicaly yes , a command menu where I could assign a keyboard shortcut but for me what I requested should be a basic option (much like foo_history which offers to remember or _not_ the history between new sessions)
I've noticed the odd behavior, I'll try to explain it.
I'm playing songs in the playlist using shuffle, say they are played in the following order: A->B->C->D .
Then I manually adjust to A, and foobar plays B->C->D->etc then. Not good since sometimes I want to listen to A several times and then there is no use of shuffle, all the rest songs are played in the same order.
I have no much time to figure it out, however, I've downloaded the sources of your plug-in and noticed that you are using mt19937 random generator but do not provide the source for the mt_rand class.
So, I've found the mt19937 implementation in C and created a wrapper C++ class for it to make the compiler happy. I've noticed that the generator should be initialized by some seed and I've added the appropriate code into the constructor:
init_genrand(time(0));
I've compiled and tried it. Guess what? I no longer experience the behavior described above, when I manually adjust to A random songs are played then...
Could you please provide any comment on this?
If you are interested, you can get the sources and binary here:
http://amip.tools-for.net/foo_shuffle_comm.zip (http://amip.tools-for.net/foo_shuffle_comm.zip)
Maybe I need to rename the component to foo_shuffle_see_description.
Maybe I need to rename the component to foo_shuffle_see_description.
Ok, after reading the entire thread I got it, sorry for the useless post.
- with shuffle album 2, when random button is pressed, play the FIRST track of a (random) album.
As stated one page back:
The behavior of the core's random and next/random functions are beyond my control.
- please, change shuffle modes names
As stated a couple of times (one page back as well):
Goody. I can't think of any better names, and I didn't really like the suggestions that much either. I might change them to the suggested names anyway, though...
There's a reason why older posts stay visible in a discussion forum, this way it's possible to read the discussion history to know what was been talked about before...
I admit some things are a bit hard to find using the search function every once and a while but these suggestions aren't hard to find because they are made before (some multiple times) in this same thread.
I'ld like to see one thing added to foo_shuffle sooner or later (you could guess sooner is prefered ), imo its a big lack
right now in foobar we can repeat, or shuffle ... I would like to shuffle _and_ repeat once the playlist has been all shuffled ... so maybe an option in the preference like
[ x ] restart playback once playlist(s) done
thanks
About using a different name for the album shuffle modes, what about "Shuffle Albums" and "Shuffle in Album"?
Or maybe "Shuffle Album (ASC)" and "Shuffle Album (RND)" but those might not be as descriptive to everyone.
Edit: on second thought, "Album Shuffle" and "Shuffle in Album" would be even better but that breaks the list placing Shuffle at the beginning. If that's no problem maybe "Shuffle" should be changed to "Track Shuffle" as well and "Shuffle tag set" to "Tag set Shuffle".
good possible names, Prodoc
Something I've noticed:
- open foobar2000, shuffle order mode on, playback / follow cursor on
- double click on track A
- put cursor on track B
- wait till track A has ended being player and track B is being played
- press Next while track B is being played or wait till track B has ended being played -> track A is being played again
Intended behaviour or have I missed something (then sorry for that)?
edit: clarification.
Are you sure you enabled one of the shuffle modes before starting track A? Try this:
- Set playback order to Shuffle
- Create new playlist
- Add some tracks to the new list
- Double click one of the tracks
- Skip forward with the next track button a few times
- Skip backward
When skipping backwards, is the track you double click played, or does it stop playing after skipping back past the first randomly selected track?
Yes, one of the shuffle modes before starting track A.
When skipping backwards, it stops playing after skipping back past the first randomly selected track (track A is not played again).
kode I would really appreciate if you could at least answer on the requests I posted before (like say "I dont want to lose my precious time to code what you want" or "yeah ok good ideas, I'll do them one day") .. you know, just a way for me to know if I will have to edit the source by myself ...
resume of the points I noted that foo_shuffle is missing
* a way to do shuffle _and_ repeat once the playback stop
* a way to forget history when you restart foobar
nIRV
...suppose he had to responde to all the feature requests for the plugins he made... ;-)
he doesnt have to, that's why I wrote that it would be appreciated ... nevertheless I think those two points are somewhat important and not just esthetic things (it's true that right now we cannot shuffle&repeat in fb2k)
Yes, one of the shuffle modes before starting track A.
When skipping backwards, it stops playing after skipping back past the first randomly selected track (track A is not played again).
This is apparently a race condition with the play_callback. I get my on_playback_new_track() call before the playlist engine gets its own call, so playlist_oper::get_now_playing() always returns -1 and manually triggered tracks will not be marked.
I have added a message window to deal with the problem, so now it works as intended to with the 1.0.22 release.
Thank you.
(I guess you mean "1.0.23 release")
No, I mean that I thought I fixed that with 1.0.22, but now it really is fixed with 1.0.23. :B
I had a serious crash that seems related to foo_shuffle. I'm using XP sp1 and fb2k 0.8.1. And checking your site right now it seems you just recompiled foo_shuffle yesterday, so maybe this report is redundant now, but otherwise I was using last compile before present.
What happend was that I was playing a playlist in "shuffle" mode. (The playlist was of three days playtime and I was streaming it out with Oddcast2/Icecast2.)
It had reached end of playlist and playback had stopped. The settings was that I had "history" slider set to max and "save" function activated and the rest of the sliders was just default. I then decided to shut down fb2k.
While shutting down fb2k generated a crashlog and foobar2000.exe just remained a dead hanging process in task manager, and had to be killed manually.
Also foobar2000.cfg and database.foo got exterminated. Fortunatly I keep backup of these (once burned....), otherwise there would have been tears.
Starting and shutting down foobar after this resulted in same; foobar2000.exe a hanging dead process that had to be killed off via task manager. I tried some reinstalling and such before I found the cure; reset foo_shuffle by deleting it, restart fb2k a couple of times (for good measure), then putting it back. Now it seems to work fine. Summary: Problem seems to have been related to reaching end of playlist in shuffle playback mode with max history size and save history activated, then shutting down fb2k afterwards.
Ok, enough of this rambling. All else besides, I love your plugins, kode54, and use most of them to great satisfaction and have had very few problems.
And now for something useful (maybe), the crashlog:
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 77C435D1h
Access violation, operation: write, address: 00000000h
Call path:
WinMain=>app_shutdown
This is the first crash logged by this instance.
Code bytes (77C435D1h):
77C43591h: 54 24 0C 8B 4C 24 04 85 D2 74 47 33 C0 8A 44 24
77C435A1h: 08 57 8B F9 83 FA 04 72 2D F7 D9 83 E1 03 74 08
77C435B1h: 2B D1 88 07 47 49 75 FA 8B C8 C1 E0 08 03 C1 8B
77C435C1h: C8 C1 E0 10 03 C1 8B CA 83 E2 03 C1 E9 02 74 06
77C435D1h: F3 AB 85 D2 74 06 88 07 47 4A 75 FA 8B 44 24 08
77C435E1h: 5F C3 8B 44 24 04 C3 CC CC CC CC CC CC CC CC 8D
77C435F1h: 42 FF 5B C3 8D A4 24 00 00 00 00 8D 64 24 00 33
77C43601h: C0 8A 44 24 08 53 8B D8 C1 E0 08 8B 54 24 08 F7
Stack (0012FDACh):
0012FD8Ch: 805080DB F3E1ECE4 818489E8 C0503000
0012FD9Ch: 812D0FA8 1E0A7000 00000000 00000000
0012FDACh: 00000317 01FC1A3A 00000000 000000FF
0012FDBCh: FFE0085C 00000001 01FC6B94 00000007
0012FDCCh: 00000000 FFE0085C FFE0085C 00000000
0012FDDCh: 0012FDF8 01FC1981 0012FE1C 00000002
0012FDECh: 00000000 01FC60FC 0012FE64 0012FE30
0012FDFCh: 01FC1920 0012FE1C 00000002 01FC4708
0012FE0Ch: 0012FE1C 00000000 0000007C 00000058
0012FE1Ch: 01FC5670 016B14C0 00000008 00000005
0012FE2Ch: 00000002 0012FE8C 01FC41F5 0012FE64
0012FE3Ch: 00401EA6 0012FE64 00000014 0B47C038
0012FE4Ch: 00000000 FFFFFFFF 77C2AC19 77C2AC2A
0012FE5Ch: 00000008 77C28930 004394B8 0B5F8290
0012FE6Ch: 00010000 00000000 00000002 0BCC0048
0012FE7Ch: 00020000 00011433 00000002 0BDD4D90
0012FE8Ch: 0012FEA8 0040B2BA 0BDD4D90 0B47C038
0012FE9Ch: 00000000 004394C4 00000000 0012FED4
0012FEACh: 00401E03 00401E18 0BDD4D90 00000000
0012FEBCh: 0043946C 0BDD4D90 0000002A 0000002A
Registers:
EAX: FFFFFFFF, EBX: 00000000, ECX: 3FF80217, EDX: 00000000
ESI: 016E01E0, EDI: 00000000, EBP: 0012FDDC, ESP: 0012FDAC
Crash location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "memset" (+00000041h)
Loaded modules:
foobar2000 loaded at 00400000h - 00451000h
ntdll loaded at 77F50000h - 77FF7000h
kernel32 loaded at 77E60000h - 77F46000h
USER32 loaded at 77D40000h - 77DCC000h
GDI32 loaded at 7E090000h - 7E0D1000h
ADVAPI32 loaded at 77DD0000h - 77E5D000h
RPCRT4 loaded at 78000000h - 78087000h
ole32 loaded at 771B0000h - 772D4000h
COMCTL32 loaded at 71950000h - 71A34000h
msvcrt loaded at 77C10000h - 77C63000h
SHLWAPI loaded at 70A70000h - 70AD5000h
utf8api loaded at 10000000h - 1000D000h
comdlg32 loaded at 763B0000h - 763F5000h
SHELL32 loaded at 773D0000h - 77BC2000h
IMM32 loaded at 76390000h - 763AC000h
LPK loaded at 629C0000h - 629C8000h
USP10 loaded at 72FA0000h - 72FFA000h
foo_abx loaded at 003F0000h - 003FC000h
foo_ac3 loaded at 00940000h - 00953000h
foo_albumlist loaded at 00960000h - 0096A000h
foo_ape loaded at 00970000h - 0098F000h
foo_apl loaded at 00990000h - 0099A000h
foo_balance loaded at 009A0000h - 009B1000h
foo_beammeup loaded at 009C0000h - 009CB000h
foo_bitcompare loaded at 009D0000h - 009D8000h
foo_brr loaded at 009E0000h - 009EA000h
foo_burninate loaded at 009F0000h - 009FC000h
VERSION loaded at 77C00000h - 77C07000h
foo_cdda loaded at 00A00000h - 00A0E000h
foo_centercut loaded at 00A10000h - 00A17000h
foo_clienc loaded at 00A20000h - 00A2B000h
foo_codepage_action loaded at 00A30000h - 00A37000h
foo_console loaded at 00A40000h - 00A47000h
foo_convolve loaded at 00A50000h - 00AA3000h
foo_cue_ex loaded at 00AB0000h - 00ABB000h
foo_custom_sort loaded at 00AC0000h - 00AC8000h
foo_dbsearch loaded at 00AD0000h - 00AE6000h
foo_Delete loaded at 00AF0000h - 00B03000h
foo_diskwriter loaded at 00B10000h - 00B22000h
WINMM loaded at 76B40000h - 76B6C000h
sfvmr loaded at 6BC00000h - 6BC08000h
myokent loaded at 00BB0000h - 00BBA000h
foo_dsp_continuator loaded at 00BC0000h - 00BC8000h
foo_dsp_crossfade loaded at 00BD0000h - 00BD7000h
foo_dsp_crossfeed loaded at 00BE0000h - 00BE6000h
foo_dsp_extra loaded at 00BF0000h - 00C05000h
foo_dsp_ExtraStereo loaded at 00C10000h - 00C17000h
foo_dsp_headphones loaded at 00C20000h - 00C73000h
OLEAUT32 loaded at 77120000h - 771AB000h
NTMARTA loaded at 76CE0000h - 76CFF000h
WLDAP32 loaded at 76F60000h - 76F8C000h
SAMLIB loaded at 71BF0000h - 71C01000h
foo_dsp_mute loaded at 00ED0000h - 00ED7000h
foo_dsp_nogaps loaded at 00EE0000h - 00EE7000h
foo_dsp_pause loaded at 00EF0000h - 00EF7000h
foo_dsp_pitch loaded at 00F00000h - 00F0A000h
foo_dsp_reverb loaded at 00F10000h - 00F17000h
foo_dsp_skip_silence loaded at 00F20000h - 00F27000h
foo_dsp_soundtouch loaded at 00F30000h - 00F3B000h
MSVCP60 loaded at 55900000h - 55961000h
foo_dsp_Spatial3D loaded at 00F40000h - 010D2000h
foo_dsp_surr loaded at 010E0000h - 010E8000h
foo_dsp_white_noise loaded at 010F0000h - 010F7000h
foo_dsp_wider loaded at 01100000h - 01107000h
foo_dsp_xbass loaded at 01110000h - 0111E000h
foo_dynamics loaded at 01120000h - 01127000h
foo_explorer loaded at 01130000h - 01138000h
foo_faac loaded at 01140000h - 01173000h
foo_festalon loaded at 01180000h - 012BF000h
foo_flac loaded at 012C0000h - 012D6000h
foo_flaccer loaded at 012E0000h - 012F6000h
foo_freedb loaded at 01300000h - 01332000h
WS2_32 loaded at 71AB0000h - 71AC4000h
WS2HELP loaded at 71AA0000h - 71AA8000h
foo_history loaded at 01340000h - 0134F000h
foo_id3v2 loaded at 01350000h - 0137E000h
foo_infobox loaded at 01380000h - 01393000h
foo_infobox_simple loaded at 013A0000h - 013A7000h
foo_info_samurize loaded at 013B0000h - 013CD000h
LgWndHk loaded at 013F0000h - 013F7000h
foo_input_std loaded at 01400000h - 014A2000h
MSACM32 loaded at 77BE0000h - 77BF4000h
foo_la loaded at 014B0000h - 014CB000h
la-core loaded at 014D0000h - 01543000h
OLEACC loaded at 74C80000h - 74CAC000h
WINSPOOL loaded at 73000000h - 73023000h
foo_lame loaded at 01690000h - 01699000h
foo_lpac loaded at 017A0000h - 017A7000h
lpac_codec_api loaded at 017B0000h - 017BA000h
lpaccodec loaded at 017C0000h - 017E9000h
foo_mad loaded at 01A10000h - 01A2B000h
foo_masstag loaded at 01A30000h - 01A40000h
foo_matroska loaded at 01A40000h - 01A7F000h
foo_midi loaded at 01A80000h - 01A9B000h
MFC42 loaded at 73DD0000h - 73EC2000h
foo_minibar loaded at 01AA0000h - 01AAB000h
MSVCR71 loaded at 7C340000h - 7C396000h
foo_mod loaded at 01AC0000h - 01AC9000h
BASS loaded at 01AD0000h - 01B2A000h
foo_monkey loaded at 01B30000h - 01B4D000h
foo_mpcenc loaded at 01B50000h - 01B58000h
foo_mpeg4u loaded at 01B60000h - 01B89000h
foo_music_title_bar loaded at 01B90000h - 01BAC000h
foo_nez loaded at 01BC0000h - 01BEC000h
foo_null loaded at 01BF0000h - 01BF7000h
foo_ofr loaded at 01C00000h - 01C06000h
OptimFROG loaded at 01C10000h - 01C3F000h
foo_oggpreview loaded at 01C50000h - 01D4D000h
foo_osd loaded at 01D50000h - 01D5D000h
gdiplus loaded at 70D00000h - 70EA1000h
foo_output_asio(dll) loaded at 01D70000h - 01DA1000h
foo_output_asio(exe) loaded at 01DC0000h - 01DEC000h
foo_output_std loaded at 01E00000h - 01E09000h
foo_out_dsound_ex loaded at 01E10000h - 01E19000h
DSOUND loaded at 51080000h - 510DA000h
foo_out_ks loaded at 01E30000h - 01E3B000h
SETUPAPI loaded at 76670000h - 76757000h
foo_playlistgen loaded at 01E40000h - 01E4A000h
foo_psf loaded at 01E50000h - 01EFC000h
foo_quicktag loaded at 01F00000h - 01F09000h
foo_read_http loaded at 01F10000h - 01F19000h
foo_record loaded at 01F20000h - 01F2E000h
foo_rgscan loaded at 01F30000h - 01F3B000h
foo_scheduler loaded at 01F40000h - 01F52000h
foo_scroll loaded at 01F60000h - 01F66000h
foo_search_ex loaded at 01F70000h - 01F78000h
foo_send_to_pl loaded at 01F80000h - 01F89000h
foo_setyear loaded at 01F90000h - 01FA2000h
foo_shn loaded at 01FB0000h - 01FBE000h
foo_shuffle loaded at 01FC0000h - 01FC9000h
foo_sid loaded at 01FD0000h - 02017000h
foo_spc loaded at 02020000h - 0202F000h
foo_speex loaded at 02030000h - 02048000h
foo_stfu loaded at 02050000h - 02057000h
foo_syfm loaded at 02060000h - 0206A000h
foo_text#2 loaded at 02070000h - 0207C000h
foo_text loaded at 02080000h - 0208C000h
foo_tfmx loaded at 02090000h - 02099000h
foo_toolame loaded at 020A0000h - 020B3000h
foo_tradersfriend loaded at 020C0000h - 020CC000h
foo_tta loaded at 020D0000h - 020F0000h
foo_tunes loaded at 020F0000h - 02164000h
foo_ui_columns loaded at 02170000h - 02193000h
foo_ui_notepad loaded at 021A0000h - 021B0000h
foo_ui_std loaded at 021B0000h - 021C7000h
foo_unpack loaded at 021D0000h - 02201000h
foo_unpack_cab loaded at 02210000h - 0221F000h
foo_unpack_gca loaded at 02220000h - 02238000h
foo_unpack_lha loaded at 02240000h - 02248000h
UNLHA32 loaded at 02250000h - 02297000h
foo_utils loaded at 026B0000h - 026BD000h
foo_vis_bacon loaded at 026C0000h - 026D2000h
foo_vis_bubbla loaded at 026E0000h - 026F4000h
OPENGL32 loaded at 5ED00000h - 5EDC6000h
GLU32 loaded at 68B20000h - 68B3E000h
DDRAW loaded at 51000000h - 5104D000h
DCIMAN32 loaded at 73BC0000h - 73BC6000h
foo_vis_manager loaded at 0A600000h - 0A608000h
foo_vis_samurize2 loaded at 0A610000h - 0A636000h
foo_vis_simple_spectrum loaded at 0A750000h - 0A75A000h
foo_vis_stereo loaded at 0A760000h - 0A7E8000h
foo_vis_test loaded at 0A7F0000h - 0A7F9000h
foo_vis_vu_meter loaded at 0A800000h - 0A808000h
foo_vorbisenc loaded at 0A810000h - 0A90A000h
foo_vorbisenc_gt3 loaded at 0A910000h - 0AA09000h
foo_wavpack loaded at 0AA10000h - 0AA1B000h
foo_web loaded at 0AA20000h - 0AA39000h
foo_wma loaded at 0AA40000h - 0AA59000h
WMVCore loaded at 0AA60000h - 0AC5D000h
WMASF loaded at 0AC60000h - 0AC99000h
foo_xa loaded at 0ACA0000h - 0ACAF000h
foo_oddcast loaded at 0ACB0000h - 0AE5B000h
vorbis loaded at 0AE60000h - 0AF68000h
ogg loaded at 0AF70000h - 0AF79000h
BASSWMA loaded at 10100000h - 1011C000h
msctfime loaded at 0B1A0000h - 0B1CB000h
UxTheme loaded at 5AD70000h - 5ADA4000h
Msimtf loaded at 746F0000h - 74716000h
MSCTF loaded at 74720000h - 74764000h
Powrprof loaded at 74AD0000h - 74AD7000h
LgMsgHk loaded at 0B960000h - 0B96B000h
Amhooker loaded at 0B1F0000h - 0B1F9000h
mswsock loaded at 71A50000h - 71A8B000h
DNSAPI loaded at 76F20000h - 76F45000h
winrnr loaded at 76FB0000h - 76FB7000h
rasadhlp loaded at 76FC0000h - 76FC5000h
wshtcpip loaded at 71A90000h - 71A98000h
ksuser loaded at 5EF80000h - 5EF84000h
VDETECT loaded at 013E0000h - 013E5000h
imagehlp loaded at 76C90000h - 76CB2000h
DBGHELP loaded at 6D510000h - 6D58D000h
Stack dump analysis:
Address: 01FC1A3Ah, location: "foo_shuffle", loaded at 01FC0000h - 01FC9000h
Address: 01FC6B94h, location: "foo_shuffle", loaded at 01FC0000h - 01FC9000h
Address: 01FC1981h, location: "foo_shuffle", loaded at 01FC0000h - 01FC9000h
Address: 01FC60FCh, location: "foo_shuffle", loaded at 01FC0000h - 01FC9000h
Address: 01FC1920h, location: "foo_shuffle", loaded at 01FC0000h - 01FC9000h
Address: 01FC4708h, location: "foo_shuffle", loaded at 01FC0000h - 01FC9000h
Address: 01FC5670h, location: "foo_shuffle", loaded at 01FC0000h - 01FC9000h
Address: 01FC41F5h, location: "foo_shuffle", loaded at 01FC0000h - 01FC9000h
Address: 00401EA6h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 77C2AC19h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001AEh)
Address: 77C2AC2Ah, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001BFh)
Address: 77C28930h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "operator new" (+0000000Bh)
Address: 004394B8h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0040B2BAh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394C4h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00401E03h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00401E18h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0043946Ch, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0041236Ah, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394BCh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00410D9Fh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394C4h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00438885h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004388B0h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0043C278h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 77E814C7h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "GetCurrentDirectoryW" (+00000044h)
Address: 77E94809h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "SetThreadExecutionState" (+00000097h)
Address: 77E91210h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "OpenConsoleW" (+0000EDBEh)
Address: 00438751h, location: "foobar2000", loaded at 00400000h - 00451000h
Version info:
foobar2000 v0.8.1
UNICODE
(EDIT:
BTW: here (http://www.hydrogenaudio.org/forums/index.php?showtopic=21029&view=findpost&p=205841) seems to be another one with a problem that seems relevant to this thread.)
I cannot reproduce immediately. Can you reproduce with only a small history?
Meh, this plug-in is becoming quite troublesome. Mainly because I used such a crazy design.
Given its possible to make a quick playlist with all of the songs from the desired genre's from the album list, being able to restrict to specific multiple genres or artists strikes me as possible already. However I've run into something I haven't figured out a way to do. I listen mostly to classical music, where several works are often available on one disk. After some fumbling around I finally settled on leaving the album names alone (splitting up each cdimage by work was proving to be a pain), and tagging titles into work and part. For tagging and display that has worked fine, but it means that album 2 play doesn't quite work well for me, since I end up going through all three or four concertoes on one album before moving on.
Will it ever be possible to substitute another tag for %album%? I could easily then use the album 2 style shuffle to play works, or add/subtract a usetag on the fly for the sequencing I wanted (yeaaaa ap3v2). Currently the tagset functionality doesn't increment tracks well as far as I've been able to play with it.
And yes, even if that doesn't fly, no grumbles. This is a very fine tool in its current state and your work is appreciated.
Raederle
I cannot reproduce immediately. Can you reproduce with only a small history?
Meh, this plug-in is becoming quite troublesome. Mainly because I used such a crazy design.
Sorry I didn't come back to you sooner, I haven't been home. Yes, I have reproduced the crash 2 times now, first with the long playlist (3 days - 791 songs) and then with a short playlist (50 minutes - 20 songs). This time I deleted foo_tunes (regarding this thread (http://www.hydrogenaudio.org/forums/index.php?showtopic=21048&hl=foo_tunes)) and added latest compile of foo_shuffle.
When disabling history saving and running playlist again, then shutting fb2k down, this behavior do not occur, only with history size max and history saving activated.
The crashlogs:
After long playlist:
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 77C435D1h
Access violation, operation: write, address: 00000000h
Call path:
WinMain=>app_shutdown
This is the first crash logged by this instance.
Code bytes (77C435D1h):
77C43591h: 54 24 0C 8B 4C 24 04 85 D2 74 47 33 C0 8A 44 24
77C435A1h: 08 57 8B F9 83 FA 04 72 2D F7 D9 83 E1 03 74 08
77C435B1h: 2B D1 88 07 47 49 75 FA 8B C8 C1 E0 08 03 C1 8B
77C435C1h: C8 C1 E0 10 03 C1 8B CA 83 E2 03 C1 E9 02 74 06
77C435D1h: F3 AB 85 D2 74 06 88 07 47 4A 75 FA 8B 44 24 08
77C435E1h: 5F C3 8B 44 24 04 C3 CC CC CC CC CC CC CC CC 8D
77C435F1h: 42 FF 5B C3 8D A4 24 00 00 00 00 8D 64 24 00 33
77C43601h: C0 8A 44 24 08 53 8B D8 C1 E0 08 8B 54 24 08 F7
Stack (0012FDACh):
0012FD8Ch: 805080DB EFAB7CE4 81862BC8 C0503000
0012FD9Ch: 81119D30 0BBE2000 C002D46C 81119D30
0012FDACh: 00000317 01FE196D 00000000 000000FF
0012FDBCh: FFE0085C 00000001 01FE6B5C 00000007
0012FDCCh: 00000000 FFE0085C FFE0085C 00000000
0012FDDCh: 0012FDF8 01FE18B4 0012FE1C 00000002
0012FDECh: 00000000 01FE60A4 0012FE64 0012FE30
0012FDFCh: 01FE1853 0012FE1C 00000002 01FE46B5
0012FE0Ch: 0012FE1C 00000000 0000007C 0000005A
0012FE1Ch: 01FE5650 0BD81C70 00000008 00000005
0012FE2Ch: 00000002 0012FE8C 01FE41D5 0012FE64
0012FE3Ch: 00401EA6 0012FE64 00000014 016C7028
0012FE4Ch: 00000000 FFFFFFFF 77C2AC19 77C2AC2A
0012FE5Ch: 00000008 77C28930 004394B8 0B45E290
0012FE6Ch: 00010000 00000000 00000002 0B509FE8
0012FE7Ch: 00020000 000118DC 00000002 016B09D8
0012FE8Ch: 0012FEA8 0040B2BA 016B09D8 016C7028
0012FE9Ch: 00000000 004394C4 00000000 0012FED4
0012FEACh: 00401E03 00401E18 016B09D8 00000000
0012FEBCh: 0043946C 016B09D8 0000002A 0000002A
Registers:
EAX: FFFFFFFF, EBX: 00000000, ECX: 3FF80217, EDX: 00000000
ESI: 016DF818, EDI: 00000000, EBP: 0012FDDC, ESP: 0012FDAC
Crash location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "memset" (+00000041h)
Loaded modules:
foobar2000 loaded at 00400000h - 00451000h
ntdll loaded at 77F50000h - 77FF7000h
kernel32 loaded at 77E60000h - 77F46000h
USER32 loaded at 77D40000h - 77DCC000h
GDI32 loaded at 7E090000h - 7E0D1000h
ADVAPI32 loaded at 77DD0000h - 77E5D000h
RPCRT4 loaded at 78000000h - 78087000h
ole32 loaded at 771B0000h - 772D4000h
COMCTL32 loaded at 71950000h - 71A34000h
msvcrt loaded at 77C10000h - 77C63000h
SHLWAPI loaded at 70A70000h - 70AD5000h
utf8api loaded at 10000000h - 1000D000h
comdlg32 loaded at 763B0000h - 763F5000h
SHELL32 loaded at 773D0000h - 77BC2000h
IMM32 loaded at 76390000h - 763AC000h
LPK loaded at 629C0000h - 629C8000h
USP10 loaded at 72FA0000h - 72FFA000h
foo_abx loaded at 003F0000h - 003FC000h
foo_ac3 loaded at 00940000h - 00953000h
foo_albumlist loaded at 00960000h - 0096A000h
foo_ape loaded at 00970000h - 0098F000h
foo_apl loaded at 00990000h - 0099A000h
foo_balance loaded at 009A0000h - 009B1000h
foo_beammeup loaded at 009C0000h - 009CB000h
foo_bitcompare loaded at 009D0000h - 009D8000h
foo_brr loaded at 009E0000h - 009EA000h
foo_burninate loaded at 009F0000h - 009FC000h
VERSION loaded at 77C00000h - 77C07000h
foo_cdda loaded at 00A00000h - 00A0E000h
foo_centercut loaded at 00A10000h - 00A17000h
foo_clienc loaded at 00A20000h - 00A2B000h
foo_codepage_action loaded at 00A30000h - 00A37000h
foo_console loaded at 00A40000h - 00A47000h
foo_convolve loaded at 00A50000h - 00AA3000h
foo_cue_ex loaded at 00AB0000h - 00ABB000h
foo_custom_sort loaded at 00AC0000h - 00AC8000h
foo_dbsearch loaded at 00AD0000h - 00AE6000h
foo_Delete loaded at 00AF0000h - 00B03000h
foo_diskwriter loaded at 00B10000h - 00B22000h
WINMM loaded at 76B40000h - 76B6C000h
sfvmr loaded at 6BC00000h - 6BC08000h
myokent loaded at 00BB0000h - 00BBA000h
foo_dsp_continuator loaded at 00BC0000h - 00BC8000h
foo_dsp_crossfade loaded at 00BD0000h - 00BD7000h
foo_dsp_crossfeed loaded at 00BE0000h - 00BE6000h
foo_dsp_extra loaded at 00BF0000h - 00C05000h
foo_dsp_ExtraStereo loaded at 00C10000h - 00C17000h
foo_dsp_headphones loaded at 00C20000h - 00C73000h
OLEAUT32 loaded at 77120000h - 771AB000h
NTMARTA loaded at 76CE0000h - 76CFF000h
WLDAP32 loaded at 76F60000h - 76F8C000h
SAMLIB loaded at 71BF0000h - 71C01000h
Apphelp loaded at 75F40000h - 75F5F000h
foo_dsp_mute loaded at 00ED0000h - 00ED7000h
foo_dsp_nogaps loaded at 00EE0000h - 00EE7000h
foo_dsp_pause loaded at 00EF0000h - 00EF7000h
foo_dsp_pitch loaded at 00F00000h - 00F0A000h
foo_dsp_reverb loaded at 00F10000h - 00F17000h
foo_dsp_skip_silence loaded at 00F20000h - 00F27000h
foo_dsp_soundtouch loaded at 00F30000h - 00F3B000h
MSVCP60 loaded at 55900000h - 55961000h
foo_dsp_Spatial3D loaded at 00F40000h - 010D2000h
foo_dsp_surr loaded at 010E0000h - 010E8000h
foo_dsp_white_noise loaded at 010F0000h - 010F7000h
foo_dsp_wider loaded at 01100000h - 01107000h
foo_dsp_xbass loaded at 01110000h - 0111E000h
foo_dynamics loaded at 01120000h - 01127000h
foo_explorer loaded at 01130000h - 01138000h
foo_faac loaded at 01140000h - 01173000h
foo_festalon loaded at 01180000h - 012BF000h
foo_flac loaded at 012C0000h - 012D6000h
foo_flaccer loaded at 012E0000h - 012F6000h
foo_freedb loaded at 01300000h - 01332000h
WS2_32 loaded at 71AB0000h - 71AC4000h
WS2HELP loaded at 71AA0000h - 71AA8000h
foo_history loaded at 01340000h - 0134F000h
foo_id3v2 loaded at 01350000h - 0137E000h
foo_infobox loaded at 01380000h - 01393000h
foo_infobox_simple loaded at 013A0000h - 013A7000h
foo_info_samurize loaded at 013B0000h - 013CD000h
LgWndHk loaded at 013F0000h - 013F7000h
foo_input_std loaded at 01400000h - 014A2000h
MSACM32 loaded at 77BE0000h - 77BF4000h
foo_la loaded at 014B0000h - 014CB000h
la-core loaded at 014D0000h - 01543000h
OLEACC loaded at 74C80000h - 74CAC000h
WINSPOOL loaded at 73000000h - 73023000h
foo_lame loaded at 01690000h - 01699000h
foo_lpac loaded at 017A0000h - 017A7000h
lpac_codec_api loaded at 017B0000h - 017BA000h
lpaccodec loaded at 017C0000h - 017E9000h
foo_mad loaded at 01A10000h - 01A2B000h
foo_masstag loaded at 01A30000h - 01A40000h
foo_matroska loaded at 01A40000h - 01A7F000h
foo_midi loaded at 01A80000h - 01A9B000h
MFC42 loaded at 73DD0000h - 73EC2000h
foo_minibar loaded at 01AA0000h - 01AAB000h
MSVCR71 loaded at 7C340000h - 7C396000h
foo_mod loaded at 01AC0000h - 01AC9000h
BASS loaded at 01AD0000h - 01B2A000h
foo_monkey loaded at 01B30000h - 01B4D000h
foo_mpcenc loaded at 01B50000h - 01B58000h
foo_mpeg4u loaded at 01B60000h - 01B89000h
foo_music_title_bar loaded at 01B90000h - 01BAC000h
foo_nez loaded at 01BC0000h - 01BEB000h
foo_null loaded at 01BF0000h - 01BF7000h
foo_ofr loaded at 01C00000h - 01C06000h
OptimFROG loaded at 01C10000h - 01C3F000h
foo_oggpreview loaded at 01C50000h - 01D4D000h
foo_osd loaded at 01D50000h - 01D5E000h
gdiplus loaded at 70D00000h - 70EA1000h
foo_output_asio(dll) loaded at 01D70000h - 01DA1000h
foo_output_asio(exe) loaded at 01DC0000h - 01DEC000h
foo_output_std loaded at 01E00000h - 01E09000h
foo_out_dsound_ex loaded at 01E10000h - 01E19000h
DSOUND loaded at 51080000h - 510DA000h
foo_out_ks loaded at 01E30000h - 01E3B000h
SETUPAPI loaded at 76670000h - 76757000h
foo_playcount loaded at 01E40000h - 01E49000h
foo_playlistgen loaded at 01E50000h - 01E5A000h
foo_playlistgen_ex loaded at 01E60000h - 01E6E000h
foo_psf loaded at 01E70000h - 01F1C000h
foo_quicktag loaded at 01F20000h - 01F29000h
foo_read_http loaded at 01F30000h - 01F39000h
foo_record loaded at 01F40000h - 01F4E000h
foo_rgscan loaded at 01F50000h - 01F5B000h
foo_scheduler loaded at 01F60000h - 01F72000h
foo_scroll loaded at 01F80000h - 01F86000h
foo_search_ex loaded at 01F90000h - 01F98000h
foo_send_to_pl loaded at 01FA0000h - 01FA9000h
foo_setyear loaded at 01FB0000h - 01FC2000h
foo_shn loaded at 01FD0000h - 01FDE000h
foo_shuffle loaded at 01FE0000h - 01FE9000h
foo_sid loaded at 01FF0000h - 02037000h
foo_spc loaded at 02040000h - 0204F000h
foo_speex loaded at 02050000h - 02068000h
foo_stfu loaded at 02070000h - 02077000h
foo_syfm loaded at 02080000h - 0208A000h
foo_text#2 loaded at 02090000h - 0209C000h
foo_text loaded at 020A0000h - 020AC000h
foo_tfmx loaded at 020B0000h - 020B9000h
foo_toolame loaded at 020C0000h - 020D3000h
foo_tradersfriend loaded at 020E0000h - 020EC000h
foo_tta loaded at 020F0000h - 02110000h
foo_ui_columns loaded at 02110000h - 02133000h
foo_ui_std loaded at 02140000h - 02157000h
foo_unpack loaded at 02160000h - 02191000h
foo_unpack_cab loaded at 021A0000h - 021AF000h
foo_unpack_gca loaded at 021B0000h - 021C8000h
foo_unpack_lha loaded at 021D0000h - 021D8000h
UNLHA32 loaded at 021E0000h - 02227000h
foo_utils loaded at 02640000h - 0264D000h
foo_vis_bacon loaded at 02650000h - 02662000h
foo_vis_bubbla loaded at 02670000h - 02684000h
OPENGL32 loaded at 5ED00000h - 5EDC6000h
GLU32 loaded at 68B20000h - 68B3E000h
DDRAW loaded at 51000000h - 5104D000h
DCIMAN32 loaded at 73BC0000h - 73BC6000h
foo_vis_manager loaded at 0A590000h - 0A598000h
foo_vis_samurize2 loaded at 0A5A0000h - 0A5C6000h
foo_vis_simple_spectrum loaded at 0A6E0000h - 0A6EA000h
foo_vis_stereo loaded at 0A6F0000h - 0A778000h
foo_vis_test loaded at 0A780000h - 0A789000h
foo_vis_vu_meter loaded at 0A790000h - 0A798000h
foo_vorbisenc loaded at 0A7A0000h - 0A89A000h
foo_vorbisenc_gt3 loaded at 0A8A0000h - 0A999000h
foo_wavpack loaded at 0A9A0000h - 0A9AB000h
foo_web loaded at 0A9B0000h - 0A9C9000h
foo_wma loaded at 0A9D0000h - 0A9E9000h
WMVCore loaded at 0A9F0000h - 0ABED000h
WMASF loaded at 0ABF0000h - 0AC29000h
foo_xa loaded at 0AC30000h - 0AC3F000h
foo_oddcast loaded at 0AC40000h - 0ADEB000h
vorbis loaded at 0ADF0000h - 0AEF8000h
ogg loaded at 0AF00000h - 0AF09000h
BASSWMA loaded at 10100000h - 1011C000h
msctfime loaded at 0B130000h - 0B15B000h
UxTheme loaded at 5AD70000h - 5ADA4000h
Msimtf loaded at 746F0000h - 74716000h
MSCTF loaded at 74720000h - 74764000h
Powrprof loaded at 74AD0000h - 74AD7000h
LgMsgHk loaded at 0B2F0000h - 0B2FB000h
Amhooker loaded at 0B180000h - 0B189000h
ksuser loaded at 5EF80000h - 5EF84000h
mswsock loaded at 71A50000h - 71A8B000h
DNSAPI loaded at 76F20000h - 76F45000h
winrnr loaded at 76FB0000h - 76FB7000h
rasadhlp loaded at 76FC0000h - 76FC5000h
wshtcpip loaded at 71A90000h - 71A98000h
netapi32 loaded at 71C20000h - 71C6E000h
CLBCATQ loaded at 7C890000h - 7C911000h
COMRes loaded at 77050000h - 77115000h
VDETECT loaded at 0BAA0000h - 0BAA5000h
imagehlp loaded at 76C90000h - 76CB2000h
DBGHELP loaded at 6D510000h - 6D58D000h
Stack dump analysis:
Address: 01FE196Dh, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE6B5Ch, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE18B4h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE60A4h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE1853h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE46B5h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE5650h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE41D5h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 00401EA6h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 77C2AC19h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001AEh)
Address: 77C2AC2Ah, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001BFh)
Address: 77C28930h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "operator new" (+0000000Bh)
Address: 004394B8h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0040B2BAh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394C4h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00401E03h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00401E18h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0043946Ch, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0041236Ah, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394BCh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00410D9Fh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394C4h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00438885h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004388B0h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0043C278h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 77E814C7h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "GetCurrentDirectoryW" (+00000044h)
Address: 77E94809h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "SetThreadExecutionState" (+00000097h)
Address: 77E91210h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "OpenConsoleW" (+0000EDBEh)
Address: 00438751h, location: "foobar2000", loaded at 00400000h - 00451000h
Version info:
foobar2000 v0.8.1
UNICODE
After short playlist:
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 77C435D1h
Access violation, operation: write, address: 00000000h
Call path:
WinMain=>app_shutdown
This is the first crash logged by this instance.
Code bytes (77C435D1h):
77C43591h: 54 24 0C 8B 4C 24 04 85 D2 74 47 33 C0 8A 44 24
77C435A1h: 08 57 8B F9 83 FA 04 72 2D F7 D9 83 E1 03 74 08
77C435B1h: 2B D1 88 07 47 49 75 FA 8B C8 C1 E0 08 03 C1 8B
77C435C1h: C8 C1 E0 10 03 C1 8B CA 83 E2 03 C1 E9 02 74 06
77C435D1h: F3 AB 85 D2 74 06 88 07 47 4A 75 FA 8B 44 24 08
77C435E1h: 5F C3 8B 44 24 04 C3 CC CC CC CC CC CC CC CC 8D
77C435F1h: 42 FF 5B C3 8D A4 24 00 00 00 00 8D 64 24 00 33
77C43601h: C0 8A 44 24 08 53 8B D8 C1 E0 08 8B 54 24 08 F7
Stack (0012FDACh):
0012FD8Ch: 805080DB F38D7CE4 813BADA8 C0503000
0012FD9Ch: 8121D950 1690E000 C002D4E0 8121D950
0012FDACh: 00000014 01FE196D 00000000 000000FF
0012FDBCh: FFDFFC4C 00000006 01FE6B5C 00000007
0012FDCCh: 00000000 FFDFFC4C FFDFFC4C 00000000
0012FDDCh: 0012FDF8 01FE18B4 0012FE1C 00000002
0012FDECh: 00000000 01FE60A4 0012FE64 0012FE30
0012FDFCh: 01FE1853 0012FE1C 00000002 01FE46B5
0012FE0Ch: 0012FE1C 00000000 0000007C 0000005A
0012FE1Ch: 01FE5650 0B4C2028 00000010 0000000E
0012FE2Ch: 00000002 0012FE8C 01FE41D5 0012FE64
0012FE3Ch: 00401EA6 0012FE64 00000014 0B478FA8
0012FE4Ch: 00000000 FFFFFFFF 77C2AC19 77C2AC2A
0012FE5Ch: 00000008 77C28930 004394B8 0B4F4FD0
0012FE6Ch: 00010000 00000000 00000002 0B5267D0
0012FE7Ch: 00020000 000118BC 00000002 0B4E8258
0012FE8Ch: 0012FEA8 0040B2BA 0B4E8258 0B478FA8
0012FE9Ch: 00000000 004394C4 00000000 0012FED4
0012FEACh: 00401E03 00401E18 0B4E8258 00000000
0012FEBCh: 0043946C 0B4E8258 0000002A 0000002A
Registers:
EAX: FFFFFFFF, EBX: 00000000, ECX: 3FF7FF13, EDX: 00000000
ESI: 016DFB10, EDI: 00000000, EBP: 0012FDDC, ESP: 0012FDAC
Crash location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "memset" (+00000041h)
Loaded modules:
foobar2000 loaded at 00400000h - 00451000h
ntdll loaded at 77F50000h - 77FF7000h
kernel32 loaded at 77E60000h - 77F46000h
USER32 loaded at 77D40000h - 77DCC000h
GDI32 loaded at 7E090000h - 7E0D1000h
ADVAPI32 loaded at 77DD0000h - 77E5D000h
RPCRT4 loaded at 78000000h - 78087000h
ole32 loaded at 771B0000h - 772D4000h
COMCTL32 loaded at 71950000h - 71A34000h
msvcrt loaded at 77C10000h - 77C63000h
SHLWAPI loaded at 70A70000h - 70AD5000h
utf8api loaded at 10000000h - 1000D000h
comdlg32 loaded at 763B0000h - 763F5000h
SHELL32 loaded at 773D0000h - 77BC2000h
IMM32 loaded at 76390000h - 763AC000h
LPK loaded at 629C0000h - 629C8000h
USP10 loaded at 72FA0000h - 72FFA000h
foo_abx loaded at 003F0000h - 003FC000h
foo_ac3 loaded at 00940000h - 00953000h
foo_albumlist loaded at 00960000h - 0096A000h
foo_ape loaded at 00970000h - 0098F000h
foo_apl loaded at 00990000h - 0099A000h
foo_balance loaded at 009A0000h - 009B1000h
foo_beammeup loaded at 009C0000h - 009CB000h
foo_bitcompare loaded at 009D0000h - 009D8000h
foo_brr loaded at 009E0000h - 009EA000h
foo_burninate loaded at 009F0000h - 009FC000h
VERSION loaded at 77C00000h - 77C07000h
foo_cdda loaded at 00A00000h - 00A0E000h
foo_centercut loaded at 00A10000h - 00A17000h
foo_clienc loaded at 00A20000h - 00A2B000h
foo_codepage_action loaded at 00A30000h - 00A37000h
foo_console loaded at 00A40000h - 00A47000h
foo_convolve loaded at 00A50000h - 00AA3000h
foo_cue_ex loaded at 00AB0000h - 00ABB000h
foo_custom_sort loaded at 00AC0000h - 00AC8000h
foo_dbsearch loaded at 00AD0000h - 00AE6000h
foo_Delete loaded at 00AF0000h - 00B03000h
foo_diskwriter loaded at 00B10000h - 00B22000h
WINMM loaded at 76B40000h - 76B6C000h
sfvmr loaded at 6BC00000h - 6BC08000h
myokent loaded at 00BB0000h - 00BBA000h
foo_dsp_continuator loaded at 00BC0000h - 00BC8000h
foo_dsp_crossfade loaded at 00BD0000h - 00BD7000h
foo_dsp_crossfeed loaded at 00BE0000h - 00BE6000h
foo_dsp_extra loaded at 00BF0000h - 00C05000h
foo_dsp_ExtraStereo loaded at 00C10000h - 00C17000h
foo_dsp_headphones loaded at 00C20000h - 00C73000h
OLEAUT32 loaded at 77120000h - 771AB000h
NTMARTA loaded at 76CE0000h - 76CFF000h
WLDAP32 loaded at 76F60000h - 76F8C000h
SAMLIB loaded at 71BF0000h - 71C01000h
foo_dsp_mute loaded at 00ED0000h - 00ED7000h
foo_dsp_nogaps loaded at 00EE0000h - 00EE7000h
foo_dsp_pause loaded at 00EF0000h - 00EF7000h
foo_dsp_pitch loaded at 00F00000h - 00F0A000h
foo_dsp_reverb loaded at 00F10000h - 00F17000h
foo_dsp_skip_silence loaded at 00F20000h - 00F27000h
foo_dsp_soundtouch loaded at 00F30000h - 00F3B000h
MSVCP60 loaded at 55900000h - 55961000h
foo_dsp_Spatial3D loaded at 00F40000h - 010D2000h
foo_dsp_surr loaded at 010E0000h - 010E8000h
foo_dsp_white_noise loaded at 010F0000h - 010F7000h
foo_dsp_wider loaded at 01100000h - 01107000h
foo_dsp_xbass loaded at 01110000h - 0111E000h
foo_dynamics loaded at 01120000h - 01127000h
foo_explorer loaded at 01130000h - 01138000h
foo_faac loaded at 01140000h - 01173000h
foo_festalon loaded at 01180000h - 012BF000h
foo_flac loaded at 012C0000h - 012D6000h
foo_flaccer loaded at 012E0000h - 012F6000h
foo_freedb loaded at 01300000h - 01332000h
WS2_32 loaded at 71AB0000h - 71AC4000h
WS2HELP loaded at 71AA0000h - 71AA8000h
foo_history loaded at 01340000h - 0134F000h
foo_id3v2 loaded at 01350000h - 0137E000h
foo_infobox loaded at 01380000h - 01393000h
foo_infobox_simple loaded at 013A0000h - 013A7000h
foo_info_samurize loaded at 013B0000h - 013CD000h
VDETECT loaded at 013E0000h - 013E5000h
LgWndHk loaded at 013F0000h - 013F7000h
foo_input_std loaded at 01400000h - 014A2000h
MSACM32 loaded at 77BE0000h - 77BF4000h
foo_la loaded at 014B0000h - 014CB000h
la-core loaded at 014D0000h - 01543000h
OLEACC loaded at 74C80000h - 74CAC000h
WINSPOOL loaded at 73000000h - 73023000h
foo_lame loaded at 01690000h - 01699000h
foo_lpac loaded at 017A0000h - 017A7000h
lpac_codec_api loaded at 017B0000h - 017BA000h
lpaccodec loaded at 017C0000h - 017E9000h
foo_mad loaded at 01A10000h - 01A2B000h
foo_masstag loaded at 01A30000h - 01A40000h
foo_matroska loaded at 01A40000h - 01A7F000h
foo_midi loaded at 01A80000h - 01A9B000h
MFC42 loaded at 73DD0000h - 73EC2000h
foo_minibar loaded at 01AA0000h - 01AAB000h
MSVCR71 loaded at 7C340000h - 7C396000h
foo_mod loaded at 01AC0000h - 01AC9000h
BASS loaded at 01AD0000h - 01B2A000h
foo_monkey loaded at 01B30000h - 01B4D000h
foo_mpcenc loaded at 01B50000h - 01B58000h
foo_mpeg4u loaded at 01B60000h - 01B89000h
foo_music_title_bar loaded at 01B90000h - 01BAC000h
foo_nez loaded at 01BC0000h - 01BEB000h
foo_null loaded at 01BF0000h - 01BF7000h
foo_ofr loaded at 01C00000h - 01C06000h
OptimFROG loaded at 01C10000h - 01C3F000h
foo_oggpreview loaded at 01C50000h - 01D4D000h
foo_osd loaded at 01D50000h - 01D5E000h
gdiplus loaded at 70D00000h - 70EA1000h
foo_output_asio(dll) loaded at 01D70000h - 01DA1000h
foo_output_asio(exe) loaded at 01DC0000h - 01DEC000h
foo_output_std loaded at 01E00000h - 01E09000h
foo_out_dsound_ex loaded at 01E10000h - 01E19000h
DSOUND loaded at 51080000h - 510DA000h
foo_out_ks loaded at 01E30000h - 01E3B000h
SETUPAPI loaded at 76670000h - 76757000h
foo_playcount loaded at 01E40000h - 01E49000h
foo_playlistgen loaded at 01E50000h - 01E5A000h
foo_playlistgen_ex loaded at 01E60000h - 01E6E000h
foo_psf loaded at 01E70000h - 01F1C000h
foo_quicktag loaded at 01F20000h - 01F29000h
foo_read_http loaded at 01F30000h - 01F39000h
foo_record loaded at 01F40000h - 01F4E000h
foo_rgscan loaded at 01F50000h - 01F5B000h
foo_scheduler loaded at 01F60000h - 01F72000h
foo_scroll loaded at 01F80000h - 01F86000h
foo_search_ex loaded at 01F90000h - 01F98000h
foo_send_to_pl loaded at 01FA0000h - 01FA9000h
foo_setyear loaded at 01FB0000h - 01FC2000h
foo_shn loaded at 01FD0000h - 01FDE000h
foo_shuffle loaded at 01FE0000h - 01FE9000h
foo_sid loaded at 01FF0000h - 02037000h
foo_spc loaded at 02040000h - 0204F000h
foo_speex loaded at 02050000h - 02068000h
foo_stfu loaded at 02070000h - 02077000h
foo_syfm loaded at 02080000h - 0208A000h
foo_text#2 loaded at 02090000h - 0209C000h
foo_text loaded at 020A0000h - 020AC000h
foo_tfmx loaded at 020B0000h - 020B9000h
foo_toolame loaded at 020C0000h - 020D3000h
foo_tradersfriend loaded at 020E0000h - 020EC000h
foo_tta loaded at 020F0000h - 02110000h
foo_ui_columns loaded at 02110000h - 02133000h
foo_ui_std loaded at 02140000h - 02157000h
foo_unpack loaded at 02160000h - 02191000h
foo_unpack_cab loaded at 021A0000h - 021AF000h
foo_unpack_gca loaded at 021B0000h - 021C8000h
foo_unpack_lha loaded at 021D0000h - 021D8000h
UNLHA32 loaded at 021E0000h - 02227000h
foo_utils loaded at 02640000h - 0264D000h
foo_vis_bacon loaded at 02650000h - 02662000h
foo_vis_bubbla loaded at 02670000h - 02684000h
OPENGL32 loaded at 5ED00000h - 5EDC6000h
GLU32 loaded at 68B20000h - 68B3E000h
DDRAW loaded at 51000000h - 5104D000h
DCIMAN32 loaded at 73BC0000h - 73BC6000h
foo_vis_manager loaded at 0A590000h - 0A598000h
foo_vis_samurize2 loaded at 0A5A0000h - 0A5C6000h
foo_vis_simple_spectrum loaded at 0A6E0000h - 0A6EA000h
foo_vis_stereo loaded at 0A6F0000h - 0A778000h
foo_vis_test loaded at 0A780000h - 0A789000h
foo_vis_vu_meter loaded at 0A790000h - 0A798000h
foo_vorbisenc loaded at 0A7A0000h - 0A89A000h
foo_vorbisenc_gt3 loaded at 0A8A0000h - 0A999000h
foo_wavpack loaded at 0A9A0000h - 0A9AB000h
foo_web loaded at 0A9B0000h - 0A9C9000h
foo_wma loaded at 0A9D0000h - 0A9E9000h
WMVCore loaded at 0A9F0000h - 0ABED000h
WMASF loaded at 0ABF0000h - 0AC29000h
foo_xa loaded at 0AC30000h - 0AC3F000h
foo_oddcast loaded at 0AC40000h - 0ADEB000h
vorbis loaded at 0ADF0000h - 0AEF8000h
ogg loaded at 0AF00000h - 0AF09000h
BASSWMA loaded at 10100000h - 1011C000h
msctfime loaded at 0B130000h - 0B15B000h
UxTheme loaded at 5AD70000h - 5ADA4000h
Msimtf loaded at 746F0000h - 74716000h
MSCTF loaded at 74720000h - 74764000h
Powrprof loaded at 74AD0000h - 74AD7000h
LgMsgHk loaded at 0B2F0000h - 0B2FB000h
Amhooker loaded at 0B180000h - 0B189000h
mswsock loaded at 71A50000h - 71A8B000h
DNSAPI loaded at 76F20000h - 76F45000h
winrnr loaded at 76FB0000h - 76FB7000h
rasadhlp loaded at 76FC0000h - 76FC5000h
wshtcpip loaded at 71A90000h - 71A98000h
ksuser loaded at 5EF80000h - 5EF84000h
imagehlp loaded at 76C90000h - 76CB2000h
DBGHELP loaded at 6D510000h - 6D58D000h
Stack dump analysis:
Address: 01FE196Dh, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE6B5Ch, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE18B4h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE60A4h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE1853h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE46B5h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE5650h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 01FE41D5h, location: "foo_shuffle", loaded at 01FE0000h - 01FE9000h
Address: 00401EA6h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 77C2AC19h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001AEh)
Address: 77C2AC2Ah, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "free" (+000001BFh)
Address: 77C28930h, location: "msvcrt", loaded at 77C10000h - 77C63000h
Symbol: "operator new" (+0000000Bh)
Address: 004394B8h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0040B2BAh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394C4h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00401E03h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00401E18h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0043946Ch, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0041236Ah, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394BCh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00410D9Fh, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004394C4h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00438885h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 004388B0h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 0043C278h, location: "foobar2000", loaded at 00400000h - 00451000h
Address: 77E814C7h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "GetCurrentDirectoryW" (+00000044h)
Address: 77E94809h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "SetThreadExecutionState" (+00000097h)
Address: 77E91210h, location: "kernel32", loaded at 77E60000h - 77F46000h
Symbol: "OpenConsoleW" (+0000EDBEh)
Address: 00438751h, location: "foobar2000", loaded at 00400000h - 00451000h
Version info:
foobar2000 v0.8.1
UNICODE
Thanks for this great plugin, I have one problem with version 1.0.23 though, shuffle album 2 doesnt work properly anymore, it gets to about halfway through the album and starts at the first track again. Works fine in 1.0.22.
Try switching to another playlist after starting the album. (Gee, the only change I made in 1.0.23 was to fix logging of manually started tracks. I guess if this turns out to be the problem, you can either have it log manually started tracks, or have history actually function properly.)
Don't know... just put history size to approx. 98-99 % - history saving activated. No more problems. Yes: No problems whatsoever after reducing history size 1%... Works for me...
This seems to sort it, very strange, thanks rabid teddybear
Lol, I found a funny bug in the shuffle plugin.
I've got two albums called "Greatest Hits" on from "Clanned" and one from "Lenny Kravitz". Because of the same album names it will alternate each track of each album one after the other in "Shuffle album 2" mode.
Sorry for digging this thread up, but as this is the official thread...
Would it be possible to add a "shuffle artist" option? Off course I could simulate it by making a new playlist with just that one artist, but through the foo_shuffle plugin it would be very neat.
You can use the "shuffle tag set" with the rule: "+artist" or "+artist | -album".
Great plug-in, I have a question:
I set "shuffle" or "shuffle album"
I set History Size to _max_ and Reduce to _min_
Jump has the default settings.
I have N tracks, all tracks are played, but it cycles all the time, it doesn't stop.
Cause when I set "shuffle album 2", all tracks are played and then stops, I like that. But I want to use "shuffle album", so it plays all tracks of the album in no order and then jump to the next album, but I want to stop in the last album.
Am I doing wrong? Can I configure to stop when all tracks are played?
Thanks in advance!
Rodolfo from Mexico
You can use the "shuffle tag set" with the rule: "+artist" or "+artist | -album".
Ah that's nice!
I'd love to be able to change custom shuffle without going through the options menu
How about the ability to 'build' your own shuffle presets? There'd basically be a shuffle wizard, consisting of lots of checkboxes and input fields (jump min/max, repeat, shuffle, if shuffle, shuffle what? etc), which would then add your new preset to the play mode drop-down list.
Great plug-in, I have a question:
I set "shuffle" or "shuffle album"
I set History Size to _max_ and Reduce to _min_
Jump has the default settings.
I have N tracks, all tracks are played, but it cycles all the time, it doesn't stop.
Cause when I set "shuffle album 2", all tracks are played and then stops, I like that. But I want to use "shuffle album", so it plays all tracks of the album in no order and then jump to the next album, but I want to stop in the last album.
Am I doing wrong? Can I configure to stop when all tracks are played?
Thanks in advance!
Rodolfo from Mexico
I suggest you try setting Reduce to Max
Then it won't reduce and should stop when you've played all tracks. I could be wrong but it is worth trying
I'm not sure if this would be a possible option for this plugin, but would it be possible to create a command that while in shuffle album 2 mode (or any other mode for that matter) randomly goes to the beginning of a new cd?
Right now you have to go through all songs on a cd to have it go to a new cd's first track.
I'm not sure if this would be a possible option for this plugin, but would it be possible to create a command that while in shuffle album 2 mode (or any other mode for that matter) randomly goes to the beginning of a new cd?
Right now you have to go through all songs on a cd to have it go to a new cd's first track.
[a href="index.php?act=findpost&pid=236935"][{POST_SNAPBACK}][/a]
I don't know how this works, but if you install the RM-X plugin you can use the "go to random track" function (which ignores the album 2 mode), or you can use the "next track" function (which goes through all the songs, as you describe above). Maybe there are corresponding commands of "Random" and "next" in foobar itself, and you don't need to install the RM-X to do this.
I don't know if I'm blind or something but I can't find any link where I could download this plugin. :I I used to have it but I had to reinstall Windows and everything so it was deleted...
Poof (http://www.saunalahti.fi/cse/kode54/).
I have gotten this idea in my head that I will use foo_quicktag and make quicktag options (with keybindings) to set a tagfield MOOD with values 0 through 9 with the value 0 representing the most laidback mood (Harold Budd?) and value 9 representing the most intense (Merzbow?) and then use "Shuffle tag set" if I want to shuffle on files with a particular intensity level.
My Q. here being: How do I go about to format the "Tag set" option in Shuffle control if I want to e.g. shuffle on all files in playlist that have a MOOD tag with the value of 4?
EDIT: Typo.
I have gotten this idea in my head that I will use foo_quicktag and make quicktag options (with keybindings) to set a tagfield MOOD with values 0 through 9 with the value 0 representing the most laidback mood (Harold Budd?) and value 9 representing the most intense (Mertzbow?) and then use "Shuffle tag set" if I want to shuffle on files with a particular intensity level.
My Q. here being: How do I go about to format the "Tag set" option in Shuffle control if I want to e.g. shuffle on all files in playlist that have a MOOD tag with the value of 4?
[a href="index.php?act=findpost&pid=249770"][{POST_SNAPBACK}][/a]
I'm no expert, but this tag set:
+mood
would keep playing tracks with the same mood, as the track that was playing when "shuffle tag set" was activated. To change to another mood, you would have to manually start playing a track with the new desired mood value.
I don't think there is an option to do it any other way with this component. Assuming I'm correct, it would IMHO be a better idea to use the
extended playlist generator for this sort of thing. Then you could generate playlists with e.g.: only one mood, with a range of moods, or all tracks with a mood tag.
I'm not sure if this would be a possible option for this plugin, but would it be possible to create a command that while in shuffle album 2 mode (or any other mode for that matter) randomly goes to the beginning of a new cd?
Right now you have to go through all songs on a cd to have it go to a new cd's first track.
[a href="index.php?act=findpost&pid=236935"][{POST_SNAPBACK}][/a]
I'd also be real interested in this feature. Anyone got any ideas?
Hey, I just found this component, its awesome! Thanks so much, its everything I want it to be. I cant imagine not having it now...
A request for "shuffle album 2":
When determining which tracks belong to one album, the plugin should make sure the artist is identical, except when "album artist" is defined.
Explanation:
Right now, the plugin only uses the album name for determining which tracks belong to one album. This is somewhat annoying when you have several albums with the same name but a different artist, for example "The Best Of" or "Greatest Hits".
For example:
I have "The Best of" by Blur and "The Best Of" by Nick Cave.
How "shuffle 2" plays them right now:
Track 1 of the Blur album
Track 1 of the Nick Cave album
Track 2 of the Blur album
Track 2 of the Nick Cave album
etc.
How "shuffle 2" should play them:
Track 1 of the Blur album
Track 2 of the Blur album
Track 3 of the Blur album
etc.
<another album>
or
Track 1 of the Nick Cave album
Track 2 of the Nick Cave album
Track 3 of the Nick Cave album
etc.
<another album>
This problem can be solved by defining an album as having the same album tag and the same artist tag.
Of course, this solution doesn't work with various artists albums (since it will treat each track as a different album), but I think this can be solved by ignoring the artist tag when the "album artist" tag is set.
To summarize: if ALBUM ARTIST is set, album key = ALBUM, else album key = ARTIST + ALBUM.
This method may still have issues that I haven't thought of yet, and I guess it's possible not everybody has their tags set up this way, so maybe you can make this "extended" method optional?
EDIT: Adminstrator can delete this post, solved the problem I had myself.
Hey all
I'm having a bit of difficulty using the shuffle tag name funtion. I want it to play songs that have not yet been played on a certain day, using the %play_date% tag. Even with the - at the front it still sometimes goes to tracks that have been played already. I've tested it with + at the front to see if it will jump to songs of the same day, and that doesnt seem to work either... if it helps i have my tags in dd/mm/yy form. Also, will pressing next on the playback controls be the same as waiting for the track to change by itself?
Thanks
Ed
A request for "shuffle album 2":
When determining which tracks belong to one album, the plugin should make sure the artist is identical, except when "album artist" is defined.
...
To summarize: if ALBUM ARTIST is set, album key = ALBUM, else album key = ARTIST + ALBUM.[a href="index.php?act=findpost&pid=254771"][{POST_SNAPBACK}][/a]
This sounds useful, but...
This method may still have issues that I haven't thought of yet, and I guess it's possible not everybody has their tags set up this way, so maybe you can make this "extended" method optional?[a href="index.php?act=findpost&pid=254771"][{POST_SNAPBACK}][/a]
Yes, there would be issues, so it would be best to make it optional. For one, I can think of several game soundtracks where random tracks will have different artist credits.
I'd like a way to somehow tell the plugin something like "play tracks with rating higher than 3". Would that be possible to implement?
Probably the best solution is to generate a playlist (top rated) which contains all songs with rating higher than 3. Haven't tried yet but I think it's possible.
The problem is that such playlist would't be dynamic. I think I read some discussion about in the Playlist generator topic.
Yes I know that and that's what I currently do. What I meant was that it would be cool to make the rule set more flexible.
Does anyone know where to download this plugin? The http://www.cqasys.com/projects/kode54/foo_shuffle.zip (http://www.cqasys.com/projects/kode54/foo_shuffle.zip) link does not seem to work.
Thanks.
Does anyone know where to download this plugin? The http://www.cqasys.com/projects/kode54/foo_shuffle.zip (http://www.cqasys.com/projects/kode54/foo_shuffle.zip) link does not seem to work.
Thanks.
[{POST_SNAPBACK}][/a] (http://index.php?act=findpost&pid=255564")
[a href="http://www.saunalahti.fi/cse/kode54/]http://www.saunalahti.fi/cse/kode54/[/url] is his temporary site location
I saw this question asked before, but never saw an answer for it... I have a "Greatest Hits" album by about 5 different artists. When I use Shuffle Album 2 it plays all the track 1's then all the track 2's, etc. Is there anyway to set this to album within artist?
Thanks
A request for "shuffle album 2":
When determining which tracks belong to one album, the plugin should make sure the artist is identical, except when "album artist" is defined.
...
To summarize: if ALBUM ARTIST is set, album key = ALBUM, else album key = ARTIST + ALBUM.[a href="index.php?act=findpost&pid=254771"][{POST_SNAPBACK}][/a]
This sounds useful, but...
This method may still have issues that I haven't thought of yet, and I guess it's possible not everybody has their tags set up this way, so maybe you can make this "extended" method optional?[a href="index.php?act=findpost&pid=254771"][{POST_SNAPBACK}][/a]
Yes, there would be issues, so it would be best to make it optional. For one, I can think of several game soundtracks where random tracks will have different artist credits.
[a href="index.php?act=findpost&pid=255287"][{POST_SNAPBACK}][/a]
I don't really play any game soundtracks with foobar2000 myself, but I don't see the problem here. Wouldn't this simply be a "various artists" album? So ALBUM ARTIST should be set to "Various Artists", and shuffle album 2 would only use the album title to define the album. I've never seen two different VA albums with the same name.
Can you give me a practical example of where this would fail?
A request for "shuffle album 2":
When determining which tracks belong to one album, the plugin should make sure the artist is identical, except when "album artist" is defined.
...
To summarize: if ALBUM ARTIST is set, album key = ALBUM, else album key = ARTIST + ALBUM.[a href="index.php?act=findpost&pid=254771"][{POST_SNAPBACK}][/a]
This sounds useful, but...
This method may still have issues that I haven't thought of yet, and I guess it's possible not everybody has their tags set up this way, so maybe you can make this "extended" method optional?[a href="index.php?act=findpost&pid=254771"][{POST_SNAPBACK}][/a]
Yes, there would be issues, so it would be best to make it optional. For one, I can think of several game soundtracks where random tracks will have different artist credits.
[a href="index.php?act=findpost&pid=255287"][{POST_SNAPBACK}][/a]
I don't really play any game soundtracks with foobar2000 myself, but I don't see the problem here. Wouldn't this simply be a "various artists" album? So ALBUM ARTIST should be set to "Various Artists", and shuffle album 2 would only use the album title to define the album. I've never seen two different VA albums with the same name.
Can you give me a practical example of where this would fail?
[a href="index.php?act=findpost&pid=255624"][{POST_SNAPBACK}][/a]
Another option could be to be able to define albums by the directory setup (or assume that each folder is a album). For example I have all of my music stored in folders by type/artist/album. If there was an option to shuffle by directory that would be perfect. As an example, check out the Album List plugin for Winamp (http://sourceforge.net/projects/albumlist/) this does a little more than just shuffle, but the shuffle option in it works very well... Just a thought.
Thanks for the great plugin!
I saw this question asked before, but never saw an answer for it... I have a "Greatest Hits" album by about 5 different artists. When I use Shuffle Album 2 it plays all the track 1's then all the track 2's, etc. Is there anyway to set this to album within artist?
Thanks
[a href="index.php?act=findpost&pid=255571"][{POST_SNAPBACK}][/a]
I've just run into this same problem, but with a different instance. I'm shuffling by album, and I have two discs with the same Album title (Eldorado, one by Electric Light Orchestra and the other by Patrick O'Hearn). Playback alternates between each album as described by tberman333 (all track ones, then track twos, etc.).
Any known workaround?
Thx
Maybe adding an "album grouping pattern" entry in config, like the one the replaygain scanner uses, would be a good solution to this album problem?
I have this odd problem with doubledisc various artists albums...
I got a few albums tagged like so:
Disc: either name (ie: twilight to starlight) or number.
No disc info in the album tag!
When using shuffle album tag 2, I would like the songs to go through all the discs on one album, one disc at a time, which happens on albums (1: one artists albums with discnumbers, 2: one artist albums with discnames and 3: various artists album with discnumbers) however, it never works with various artists albums with a name DISC-tag.
The playlist in itself is ordered just the way i want them to play. why is this?
I'd like a way to somehow tell the plugin something like "play tracks with rating higher than 3". Would that be possible to implement?
[a href="index.php?act=findpost&pid=255308"][{POST_SNAPBACK}][/a]
I'd also like to see something like this. I remember being briefly tempted by iTunes because it has a feature called "Party Mix" that does just this.
It could even be something for a Tag Set, as has been mentioned before. But as of right now, the shuffle by tag set would only allow for using the same rating or a different rating. What would be nice would be to give it a list of the ratings which must be present to be played (e.g. 3-5).
I apologize if this is the wrong place to post this...
First, I'm a big fan of foo_shuffle, but I'm using Xlobby with Foobar, and Xlobby
implements its own Random mode. I'd like to take advantage of foo_shuffle
within Xlobby. This requires some modification to the Xlobby foobar component,
something I might try if the author doesn't mind too much.
What I need to know is, if I'm using foo_shuffle, is there a way for another
component to determine what the next track will be? The "Next Track" feature
seems to be a stand-by in all Xlobby skins, and I don't want to lose this. If
this is not currently possible, is there any chance it could be added?
Any help is most appreciated.
erikt
Well, I got tired of waiting for kode54 or somebody else to modify foo_shuffle so it works properly with the "best of/greatest hits" albums in shuffle album 2 mode, so I did it myself.
You can dowload my modified foo_shuffle here (http://users.telenet.be/dannysuls/Code/foo_shuffle.dll).
A couple of important points:
1. It was built with Visual Studio.NET 2003, so it's possible you need to download some additional DLLs to make this work (msvcr71.dll, msvcp71.dll, whatever, ...) You should be able to get them here (http://www.dll-files.com/).
2. This is the first time I've ever done any development for foobar2000. So, even though my modifications are quite simple, it's still possible that I made some mistakes that will blow up something else. Please backup your original foo_shuffle (and report any problems)!
If you want to check my changes, you can download my modified shuffle.cpp here (http://users.skynet.be/fa828592/foobar2000/shuffle.zip) and use your favorite diff/merge tool to compare it to kode54's original file (link (http://www.saunalahti.fi/cse/kode54/foo_shuffle_source.zip)).
3. The test for determining whether two songs belong to the same album is not configurable. This is simply a hardcoded implementation of the rule I mentioned earlier in this thread:
if ALBUM ARTIST is set, album key = ALBUM, else album key = ARTIST + ALBUM
It would probably be better if it were configurable (e.g. with the album grouping pattern upNorth mentioned). Maybe that's something for a future version (but I'd also like to implement a "next album" command when I find time).
Edit: It goes without saying that if you don't use shuffle album 2 or are not affected by this "best of/greatest hits" issue, you should of course stick with kode54's original version to be safe.
PoisonDan - I tried to install your updated version and am still having prolems with albums with the same name (Best of, Greates Hits and others). Is there anything special that needs to be done to make this work right (I have the dll's mentioned installed)?
PoisonDan - I tried to install your updated version and am still having prolems with albums with the same name (Best of, Greates Hits and others). Is there anything special that needs to be done to make this work right (I have the dll's mentioned installed)?
[a href="index.php?act=findpost&pid=265936"][{POST_SNAPBACK}][/a]
So you replaced your foo_shuffle.dll with my version?
Is the "ALBUM ARTIST" tag filled in for those albums? If it is, with what value?
Keep in mind that my version uses the "old" behaviour with albums that have the "ALBUM ARTIST" tag filled in.
PoisonDan - I tried to install your updated version and am still having prolems with albums with the same name (Best of, Greates Hits and others). Is there anything special that needs to be done to make this work right (I have the dll's mentioned installed)?
[a href="index.php?act=findpost&pid=265936"][{POST_SNAPBACK}][/a]
So you replaced your foo_shuffle.dll with my version?
Is the "ALBUM ARTIST" tag filled in for those albums? If it is, with what value?
Keep in mind that my version uses the "old" behaviour with albums that have the "ALBUM ARTIST" tag filled in.
[a href="index.php?act=findpost&pid=265983"][{POST_SNAPBACK}][/a]
Ahhh... I don't have a Tag called "Album Artist" An example of the way one of the tracks is tagged is:
TITLE = Dream On
TRACKNUMBER = 1
ARTIST = Aerosmith
GENRE = Rock/Pop
ALBUM = Greatest Hits
After that song plays it will skip to:
TITLE = Your Song
TRACKNUMBER = 1
ARTIST = Elton John
GENRE = Rock/Pop
ALBUM = Greatest Hits
I wish I new how to code, but is there anyway you can make it shuffle based on directory? So it plays all the track in the path "Albums/Aerosmith/Greatest Hits" then when it plays the last track in that folder it plays all the tracks in "Albums/Led Zepplin/Houses of the Holy" etc.?
If not and you can fix the above that would be great... This is the one feature I have in WinAmp from a plug-in that I can't find with foobar!
Thanks for making the effort with this pluggin!
I wish I new how to code, but is there anyway you can make it shuffle based on directory? So it plays all the track in the path "Albums/Aerosmith/Greatest Hits" then when it plays the last track in that folder it plays all the tracks in "Albums/Led Zepplin/Houses of the Holy" etc.?
open liked for you folders and play with repeat order :-/
I wish I new how to code, but is there anyway you can make it shuffle based on directory? So it plays all the track in the path "Albums/Aerosmith/Greatest Hits" then when it plays the last track in that folder it plays all the tracks in "Albums/Led Zepplin/Houses of the Holy" etc.?
open liked for you folders and play with repeat order :-/
[a href="index.php?act=findpost&pid=266316"][{POST_SNAPBACK}][/a]
I don't understand what you mean?
open liked for you folders and play with repeat order :-/
[a href="index.php?act=findpost&pid=266316"][{POST_SNAPBACK}][/a]
I don't understand what you mean?
[a href="index.php?act=findpost&pid=266346"][{POST_SNAPBACK}][/a]
I mean: you add to playlist song(albums) what you want, and plpay then in repeat order. what's the difference? play few albums(by turns) in shuffle or repeat order.
PS: sorry for my English
Ahhh... I don't have a Tag called "Album Artist" An example of the way one of the tracks is tagged is:
TITLE = Dream On
TRACKNUMBER = 1
ARTIST = Aerosmith
GENRE = Rock/Pop
ALBUM = Greatest Hits
After that song plays it will skip to:
TITLE = Your Song
TRACKNUMBER = 1
ARTIST = Elton John
GENRE = Rock/Pop
ALBUM = Greatest Hits
[a href="index.php?act=findpost&pid=266192"][{POST_SNAPBACK}][/a]
Well, that's the way the tags
should be set up. Maybe you misunderstood my previous post: when you use "Album Artist", foo_shuffle uses the old algorithm from kode54, and when you don't have this tag, it will use my modification.
So it's a
good thing that you don't have "Album Artist" set. In fact, your tagging setup looks identical to mine. So right now I can't explain why it doesn't work for you.
I'll have to think about it a bit... I'll probably PM you soon...
Ahhh... I don't have a Tag called "Album Artist" An example of the way one of the tracks is tagged is:
TITLE = Dream On
TRACKNUMBER = 1
ARTIST = Aerosmith
GENRE = Rock/Pop
ALBUM = Greatest Hits
After that song plays it will skip to:
TITLE = Your Song
TRACKNUMBER = 1
ARTIST = Elton John
GENRE = Rock/Pop
ALBUM = Greatest Hits
[a href="index.php?act=findpost&pid=266192"][{POST_SNAPBACK}][/a]
Well, that's the way the tags should be set up. Maybe you misunderstood my previous post: when you use "Album Artist", foo_shuffle uses the old algorithm from kode54, and when you don't have this tag, it will use my modification.
So it's a good thing that you don't have "Album Artist" set. In fact, your tagging setup looks identical to mine. So right now I can't explain why it doesn't work for you.
I'll have to think about it a bit... I'll probably PM you soon...
[a href="index.php?act=findpost&pid=266495"][{POST_SNAPBACK}][/a]
That is fine... I think I am just going to change my tags so no albums have the same name... So I will make the album name "Aerosmith's Greatest Hits" and "Elton John's Greatest Hits". This should solve my problem.
Thanks for your help though!
If anyone else has the problems I was having... I nuked my database and brought everything back in... once I did that the updated pluggin worked.
Love the update, thanks for doing this. One suggestion tho, would it be possible to select or deselect shuffle album 2 from playing say disc 1 then disc 2.
I personally prefer to listen to only 1 disc at a time, especially when it comes to the 4+ disc collections. Usually i have to use the shuffle tag set, but the problem with that is, how do i get it to play the albums in order like shuffle album 2 does?
I suppose I could do this. Of course, shuffle is an order mode, not an action. I could make it toggle between Shuffle and Default, but now that there are more shuffle order modes....
I could reduce all shuffle modes down to a single order item and add a behavior selection to preferences, but this will complicate matters with 3rd party software accessing and changing the order. [...]
[a href="index.php?act=findpost&pid=145170"][{POST_SNAPBACK}][/a]
I can see that there isn't much development on this plugin anymore, but I'll post nonetheless. Would it be very difficult to add a function to toggle through the shuffle modes? As I see it shuffle is a core feature of a music player. I like to have global hotkeys for the core functions, and I can't devote more than one key to shuffle.
I haven't done any plugin development myself, though I do know C and Java well. Could anyone more knowledgeable get me started on adding this feature (ie documents, some hints, anything that might help).
Does the plugin explicitly add items to the Actions list in the Keyboard Shortcuts preference, or does the Actions list just pick up every menu item elsewhere in the program? I assume the former. It seems like if I knew how to add an item to the Actions list and tie it to a function in the plugin it would be simple to add a function to foo_shuffle.dll that switches the mode. Is this how this stuff works or am I completely off? Where can I read up?
Well I found the Plugin Development Tutorial, <a href="http://www.hydrogenaudio.org/forums/lofiversion/index.php/t18138.html">here</a>. It looks like I should be able to figure this out. Any suggestions would still be appreciated.
Question to kode54 about foo_shuffle:
I'm a very fond user of this plugin, and I have "Shuffle Album 2" enabled as playback order almost all the time.
However, I noticed that foo_shuffle (version 1.0.29) seems to play those albums more frequently that have more tracks on them. I can imagine an easy explanation for this - probably foo_shuffle just jumps to a random track on the playlist, and then starts playing the corresponding album from its first track to the last.
kode54, can you confirm that this is how it works?
i would like to see this feature changed so that albums with fewer tracks (or single tracks from an album) are not disadvantaged. I suggest to change the algorithm that finds the next album to play as follows: after having played the last track of one album, find a random next track from the playlist, and jump to that album. then find out which track to play first from that album (so far it is all as we have it currently), and ONLY play that album if the initial random track happens to be the one that would be played first - otherwise repeat the "jump to random track" step.
does anyone support my wish? would it be feasible to implement? thank you for listening!
Kode54 has stopped developing foo_shuffle. Here's the message attached to that plugin:
Warning:
This component is known to be problematic, in that it
crashes at random when files are added to or removed
from the playlist. Use at your own risk.
Since I no longer feel like maintaining this component,
I have been providing the source code so that any
capable developer can add features, or solve my own
shortcomings. Please feel free to fix the issues, but
don't expect me to welcome idiot features or half-assed
ideas with open arms and host them on my site. Meh.
Native shuffle will be implemented in the upcoming Foobar2000 0.9 BTW...
is there a way i could make foo_shuffle play 2 random songs in a row by the same artist?
like i want to hear 2 random songs by random artist #1
then 2 random songs by random artist #2
etc.
Question about foo_shuffle. For the tag set option, I'm wondering if this means it is possible to make it so that it only plays songs that:
1: Hasn't been rated
2: Has a rating higher than ?
If so, how exactly would I be able to implement this?
Thanks
Have a look at Foo_skip
bump
i'm using foo_playcount.dll as well
is there a way to configure foo_shuffle to play songs which haven't already be played ?
something with %__play_counter% but no luck for me so far
thanks a lot
is ths plugin still aviable (speiclay for foobar 0.9x?)
if, then plz reupload it =)
thanks
seeya
is ths plugin still aviable (speiclay for foobar 0.9x?)
if, then plz reupload it =)
thanks
seeya
What's wrong with foobar's built in shuffle?
Let the shuffle vs. random wars begin. Again.
is ths plugin still aviable (speiclay for foobar 0.9x?)
if, then plz reupload it =)
thanks
seeya
What's wrong with foobar's built in shuffle?
it doesnt work well =)
But for what i need it: I wanna have a plugin, that randoms the wohle library, even if you have a small playlist, it should shuffle your entire library, without selcting the whole library in a playlist =)
and maybe you can do something like shuffle (never played), shuffle (played already before) etc.
seeya
But for what i need it: I wanna have a plugin, that randoms the wohle library, even if you have a small playlist, it should shuffle your entire library, without selcting the whole library in a playlist
I don't get the point of this.
sry, im bot good in english =(
so,m i try to explain it:
I have a foobar config where i have on the right side a foobar play Artist-Tree. Becuase it doenst look well when i have on the top the %all% button, i deleted the button, so i just have the artist.
And thats the problem. I cant select everything that i have in my library, just one artist (when i dont wanna change something in my config). so i wanted to have something like a button that shuffles/randoms the whole libary, without selecting the wohle library (i can only select one artist)
hope you understodd me =)
seeya