RGMP версия 1.11 (бета)
Продолжаю писать музыкальный плейер RGMP как замену AIMP для MacOS. В этот раз в следующую бету попали 50/50 как новый функционал, так и фиксы по автоматически присланным отчетам и тем, которые я сам обнаружил в процессе использования.
Оформление
Наконец заработал раздел "Оформление". До сих пор плеер был только тёмным и только оранжевым, а сам раздел в настройках стоял пустой заглушкой.
Теперь там четыре вещи. Первая - тема: светлая, тёмная или как в системе, и тогда плеер переключается вместе с macOS. Светлую палитру пришлось собирать заново, цвет за цветом.
Вторая - цвет, как в AIMP, двумя ползунками: один крутит оттенок, другой насыщенность. "Поворачивается" всё сразу: вкладки, выделение, волна трека, громкость, заголовки групп, "Спектр" в окне визуализации.
А можно ничего не крутить и поставить галочку "Как в системе": плеер возьмёт акцентный цвет macOS и поменяется следом, если сменить его в системных настройках.
Третья - масштаб, от 90 до 150 %, для тех, кому на большом мониторе всё мелко (или наоборот, тесно на ноутбуке). Он применяется после перезапуска, и плеер сам предложит перезапуститься.
Четвёртая - шрифт: любой из установленных в системе, меняется сразу.
Отображение записей
Ожил раздел настроек "Отображение записей". Раньше там стояли шесть галочек, которые ничего не делали, и перед первой бетой я спрятал весь раздел за заглушкой. Теперь в нём работает всё.
Главное - у каждого трека в плейлисте появился свой флажок, как в AIMP.
Снял флажок - трек остаётся в списке, но плеер его пропускает, а строка становится бледной. Флажок у заголовка группы показывает чёрточку, если выключена только часть треков, и одним щелчком включает их обратно.
Попутно доделал старую недоработку: флажок группы срабатывал с задержкой примерно в треть секунды. Весь заголовок каждый раз ждал, не будет ли второго щелчка, потому что двойным щелчком группа сворачивается. Теперь двойной щелчок ловит только название группы, а флажок отвечает сразу.
Дальше мелочи, но приятные. Вторую строку с форматом и битрейтом можно спрятать, и плейлист станет однострочным и плотным. Если файл пропал, его строка всё равно вырастет и скажет "Файл не найден". Номер и длительность тоже прячутся.
Список теперь сам едет за играющим треком - но только если вы на него смотрели. Если прокрутили плейлист в другое место, чтобы выбрать, что поставить дальше, он вас оттуда не утащит.
Ещё можно включить сворачивание групп: открытой остаётся только та, где сейчас играет.
Звёзды
Точнее, сначала пять точек: они стоят справа в строке трека, под длительностью, как в AIMP, и каждая поставленная звезда превращает точку в звёздочку. Рейтинг плеер умел читать из тегов и раньше, но увидеть его можно было только в редакторе тегов, а это совсем не то.
Оценка ставится щелчком: ткнул в третью точку - три звезды. Щелчок по последней поставленной звезде оценку снимает. Под курсором точки заранее загораются до той, на которую придётся щелчок, так что видно, что именно поставишь. А если навести на последнюю звезду, звёзды гаснут - честно предупреждают, что щелчок их уберёт.
Самое интересное - где эта оценка живёт. У MP3, FLAC и большинства форматов она пишется прямо в теги файла, и её увидит любой другой плеер. А у M4A и WAV записать её некуда (теги M4A плеер не трогает, слишком велик риск испортить файл), поэтому такие оценки плеер хранит у себя. Так же с треками Яндекс Музыки и YouTube: файла у них нет, и оценка привязана к самому треку. Он может лежать в трёх плейлистах, но звёзды у него одни, и они никуда не денутся, даже если трек удалить и добавить снова.
По оценке можно отсортировать плейлист, а ИИ-ассистент, подключённый к плееру, видит те же звёзды, что и вы. Кому звёзды не нужны, их выключает галочка "Оценка" в настройках плейлиста - раньше она стояла серой и ничего не делала.
Управление (плеер)
Появился раздел настроек "Управление" - про колесо мыши и среднюю кнопку. В AIMP это всё живёт на странице "Плеер", и мне давно хотелось перенести его целиком, но, к сожалению, целиком пока не очень получилось. Вынес самое актуальное на первое время.
Главное там - на сколько сдвигает один щелчок колеса. Колесо и раньше перематывало трек над полосой позиции, меняло громкость над регулятором и крутило ручки скорости и темпа. Только числа были зашиты внутри, и с AIMP совпадало одно из четырёх. Теперь их можно поменять, а по умолчанию громкость шагает по 2 %, как в оригинале, а не по 5 - вдвое с лишним мельче. Скорость и темп по-прежнему идут по 0.05x, хотя в AIMP там 0.01x: кому хочется мельче, это теперь одна цифра в настройках.
Те же числа работают и для горячих клавиш - в AIMP группа так и называется: "горячими клавишами / колесиком мыши". Поэтому глобальные "Вперёд" и "Назад" теперь перематывают на 5 секунд, а не на 15, ровно как колесо над полосой.
Ещё две вещи оттуда же. Колесо над местами окна, где ему раньше нечего было делать (над обложкой, названием трека, кнопками, строкой состояния внизу) - теперь меняет громкость, и не нужно целиться в тонкую полоску регулятора. А там, где у колеса своя работа - список, вкладки, полоса позиции - оно делает её, как раньше. И средняя кнопка: щёлкнул по окну плеера - пауза, ещё раз - играет дальше. Работает, даже когда впереди другая программа. Вместо паузы на неё можно повесить "Добавить файлы" или выключить совсем.
Одну группу из AIMP я сознательно не стал делать - прокрутку плейлиста колесом по строкам (одна строка за щелчок, с Alt и Ctrl быстрее). На маке у прокрутки своя инерция и ускорение, отбирать их у системы не хочется, а Ctrl с колесом там вообще увеличивает экран.
Эквалайзер на устройство
У эквалайзера появилась память на устройства. Кривая, которая хорошо звучит в наушниках, на колонках может гудеть, а на хорошем ЦАПе эквалайзер вообще хочется выключить.
Теперь в настройках эквалайзера есть галочка "Общий для всех устройств". Пока она стоит, всё как раньше: эквалайзер один на всё. Снимаешь её - и всё, что дальше крутишь, запоминается только для того устройства, куда сейчас идёт звук: полосы, общее усиление, пресет и даже сам выключатель эквалайзера. Так у наушников будет своя кривая, у колонок своя, а ЦАП будет играть звук как есть.
Самое приятное - руками ничего переключать не нужно. Вставил наушники, macOS перекинула звук на них, и плеер сам достал их настройки. Выбрал другое устройство в настройках звука - то же самое. Над кривой написано, чьи настройки сейчас на экране, а под галочкой - на какое устройство идёт звук. Без этой подписи было бы непонятно: снимаешь галочку и не знаешь, для чего сейчас всё крутишь.
Если галочку вернуть, устройство снова играет с общим эквалайзером, но его собственные настройки никуда не деваются и вернутся, если снять её ещё раз.
Узнаёт плеер устройство по имени. Сначала я хотел по системному идентификатору, но оказалось, что у USB-интерфейса в нём зашит номер порта: воткнёшь в соседний - и плеер его не узнает. Обратная сторона - два одинаково названных устройства будут делить один эквалайзер, но такое встречается редко.
И одна находка по дороге: в отладочной сборке ползунки эквалайзера двигались рывками. Оказалось, график для каждой из своих 240 точек заново пересчитывал всю кривую целиком. В обычной сборке этого видно не было, но лишнюю работу я всё равно убрал.
Очередь воспроизведения
Очередь воспроизведения в полном функционале и логике переехала из AIMP. Ничего нового не добавлял и ничего не убавлял.
Работает она так. Выделяешь трек в любом плейлисте и жмёшь Q (или "Добавить в очередь" в меню трека) - он сыграет сразу после текущего. Можно поставить несколько, можно в начало очереди, можно один и тот же трек дважды. Сам трек остаётся на своём месте в плейлисте, просто рядом с длительностью у него появляется номер: [1], [2], а если он стоит в очереди ещё раз - [1+], как в AIMP. Option-Q убирает из очереди. Клавиши работают и в русской раскладке.
Когда очередь доиграла, плеер возвращается туда, откуда ушёл, и продолжает по порядку. Слушаешь, например, аудиокнигу, вставил между главами пару песен из другого плейлиста - и после них снова книга, со следующей главы. А если поставил в очередь главу, которая и так шла следующей, второй раз она не сыграет. Случайный порядок при этом не перемешивается заново.
Для остального есть "Менеджер очереди" (Control-Q): список с плейлистом и длительностью каждого трека, общее время, перестановка перетаскиванием, сохранение очереди файлом плейлиста и галочка "Приостановить" - очередь остаётся, но плеер её не берёт, и номера со строк пропадают, пока галочка стоит. Очередь переживает перезапуск, а ИИ-ассистент, подключённый к плееру, умеет её читать, пополнять и чистить.
На этом пока всё. Тестируйте, пишите отзывы. Присылайте баг-репорты и недоработки, если возникнут.