03. Звон: Bell-analyzer by Zemuro

Итак, в предыдущих сериях мы выяснили, из чего состоит звон колокола:

  1. Резкая атака. Одновременно с ударом язычка начинают звучать несколько тонов на разной высоте.
  2. Частота звучания каждой из гармоник обусловлена сложной геометрией колокола, и частоты не зависят друг от друга. то есть мы не можем высчитать гармоники или выработать какое-то правило, по которому строятся все остальные гармоники, относительно основной. (Или можем, но нам не хватает статистических данных?)
  3. Более высокие частоты затухают быстрее, тогда как более низкие звучат дольше, что дает красивый перелив звука, чем-то напоминающий нисходящее арпеджио.
  4. Некоторые частоты могут стоять очень близко к друг другу, что благодаря звуковой интерференции дает пульсацию при звучании колокола (об этом позже).

У нас есть 34 исходных семпла, которые я записал, почистил и собирал в семпл-пак. Хотелось бы не просто посмотреть на спектрограмму а собрать массив данных: для каждого сэмпла выявить наиболее значимые частоты, их громкость в общем миксе, собрать все это в таблицы, а потом проанализировать: соотношения частот внутри каждого колокола, ну и попытыться выявить какие-то закономерности.

А что у нас там с исходниками? PerkoBell01PerkoBell26 — это стереосэмплы. При чем некоторые колокола были записаны по два раза. Где-то мне дубль не понравился, где-то я перестраховался. Проблема в том, что я не знаю, какие именно семплы содержат в себе звон одних и тех же колоколов.

PerkoBellmono27-PerkoBellmono34 — это монофонические семплы. При чем исходники взяты из первых 26-ти семплов, а в моно они сконвертировались при экспорте в Elektron Digitact. Так что какие из этих восьми дублируются с какими из первых 26-ти — я не знаю. Будем считать, что это специально, чтобы слепой тест был истинно слепым. Будем пробовать выявить уникальный звуковой отпечаток каждого колокола и сравним их на слух, визуально по спектрограмме и математически по таблицам частот.

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

После первых попыток снять частотные характеристики вручную, стало очевидно, что 34 файла — это на самом деле много и нужно бы автоматизировать. Нейросетки? пробовал. Все нейросетки упорно придумывали данные с потолка и выдавали явно ложные результаты.

Я обратился в несколько сообществ за советом, как бы упростить процедуру. Мне казалось, что задача измерить спектральный состав и собрать данные в таблицу возникала не только у меня. И должен быть уже готовый инструмент. Увы, такой не нашелся. Но нашелся умный и добрый человек, благодаря которому материализовалась целая программа-анализатор.

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

  • N — порядковый номер гармоники (обертона). Здесь не по возрастанию частоты, а по «весу» в общем миксе, начиная с самой весомой.
  • frq, Hz — частота колебания в Герцах.
  • % — относительная амплитуда или уровень громкости данной гармоники по отношению к основному тону. Соответственно, основная частота принята за 100%
  • note — ближайшая музыкальная нота, которой соответствует эта частота.
  • dev — отклонение (detuning) частоты от эталона чистой ноты в центах.

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

Еще немного обратной связи, доработок и тестов, и программа приобретает графический интерфейс, кучу крутилок, настроек, возможность экспортировать полученные гармоники в виде миди файла (с сохранением длины затухания каждой гармоники), с возможностью экспорта ПДФ-отчета, включающего как таблицу с частотами, так и визуальные графики. Короче, конфетка, сильно ускоряющая процедуру анализа.

P.S.: Как запустить это приложение на винде, в описании есть инструкция. Сразу поясню: это не отдельный файл EXE, а программа, для запуска которой нужно сначала поставить питон, и чуть-чуть пострадать.

На маке процесс запуска чуть отличается. Опишу, чтобы заново не вспоминать при необходимости

Ставим питон. Официальный сайт, ссылки для скачивания внизу. Качаем Белл Анализатор с Гит Хаба https://github.com/zemuro/bell-analyzer. Нужно найти зеленую кнопку Code. Нажать ее и нажать Download ZIP в выпадающем меню. Скачиваем, распаковываем.

Далее идем в терминал и вводим команды. Первая команда — переход в папку куда скачалась программма:

cd /Users/r/Downloads/bell-analyzer-master

Создать виртуальное окружение:

python3 -m venv venv

Активировать окружение:

source venv/bin/activate

Установить зависимости (Если команда pip не найдена, попробуйте pip3).

pip install -r requirements.txt

Запустите приложение

python3 analyze_bell.py

Все, крутим крутилки и наслаждаемся. Дальше будем собирать статистику и анализировать ее.

P.P.S.: А вот на всякий случай, продублирую архив с программой, чтобы прямо отсюда скачать можно было. А о мало ли что с гитхабом случится.