О всемогущем рандоме

image

Умный shuffle для плееров



В топике хотелось бы поделиться мыслями насчет того, каким должно быть «случайное воспроизведение» в плеерах (особенно это касается портативных плееров типа iPod)
Сам я являюсь владельцем iPod touch и постоянно пользуюсь им в машине, подключая его через AUX к магнитоле.
Фирма Apple изобрела какой-то «умный плейлист» — так называемый genius, но он как-то использует интернет и мнения других пользователей itunes.

Хотелось бы слышать и слушать именно то, что хочется слышать. Под катом собственно суть идеи.

Итак возьмем для начала самый простой «шуфлай»

(после окончания трека плеер выдает случайное число от одного до длины плейлиста и переключается на трек с этим самым случайным числом).
Используется в большинстве современных плееров.

image
  • Не требует аппаратных нагрузок
  • Не требует каких-либо баз данных
  • Не требует сохранения ID-тегов
  • Да вааще ничего не требует, может работать хоть на вибромассажере

image
  • До безобразия туп
  • Есть шанс повторения подряд одной и той же песни
  • Благодаря закону Мерфи шанс повторения одной и той же нелюбимой песни выше, чем у любимой

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

Второй вариант:

заранее перемешать список и воспроизводить по очереди.
Именно таким способом я пользовался в винампе, пока там не появился рычажок настройки псевдослучайности :)
image
  • Нет шансов проиграться одной и той же песне
  • Почти все преимущества предыдущего подхода


image
  • Нагрузка — необходимо постоянно хранить полный плейлист и обращаться к нему.
  • Опять тупость, никакой интерактивности


3. Система рейтингов itunes и dj-playlist в нем


Позволяет проставлять рейтинги для произведений, и диджей автоматически составляет плейлист на основе этих рейтингов. Причем это работает только в itunes, в плеерах ipod этой фишки нет.

image
  • Маломальский интелект
  • Мы слушаем то, что оценили как любимое


image
  • Необходимо оценивать. Например, доставать плеер, разблокировать его и тыкать рейтинг
  • Не учитывается, что песня может надоесть, необходимо постоянно править рейтинги у огромной кучи композиций
  • Необходимость использования БД


Пока ничего более навороченного я не встречал.

Основы


Итак, в топике я хотел поделиться задумками о том, каким должен быть «шуфлай» на плеерах (как комповых, так и мультимедийных)

Суть идеи:
Ввести несколько параметров для каждой песни, на основе которых «шуфлай» и будет выбирать когда какую песню врубать.
Разработать систему «интерактивного» рейтинга, где не надо выставлять сколько-то звездочек произведению. Да и вааще ничего не надо выставлять.
Использовать понятие «надоедания песни» — вот вы бы хотели чтобы ваша любимая песня (с пятью звездочками) проигрывалась каждый час, да не по разу? Ведь надоест!

Интерактивный рейтинг

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

Не нравится:
  • Переключение трека
  • Понижение громкости

Естественно, каждый из этих параметров должен в определенной мере влиять на общий рейтинг. Например, переключение трека значительно понизит рейтинг, а понижение громкости совсем немного.

Рейтинг будет задаваться числом: от 0 до 100, по умолчанию у всех треков рейтинг будет 50 (нейтральный).
При ручном переключении трека в первые 30 секунд рейтинг упадет на 10, более 30 секунд — на 5.
Все цифры примерные, нужно будет подгонять после реализации.
image
Полное прослушивание песни не означает, что она нам как-либо понравилась, ибо мы могли в данный момент ее даже не слушать, в увеличении рейтинга поможет одна дополнительная кнопка интерфейса, доступная даже на заблокированном плеере (например, на iPod touch двойное нажатие кнопки home вызывает три кнопки управления воспроизведением).
Как раз вместо кнопки «предыдущий трек» было бы удобно разместить эту новую кнопку, однократно повышающую рейтинг, и выглядеть она может как стрелка вверх или звездочка.
Нажатие на эту кнопку разово прибавляет к рейтингу 10 баллов. За одно прослушивание больше одного раза поднять рейтинг нельзя, повторное нажатие должно понижать рейтинг обратно (под сомнением)

Надоедание

