foobar2000 | fresh 2021 config

This is part 3 of 3 in the series foobar2000: my configurations

foobar2000 in 2021 - black-blue custom theme for heavily modded Azrael 5.8 config, album mode, track info & playlistsfull picture linked here and everywhere

Использование одного и того же конфига для плейлиста в foobar2000 с 2007 года не могло продолжаться бесконечно. В январе 2019 года вышла версия 1.0 плагина columns_ui и была официально прекращена поддержка старого Columns playlist, он был окончательно вытеснен NG playlist. Для меня это означало необходимость либо оставаться на версии 0.5.1, все еще поддерживающей legacy scripts, которые использовались в моем конфиге от Brumal, либо поиск/написании нового конфига.

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

Начались поиски нового конфига.

Azrael foobar2000 config, modded by kuzzzma

Я честно попробовала самые популярные готовые темы, со всеми их красивостями, но сложности допиливания под себя и следующая из этого зажатость в рамках видения дизайнера живо напоминали мне времена Winamp 5 и моего опыта с musicmonkey и прочими, а потому не устраивали совершенно. Прожорливость до ресурсов тоже играла свою роль – плеер, жружий от 800mb оперативки в мою картину мира не вписывался. Я решил обратится к своей заначке в виде старых .fcs времен 2007-2009, в надежде найти что-то написанное без legacy code, которое я могла бы допилить до нужной мне кондиции.

Мне повезло, оказалось, что использовавшийся мной когда-то Azrael (и оказавший влияние на мою систему организации музыкальной библиотеки) в своей последней итерации 5.8 был успешно переписан автором под новый стиль переменных.

Но годы использования конфига от Brumal не прошли даром и мне очень хотелось перенести ставшие привычными фишки оттуда на новую основу, поэтому последовала основательная переделка Azrael 5.8 от Neksus: большая замена кода в Globals и Global Style, совершенно новые столбцы и новая логика отображения (с учетом моей системы использования плейлистов), замена стиля отображения отдельных столбцов, чтобы обеспечить единый стиль отображения плейлистов в режиме mixed (сгруппированные альбомы, одиночные треки, компиляции), плейлистов с одиночными треками и прочих нюансов.

Процесс растянулся на несколько недель, я допиливала различные нюансы по мере возможности и по мере роста моего понимания логики чужого кода. Теперь это действительно мой конфиг, горжусь страшно.

Результат трудов можно скачать (ссылка внизу страницы), документация, скриншоты и обзор опций ЗДЕСЬ.

Новые темы

Конечно же, первым делом я добавила туда новую кастомную тему по мотивам своей привычной black & blue, насмотревшись на скриншоты своих старых конфигов – добавила еще несколько новых тем, темную с красными акцентами, серо-голубую, яркую синюю. Скорее всего, буду добавлять новые.

foobar2000: azrael mod new themes

Buttons

foobar2000 in 2021 - extra buttons

Все те же кнопки, но увеличено кол-во команд для быстрого доступа.
Пришлось дорисовать новые кнопки для вызова веб-сервисов и программ через плагин Run Services.
Кнопки в виде архива с PNG и файла FCB для импорта, а также мою подборку скриптов для Run Services можно скачать по ссылкам в конце поста.

Layout

На первый взгляд, layout остался неизменным – принцип тот же, изменения не так бросаются в глаза, это все тот же верхний тулбар, основная зона из 3х столбцов и статус-бар внизу.

foobar2000 in 2021: layout for kuzzzmaLayout configuration in Columns_UI settings

На тулбаре кнопки сместились в центр, выбор порядка проигрывания и предпочитаемого режима ReplayGain – сместились вправо.
Левый столбец – теперь это несколько табов, сюда переместилась Album List Panel, вертикальный сплиттер с Album Art, Track info и Lyrics panel, Spider Monkey Panel со скриптом, который подгружает список релизов с MusicBrainz по ID исполнителя.

Album List panel viewsварианты Views для Album List panel

Правый столбец – остался табами, к Playlist Switcher добавился Playlist Organizer и 2 Spider Monkey Panel – с фото исполнителя и биографией с last.fm и со списком похожих исполнителей оттуда же.

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

1 таб – Playlist
Track info с текущим проигрываемым треком и базовый плейлист

foobar2000 in 2021 - black-blue custom theme for heavily modded Azrael 5.8 config, album mode, lyrics & playlistsalbum mode, lyrics & playlists

foobar2000 in 2021 - playlist, releases and bioplaylist, releases and bio

foobar2000 in 2021 - multi-disc release in album-mode playlistsmulti-disc release in album-mode playlists

foobar2000 in 2021 - VA albums in album modeVA albums in album mode

