LINUX.ORG.RU

PCM Transport - просто аудиоплеер под линукс

 , ,


0

1

Привет всем!

Я сделал небольшой аудиоплеер под линукс для себя, минималистичный, локальный, с некоторыми ностальгическими фичами типа левел метра в духе моего старого панасоник кобры, дисплея как в старом CD плеере и т.п.

Основной формат flac реализован референсно, с качеством Bit-perfect, остальные через ffmpeg (мне не хочется делать много зависимостей). Поддерживается довольно много форматов:

*.flac
*.wav
*.wave
*.aif
*.aiff
*.ape
*.wv
*.bwf
*.au
*.snd
*.caf
*.tak
*.tta
*.mp3
*.m4a
*.aac
*.ogg
*.oga
*.opus
*.wma
*.asf
*.xwma
*.oma
*.aa3
*.at3
*.mpc
*.mp+
*.mpp

А также:

*.cue
*.m3u
*.m3u8

Что бы быть честным, признаю, что я использовал ИИ для помощи.

Мне было бы интересно услышать мнения и отзывы, а если это кому то понравится - это для меня самое приятное.

Плеер естественно открытый, GNU General Public License v3.0.

Для быстрого теста есть AppImage - в AppImage работает все кроме выставления приоритета реального времени (приоритет выставляется в собранной версии).

Нативная сборка работает лучше – на выходе файл 1мб размера, очень минималистичный )))

Надеюсь, что не нарушил правил данного форума )

Страница моего проекта

Сам я постоянный пользователь линукс уже лет 8, и фанат музыки )



Последнее исправление: hobbit (всего исправлений: 3)
Ответ на: комментарий от Loki13

Возможно вариантом будет при открытии каталога m3u не открывать, а только аудио файлы.

Именно. Когда открываешь список, другие списки не нужны.

bbc69
()
Ответ на: комментарий от andrey23512

Уже есть в readme

cmake -S . -B build
cmake --build build -j

По внешнему виду, смотрится интересно у вас.

Не доделал пока, так влёгкую пару значений поменял, можно и не трогать, на других мониторах с хорошим ppi, да и на моём тоже, не промахнёшся, когда торопишься :). Во весь экран обычно, workspace хватает, редко в полэкрана.

spawn_sp ★★★★
()

Я себе ещё 2 фичи сделал. Есть вопрос, интересны ли они будут для апстрима?

Первая, открытие рекурсивное каталога с музыкой + ленивая загрузка тэгов с помощью ffprobe в отдельном потоке чтобы не блокировался ui.

И вторая, строка фильтра по плейлисту. У меня есть альбом 500 треков в машину и мне стало тяжело по такому количеству ориентироваться без фильтра.

В планах ещё запилить открытие каталога\файла\списка файлов из командной строки, чтобы открывать из терминала или из ФМ по ПКМ.

И ещё один план, сделать сохранение состояния между запусками.

В принципе это всё чего мне на данный момент не хватало или не хватает.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

Я сейчас готовлю версию 0.9.110 - в ней планируется

  • MPRIS (на ~95% ваша реализация + некоторые полировочные моменты),
  • некоторые GUI правки + иконка
  • фикс отображения кривой cp1251 в некоторых форматах (как раз эта проблема с русскими 1251 mp3)
  • сохранение состояния между запусками (как раз это)
  • проигрывание DSD (через ffmpeg) (мне DSD самому не интересен, но это актуальный аудиофильский формат и нужно уметь его играть хотя бы для совместимости)

интересны ли они будут для апстрима?

Первая, открытие рекурсивное каталога с музыкой + ленивая загрузка тэгов с помощью ffprobe в отдельном потоке чтобы не блокировался ui.

Я не хочу это добавлять в плеер, так как не вижу в голове, как это сделать не перегрузив плеер - допустим мы выбираем открыть большой каталог с музыкой (условно 20000 файлов), как это должно отобразится в плеере? Или мы должны открывать только сколько то уровней вложенности, что тоже не изящное решение… Для меня это какой нагромождение и уход от идеи быстрого плеера без обслуживания библиотеки.

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