Любая песня не может быть настолько любимой, чтобы слушать ее по 10 раз за час. Это обязательно необходимо учитывать.
Для учета надоедания необходимо ввести еще одну переменную, которая будет повышаться при каждом включении песни и понижаться со временем.
Итак, введем переменную от 0 до… хоть скольки, думаю байта хватит (255).
При полном проигрывании песни добавим туда 2, при частичном (выключили плеер, переключили трек, нажали «стоп») но проигралось более 20% трека — добавим 1.
Каждый божий день у всех треков убавляем по одной единице.

Расчеты

Самое важное — рассчитать какой же трек будет следующим в проигрывании. Нельзя забывать даже треки с пониженным рейтингом: вдруг наши вкусы изменились, они имеют право повысить свой рейтинг.

Для начала необходимо высчитать результирующий показатель с учетом рейтинга и надоедания. Точнее это будет «влияние надоедания на рейтинг», но так как надоедание со временем меняется, то эту величину придется высчитывать постоянно.

Получаем

Результат=Рейтинг — надоедание*коэффициент надоедания

Коэффициент каждый пользователь должен выбрать сам индивидуально (в настройках плеера). Например, коэффициент, равный 50, не позволит прослушать один и тот же трек в один день, ибо первое же прослушивание тут же уронит рейтинг до нуля даже у топовых треков. Оптимальным коэффициентом на мой взгляд будет число около 5…

Выборка

Теперь собственно переходим к самому главному — выбору следующего трека для воспроизведения.
Простейшим вариантом было бы идти по топу, то есть ищем произведения с максимальным результирующим рейтингом, воспроизводим их, у них автоматически падает результирующий рейтинг (так как они «надоедают») и т.д.
Но таким образом мы получим, что воткнув с утра наушники и спя в пути на работу, мы прослушаем все топовые песни и днем мы будем слушать второсорт :) Думаю, что это не рационально.

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

На правах патента

_______________________________________
Спасибо тем, кто осилил данный топик, пожалуйста поделитесь своими мыслями на данную тему.

Я понимаю что произвести плеер с такой фишкой у нас нет возможности. Но программно вшить в обычные комповые плееры думаю это не так сложно.
Я знаю что у amarok'а похожая систем рейтингов, но ей сложно пользоваться и он не учитывает надоедания.
Я знаю что в Apple сидят не дураки, и если они поставили кнопку предыдущий трек, значит она необходима. Но я владею плеером уже около 2 лет и ни разу не нажимал на нее.
+51
20 мая 2009, 12:08
17
KiLEX 2,3

комментарии (80)

+14
NemeZZiZZ #
«shuffle» читается как «шаффл».

Моё имхо:

1. Шаффл в первую очередь должен именно перетасовывать плейлист: чтобы, например, была возможность «листать» назад (что можно делать в winamp и нельзя в foobar, насколько я понял) — таким образом я смогу включить пропущенную или понравившуюся песню ещё раз;
2. Если должны быть условия перетасовки — они должны задаваться в настройках: для многих пользователей хитрые вычисления будут малопонятны, но задание приоритета сортировки — куда понятнее. Например, можно зайти в настройки и изменить порядок опорных направлений: «рейтинг» — в самый верх (чтобы любимая песня вероятнее попала в первые), «количество воспроизведений» — в самый низ (чтобы любимая песня не зацикливалась).
3. Плеер не имеет права менять рейтинг композиции — он может опираться только на параметр количества воспроизведений или подобный: я могу прослушивать одну композицию в течение 20 минут — чтобы разобрать слова, например.
4. Шаффл не должен быть простым рандомом: у меня был простой плеер от Expley, у которого рандом был постоянным — это было довольно неприятно, и при каждой возможности я подключал его к ПК, чтобы в Total Commander быстро перенумеровать файлы.
5. В настройках шаффла можно указывать параметр «rotation list» — как на радио: в течение каждого, предположим, часа самые 4-10 топовых (или любимых) трека должны быть воспроизведены — остальные промежутки забивают менее успешные «братья».

Ещё пара пунктов в голове вертится — но я не могу их сформулировать :)
0
KiLEX #
Спасибо, много интересных мыслей.
+1
dfayruzov #
> что можно делать в winamp и нельзя в foobar
Не совсем так. В fb2000 нельзя листать назад если order выставлен в Random. В случае именно Shuffle — все листается просто замечательно.
0
NemeZZiZZ #
Спасибо, проверю вечером, а то уж больно расстраивал этот факт в силу того, что недавно я пересел с винампа на него.

