Долгая прогулка

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

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

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

Аллея в районе Нижнесеребрянского болота

Солнце освещало вершины деревьев и просвечивало сквозь стволы — листва уже почти вся облетела.

Район Нижнесеребрянского болота Измайловское шоссе

Прошёл и мимо облагороженных, цивильных мест с аттракционами, кафе и скамейками, не испортивших, однако, природной красоты, а даже в чём-то дополнивших её.

Круглый пруд

Когда я прошёл половину пути и повернул обратно, солнце совсем зашло и начало смеркаться. Интересно, что продольные стороны Измайловского парка не имеют благоустроенных дорожек, идущих параллельно его границам по всей длине, в отличие от поперечных. Но это не недостаток, а интересная особенность.

Около Главной аллеи

Смеркалось всё сильнее. Я проходил ложбины, засыпанные листвой, со множеством поваленных стволов, словно поле брани.

Район стадиона 'Авангард' и бывшего рынка на 2-й Владимирской ул.

Минут через пятнадцать стало совсем темно. До Шоссе Энтузиастов здесь метров шестьсот-семьсот, и шума от него уже совсем не слышно.

Пасечная аллея

Наконец, я вышел из чащи, фактически, замкнув кольцо вокруг парка.

Лебедянский пруд

Пройдя мимо Ивановского отстойника и перейдя Большой Купавенский проезд по тому же переходу, по которому я пришёл к границе парка, я направился домой. Шагомер в телефоне показал, что я прошёл 23,6 км за 4 часа 40 минут, сделав более 30 тысяч шагов.

2018_11_05_20.13.23.png 2018_11_05_20.13.48.png

Выбросил одежду

Перемерил все свои вещи и без сожаления выкинул всё, что с меня сваливается или велико, что я не буду носить и что мне не нравится.

IMG_20181104_114808.jpg IMG_20181104_120301.jpg

Костюм, который я пытался продать за 100 рублей и его никто не купил, мне впору, но велик по длине, смотрится как вещь с чужого плеча. Попробую его чуть позже на барахолке даром отдать — всё-таки костюм на помойку я пока не готов выносить. Хотя, может быть, дорасту и до этого уровня.

Несмотря на некоторый опыт в выбрасывании вещей, в глубине души всё же приходилось преодолевать небольшое сопротивление. Как же — выбрасывать «хороший» свитер, который мне подарили 10 лет назад? Тем не менее, оставив у помойки эти пакеты с одеждой и обувью и уходя прочь, я почувствовал большое облегчение.

Вакцинация


Чарльз Бэлл — Опистотонус у пациента, страдающего от столбняка (1809 г.)

Я давно хотел актуализировать свой иммунный статус, но как это сделать и с чего начать, не знал. Ситуация у меня, полагаю, стандартная для большинства взрослых людей — в период до окончания школы вроде бы какие-то прививки делали, а потом ничего не делали вообще или делали, но неизвестно что и когда. К счастью, моя мама все эти годы хранила мою детскую медицинскую карту, где хотя бы можно было выяснить, какие именно прививки мне делались до 9-го класса.

Решив перейти к активным действиям, в интернете я нашёл две очень полезные статьи: «Прививки для тех, кто не знает, от чего привит» сообщества «Намочи манту» и «Какие прививки нужны взрослому человеку?» научной журналистки Аси Казанцевой. Собственно, ровно по тому пути, описанном в последней статье, я и пошёл, а именно — посетил консультативно-поликлиническое отделение НИИ Мечникова.

В итоге, сегодня мне сделали три прививки:

  1. Вакцина против гепатита B Комбиотех взрослая
  2. Вакцина против эпидемического паротита и кори
  3. Адасель (Канада) против дифтерии, столбняка и коклюша

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

Я, кстати, спросил доктора про отечественную вакцину от гриппа Гриппол Плюс, которую я сделал в рамках бесплатной программы вакцинации, проводившейся в Москве в пунктах около метро и которую все ругают, и он сказал, что это хорошая вакцина и действующего вещества в ней достаточно.