ленивая загрузка тэгов с помощью ffprobe

Я уже думал об этом, так как не все форматы молниеносно считываются при открытии, это момент который требует обдумывания

И вторая, строка фильтра по плейлисту. У меня есть альбом 500 треков в машину и мне стало тяжело по такому количеству ориентироваться без фильтра.

Хотя у меня нет таких плей листов (500 треков ) , но это не противоречит идеи, поэтому это можно было бы добавить в теории, только есть вопросы как это вписать симпатично в gui.

В планах ещё запилить открытие каталога\файла\списка файлов из командной строки, чтобы открывать из терминала или из ФМ по ПКМ.

Это ок, если это нужно, полезно - можно было бы добавить.

andrey23512
() автор топика
Ответ на: комментарий от Loki13

И ещё наверное запилю со временем работу с m3u с интернет радиостанциями. Люблю иногда послушать потоковое аудио.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от andrey23512

Я не хочу это добавлять в плеер, так как не вижу в голове, как это сделать не перегрузив плеер - допустим мы выбираем открыть большой каталог с музыкой (условно 20000 файлов), как это должно отобразится в плеере?

Сделал что мгновенно по имени файла. А потом в фоновом потоке подгружаются тэги. У меня для 500 файлов примерно пол минуты(это HDD). Но слушать можно сразу.

Я уже думал об этом, так как не все форматы молниеносно считываются при открытии, это момент который требует обдумывания

Могу скинуть ссылку на ветку, где это запилил(совместно с открытием каталога, да).

Хотя у меня нет таких плей листов (500 треков ) , но это не противоречит идеи, поэтому это можно было бы добавить в теории, только есть вопросы как это вписать симпатично в gui.

На данный момент вот так:

https://s6.iimage.su/s/20/gWTCEU3xP2RMwvzJY0H0mEdmndwPfRLz5NIVkD1uk.png

Фильтрует по исполнителю и треку. По нажатию очистить(справа в фильтре) или стерев BkSpace появляются обратно все треки.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

И ещё наверное запилю со временем работу с m3u с интернет радиостанциями. Люблю. иногда послушать потоковое аудио.

Да, интернет радиостанции это востребованная фича для многих, и в дальнейшем стоит ее прикрутить

andrey23512
() автор топика
Ответ на: комментарий от Loki13

Это не к спеху, пока хотелось бы отточить локальное проигрывание. Т.е. это не прям ближайший план, это как мысли на будущее. Просто замечу, если будет реализация интернет радио, важно не создавать новые зависимости еще - делать через ffmpeg и ffprobe.

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Первая, открытие рекурсивное каталога с музыкой

Как компромисс - рекурсивное открытие каталогов можно вынести за пределы основного плеера, что бы было проще в дальнейшем.

В отдельную консольную утилиту, shell-скрипт или действие файлового менеджера.

Такое решение может рекурсивно собирать поддерживаемые файлы, формировать временный M3U и открывать его в плеере.

Это сохраняет основной плеер компактным, а нужная функция полностью остаётся на стороне дополнения.