Насколько мне подсказывает память — шаффл там идёт по альбомам или исполнителям, я прав?
0
dfayruzov #
Да, можно выбирать. Tracks, Albums, Folders.
–4
felibb #
Я бы сказал, что назад как раз надо листать так же в случайном порядке. То есть шафл в обе стороны.
+5
caxep #
Это не всегда хорошо. Иногда закинешь, например 100 песенок, включаешь случайное воспроизведение, слушаешь, а потом вдруг попадается очень хорошая песенка, но конечно же не знаешь, как она называется, а вытащить плеер и посмотреть, в данный момент нет, метро, например, давка =) А вот через минут 10 уже можно, достаешь плеер, листаешь назад пару песен и находишь. Это легче, чем искать среди энного кол-ва. Тем более, зачем мешать в обратную сторону, если тоже самое можно сделать, нажав «вперед»
+5
grdigger #
зачем закидывать в плеер не любимые песни? и вообще по вашему алгоритму радио работает :)
+1
NemeZZiZZ #
Например, я не слушаю Muse — но все их альбомы у меня есть в плейлисте, наравне с кучей других команд: если они попадаются и я не хочу их слушать — я их пропущу; если же музыка в данный момент работает фоновым сопровождением, «аккомпаниментом к работе» — пожалуйста, тем более, что моя девушка их любит, да и многие другие тоже.
Раньше, когда я в поезд заливал в плеер только любимые композиции — я делал это, во-первых, долго, во-вторых, в поезде все они мне быстро приедались — и я выключал плеер и ложил его подальше. В последнее время я заливаю не почти всё подряд, но, например, то, что я давно не слушал, или по каким-нибудь ещё «менее достойным» критериям — и в поезде они для меня работают отвлечением от времени и окружающих ситуаций, просто аккомпанирующий шум.
0
PingWin #
В таком случае имеет смысл задуматься о ранжировании по пользователю. Но многопользовательский плеер — это уже что-то ненормальное.
Потом была в своё время такая задумка, как moods — т.е. в тегах к треку указывается, к какой обстановке он более всего подходит (slow, fast, romantic, work и т.д.), а плейлист создаётся под нужную обстановку. Понятное дело, что прописывать этот тег никто не стал, но что странно — что сервисы типа last.fm тоже обошли сей момент вниманием, уравняв все сценарии прослушивания музыки :)
0
NemeZZiZZ #
Странно, но у того же last.fm есть ярлыки: Вам никто не мешает проставить ярлык типа «relax», «easy listening», «active» — как это делают уже многие. В результате Вы сможете слушать более-менее сходные композиции. К сожалению, всё же вероятен уход от основной тематики — из-за ориентирования схожести именно исполнителей.
0
leonard #
Например я слушаю новую для меня группу. Закачал пять их альбомов в довесок к остальной музыке и хочу оценить.
0
PingWin #
И как подобная рейтинговая система (которая будет нормально работать только после продолжительной тренировки) поможет при прослушивании нового материала?
А если эти пять новых альбомов совсем не понравились — почему бы не удалить? :)
0
Stepanow #
Очевидно, что в топике идёт одсуждение режима «случайного воспроизведения», а в сообщении о линейном прослушивании отдельно взятого альбома. Это непересекающиеся вещи.
0
PingWin #
Вот и я не понял — каким боком одно к другому? :)
0
neptune #
А еще можно не менять рейтинг песен если человек просто забыл выключить плеер и не слушает его. К примеру анализируя показания акселерометра.
+2
NemeZZiZZ #
Как быть с ситуацией, когда слушается плеер, лежащий на столе?
+3
strk #
потряхивать периодически
+1
AlterEG0 #
угу, столом
+3
PingWin #
Плеер периодически воспроизводит вставки эротичных охов-вздохов и по измерению наклона стола определяет присутствие и эмоциональное состояние пользователя :))))
0
non7top #
а у меня в плеере только любимые композиции, т.е. закидываю только то что имеет рейтинг (банальный фильтр rating:> ). Играются они по порядку, потому повторяются очень редко. Зачем нужно что-то более сложное?
+1
KiLEX #
у меня слишком много любимых композиций :) 8 гигов забиваются до отказа. Многие вещи хоть и люблю, но стандартным рандомом не включаются практически никогда (закон мерфи)
0
JetHedgehog #
Если ЛЮБИМЫХ композиций МНОГО, то каким это образом шаффл будет ЧАСТО попадать на НЕЛЮБИМЫЕ песни? Храните на плеере МНОГО ЛЮБИМЫХ песен и будет Вам счастье :)
0
KiLEX #
Заливаю я альбомами, альбом может и любимый но некотоорые треки на нем уже приелись.
–3
ttim #
По некоторым ощущениям Windows Media Player в послдених его реинкорнациях примерно так и работает
+2
ttim #
А за что минусуем?
// Извините — не сдержался

