Hi, There is a bug in the shuffle of ogg123 which was here at least until the CVS version of 3 days ago. Here's our fix: (it seems to be not perfectly equiprobable but at least fixes the old one which sometimes gives two times the same song and never the other song) -=-=-- --- vorbis-tools-1.0beta3/ogg123/ogg123.c.pix Sat Nov 4 01:23:21 2000 +++ vorbis-tools-1.0beta3/ogg123/ogg123.c Thu Dec 7 13:13:36 2000 @@ -324,12 +324,20 @@ if (param.shuffle) { - int i=optind, j=0; - for (i = optind; i < argc; i++) + int i; + int nb = argc - optind; + int *p = alloca(sizeof(int) * nb); + for (i = 0; i < nb; i++) p[i] = i; + + srand (time (NULL)); + for (i = 1; i < nb; i++) { - srand (time (NULL)); - j = (int) ((float) (argc - optind) * rand () / (RAND_MAX + 1.0)); - param.read_file = argv[j+optind]; + int j = i * ((float) rand() / RAND_MAX); + int temp = p[j]; p[j] = p[i]; p[i] = temp; + } + for (i = 0; i < nb; i++) + { + param.read_file = argv[p[i]+optind]; play_file (); } } -=-=-- -- Guillaume Cottenceau - http://us.mandrakesoft.com/~gc/ --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'vorbis-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.
On 11 Dec 2000, Guillaume Cottenceau wrote:> > There is a bug in the shuffle of ogg123 which was here at least until the > CVS version of 3 days ago. Here's our fix: (it seems to be not perfectly > equiprobable but at least fixes the old one which sometimes gives two > times the same song and never the other song)...> + int j = i * ((float) rand() / RAND_MAX); > + int temp = p[j]; p[j] = p[i]; p[i] = temp;Actually, in that first line, I think you want "j = (i + 1) * ...". Otherwise, for example, the last song will NEVER be the last command line argument. And you may want to divide by RAND_MAX + 1, not plain RAND_MAX. - Spanky --- >8 ---- List archives: http://www.xiph.org/archives/ Ogg project homepage: http://www.xiph.org/ogg/ To unsubscribe from this list, send a message to 'vorbis-dev-request@xiph.org' containing only the word 'unsubscribe' in the body. No subject is needed. Unsubscribe messages sent to the list will be ignored/filtered.