Добавлять именно в плеер полноценно я пока не хочу - такая функция заметно меняет модель плеера (((

andrey23512
() автор топика
Последнее исправление: andrey23512 (всего исправлений: 1)
Ответ на: комментарий от Loki13

На данный момент вот так:https://s6.iimage.su/s/20/gWTCEU3xP2RMwvzJY0H0mEdmndwPfRLz5NIVkD1uk.png

Довольно симпатично, я в голове примерно так и представлял себе - как это могло бы быть. (утром ссылка не открывалась, сейчас посмотрел)

andrey23512
() автор топика
Последнее исправление: andrey23512 (всего исправлений: 1)
Ответ на: комментарий от Loki13

В релизе, который готовлю тоже реализовал ленивую загрузку, уже давно подумывал, что это нужно

andrey23512
() автор топика
Последнее исправление: andrey23512 (всего исправлений: 1)
Ответ на: комментарий от andrey23512

Я там довольно много собак съел сейчас пока делал. Чтобы не подлагивал интерфейс при подгрузке.

Сейчас ещё сделал сохранение сессии. Я PR делать наверное не буду, мы скорее всего разошлись сильно. Но в репу свою конечно все ветки залью.

Я все фичи делаю отдельными ветками и общую my_patches из которой собираю уже версию для себя.

https://github.com/loki1368/pcm-transport/branches

Посмотрите что у меня там, если что-то будет полезно для апстрима, то могу оформить PR.

- cursor/internet-radio - потоковое интернет радио. вроде получилось неплохо, пришлось повозится(особенно с тем чтобы помечать битые станции и не зависать на них).

- cursor/open-directory-playlist - открытие каталогов и ленивая загрузка для тэгов.

- cursor/playlist-search - поиск и фильтр по плейлисту.

- cursor/session - сохранение сессии и загрузка при следующем старте

- cursor/compact-text-controls - Это точно не интересно, я искал почему в Hyprland глючит интерфейс в master layout.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 4)
Ответ на: комментарий от Loki13

Я PR делать наверное не буду, мы скорее всего разошлись сильно. Но в репу свою конечно все ветки залью.

Да, конечно, без проблем. Я только приветствую форк! :)

Посмотрите что у меня там, если что-то будет полезно для апстрима, то могу оформить PR.

Текущий релиз 0.9.110 уже готовлю с тем что есть. Для следующего релиза , буду иметь ввиду, спасибо!

Но в репу свою конечно все ветки залью.

Отлично!

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Готов релиз PCM Transport v0.9.110

GitHub

В целом, главные улучшения:

  • значительно улучшено понимание разных кейсов с кодировками, теперь «Сектор Газа» запоет по новому :) Если серьезно, разные гуляющие русские mp3 (и другие файлы) в кодировках cp1251, должны нормально отображаться, так же плей листы и cue cp1251 должны нормально находить файлы
  • значительно улучшена обработка мета тегов для разных редких форматов
  • теперь ленивая загрузка файлов при открытии
  • опционально сохранение последнего открытого при новом запуске
  • улучшен интерфейс (более аккуратные отступы) + иконка
  • MPRIS поддержка (спасибо: Loki13) (Loki13 сделал основную работу, от меня была доп оптимизация и некоторые правки уже после merge)
  • поддержка DSD (DSF, DFF), а так же W64, MP2, M4R, AC3, SPX, VOC, RA, DTS
  • фикс cue парсинга для hires файлов
  • улучшение диагностических тестов ALSA вывода
andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Влил в совй форк, максимально переходя на реализации из апстрима. Заметил, что у меня ленивая загрузка была корректнее. Быстрее, видимо из-за многопоточности, а также можно было включать трек не дожидаясь загрузки всех метаданных. Могу попробовать доработать ваш вариант и предложить PR.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Могу попробовать доработать ваш вариант и предложить PR

Давайте, отличная идея!

andrey23512
() автор топика
Последнее исправление: andrey23512 (всего исправлений: 1)

Заметил что в версии 0.9.110 перестал растягиваться регулятор громкости на всю высоты плейлиста, вот эта строчка:

gtk_box_pack_start(GTK_BOX(softvol_box), soft_volume_scale_, FALSE, FALSE, 0);

вместо того как было:

gtk_box_pack_start(GTK_BOX(softvol_box), soft_volume_scale_, TRUE, TRUE, 0);

Это так задумано? Мне показалось что выглядеть стало хуже в случае когда в тайлинге проигрыватель растягивается на всю высоту тайла. А в changelog про это ничего не было сказано.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

Мне хотелось, что бы софт громкость не тянулась в спагетти при увеличении высоты плеера, т.е. та высота громкости, которая есть в стандартном окне - она не меняется теперь осознанно. Извиняюсь, что потерял это в changelog

andrey23512
() автор топика
Ответ на: комментарий от Loki13

Ну пустота если растягивать высоту, по дефолтному размеру все скомпоновано же, просто если плей лист большой, и хочется что бы больше треков видеть - можно растянуть в высоту - и да, ручка громкости , как мне видится, не должна тянуться. Я давно хотел это поправить.