Косвенное подтверждение у меня есть — буквально на этой неделе в ночь с воскресенья на понедельник я проснулся от того, что у меня начался жар, с утра я был не в состоянии идти на работу из-за высокой температуры и ломоты в теле, днём я лежал на кровати под двумя одеялами и не мог согреться, при этом никакого насморка и кашля у меня не было. К вечеру того же дня температура уже была нормальная и самочувствие улучшилось, а к утру вторника не было никаких признаков того, что я болел, и я спокойно поехал на работу на велосипеде. Конечно, я не знаю, что это было, но обычно ОРВИ и грипп за сутки не проходят. В апреле этого года я болел гриппом, предварительно не привившись, так это удовольствие длилось как минимум неделю.

Через месяц — ревакцинация от гепатита B + Адасель, а также вакцинация от гепатита А. Буду дописывать сюда дальнейшие события по этой теме.

10000

Сегодня, 20 октября 2018 года, на своём прекрасном велосипеде Shulz Easy я преодолел рубеж в 10000 километров. Формально, до установки счётчика я уже проехал пару сотен километров, но это можно не считать.

Немного статистики:

  • С момента установки счётчика прошло 2 года 5 месяцев.
  • С отметки в 5000 км прошло чуть меньше 1 года 2 месяцев.
  • В этом сезоне, который начался довольно поздно — в конце апреля, я из этого общего километража проехал 3471 км, т. е., уложился примерно в полгода.

Это первый велосипед в моей жизни, на котором я столько проехал и который я так интенсивно использую — это полноценный транспорт, достаточно быстрый и эффективный, а не просто вещь для развлечения.

До этого удачным велосипедом, на котором я довольно долго ездил где-то в начале 90-х, я могу назвать советскую «Десну-2».

Примерный вид велосипеда Десна-2, который у меня был

Мой «Шульц» тоже раскладной, но он, конечно, и по качеству изготовления и материалов, и по удобству, и по конструкции превосходит «Десну» в несколько раз, что вполне естественно, учитывая прошедшее с тех пор время.

Нормализация громкости

Меня всегда интересовало, существуют ли какие-то критерии правильной нормализации громкости аудиодорожек. Ну, что обычно подразумевается под нормализацией, так сказать, в быту? Простой пересчёт пиков до отметки в 0 дБ. Однако, результат чаще всего неудовлетворителен — динамический диапазон, т. е., разница между самым громким и самым тихим звуками вроде бы сохраняется (хотя ещё вопрос, так ли это в действительности при простом пересчёте), но сама по себе общая громкость может не повыситься совсем или повыситься незначительно из-за того, что самые громкие звуки, которых может быть один-два на всю запись, уже нормализованы и их повышать уже некуда, а остальной материал так и остался где-то снизу, и слышно его всё так же плохо.

Понятно, что простая линейная нормализация не подходит и нужна какая-то динамическая (в сочетании с компрессией), причём желательно основанная на каких-то объективных критериях. Последнее время я увлёкся изучением возможностей совершенно прекрасного консольного медиаконвертера ffmpeg, где я обнаружил аудиоплагин loudnorm, как раз занимающийся нормализацией аудиосигнала по стандарту Европейского вещательного союза EBU R128.

Какими основными критериями оперирует loudnorm?

  1. Общая громкость (Integrated loudness), измеряемая в единицах абсолютного значения громкости (Loudness units relative to full scale, LUFS). Общая громкость вычисляется на основании анализа звуковых частот и уровня сигнала, применимое к чувствительности человеческого слуха к ним.
  2. Точный пик сигнала (True peak), измеряемый в децибелах (dB). Это одномоментное наивысшее значение пика сигнала во всём звуковом материале, то есть, грубо говоря, самый громкий звук. По этому критерию как раз и делается линейная нормализация, описанная мной в начале статьи.
  3. Диапазон громкости (Loudness Range, LRA), измеряемый в единицах громкости (Loudness units, LU). Разница между самым громким и самым тихим звуками.
  4. Порог (Threshold). Я до конца не понял, что это за критерий, но вероятно, ниже этого порога сигнал не обрабатывается.

