Защита от повтороного звучания одного и того же трека/плейлиста в случайном реж.

Aki

New member
Добрый день.

Программу использую в режиме случайного проигрывания основного плейлиста, который время от времени замещается (накладываются поверх) по расписанию заранее подготовленные программы.

Заметил, что изредка происходит запуск одного и того же трека подряд. При моделировании это можно заметить лишь при малых размерах плейлиста, на больших же поймать очень трудно (вероятность -> 0), но вот за четверо суток работы у меня в логах два дубля на ~450-трековом плейлисте...  Для слушателя очень неприятно... А поэтому пожелание, в будущем оснастить программу защитой от проигрывания в режиме "случайного выбора" одного и того же трека или плейлиста два раза подряд.

Контроль можно проводить по имени файла (это позволит не допускать дублей даже тогда, когда в плейлисте несколько позиций с одним и тем же файлом) - при выборе следующего на прогрывание файла заглядывать в историю проигрываний (лог), и если там этот же файл, в пределах некоторой глубины истории от текущего момента, уже упоминался, сделать выбор другого файла (также, случайным образом).

При расчёте глубины истории следует по-видимому отталкиваться от половины количества уникальных позиций плейлиста, округлённого до ближайшего целого вниз, но не более, например XX треков или YYY минут времени (позволив задавать пользователю эти значения). Расчёт от половины количества позиций плейлиста будет работать на малых плейлистах, верхние ограничения XX и YYY - на больших.

Аналогично хотелось бы поступить и в случаях, когда в планировщике у меня в определённое время назначен эвент "выбрать случайный плейлист из папки", хочется, чтобы в этом случае также не было повторов, когда при последовательном плановом срабатывании одного и того же эвента выбирался один и тот же плейлист. (но здесь историю придётся хранить для каждого эвента отдельно, т.к. думаю, что контролировать разные эвенты на предмет пересечения всё-таки не нужно - это уже работа оператора).

Функция по-видимому должна работать только при случайном выборе, нужды в ней при последовательном воспроизведении лично я не вижу - тут всё уже на совести составителя плейлиста...

... и вдогонку: хочется также иметь функцию проверки плейлиста (Main и Temp) на дублирующиеся файлы. Вызов функции можно разместить в главном меню, и, возможно, продублировать на контекстное (по правой кнопке мыши). Найденные дубликаты подсвечивать. Придётся поломать голову, как при этом подсвечивать разные дубли - их может быть много....

p.s. Или это уже всё есть, а я просто не нашёл?..
 
Контроль повторов в обещем-то есть. Если просто включить режим Shuffle, и запустить плейлист, то повторов не будет, пока не отыграет каждый трек из плейлиста. Но тут есть особенность, когда плейлист изменяется (через расписание, вручную или еще как) - то режим сбрасывается, и из-за этого могут возникать повторы.
Это будет улучшено в будущем, но наверное через версию. Надо продумать алгоритм.

Насчет других функций, этого нет. А зачем нужно сравнение между main и temp? По поводу выбора случайного плейлиста из папки, думаю такой контроль скоро появится.
 
Нет, не сравнение Main c Temp (я неясно выразился, прошу прощения), а просто возможность поиска в каждом из этих плейлистов дублирующихся позиций.

p.s. насчёт повторов Вы наверное правы - оба раза они у меня случились во время  (точнее, сразу после) изменений в основном плейлисте, один раз после ручного добавления файлов (повторяющийся файл среди добавляемых не фигурировал), второй раз после ручного вмешательства в порядок треков (но также, повторившийся файл не был при этом затронут, разве что был смещён в абсолютной позиции - это уже не могу сказать).

Однако, я ради проверки сделал на тестовой конфигурации плейлист из десятка треков. Поставил режим Shuffle и стал "перещёлкивать" кнопкой "Играть следующий" треки после 10-15 секунд звучания. Повторы были... Вопрос: получается, сброс происходит и при нажатии кнопок управления?
 
Aki сказал(а):
Нет, не сравнение Main c Temp (я неясно выразился, прошу прощения), а просто возможность поиска в каждом из этих плейлистов дублирующихся позиций.
Есть сортировка плейлиста кликом по заголовку плейлиста в соответствующем столбце. По умолчанию эта возможность выключена (чтобы случайно не попортить плейлист). включается в настройках в разделе "Общие".
В принципе, это можно использовать для отлова дубликатов - сортируем плейлист по имени файла, и 2 и более одинаковых имени подряд будут сразу видны. Правда, порядок треков будет утерян.

Aki сказал(а):
p.s. насчёт повторов Вы наверное правы - оба раза они у меня случились во время  (точнее, сразу после) изменений в основном плейлисте, один раз после ручного добавления файлов (повторяющийся файл среди добавляемых не фигурировал), второй раз после ручного вмешательства в порядок треков (но также, повторившийся файл не был при этом затронут, разве что был смещён в абсолютной позиции - это уже не могу сказать).
При изменении состава плейлиста он заново перемешивается, отсюда и повторы.

Aki сказал(а):
Однако, я ради проверки сделал на тестовой конфигурации плейлист из десятка треков. Поставил режим Shuffle и стал "перещёлкивать" кнопкой "Играть следующий" треки после 10-15 секунд звучания. Повторы были... Вопрос: получается, сброс происходит и при нажатии кнопок управления?
При использовании кнопок управления - сброса быть не должно. На всякий случай занесу в список потенциальных ошибок, если что это будет поправлено.
А повтор трека два раза подряд (особенно при малом плейлисте) вполне возможен - как только плейлист отыграл, генерируется новая последовательность, и ее начало может совпасть с тем треком, который только что отыграл в "старой" последовательности.
 
Попытался поплотнее познакомиться с функцией getrandomplaylist

За четыре дня наблюдений одних и тех же эвентов (вызываются один раз в сутки) из каталога с 6 плейлистами ЧЕТЫРЕ раза был запущен один и тот же файл. Из каталога с 17 плейлистами - три раза (один раз запустился другой файл). Из каталога с 48 плейлистами повторов за это время не было.

Интересно, что при ручном запуске даже три раза подряд сымитировать вызов одного и того же файла у меня не получилось...

Поэтому, если можно, я хотел бы акцентировать внимание на защите от повторов при использовании этой функции...
 
Ок, в одном из следующих обновлений будет. Вы не первый кто просит такое :)
 
Назад
Верх