Она сейчас примерно такого размера - как обычная ручка на микшере - то как мне видится.

andrey23512
() автор топика
Последнее исправление: andrey23512 (всего исправлений: 1)
Ответ на: комментарий от Loki13

Можно при растягивании там что то добавить декоративное, не знаю пока что, просто сама ручка на мой вкус не должна тянуться

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Собрал 0.9.111

github

0.9.111

  • Improve lazy metadata loading performance and early playback, based on work contributed by loki1368 (Спасибо!).
  • Refine pending playback and metadata finalization for reliable playback while metadata is still loading.
  • Add opening of local files and directories from Linux file managers and positional command-line arguments.
  • Route file-open requests to the existing application instance.
  • Add asynchronous recursive directory scanning with cancellation, natural ordering and duplicate suppression.
  • Register supported audio, CUE, M3U/M3U8 and directory MIME types.
  • Add multi-file CUE playback across all supported audio formats.
  • Prefer valid single-file CUE sheets during directory scans while avoiding duplicate split-file and playlist entries.
  • Preserve opened directories as top-level sources for startup restoration.
  • Restore vertical soft-volume control expansion.

p.s. вернул громкость, что бы тянулась;

p.s. 2: Открытие каталогов из файловых менеджеров - как удобство интеграции в DE - сам плеер по прежнему я вижу как плеер для открытия 1 альбома (как я его задумывал), поэтому в нем пока нет кнопки открыть каталог;

p.s. 3: Loki13 я вижу PR, спасибо, но скорее всего мы сейчас сильно разошлись, давайте пока их отложим немного, нужно синхронизироваться и погонять плеер, посмотреть как все работает :)

andrey23512
() автор топика
Последнее исправление: andrey23512 (всего исправлений: 4)

Учитывая плотную и плодотворную совместную работу, предлагаю обменятся какими нибудь более удобными контактами. Тут странно. PR на github не подразумевают свободного общения. А есть некоторые моменты которые хотелось бы иногда проговорить.

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

Из не предложенных PR осталось internet radio. Я его уже несколько дней отлаживаю, но хотелось бы его после session предложить, он объемный и там есть некоторые зависимости от сессий.

Ну и есть несколько идей, которые просто по UI\UX, тут надо понимать видение автора прежде чем предлагать.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Если контакты давать не хочется, то может быть откроете GitHub Discussions? Там можно поговорить.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Да, конечно, я написал контакт в комментарии к Persist playlist and current track across restarts, потом просто удалю там комментарий, как увижу письмо

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Собрал 0.9.111

github

Собрал 0.9.112

Из главного

Добавлен фильтр поиска, теперь отображается Альбом, улучшено выравнивание списков, теперь можно файлы или папки перетаскивать мышкой из папки в плеер (кидать в плеер прямо), на кнопке открыть по правому клику открытие папок; + Так же исправление ошибок.

github

0.9.112

  • Initial playlist filter implementation contributed by @loki1368.
  • Further filter integration, optimization, bug fixes and release polishing.
  • Add Album metadata to FLAC, FFprobe, CUE and WAV/BWF probes, including RIFF INFO and embedded-ID3 fallback; publish Album through MPRIS xesam:album.
  • Parse WAV RIFF INFO Artist, Title, Album and ITRK/IPRT track numbers through the fast metadata path.
  • Add drag-and-drop opening of local files, CUE, M3U/M3U8 and directories.
  • Add right-click directory selection to the existing Open button.
  • Refine playlist layout and sizing.
  • Improve the settings-saving algorithm.
  • Release the playlist model reference when the main window is destroyed and tie DSP size groups to the dialog lifetime.
  • Improve alignment of GUI display elements.
andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Готова версия 0.9.113 !

Это большое обновление, главное:

  • ! переход с ffmpeg cli –> FFmpeg shared libraries: libavformat, libavcodec, libavutil and libswresample , как следствие повышение скорости, отзывчивости;

