Тонкомпенсация

Список разделов Аудиоплеер foobar2000 Есть вопрос!

Описание: У вас проблемы с foobar2000 и вам необходима помощь? Спрашивайте здесь!
Правила раздела: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть. Подробно описывайте проблему. Не забывайте указать версию плеера, название сборки, по возможности добавить скриншоты проблемы.

Сообщение #21 seriousstas » 13.08.2020, 04:00

И обложку можно подобрать для машины
Плейлист увы не скролится , обложка статическая - не масштабируется.
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 105
С нами: 5 лет 7 месяцев

Сообщение #22 Azaza » 13.08.2020, 10:55

Joice писал(а):Не сочтите меня занудой, но что за проблема измерить максимальное и минимальное звуковое давление в любой системе? Это проще, чем снять АЧХ.
В том-то и дело, что реальную АЧХ тоже нужно знать, чтобы учитывать изменение её восприятия при изменении громкости. И, если тонкомпенскция осуществляется программно, то программа должна учитывать эти данные. И регулировать громкость в таком случае можно только программно. Это, повтгрюсь, если нужна правильно работающая тонкомпенсация. Ну а для того, чтобы просто сделать эквалайзер "галочкой", такие сложности не нужны, конечно.
Аудиофилия - это болезнь,поражающая головной мозг.Набор профилактически-превентивных мер против аудиофилии крайне скуден - техническое образование, умение мыслить логически и наличие здравого смысла.
Azaza M
Мастер
Аватара
Репутация: 208
С нами: 4 года

Сообщение #23 Joice » 13.08.2020, 11:07

Толковой альтернативы когда-то не нашёл. У Фубара есть два замечательных инструмента: Chanel Mixer с поканальными задержками и Crossover с гибкой частотной фильтрацией. В Aimp на момент поиска, лет 5 назад, такого не нашёл. Да и сейчас, бегло погуглив, таких плагинов не обнаружил.

Добавлено спустя 56 минут 24 секунды:
Продолжу тошнить:)
Кривая АЧХ ведь не зависит от уровня громкости, иначе, громкость можно было обозвать разновидностью эквалайзера.
Какае дело тонкомпенсации до кривости моей АЧХ? В максимальном положении ползунка громкости меня она, допустим, устраивает. А в положении - 50дцб не достаёт низов и чуток верхов. Вот и пускай бы виновница этой темы искривляла АЧХ по мере уменьшения громкости от полного отсутствия обработки на максимуме и до максимального вмешательства на минимуме громкости.
Да, если вдруг, изменить Гейн на усилителе, поменять Акустическую систему, провода:), тонкомпенсация станет работать криво. Это я понимаю. И понимаю, что эта функция работала бы правильно на всех железяках, если бы Юзеры использовали их на тех громкостях, на которых она проэктировалась. Если, конечно, это ни какой-то замаскированый Бас-Буст.
Возможно я ошибаюсь, или чего-то не знаю, но я вижу это так, как написал. Извиняйте, если что:)
П. С. Под регулировкой громкости я подразумевал исключительно ползунок проигрывателя. Естественно, никакой плагин не в курсе, что вы там крутит на ресивере, усилителе и т. д.
Joice
Автор темы, Новичок
Репутация: 0
С нами: 1 месяц 29 дней

Сообщение #24 duzzy » 13.08.2020, 13:10

Joice
Привет. Ты хочешь поднимать и опускать нч и вч при разных уровнях громкости?
Вообще можно попробовать скрипт накалякать) которой будет менять пресеты дсп при разных уровнях громкости. Но с вероятностью сто процентов могу сказать что будет слышно как переключаются пресеты.
Еще есть всеми забытый плагин foo_dsp_vlevel
https://hydrogenaud.io/index.php?topic=22057.0
это конечно не совсем то что нужно, но я им пользуюсь в машине самое то, но он иногда валит фубар. Есть версия посвежее и исходники, если нужно могу попозжей скинуть.
duzzy
Бывалый
Репутация: 18
С нами: 5 лет 2 месяца

Сообщение #25 Joice » 13.08.2020, 13:52