Просто я замечаю что исполнителей которых я чаще других включаю вручную при шафле проигрыватель мне включает значительно чаще, также я замечаю что у песен что я слушаю часто ставится авторейтинг 4 звезды.
0
DzikiBoo #
кстати интересный вопрос оказался. вот тут говорится что данные для авторейтинга выставляются онлайн-магазинами.
0
ttim #
Забавно.
Но и + к этому при выборе песен для шафла я думаю он руководствуется вашими действиями.
0
DzikiBoo #
скорее всего. по-крайней мере меня удивляло что некоторым альбомам он ставил рейтинг ниже 3-х хотя мне они нравились. дальше насколько я помню для часто слушаемых треков рейтинг рос. вот вроде и весь интеллект. хотя в других плеерах я и этого не вижу. по-крайней мере через месяц прослушивания чисто в WMP медиа-лайбрари достаточно точно отражала мои вкусы :)
+1
leonard #
Круто. Если производители к вам прислушаются будет очень хорошо) Не совсем понятна критика в комментариях, но мне кажется система реально работающая, за исключением формулы для выборки и непосредственно алгоритма. Но это мелочи.
А «на правах патента» что-то реально означает или нет? То есть вы против если люди начнут встраивать подобный функционал, например, в опенсорц плееры?
0
KiLEX #
Эта надпись не имеет никакой юридической силы, просто для размышления. что такую идею неплохо бы запатентовать пока это не сделало apple ) но тк на патент нужно время и деньги, я этим заниматься не буду. Если ктото из опенсорц плееров возьмет это на вооружение я буду очень рад )
+1
neon #
Песни имеют свойство надоедать. Поэтому с течением времени надо песни с рейтингом >50 понижать до 50. Медленно. Например, за сутки работы плеера(считать именно время, когда музыка играет), рейтинг всех хороших песен понижается на 1. То же самое можно сделать с плохими песнями, но еще медленнее. Ведь бывает так, что песня сначала не нравилась, а потом случайно включилась, вам лень было тянуться её выключать и тут(внезапно) вы услышали отличное место в песне, которое полностью меняет ваше к ней отношение. А в вашем случае, если песню загнать в самый низ, то хрен она когда-нибудь вообще будет играть. Тогда уж сразу неугодные песни удалять.

+ еще увеличение рейтинга — это перемотка песни в начало.

ps. если уж вы потрудились прилепить красивые картинки и оформить краисво статью, то вам же не сложно будет заменить «о5» на «опять». Оба раза наткнувшись на это слово спотыкался на пару секунд.
+22
Shoohurt #
Простите меня все, но я не удержался и «причесал» текст, рассыпав по нему недостающие знаки препинания и слегка облагородив некоторые особо охреневшие места.
+8
LiDeBr #
хабрасанитар Шух.о)
0
Niketas #
Великий Шухер 8-)
0
vadimbelyaev #
Дело Белых рыцарей живет и процветает?
0
ponomar #
«Милый айподушка, угадай, пожалуйста, что же я хочу сейчас послушать, а то я и сам не знаю!»
0
Gesper #
вам не нравится, когда результат работы устройства совпадает с вашими вкусами?
+1
ponomar #
Результат работы моего айпода меня устраивает уже сейчас. У меня в плейлисте нет песен, которые мне не нравятся.
0
gyach #
Такое решение:
Длина трека = 100 баллов
При длине трека 100 секунд (для ровного счёта) тыкаю Next на 5 секнде прослушивания — рейтинг опускается до 5, на 10 секунде — до 10.
Плейлист идет всегда по убыванию без рандома. Рейтинги я понижаю настолько, насколько не нравится мне этот трек.
+2
caxep #
А как же быть в такой ситуации: мне нравится весь альбом, все треки просто супер, в данный момент у меня в плеере открыт именно он, но мне хочется включить какую-то определенную песню, что я обычно делаю? Не доставая плеер, через карман, перещелкиваю до нужной. И что же получается, у тех песен, что я пропустил, рейтинг упадет практически до нуля?
0
KiLEX #
значит нужна кнопка интерфейса отключающая интерактивность. например если ты дал плеер побаловаться кому нить другому, или в приведенном случае.
или прослушивание трека менее 10 секунд можно вообще не учитывать.
+1
McBernar #
Шух неравнодушен к теме музыки :)