Изменилась сборка, на некоторых системах может потребовать установка соответствующих библиотек (штатные для ffmpeg)

  • переосмысление gapless политики. например, теперь возможны бесшовные переходы раздельных файлов вида m4a–>flac; wv–>mp3; ape–>tak; wav–>flac и т.п.
  • сортировка плейлистов в любом направлении
  • появление random; теперь есть комбинации repeat; random; random+repeat; normal
  • запоминание последнего трека, настройка количества строк плей листа при открытии плеера
  • переработка level meter и общая оптимизация скорости

Полный лог:

  • Replace FFmpeg and FFprobe command-line processes with direct FFmpeg API integration for playback, seeking and metadata probing; building now requires the FFmpeg development libraries listed in README.
  • Rework gapless playback around verified sample boundaries and trusted decoder completion; retain RangeLimitedDecoder for known ranges, improve CUE and resampled transitions, and remove silence keepalive.
  • Add playlist sorting by track number, artist, title, album and source, with ascending, descending and original-order states while preserving playback and selection.
  • Rework in-process metadata probing with native fast paths for FLAC, MP3 and PCM WAV/BWF, verified sample-count paths for WavPack, APE, TAK, PCM Wave64 and ALAC, a bounded presentation-origin probe for Ogg Vorbis, and bounded validation for raw ADTS AAC. Cache results and use libavformat for remaining formats and ambiguous inputs.
  • Add a unified MODE control for Repeat, Random and Random + Repeat; align navigation, history and availability across the player, media keys and MPRIS.
  • Rework level-meter updates with lock-free peak delivery and time-based ballistics; reduce unnecessary GUI polling while preserving transport responsiveness.
  • Add optional restoration of the last active track and configurable startup playlist height adapted to GTK metrics and the available work area.
  • Preserve native multichannel playback and bypass stereo tonal processing above two channels while retaining soft volume, level metering and clip detection.
  • Improve ALSA setup, fallback negotiation, recovery and diagnostics; keep playback state unpublished until output initialization succeeds.
  • Improve MPRIS track identity, stopped-state selection, seeking, track advancement and state-notification consistency.
  • Improve playlist filtering, metadata updates and interface refresh efficiency.
  • Derive the Lossless indicator from probed codec properties, including correct handling of WavPack hybrid streams.
  • Improve cancellation, error recovery and resource ownership; remove obsolete code and unused state.

github

andrey23512
() автор топика
Последнее исправление: andrey23512 (всего исправлений: 2)
Ответ на: комментарий от anonymous

Готова версия 0.9.114 !

Главное, это переход на событийную (event-driven) модель.

Полный лог:

  • Reworked playback around an event-driven model. Removed periodic transport polling and reduced unnecessary GUI wakeups.
  • Defined the library compatibility baseline: FFmpeg 4.4 or newer and libFLAC 1.3.3 or newer. Added public-API compatibility paths across supported FFmpeg versions.
  • Added verified separate-file gapless support for AIFF/AIF PCM, AU/SND PCM, CAF LPCM and TTA.
  • Added strict AAC-LC/MOV boundary verification. Ambiguous or inconsistent files remain on the normal non-gapless playback path.
  • Added optional character-based width limits for Artist, Title, Album and Source. Full metadata remains available for search, sorting and MPRIS. Default limit: 25 characters.
  • Added exact decoded-span handling for DSF and raw DFF DSD while keeping separate-file DSD gapless disabled.
  • Improved FLAC error handling and exact-range seeking.
  • Added automatic SoXr → FFmpeg SWR fallback and runtime resampler reporting.
  • Improved CUE and gapless transition handling under the new event model.
  • Improved Search window resizing and preference saving; removed redundant timers.
  • Added runtime library and realtime-service information to About.
  • Removed the obsolete experimental –file console playback path and cleaned up unused code.

github

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Собрал 0.9.115

В целом полировочный релиз. Из интересного, сейчас в AppImage заработало выставление приоритета реального времени. Теперь размер плеера сохраняется между сессиями, режим кастомного ограничения ширины колонок с авто компоновкой заменен на более легкий и интуитивный режим сохранения ширины колонок без авто компоновки