DUZZY, всему, что не заставит меня заниматься программированием буду благодарен. Далёк я от этого.
В артефактах при переключении прессетов я не сомневался, о чем на первой странице упомянул. Понятное дело, они будут.
Joice
Автор темы, Новичок
Репутация: 0
С нами: 1 месяц 29 дней

Сообщение #26 duzzy » 13.08.2020, 14:10

Joice
:smile:
Ок, вечерком скину сюда свежий vlevel и еще один плагин которым пользуюсь название точно не помню, тоже хорошая штука, ну и скрипт если успею сегодня.
duzzy
Бывалый
Репутация: 18
С нами: 5 лет 2 месяца

Сообщение #27 Joice » 13.08.2020, 14:50

DUZZY, это прям подарок будет. Спасибо. Только вот куда этот скрипт тулить, я тоже понятия не имею. Да, вот такой я.... :)
Joice
Автор темы, Новичок
Репутация: 0
С нами: 1 месяц 29 дней

Сообщение #28 MC Web » 13.08.2020, 18:02

seriousstas писал(а):Плейлист увы не скролится , обложка статическая - не масштабируется.
Насчет масштабирования заметил, плейлист проверить нет возможности, но думаю при желании все вопросы решаемы. Данная обложка очень понравилась и если бы нужно было поставил себе в машину. Но предпочитаю качественные проигрыватели в "классическом" исполнении. Стоит не первый год хорошая голова с неплохим встроенным усилителем и кучей настроек. Тонкомпесация имеет три уровня настроек, при включении и глухой слышит разницу. В программном исполнении ничего даже близкого не слышал.
MC Web
Гуру
Аватара
Репутация: 214
С нами: 7 лет 1 месяц

Сообщение #29 Azaza » 13.08.2020, 18:03

duzzy писал(а):Еще есть всеми забытый плагин foo_dsp_vlevel
https://hydrogenaud.io/index.php?topic=22057.0
это конечно не совсем то что нужно, но я им пользуюсь в машине самое то, но он иногда валит фубар. Есть версия посвежее
Самая "свежайшая" от 2012.07.16 - https://yadi.sk/d/Kn4Ef72tM4_oWw
Аудиофилия - это болезнь,поражающая головной мозг.Набор профилактически-превентивных мер против аудиофилии крайне скуден - техническое образование, умение мыслить логически и наличие здравого смысла.
Azaza M
Мастер
Аватара
Репутация: 208
С нами: 4 года

Сообщение #30 duzzy » 14.08.2020, 01:40

Joice
Да какой там подарок, это больше похоже на быструю поделку кривыми руками)))
Работать будет в фубаре версии 1.4 и далее, и сежей JScript Panel или Jsplitter.
Я не знаю как у тебя там все настроено в сборке, так что это простой(быстрый) вариант, работает при шаге громкости в -5 дб, т.е. от 0 до -100 с шагом в 5 т.е. каждые 5 дб дсп будет переключаться. Не знаю подойдет или нет, можно сделать с переключением в диапазоне например от 0 до -10.
Нужно подготовить пресеты ДСП в таком виде: dsp 0, dsp -5, dsp -10, dsp -15... dsp -100. Имена должны быть такими как написал иначе не будет переключать, т.е. например: выставляешь цепочку дсп как тебе нужно и сохраняешь с именем dsp 0 или dsp -5, и так далее. Если переключение на каком то шаге не нужно все равно сохраняешь пресет с соответствующим именем.
Моменты переключения дсп можно посмотреть в консоли.
Пробовал на обычном игровом джойстике шаг единичка, все работает и переключает.
Добавить в сборку легко, просто добавляешь панель JScript Panel или Jsplitter в размещатель Columns UI, показывать ее нигде не нужно она без графики работает в тени).
Спойлер
Код: Выделить всё
var dsp_active_name = "";
var dsp_str = fb.GetDSPPresets();
var dsp_arr = JSON.parse(dsp_str);
var dsp_count = dsp_arr.length;

function get_dsp() {
   dsp_active_name = "";
   dsp_str = fb.GetDSPPresets();
   dsp_arr = JSON.parse(dsp_str);
   dsp_count = dsp_arr.length;
   for (var i = 0; i < dsp_arr.length; i++) {

      //tt(">>> dsp presets name # " + i + ": " + dsp_arr[i].name);

      if (dsp_arr[i].active) {
         dsp_active_name = dsp_arr[i].name;
      }

   }
   tt('>>> dsp presets count = ' + dsp_count);
   tt(">>> dsp active name = " + dsp_active_name);
};
//get_dsp();

function get_dsp_idx(dsp_name) {

   for (var i = 0; i < dsp_arr.length; i++) {

      if (dsp_arr[i].name == dsp_name) {

         return i
      }

   }

};

function on_dsp_preset_changed() {
   get_dsp();
};

var vol_lvl = Math.ceil(fb.Volume);
function on_volume_change(val) {
   //---
   // 0 is max
   // -100 is min

   vol_lvl = Math.ceil(val);
   if (isNaN(vol_lvl))
      vol_lvl = Math.ceil(fb.Volume);

   if (vol_lvl == 0) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp 0")); // set dsp preset 0
   };
   if (vol_lvl == -5) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -5")); // set dsp preset -5
   };
   if (vol_lvl == -10) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -10")); // set dsp preset -10
   };
   if (vol_lvl == -15) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -15")); // set dsp preset -15
   };
   if (vol_lvl == -20) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -20")); // set dsp preset -20
   };
   if (vol_lvl == -25) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -25")); // set dsp preset -25
   };
   if (vol_lvl == -30) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -30")); // set dsp preset -30
   };
   if (vol_lvl == -35) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -35")); // set dsp preset -35
   };
   if (vol_lvl == -40) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -40")); // set dsp preset -40
   };
   if (vol_lvl == -45) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -45")); // set dsp preset -45
   };
   if (vol_lvl == -50) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -50")); // set dsp preset -50
   };
   if (vol_lvl == -55) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -55")); // set dsp preset -55
   };
   if (vol_lvl == -60) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -60")); // set dsp preset -60
   };
   if (vol_lvl == -65) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -65")); // set dsp preset -65
   };
   if (vol_lvl == -70) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -70")); // set dsp preset -70
   };
   if (vol_lvl == -75) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -75")); // set dsp preset -75
   };
   if (vol_lvl == -80) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -80")); // set dsp preset -80
   };
   if (vol_lvl == -85) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -85")); // set dsp preset -85
   };
   if (vol_lvl == -90) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -90")); // set dsp preset -90
   };
   if (vol_lvl == -95) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -95")); // set dsp preset -95
   };
   if (vol_lvl == -100) {
      tt(">>> vol = " + vol_lvl);
      fb.SetDSPPreset(get_dsp_idx("dsp -100")); // set dsp preset -100
   };

};
on_volume_change();

function tt(t) {
   console.log(t);
};

И пара плагинов которые сам использую ReplayGain DSP и Vlevel.
https://yadi.sk/d/gmm86-O9nUFfMg

Исхдники к Vlevel от 20080302, возможно кому то будет интересно.
https://yadi.sk/d/UgFaaX-PEahEPg

Azaza
Спасибо попрбую может быть она корректней работает.
У меня версия посвежей от 2018.06.22 его Case с гидрогена пробовал чинить, работает почти корректно но иногда падает, закономерность и причины не выяснял.
duzzy
Бывалый
Репутация: 18
С нами: 5 лет 2 месяца

Сообщение #31 Joice » 16.08.2020, 09:39

DUZZY, переклацал всё дерево настроек Фубара, не нашёл я, куда твой скрипт вставлять. До последнего не хотел позориться своей неосведомленностью в по этой части, но сдаюсь. Весь гугл перечитал! Видимо это так просто, что об этом и не пишут даже. Ну разжуйте мне, пожалуйста.
Joice
Автор темы, Новичок
Репутация: 0
С нами: 1 месяц 29 дней

Сообщение #32 duzzy » 16.08.2020, 13:05

Joice
:smile: Кидай мне сборку в личку или тут я тебе пристрою этот скрипт.
duzzy
Бывалый
Репутация: 18
С нами: 5 лет 2 месяца

Пред.

Вернуться в Есть вопрос!