По тексту:
Не совсем понятно — почему у песни, которую я переключил до 30 секунд рейтинг будет выше, чем у песни, которую я прослушал более 30 секунд и переключил. Это неверно. Если песня мне порядком надоела, но всё ещё нравится — я послушаю какую-то часть точно. И, скорее всего, это будет больше 30 секунд. А вот если я щёлкнул сразу на следующий трек — это значит, что песня меня уже бесит и у меня просто не доходят руки её стереть.

Но это всё не важно. Почему?

Потому-что люди не боты. Потому-что у людей бывает разное настроение, на улице бывает разная погода, человек мог выспаться, а мог и мало спать, мог получить зарплату и премию, а мог услышать, что уволен. И музыка в плеере у него разная — грустная, весёлая, динамичная, плавная. РАЗНАЯ.

Можно привести такой пример: человек идёт в 11 вечера с работы после тяжелой сдачи проекта. Включает в плеере какой-нибудь русский рок и пытается расслабиться, подумать, помечтать. А с утра у него встреча с заказчиком, где он получил предоплату за проект в размере 300К. Радостный, довольный, только что бурно обсуждал концепцию, весь на драйве. Вышел на улицу — включил какой-нибудь задорный хаус или жёсткую рэпчину с битом, взрывающим мозг.

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

И как после этого строить рейтинг?
0
Alaunquirie #
А если не придираться к системе а предложить альтернативу? :) Скажем, рейтинг всех композиций просто «стареет», а те, что слушаются чаще — ставновятся любимыми. Придумать можно массу всего, автор статьи просто показал, что можно сделать шаффл умней и предложил конкретное направление — дать ему память и рейтинги. А уж КАК ИМЕННО реализовать — это над дать юзабилитистам, эт их работа.
0
Retarded #
можно сделать функцию «похожие композиции», то есть подстраивающийся шафл. включаешь, например, с утра, слушаешь все подряд. потом получил свою предоплату, настроение улучшилось, и тут включилась у тебя грустная песня. ты хоп, переключил ее. плеер думает, ага, это не катит, попробуем эту. И так, в общем, пробует угадать настроение.

Еще хорошо бы придумать, как легко треки переключать. В карман постоянно приходится лазить, а голосовым управлением я бы в метро постеснялся пользоваться
0
Wenye #
В случае поиска песни на послушать есть вариант — отслеживать большое (> n) количество переключенных песен и не делать с ними вообще ничего. Или на какой-то мизер понижать рейтинг, если рейтинг сделать с большим количеством значений.

А вообще тема благодатная. Тут можно много чего придумать — например отслеживать подобный поиск песни, смотреть в ее жанр и дальше подбирать подобные. Можно один раз задать по жанрам группы по настроению (тяжелый рок, лиричное, ритмичное и т.п.)
+1
stopmosk #
Довольно частый случай — после прослушивания песни А мы никогда, или крайне редко слушаем песню Б. Хотелось бы, чтобы шаффл тоже это учитывал, и если мы, прослушав песню А, услышали песню Б и скипанули её, запоминал это и в следующий раз уменьшал вероятность проигрывания А->Б

Ещё можно для продвинутых сделать возможность создавать правила, например «не играть одного и того же исполнителя чаще чем раз в час» или «утром хардкор не ставь!».