Полный лог:

  • Replaced the configurable startup playlist row count with restoration of the last normal main-window size. The factory and reset size keeps a 12-row playlist, while user resizing is remembered across sessions.
  • Replaced automatic character-based playlist field limiting with optional remembered column widths. User-adjusted widths are restored across sessions, while the normal adaptive playlist layout remains unchanged when the option is disabled.
  • Improved realtime scheduling: RTKit fallback now works correctly on standard desktop systems, while optional direct RT permission is handled separately and clearly in Settings.
  • Reworked playlist search around native GtkSearchEntry handling and removed the application-side search debounce timer.
  • Restored native GTK rendering for secondary controls while keeping PCM-specific styling limited to the main player interface where needed.
  • Set the minimum GUI stack to GTK 3.16 and GLib/GIO 2.52. GTK 3.22+ uses the current GdkMonitor work-area API while GTK 3.16–3.20 retains the compatible GdkScreen path.
  • Improved AppImage realtime handling: persistent capability grant/revoke is disabled in the read-only AppImage environment while runtime RTKit support remains available.
  • Hardened CUE and M3U/M3U8 loading with bounded reads and invalid local-path checks.
  • Improved FLAC bit-perfect diagnostics with direct subprocess execution, cancellation and temporary-file cleanup.
  • Improved MPRIS registration, GTK widget cleanup and several dialog, sizing and compiler-warning edge cases.
  • Updated project documentation.

github

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Готова 0.9.116

Всем советую :)

0.9.116

  • Reworked output precision around a single final PCM conversion boundary after resampling and DSP.
  • Added source-aware Auto 16/24/32 output precision policies, strict explicit modes, dedicated DSD output precision and configurable 24-bit ALSA containers.
  • Preserved native libFLAC decoding for bit-depth-only output changes and added exact PCM widening without intermediate quantization.
  • Added Round to nearest and signed LSB Truncate modes for final 16-bit conversion.
  • Removed Bit-Depth Rules, resampling dither controls and Deep Bass processing; libswresample dithering is explicitly disabled.
  • Hardened ALSA format negotiation so precision fallback does not mask device or runtime errors.
  • Improved mixed-precision gapless playback while preserving exact RangeLimitedDecoder transport boundaries.
  • Expanded runtime Decoder, Processing, ALSA and Transport diagnostics, including encoded bitrate and ALSA significant bits.
  • Added sample-accurate Bass/Treble transitions and reduced steady-state DSP and level-meter overhead.
  • Improved realtime scheduling transitions, verification and RTKit fallback handling.
  • Reworked Search selection and viewport preservation and removed redundant refresh work.
  • Improved startup active-track restoration and cancellation by GUI, media-key and MPRIS actions.
  • Hardened MPRIS, diagnostics and asynchronous UI callback lifetimes.
  • Refined settings and DSP Studio geometry, including compact Audio settings and bounded device-name presentation.
  • Unification of menus, Path, and tooltips

github

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Небольшое обновление - вернул дизер и улучшил 16 бит квантование.

0.9.117

  • Changed final 16-bit nearest rounding to deterministic ties-to-even and added Round half up; Truncate behavior remains unchanged.
  • Added optional final 16-bit high-pass TPDF dither with Classic and Mild profiles. Dither is disabled by default and is applied only when a real final S16 quantization is required.
  • Documented U. Zölzer, Digital Audio Signal Processing, 3rd ed., Wiley, 2022 as mathematical background for Round half up and classic high-pass TPDF; PCM Transport implementations are independently written.
  • Made explicit 24-bit ALSA container selections strict. Auto retains S24_LE → S24_3LE → S32_LE fallback.
  • Updated GUI and project documentation.

github

andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Собрал новую версию!