Чтобы повысить качество обработки аудиодорожки, loudnorm предусматривает обработку в два прохода. Первый — сбор данных, второй — непосредственно обработка с параметрами, полученными во время первого прохода. В интернете есть статья автора loudnorm, где он показывает на примере, как это работает. За основу там взят документ американского Сообщества аудиоинженеров AES TD1004.1.15-10 Recommendation for Loudness of Audio Streaming and Network File Playback, где в рекомендациях сказано, что общая громкость (Integrated loudness) не должна быть выше -16 LUFS и ниже -20 LUFS, а максимальный пик (True peak) не должен превышать -1.0 dB.

Что касается диапазона громкости (Loudness Range, LRA), то здесь нужно действовать по ситуации. Я нашёл на сайте AudioKinetic рекомендации по максимальному уровню LRA, там даны примерные значения для разных условий:
- Домашний кинотеатр — 20 единиц - Гостиная — 18 единиц - Кухня — 15 единиц - Гостиная (поздний вечер) — 9 единиц - Общественный транспорт, мобильное устройство — 6 единиц

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

Перейдём, наконец, к практике. Имеется DVD-Video с полукустарно записанным концертом классической музыки, имеющий стандартные проблемы: громкие аплодисменты, тихая музыка и речь ведущей концерта. Графически аудиодорожка выглядит так:

Оригинальная аудиодорожка до обработки loudnorm

Делаем первый проход для сбора данных. Берём среднее значение из рекомендуемых для общей громкости -18 LUFS и рекомендуемый максимальный пик -1.0 dB. Диапазон громкости и порог, как значения неизвестные или приблизительные, пусть высчитываются автоматически.

ffmpeg -i in.wav -af loudnorm=I=-18:TP=-1:print_format=json -f null -

После окончания анализа получаем следующие данные:

[Parsed_loudnorm_0 @ 000000eef2eeea80]
{
"input_i" : "-22.27",
"input_tp" : "0.03",
"input_lra" : "20.10",
"input_thresh" : "-33.99",
"output_i" : "-19.39",
"output_tp" : "-1.00",
"output_lra" : "13.20",
"output_thresh" : "-30.08",
"normalization_type" : "dynamic",
"target_offset" : "1.39"
}

Запускаем второй проход в соответствии с полученными данными. Параметр -ar 48k нужен для сохранения результата в файл с частотой сэмплирования 48000 Гц. Если этого не сделать, то на выходе будет файл с нечеловеческими 192000 Гц. Это преобразование связано с наиболее точным поиском точного пика сигнала (True peak), но полагаю, что в данном случае этим можно пренебречь.

ffmpeg -i in.wav `
-af loudnorm=I=-16:TP=-1:measured_I=-22.27:measured_TP=0.03:measured_LRA=20.10:measured_thresh=-33.99:offset=1.39:print_format=summary `
-ar 48k out.wav

После окончания обработки получаем следующую картину:

[Parsed_loudnorm_0 @ 0000003e678ee8c0]
Input Integrated: -22.3 LUFS
Input True Peak: +0.0 dBTP
Input LRA: 20.1 LU
Input Threshold: -34.0 LUFS

Output Integrated: -16.2 LUFS
Output True Peak: -1.0 dBTP
Output LRA: 13.0 LU
Output Threshold: -26.8 LUFS

Normalization Type: Dynamic
Target Offset: +0.2 LU

Видно, что общая громкость стала на 6,1 выше, несмотря на то, что максимальный пик снизился на единицу, в соответствии с рекомендованным значением. Динамический диапазон стал уже на 7,1 — это привело к более ровному звучанию без резких перепадов громкости, но и сохранило динамику.

Результат обработки в графическом виде:

Обработанная аудиодорожка

Субъективно могу сказать, что стало гораздо лучше. Приведу отрывки из записи, где есть большой перепад громкости.

— - До обработки (—, —)

Upd: Всё же, нужно задавать динамический диапазон вручную, чтобы автомат не зажимал его слишком сильно. В итоге, более-менее универсальные параметры получились следующие: -af loudnorm=I=-16:TP=-1:LRA=18. Если LRA уже узкий, то он обратно не разжимается, насколько я успел заметить.