2 таб – Playlist & Vis
Track info с текущим проигрываемым треком, визуализация и базовый плейлист

foobar2000 in 2021 - playlist with visualization, releases and simmilar artistsplaylist with visualization, releases and simmilar artists

3 таб – Playlist & Filters
5 панелей с фильтрами (Directory, Genre, Style, Artist и Album) и базовый плейлист внизу

foobar2000 in 2021 - Filtered playlist and No Art pictureFiltered playlist and No Art picture

4 таб – Filters
6 панелей с фильтрами во всю высоту (Directory, Genre, Style, Artist, Album, Track)

foobar2000 in 2021 - album-list, filters and playlistsalbum-list, filters and playlists

5 таб – Last.fm
3 Monkey Spider Panels со статистикой с Last.fm

foobar2000 in 2021 - last.fm chartslast.fm charts tab

Playlist

Плейлист имеет несколько режимов работы:

Стандартный плейлист (см. скрины выше)
Используется везде, кроме плейлистов с All Music; Classical, а также с *#*, *MISSING, VA*, lfm* в названиях.
Имеется группировка альбомов, одиночные треки и специальный режим для альбомов Various Artists в одном плейлисте. Включена группировка по последним двум уровням файловой системы ($directory(%path%,2) / %directory%), в этих группах показывается обложка.
Режим для плейлистов с Various Artists релизами
Включается для плейлистов с VA* в названии. От стандартного отличается тем, что показывается отдельно поле Artist. Включена группировка по последним двум уровням файловой системы ($directory(%path%,2) / %directory%), в этих группах показывается обложка.

foobar2000 in 2021 - VA album playlistVA album playlist

Режим для плейлиста All Music
От стандартного отличается тем, что включена отдельно поля Artist, Album, Genre, Year. Включена группировка по последним двум уровням файловой системы ($directory(%path%,2) / %directory%), в этих группах показывается обложка.

foobar2000 in 2021 - All Music playlistAll Music playlist

Режим Classical
От стандартного отличается тем, что включено отдельное поле Artist, скрыто поле Album, Tracknumber, Lyrics, Last.fm popularity bar. Включена особая группировка плейлиста, которая показывает только топовые папки (у меня это имена композиторов).

foobar2000 in 2021 - Classical playlistClassical playlist

Режим Electronic
К стандартному плейлисту добавляется поле BPM. Включена группировка по последним двум уровням файловой системы ($directory(%path%,2) / %directory%), в этих группах показывается обложка.

foobar2000 in 2021 - singles in album mode, electronic music playlist with BPM columnsingles mixed in album mode, electronic music playlist with BPM column

Режим Singles mode
Используется для плейлистов с только одиночными треками. Плейлисты имеют в названии префиксы *#*, *MISSING, lfm*, таким образом сюда попадают все # Search Results. Отключена группировка плейлиста, обложки не показываются. Показывается раздельно Artist, Title, Album, Genre, Year.

foobar2000 in 2021 - all singles playlistsall singles playlists

Downloads

Проверено для:

components & versions
foobar2000 core 1.6.5

Interface plugins
Columns UI 1.6.0
Album list panel 0.4.1
Lyric Show Panel 3 0.5
Panel Stack Splitter 0.3.8.3(alpha)
Spider Monkey Panel 1.4.1
Playlist Organizer 2.6
Quick Search Toolbar 3.6
Musical Spectrum 0.9.1

Extras:
Audioscrobbler 1.4.7 or new component, if you use last.fm
BPM Analyser 0.2.4.6 – if you plan to scan BPM
Playback Statistics 3.0.4 – for storing playback info and assigning rating OR use Quick Tagger (you would have to change comands for buttons)
Enhanced Playback Statistics – for importing last.fm data
Soft Playlists 2011-02-05 – to generate playlists based on last.fm data
Run services 0.3.8 – if you want to use all my custom buttons
Text Tools 1.0.5 – custom buttons use some of this features

Status Bar

Код

//**************************************
// set colors
//**************************************
$puts(col_normal,000000)
$puts(col_special,AD8A09)
$puts(col_paused,AD8A09)
$puts(col_streaming,008800)
$puts(col_cue_file,880000)
$puts(col_progbar_symb1,AD8A09)
$puts(col_progbar_symb2,191818)
$puts(col_time_remaining,AD8A09)
$puts(col_bitrate,AD8A09)
$puts(col_bitrate2,000000)
$puts(col_stereo,808080)