0.9.118

  • Changed Bass and Treble shelving to S=1.0, providing monotonic shelf response without transition-band overshoot.
  • Reworked automatic Pre-EQ Headroom around a conservative worst-case sample-peak bound for the complete Bass/Treble cascade, including bounded handling of the infinite IIR tail, upward 0.1 dB rounding, and a 32.0 dB adjustment range.
  • Documented A. V. Oppenheim and R. W. Schafer, Discrete-Time Signal Processing, 3rd ed., as mathematical background for the LTI bounded-input/bounded-output peak bound; PCM Transport implementation is independently written.
  • Changed runtime playlist Search to use normal GtkBox allocation without resizing the top-level window; factory/reset sizing and saved user window geometry remain unchanged.
  • Added full-debug Search geometry diagnostics and corrected logical window-size tracking for CSD and Wayland configure events.
  • Improved Logging folder selection in AppImage and GTK/GIO environments with local file URI fallback and correct Settings-dialog ownership.
  • Guarded optional MOV/AAC boundary-probe helpers by public FFmpeg capability so supported older FFmpeg builds retain conservative fallback behavior without unused-function warnings.
  • Added an event-driven Tone Controls signal-path diagram with processor-state indication and no additional timers.
  • Based DSP Studio default height on the application-owned dialog layout rather than the GtkWindow preferred height, excluding client-side window decorations from content sizing.
andrey23512
() автор топика
Ответ на: комментарий от andrey23512

собирал по 20 бунту для тестов один из предыдущих релизов, увы версии либ в ней сильно ниже, поправил сборочник, вроде собралось, но никак не отпускает ощущение, что странно работает

Morin ★★★★★
()
Ответ на: комментарий от Morin

Пожалуйста при случае напишите какие были ошибки / варнинги при сборке (и на какой системе, установлены ли зависимости).

«но никак не отпускает ощущение, что странно работает» - именно после сборки ощущение, или что то в плеере кажется странным ?

Будет классным, если попробуете последнюю версию , как раз будет полезным опыт.

Минимально поддерживаются libFLAC 1.3.3 и FFmpeg 4.4 libs , они штатно на Ubuntu 22.04

andrey23512
() автор топика
Последнее исправление: andrey23512 (всего исправлений: 3)
Ответ на: комментарий от andrey23512

Новая версия! Довольно небольшой но полезный апдейт - а пересмотрел пары bass/treble - раньше у меня пресеты были по сути air все по treble. Сейчас заменено на более рациональные пары, которыми можно уже на любой вкус настроить
100-3000 100-5000 новый дефолт 100-8000 100-10000

0.9.119

  • Replaced non-standard M_PI use in the GUI implementation with a file-local C++17 constexpr π constant.
  • Ordered 16-bit dither before 16-bit quantization in ALSA processing diagnostics to match the actual final S16 signal path.
  • Rendered the DSP Studio signal-path labels with PangoCairo and shortened the node labels without changing the signal-path widget geometry.
  • Ordered the main display DSP summary by processing sequence: Pre-EQ headroom, Bass/Treble, then DSP volume.
  • Reworked Bass / Treble shelf profiles around a fixed 100 Hz bass turnover with 3, 5, 8 and 10 kHz treble turnovers.
  • Set Balanced Tone (100 Hz / 5 kHz) as the default shelf profile. Stored shelf pairs outside the current profile set fall back to the default.
  • Centralized shelf profile labels and frequencies in one definition used by the DSP Studio selector.
andrey23512
() автор топика
Ответ на: комментарий от andrey23512

Собрал новую версию!

0.9.120

  • Added typed NativeInt32, Float32 and selective Float64 PCM paths while preserving exact native integer playback.
  • Preserved floating-point headroom through decode, resampling and DSP until output conversion.
  • Added selective Float64 processing for decoded double PCM and >24-bit high-quality SoXR resampling.
  • Unified DSP processing in normalized double precision while preserving PCM16 quantization, dither and exact S16 repack behavior.
  • Added explicit Float32/Float64 ALSA output and selectable Direct (hw:X,Y) / Plug (plughw:X,Y) paths; Auto remains integer-only.
  • Extended ALSA capability probing and diagnostics for Float32/Float64.
  • Refined gapless block compatibility while preserving RangeLimitedDecoder exact-range transport and decoder-EOF handling.
  • Updated playback diagnostics and related settings wording.
andrey23512
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария