До сих пор наш дизайн неплохо справлялся с полными альбомами и с отображением файлов по одиночке. А что если встретятся неполные альбомы? Они в той или иной мере сломают нам отображение плэйлиста. И, к сожалению, неполные альбомы встречаются не так уж редко, наверняка у каждого из вас есть папочка с музыкальным ассорти, набранным с различных дисков. Только представьте себе плэйлист содержащий все песни, вышедшие в определенном году, он не отобразится красиво как один альбом, потому что во всех трэках прописаны тэги %tracknumber%
, %album tracks%
и %album%
, и эти тэги различаются, соответственно они будут рассматриваться как трэки разных альбомов. Мы имеем все шансы получить не только некрасивый внешний вид плэйлиста, но и вероятность того, что некоторая важная информация, например имя исполнителя, не будет отображена. Вы ведь помните, что наш дизайн показывает имя исполнителя только в строчке соответствующей первому трэку, для всех остальных строк эта информация не показывается, поэтому если у нас нет трэка с номером 1, то информации об исполнителе не будет.
К сожалению, нет универсального решения этой проблемы в рамках скрипта для одного плэйлиста, но мы можем разделить наши плэйлисты на 'плэйлисты из альбомов' (полных) и 'плэйлисты из отдельных трэков'. Трудно назвать такой вариант идеальным, но он достаточно хорошо работает. В этом случае нам достаточно будет поместить все неполные альбомы (или одиночные трэки) в нужный плэйлист.
Вкладки для плэйлистов по умолчанию выключены в Foobar2000, нам же, для того чтобы легко переключатся между списками альбомов и списками одиночных файлов, нужно их включить. На всех скриншотах вкладки уже на сам деле включены.
Перейдите на вкладку Layout на странице Display / Columns UI настроек. Она должна выглядеть примерно так:
У Вас должно получиться дерево с корнем Playlist tabs и единственным отростком Columns Playlist.
У нас появилась новая панель над плэйлистом с единственной вкладкой с именем Default. Каждая вкладка в этой панели соответсвует отдельному плэйлисту. Теперь щелкните правой кнопкой мыши на существующей вкладке и выберите Create playlist, затем щелкните правой кнопкой на новой вкладке, выберите Rename и переименуте ее в Singles.
Для плэйлистов из отдельных трэков мы создадим совершенно новый набор столбцов, а это означает, что нам нужно отключить уже существующие столбцы для таких плэйлистов. Мы сделаем это на вкладке Columns в Design / Columns UI / Playlist view, в которой для каждого столбца есть 2 опции: Playlist filters и Filter playlists.
Итак нам нужно спрятать наши столбцы для случая плэйлистов из одиночных файлов. Используемый режим (альбомный вид или одиночные файлы) определяется соотвестивем имени плэйлиста и строки фильтра, заданной в поле Filter playlists.
Наш дизайн должен переключатся в режим одиночных файлов, в том случае если имя плэйлиста содержит строку single или начинается с -s-. Этому соответствует такая строка фильтра:
*single*;-s-*
Джокеры (спец. символы) здесь работают так же, как и в Windows. «Звездочка» (*) подразумевает любое количество символов, в том числе и 0. Знак вопроса (?) подразумевает любой одиночный символ. Одновременно можно задать несколько условий, разделив их точкой с запятой (;). В строках фильтров регистр символов не учитывается.
Таким образом, наша строка в первую очередь применяется к всем именам плэйлистов, в которых есть слово single, с произвольным количеством символов до или после этого слова, т.е. это слово может располагаться в любом месте имени. Точка с запятой служит окончанием этого условия, и началом нового, которое применяется ко всем именам начинающихся с фразы -s-, после которой может идти любое число символов.
Если Вы не хотите сильно ограничивать себя в именовании плэйлистов, то можете использовать в качестве строки фильтра сочетание «звездочка» ип робел (* ). В этом случае все плэйлисты с именами, заканчивающимися на пробел будут отображаться в режиме одиночных трэков, а остальные - в режиме полных альбомов.
Теперь для кадого из 5 существующих столбцов выберите значение Hide on playlist в списке выбора Playlist filters и введите строку фильтра. Нажмите Apply и убедитесь, что в плэйлисте Singles все столбцы исчезли, притом, что плэйлист Default не изменился.
Мы собираемся создать пять новых столбцов для плэйлистов из одиночных трэков, эти столбцы, соответственно, должны отображаться только для таких плэйлистов. Следовательно, для этого нам нужен Playlist filter с именем Show only on playlists, строка фильтра останется такой же, как и в выше. Не забудьте применить эти настройки к каждому из пяти новых столбцов.
Создайте новый столбец с именем Artist, задайте ширину (Width) равную 230, и выравнивание по левому краю (Aligment = Left). Как следует из названия, в этом столбце будет отображаться имя исполнителя. Соответственно скрипт на вкладке Display будет выглядеть так:
[%artist%]
Цвета будут такие: белый текст, на фоне черных и темно-серых перемежающихся полосок, с темно-красными линиями выделения. И это именно те цвета, которые определены в нашем глобальном цветовом скрипте, поэтому во вкладке Style ничего делать не надо.
Для отображения названия композиции создайте столбец с именем Tilte, шириной 240 пикселей, с выравниванием по левому краю. В этом столбце мы также будем отображать нашу анимацию, которую мы создали ранее, это делает скрипт во вкладке Display немного сложнее:
<pre class="code">
$if(%isplaying%
,
$ifequal($put(foo,$mod(%_time_elapsed_seconds%,8)),0,
')))) ',
$select($get(foo),
$get_global(cTxtDim)'('$rgb()'))) ',
$get_global(cTxtDim)'(('$rgb()')) ',
$get_global(cTxtDim)'((('$rgb()') ',
$get_global(cTxtDim)'(((( '$rgb(),
')'$get_global(cTxtDim)'((( '$rgb(),
'))'$get_global(cTxtDim)'(( '$rgb(),
')))'$get_global(cTxtDim)'( '$rgb()
))
)
%title%
</pre>
Скрипт почти полностью повторяет тот что мы создали для столбца Tracknumber в режиме альбомов, единственное отличие это два пробела, которые рисуются после анимации, для того чтобы отделить название композиции и замыкающую функцию $rgb()
, чтобы быть уверенным что цвет вернется к значениям по умолчанию.
Для этого столбца понадобится свой скрипт в Style, потому что по нашей задумке он должен выглядеть точно так же как столбец Track для режима полных альбомов: черный текст на светло-сером фоне, с красным индикатором выделения и темно-серым фоном для текущей проигрываемой композиции. Это будет единственный столбец для этого режима, которому потребуются свои цвета.
<pre class="code">
$set_style(text,$get_global(cTxtTrk),$get_global(cTxtSel))
$if(%isplaying%
,
$set_style(back,$get_global(cBgPlay),$get_global(cBgPlay))
,
$set_style(back,$get_global(cBgTrk),$get_global(cBgSel))
)
</pre>
Первая строка меняет цвет текста, остальные: фона, сначала для текущей композиции, затем для всех остальных.
Не забудьте поставить галочку Use custom color spec когда будете вводить скрипт.
Этот столбец отображает название альбома, номер трэка и номер диска. Назовите его Album и сделайте его шириной 160 пикселей с выравниваем по левому краю. Скрипт для вкладки Display для него очень прост:
['('%tracknumber%') '] [%album%][', CD '%disc%]
Сначала идет номер трэка в квадратных скобках. Я отказался от отображения в шестнадцатеричном виде по тем же причинам, что и для всплывающей подсказки для системного трэя. После номера отображается название альбома и номер диска, для многодисковых альбомов. Квадратные скобки вокруг каждого элемента гарантируют, что он будет отображаться только при его наличии.
Создайте столбец с именем Time, шириной 50 пикселей и, на этот раз, с выравниванием по правому краю. Display скрипт будет точно таким же, как и скрипт для соответствующего столбца в режиме альбомов.
$if(%_time_remaining%, '['%_time_remaining%']', $if2(%_length%,'n/a') )
Он выдает длину трэка или ‘n/a’, а также оставшееся время для проигрываемой композиции. И снова нам не нужно задавать цветов отдельно.
Этот столбец называется RGain, шириной 50 пикселей и выровненный по правому краю. Скрипт для него является упрощенной версией соответствующего скрипта для альбомного режима - часть, отвечающая за album gain отсутствует, т.к. наш плэйлист рассчитан на одиночные трэки, то album gain смотрелся бы здесь нелепо.
$if2(%__replaygain_track_gain%,'n/a')
5-я стадия закончена. И в месте с ней мы полностью закончили готовый к использованию дизайн для Columns UI. Снова посмотрим на скриншот законченного Dark Connections, на этот раз уже в режиме одиночных файлов.
Если у вас все еще нет его … гхм, ну конечно же он у Вас есть , Вы ведь только что его закончили. Тем не менее…
Просто скачайте FCS файл Dark Connections 2.0.0. Цифра 2 в номере версии означает, что этот дизайн предназначен для Foobar2000, через минуту мы вернемся к версии 1.
Если Вам не интересна адаптация Dark Connections к Foobar2000 0.8.3, то смело читайте заключение. Если Вам это интересно, то идем дальше.
~~DISCUSSION~~