//**************************************
// set variables
//**************************************
$puts(text_streaming,'Streaming')
$puts(text_listened_for,'Listened for:')
$puts(text_cue_file,'Cue File')
$puts(text_paused,'PAUSED')
$puts(text_time_remaining,[%_time_remaining%])
$puts(spacer_symb,' ')
$puts(spacer_width,2)
$puts(progbar_symb1,'▇')
$puts(progbar_symb2,'▇')
$puts(progbar_length,138)
$puts(text_bitrate,$get(col_bitrate)$if2($pad(%__bitrate_dynamic%,3)000000' kbps',$if2(%__bitrate%' kbps',)))
$puts(text_extrainfo,[%__extrainfo%])

//**************************************
// add colors and formatting
//**************************************
$puts(spacer,$repeat($get(spacer_symb),$get(spacer_width)))
$puts(text_streaming,$get(col_streaming)$get(text_streaming))
$puts(text_listened_for,$get(col_streaming)$get(text_listened_for))
$puts(text_cue_file,$get(col_cue_file)$get(text_cue_file))
$puts(text_paused,$get(col_paused)$get(text_paused))
$puts(text_time_remaining,$get(col_time_remaining)$get(text_time_remaining))
$puts(progbar_symb1,$get(col_progbar_symb1)$get(progbar_symb1))
$puts(progbar_symb2,$get(col_progbar_symb2)$get(progbar_symb2))

//***********************************************************
//***********************************************************

//**************************************
// streaming
//**************************************
$puts(streaming,
$if(%_time_total%,,
$get(text_streaming)$get(spacer)
)
)

//**************************************
// cuefile
//**************************************
$puts(cue_file,
$if(%__cue_audiotype%,
$get(text_cue_file)$get(spacer)
)
)

//**************************************
// codec
//**************************************
$if(%__codec%,

$if($stricmp(%__codec%,musepack),$puts(codec,'MPC'),
$if($stricmp(%__codec%,vorbis),$puts(codec,'Ogg'),
$get(spacer) $puts(codec,%__codec%)
))
,
//If no codec tag and not streaming, read file extention
$if($and(%_time_total%,$not(%__codec%)),
$puts(codec,$upper($ext(%_path%)))
)
)

//**************************************
// bitrate
//**************************************
$puts(bitrate,$get(spacer)$get(text_bitrate))

$if($stricmp(%__codec%,musepack),
$if(%__mpc_profile%,
$puts(bitrate,$get(spacer)%__mpc_profile%$get(spacer)$get(text_bitrate))
)
)

//**************************************
// extrainfo
//**************************************

$puts(extrainfo,$get(spacer)$get(text_extrainfo))

$if($stricmp(%__codec%,MP3),
$if(%__extrainfo%,,
$puts(extrainfo,$get(spacer)'CBR')
)
)

$if($stricmp(%__codec%,musepack),
$if(%__mpc_streamversion%,$puts(extrainfo,$get(spacer)'sv'%__mpc_streamversion%))
)

//**************************************
// samplerate
//**************************************
$puts(samplerate,
$if(%__samplerate%,
$get(spacer)$cut(%__samplerate%,2)'kHz'
)
)

//**************************************
// channels
//**************************************
$puts(channels,
$if(%__channels%,
$get(spacer)$ifgreater(%__channels%,2,%__channels%ch,$ifgreater(%__channels%,1,Stereo,Mono))
)
)

//**************************************
// mp3 stereo mode
//**************************************
$puts(stereo_mode,
$if2( $get(col_stereo)'['$caps(%__mp3_stereo_mode%)']',)
)

//**************************************
// Replay Gain
//**************************************
//track gain
$puts(rpg,

$if(%__replaygain_track_gain%,
$get(spacer)
$get(col_normal)' TGain:'$get(col_special)$cut(%__replaygain_track_gain%,5)$get(col_normal)' dB'

$if(%__replaygain_album_gain%,
$get(spacer)' AGain:'$get(col_special)$cut(%__replaygain_album_gain%,5)$get(col_normal)' dB'
)
)
)

//**************************************
// progress bar
// (checking total because of streaming)
//**************************************
$puts(progress_bar,
$if(%_time_total_seconds%,
$get(spacer)$get(spacer)
$progress2(%_time_elapsed_seconds%,%_time_total_seconds%,$get(progbar_length),$get(progbar_symb1),$get(progbar_symb2))
)
)

//**************************************
// progress %
// (checking total because of streaming)
//**************************************
$puts(progress_%,
$if(%_time_total_seconds%,
' '000000$pad_right($muldiv(%_time_elapsed_seconds%,100,%_time_total_seconds%),3)000000'%'' '
)
)

//**************************************
// 'Listened for:'
// (used for streaming)
//**************************************
$puts(listened_for,
$if(%_time_total%,,
$get(spacer)$get(spacer)$get(text_listened_for)
)
)

//**************************************
// time
//**************************************
$puts(time,
$get(spacer)
$get(col_special)' '[%_time_elapsed%] $if(%_time_total%,
$get(col_normal)'/'%_time_total%' ' $get(spacer)$get(spacer)$get(spacer)
'Remaining Time: '$get(text_time_remaining)
)
)

//**************************************
// paused
//**************************************
$puts(paused,
$if(%_ispaused%,
$get(text_paused)
)
)

//**************************************
//**************************************
// create string
//**************************************
//**************************************

$get(streaming)
$get(cue_file)
$get(codec)
$get(bitrate)
$get(extrainfo)
$get(samplerate)
$get(channels)
$get(stereo_mode)
$get(spacer)
$get(rpg)
//$repeat($char(32),3)?????? ???????

//Right adjust from now on
$get(spacer)$get(progress_bar)
$get(progress_%)
$get(spacer)$get(listened_for)
$char(9)$get(time)
$get(spacer)
$get(paused)

Центральная Track Info

Код
$put(s1,$set_font(Impact,20)$rgb(148,148,148))
$put(s2,$set_font(Impact,20)$rgb())
$put(s3,$set_font(Impact,24)$rgb(39,199,232))

$set_font(%default_font_face%,$add(%default_font_size%,2),)
[$get(s2) %artist%$crlf()] [$get(s3) %title%$crlf()] [$get(s2)# %track% $get(s1)from album $get(s2)%album%$get(s1) '[' $get(s2)%date% $get(s1)']'$crlf()]

Боковая Track Info

Код
$put(s1,$set_font(%default_font_face%,$add(%default_font_size%,-2),)$rgb(128,128,128))
$put(s2,$set_font(%default_font_face%,$add(%default_font_size%,1),)$rgb())

$set_font(%default_font_face%,$add(%default_font_size%,2),)
[$get(s1)Artist:$get(s2) %album artist%$crlf()] [$get(s1)Album:$get(s2) %album%$crlf()] [$get(s1)Track:$get(s2) %title%$crlf()] [$get(s1)№ of track:$get(s2) %track%$crlf()] [$get(s1)Year:$get(s2) %date%$crlf()] [$get(s1)Genre:$get(s2) %genre%[ %'('style%')']$crlf()] $if(%comment%,[$get(s1)Comment:$crlf()$get(s2) %comment%$crlf()])
$rgb(192,192,192)–––––––––––––––––––––––––––––––––––$rgb()$crlf()

[$get(s1)Codec:$get(s2) %codec%$crlf()] [$get(s1)Bitrate:$get(s2) %bitrate% kbps$crlf()] [$get(s1)Frequency:$get(s2) $div(%samplerate%,1000)','$mod($div(%samplerate%,100),10) khz$crlf()] [$get(s1)Channels:$get(s2) %channels%$crlf()] $get(s1)Track/Album Gain: $get(s2)$if3($replace(%__replaygain_track_gain%,' dB',),'none')/$if3($replace(%__replaygain_album_gain%,' ',' '),'none')$crlf()
$get(s1)Tags Type:$get(s2) $if3($replace(%__tagtype%,'|',' + '),'…',)$crlf()
[$get(s1)Compression:$get(s2) $left($muldiv(%__bitrate%,10000,1411),$sub($len($muldiv(%__bitrate%,10000,1411)),2))'.'$right($muldiv(%__bitrate%,10000,1411),2) '%'$crlf()] $get(s1)Size:$get(s2) $ifgreater($div(%filesize%,1024),999,$left($div(%filesize%,1024),$sub($len($div(%filesize%,1024)),3))' '$right($div(%filesize%,1024),3),$div(%filesize%,1024)) Kb$crlf()
$get(s1)Duration:$get(s2) %length%$crlf()

$rgb(192,192,192)–––––––––––––––––––––––––––––––––––$rgb()$crlf()

$if(%lastfm_first_played%,[$get(s1)First played:$get(s2) %lastfm_first_played%$crlf()])
$if(%lastfm_last_played%,[$get(s1)Last played:$get(s2) %lastfm_last_played%$crlf()])
$if(%lastfm_play_count%,[$get(s1)last.fm playcount:$get(s2) %lastfm_play_count%$crlf()] $rgb(192,192,192)–––––––––––––––––––––––––––––––––––$rgb()$crlf()

$set_font(%default_font_face%,$add(%default_font_size%,-1),)
$replace(%path%,\,$rgb(200,200,200) \ $rgb(), , )$crlf()$crlf()

Ниже – можно скачать файлы для конфигурации:

Series Navigation<< foobar2000 | configurations history 2009-2020
Tagged , , , , , , , , , , . Bookmark the permalink.

About kuzzzma

Artist, photographer, papercraft designer, doll and action figures collector, traveller. Speaking Russian and English.

Leave a Reply