А если акселерометр вспомнить, то вообще можно отслеживать сидит человек, идёт или бежит, и ставить песни близкие по темпу. Так-то!
0
norlin #
Если не ошибаюсь, сейчас iTunes (и похоже, что iPhone как минимум) учитывает не только рейтинг, но и количество прослушивания трека.
Либо мне просто везет, и музыка почти всегда включается под настроение (если не попадает — тыкаю «next» до первого «попавшего» трека, и дальше опять треки идут именно те, которые хочется).
+1
cityhawk #
В принципе я похожую концепцию реализовал в iTunes/iPod при помощи смарт-плейлиста. Правда, мне еще нужно было автозаполнение.

Подбирать песни по всем критериям
Дата последнего воспроизведениия (не в последние) 5 месяцев
Жанр (!=) Классическая // Это личное, на iPod на улице плохо воспринимается
Жанр (!=) Подкаст
Длительность (меньше чем) 6:00 // Тоже вкусовщина
Рейтинг (!=) * // С одной звездой песня — кандидат на удаление.
Максимальное количество 250 объектов выбранных (случайно)
Оперативное обновление

В итоге меня эта концепция удовлетворила. При каждой синхронизации iPod удаляет прослушанное, закачивает новое, а я не трачу время на выбор музыки.
0
Retarded #
Вы ставите оценки всем композициям?
0
cityhawk #
Нет конечно, но это не мешает.
+7
tonkado #
«Я знаю что в Apple сидят не дураки, и если они поставили кнопку предыдущий трек, значит она необходима. Но я владею плеером уже около 2 лет и ни разу не нажимал на нее.»

А я пользуюсь, и именно тогда когда проиграл один из моих любимых треков и я захотел прослушать его еще раз.
+2
mutation #
Или песню сначала. Тоже частенько так делаю.
+1
Sancho #
А у меня есть своя идея по поводу шаффла, но, боюсь, многие не оценят. На моем айподе сейчас около 10000 треков и количество только растет, музыку в основном слушаю фоном в транспорте и на работе.
Суть такова, iTunes считает количество воспроизведений каждой песни и хотелось бы чтобы шаффл ставил при любом раскладе песни именно по количеству воспроизведений данного трека и те песни, которые проигрывались более одного раза были в самом конце плейлиста, чтобы слушать только свежее, ибо из тех 10000 осталось еще очень много непрослушанных песен. А если мне захочется послушать что-то из любимых песен, то проще включить ее вручную.
Насчет рейтингования: это весьма проблематично с таким количеством музыки, да и просто лишняя заморочка, имхо.
0
nobr #
Довольно интересно, но я бы посоветовал не отказываться полностью от ручного выставления рейтинга. Система оценок — тоже важная вещь. Жаль, что её нет во многих карманных плеерах (по крайней мере я не встречал).

Есть только один вопрос: почему у вас переменная принимает (которая занимает 1 байт) 255, а не 256 значений? :)
0
KiLEX #
мой косяк ) поправил
+1
s1im #
По поводу генерации случайных чисел в цифровой технике. Чаще всего для этой цели используются полиномиальные счетчики (недорогое и очень быстродейственное решение). По сути, в ней используется реализация функции исключающего или (xor). Цепочка логических элементов выстроена таким образом, что изменение каждого разряда зависит от состояния предыдущего в цепочке. При таком подходе, исключается возможность повторения числа до полного прохода всех возможных комбинация разрядов числа (их кол-во задается модулем счета). Однако, большой недостаток в этой псевдослучайной последовательности — ее повторяемость по окончанию счета. Так было в моем старом плеере (NEXX NF-810) — если не менять число песен в плеере, то запоминаешь наперед, какая будет идти после какой.
Другой, более продвинутый вариант основан на тактовом генераторе — там случайное число также задается полиномиальным счетчиком, однако его переключение происходит постоянно в реальном времени, поэтому заранее предугадать в каком состоянии окажется счетчик невозможно. Недостаток этого метода — вероятность повторения одной и той же песни сильно увеличивается (особенно, при малом кол-ве песен)
0
steel_ne #
Мое мнение:
1. обязательно разное ранжирование на разное настроение. Не обязательно называть это настроением. Например я при работе не перевариваю песни с русскими или английскими словами — периодически ловлю себя на том, что слушаю слова. Но от этого песя не становится нелюбимой
2. в качестве способа выбора трека вполне устроит случайный выбор с учетом веса(рейтинга) песни. На пальцах — сложили все рейтинги, получили, например 1500. Выбрали случайное число от 1 до 1500, посмотрели по порядку, в какую песню попали. Каждая песня получит шанс, более ретинговые — больше шанса.
3. Возможно я ищу какую-то конкретную песню и пролистываю много треков подряд. Надо в этой серии рейтинг пролистываемых снижать незначительно, а рейтинг найденной — повышать
0
not_ice #
примерно такой системы мне не хватает. слушаю джаз/лаунж на шаффле. скачиваю музыку сборками. естественно, нравится в них не все. когда начинает играть трек, который не нравится, открываю винамп, удаляю его из плейлиста и нажимаю next. больше он не появляется ))
–2
highw #
а я слушаю радио lounge и у меня нет никаких проблем
0
serafims #
Вот упомянутый лаунж-box я в свое время и проектировал, чтобы создать домашнюю систему музыкального сопровождения.
Организация была следующей — закачиваются в едином стандарте оформлеия все исполнители и сборники.
Создаются плейлисты по жанру, по исполнителю, по иным факторам группирования (скажем, весь русский рок, весь даб, все исполнители охарактеризованные как «всякая фигня на случай гостей», рипы радиопередач и т.п.) Плейлисты также имеют пересечения, скажем, даб вполне может идти после некоторых подвидов джаза.
Далее предлагается выбрать плейлист, он копируетс яв память,
и по мере воспроизведения — строится история сыгранного — раз, из плейлиста случайно выбирается трек, отправляется проигрывателю, а сам трек выкидывается из плейлиста. Но запись о нем остается в истории, откуда его можно вызвать, прервав основное воспроизведение.

Недостатки — требуется определить, в какой плейлист что определить, и порою просто тупо таская альбомы не получится.

Дополнительно была идея имитации радио — отбивки от радио Маяк =) в начале часа, или же говорилка времени…
0
SatyrArs #
Ах, мечты, мечты. Интеллектуальный шаффл… Включаешь, скажем, «We Will Rise Again», и плеер понимает твоё настроение, включает «Game of Life», потом что-то вроде «Empty Walls», скажем, «Everything About You» и медленно идёт в сторону позитива. И вот, через полчаса уже играет «Bang Bang», «No You Girls» и ты улыбаешься, настроение отличное, плеер выполнил свою миссию.

А насчет вашей идеи… ну, я бы её не использовал, меня бы мучали каждый раз подсчеты в подсознании, так устроен мозг (помню, даже смотрел на теги перед плюсованием поста на хабре, ужассс), а хочется расслабиться)
0
Lamo #
Патентуйте, пока этого не сделали Эппл с Мелкомягкими :))
0
DnV #
Важно, чтобы всегда оставался доступным и обычный рандом.
0
Vile #
Что-то типа такого?
+1
shortcaster #
Лично я никогда не изменяю громкость в зависимости от песни.
0
KiLEX #
опционально ;)
я тоже, но многие мои знакомые так делают.
0
AIN #
Мне совершенно непонятно причем здесь громкость? Есть тихие песни, есть громкие, есть концертные записи. У всех разный уровень звука. Соответственно дома или на улице я также меняю громкость и это совершенно не касается того нравится мне или не нравится трек. В общем, я считаю, что громкость здесь совершенно лишняя.
0
gunya #
У меня с айподом достаточно хорошие отношения — он отбирает рандомом те песни, которые мне нравятся. Если не угадывает, я просто начинаю воспроизведение с начала списка.
0
VOLONTER #
В формуле «Результат=Рейтинг — надоедание*коэффициент надоедания» еще можно прибавить число «тот же альбом» или лучше «та же папка».
Как развитие идеи с жанрами песен, но теги расставлены не всегда, а по папкам можно в любом случае более-менее ориентироваться.
0
KiLEX #
вот это верно. даже лучше тотже исполнитель ) и немного тотже жанр
0
DeeoniS #
Гораздо проще вживить в мозг электроды и считывать инфу:) или брать анализ крови на наличие гормона счастья
0
bondarenko #
А мне порой кажется что мой Shuffle порой обретает интилект и действует по своему особому алгоритму… причем он совпадает с моим… может у них в прошивке есть какя-нибудь система который порядок треков в режиме шафл определяет исходя из количество раз, которое трек был прослушан и его рейтинга…
–1
nobr #
Нет, всё немного не так.

Вы думали, почему Эппл решила сделать шаффл с собственными наушниками? В них встроен сенсор, который считывает с кожи ваших ушных раковин небольшие нервные импульсы. Чем больше импульсов — тем больше вам нравится песня.

Всё очень просто. Никаких заумных алгоритмов.
0
bondarenko #
Звучит бредово… особенно если учесть что я родными нашуниками пользовался только 3 дня с момента покупки, потом купил соньковские, они гораздо лучше…
0
nobr #
Ага ага. Без смайлика — уже не шутка.
0
KiLEX #
да нет, тут все серьезно. импульсы с мозга поступают через наушники в плеер, соньковские тоже подходят, тут главно сам факт использования наушников.
+1
VElmogA #
Все ваши мысли о настроении можно формализовать и вписать в концепцию автора (автору просьба осилить=) ).

Ко мне тоже приходили мысли о таком шаффле, но в моей версии небыло надоедания, зато был учёт настроения. Автор говорит о рейтинге трека, в моём представлении таких рейтингов должно быть несколько — по градациям настроения. Понятно что такая система вначале будет подсовывать «не те» треки, но со временем накопит всё больше информации о настроении той или иной композиции и будет выдавать её когда нужно.

У меня, как и у большинства людей наверное, выбор трека происходит перещёлкивнием до того, что подходит по настроению (иногда хочется драйва, иногда спокойствия и т.д.). Допустим при первом прослушивании наш интеллект ждёт пока мы выберем трек, выбирает пустой рейтинг (допустим с номером 1), добавляет в него некоторое число. Этот рейтинг и отвечает за ваше текущее настроение. Вы снов пролистываете песни, попали на следующий нужный трек и слушаете его — интеллект снова добавляет в рейинг с номером 1 к этому треку какое-то число. Так он соберёт некоторую статистику о настроении с рейтингом номер 1. Скажем вы выключили плеер и включили через пару часов, ваше настроение изменилось — плеер перебирает настроения (пока ему известно только об одном), если вы переключили песню с высоким рейтингом 1, значит он больше не будет включать треки, у которых преобладает настроение 1. Я думаю что потом этим настроениям можно будет легко дать имена вроде «драйв» или «спокойный». Когда у него закончатся свободные рейтинги (тут можно выбрать любое количество градаций, но мне кажется будет достаточно 4-8), а вы переключите все возможные настроения, плеер догадывается что ваше настроение — это сместь рейтингов. Опять таки подсовывает треки с разными настроениями — ведь вы всё равно остановитесь — и определяет что драйва в вас 70 из 100 а спокойствия 30 из 100. Чем больше слушать — тем точнее и быстрее будет определяться ваше настроение. Допустим вы переключили трек с настроением драйв 10 из 100 и спокойствие 80 из 100, можно предположить что в вас сейчас 90 драйва и 20 спокойствия. + должна быть система ранжирования непрослушанных треков — например если настроение определено, нужно подсовывать треки без настроения и назначать им рейинг в соответствии с настроением. Читая свои строки я понимаю что до мат модели ещё далеко, но идея такова.
0
dab512 #
Гипотеза: Проигрывание музыки одного настроения поддерживает настроение.

Следствие: У человека при одном периоде прослушивания настроение не может измениться резко и кардинально.

На каждом плеере есть кнопки вперед и назад. Эти кнопки и должны отвечать действие повышение/понижение внутреннего рейтинга треков в плеере.

Понижение происходит при нажатии кнопки вперед. Если кнопку нажали в первые 5 секунд трека, то понижения не происходит.

Повышение происходит происходит при нажатии кнопки назад. Повторное повышение на том же треке не происходит.

При старте все треки имеют рейтинг 50. При повышении/понижении рейтинг повышаются/понижаютсяна 50% от своего рейтинга.
Все треки в той же папке повышаются/понижаютсяна 25%, все треки в соседних папках повышаются/понижаются на 10%
По прошествии 2х часов без воспроизведения — начинается новая сессия настроения.

Все!
0
maxmoriss #
Шуфлай -ржу! :))

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