Как бы вы измерили количество басов в одном аудиосэмпле?

Я новичок в звуковом программировании, и мне было интересно, как получить количество басов всего в одном аудиосэмпле. Я думал, что это будет измеряться в дБ, но я не знаю, есть ли единица, которая на самом деле предназначена для измерения басов. У меня нет кода, чтобы показать для измерения баса, так как я понятия не имею, где искать или начать с того, что я уже получил все до такой степени, что все образцы моего аудиофайла хранятся в виде числа с плавающей запятой. Массив с использованием библиотеки juce, теперь это просто вопрос прохождения каждого сэмпла, измерения баса каждого семпла.

Любая помощь, пожалуйста?


person uguigui75    schedule 08.11.2019    source источник
comment
@uguiugi75 Попробуйте изучить то, что вы хотите. ваш вопрос действительно очень расплывчатый. Я хотел бы помочь, но я предполагаю, что вы не знаете теорию аудиосемплирования. Аудиосэмпл — это просто уровень напряжения в конкретном случае. Я буду НАСТОЛЬКО впечатлен, если однажды кто-нибудь узнает бас, используя всего один аудиосэмпл.   -  person RC0993    schedule 08.11.2019
comment
что вы подразумеваете под звуковым образцом? это ПКМ?   -  person Spektre    schedule 08.11.2019
comment
да образец ПКМ   -  person uguigui75    schedule 09.11.2019


Ответы (2)


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

Если вы введете в Google слово Bass, вы получите самый первый результат, говорящий:

Бас (также называемый нижним концом) описывает тона низкой (также называемой «глубокой») частоты, высоты тона и диапазона от 16 до 256 Гц.

Да, Bass — это как раз звук в этом диапазоне.

Теперь, я думаю, вы сможете понять, как находить частоты с помощью аудиосэмплов, а если нет, то это лучшее, что я могу сделать...

Теперь вы можете найти количество басов, частот в указанном диапазоне, четко.. :)

person RC0993    schedule 08.11.2019
comment
При быстром прочтении всего этого мне пришла в голову одна мысль. Когда вы знаете диапазон частот, вы можете использовать FFT (быстрое преобразование Фурье), чтобы получить количество басов. - person skratchi.at; 08.11.2019
comment
Я снимаю здесь в темноте. но это вопрос @skratchi.at ? - person RC0993; 08.11.2019
comment
БПФ требует более одной выборки. - person user4581301; 08.11.2019
comment
Это не более чем предположение. Пока мы не знаем ничего больше, чем делаем то, что хочет делать ОП, сомнительно, подходит ли БПФ. - person skratchi.at; 08.11.2019
comment
@user4581301 user4581301 Именно поэтому я добавил I am assuming by one audio sample you mean an array of floats в начале - person RC0993; 08.11.2019
comment
да, массив поплавков, я совсем не силен в звуковом программировании, поэтому я не знаю, можно ли было найти бас в одном образце. Так что действительно, чем больше сэмплов содержит частоты в этом диапазоне, тем больше басов в аудио? И если бы вы сказали добавить басы к сэмплам с помощью аудио-плагина, увеличилось бы количество сэмплов с этими более низкими частотами? - person uguigui75; 09.11.2019
comment
и поэтому я действительно просто считаю сэмплы, которые находятся в этом частотном диапазоне, и чем больше сэмплов имеют эти частоты, тем больше увеличивается количество басов? - person uguigui75; 09.11.2019
comment
как я могу получить частоту одного образца? - person uguigui75; 09.11.2019
comment
@ uguigui75 вам явно не хватает математики ... либо используйте DFT (FFT), чтобы преобразовать достаточно большой массив выборок в набор частот Niquist см. сигнал RT → спектр или используйте КИХ-фильтр, который пропускает только желаемый диапазон, а затем вы суммируете то, что выходит из него в секунду... - person Spektre; 09.11.2019

Здесь есть только одно решение, и это не то, что вы думаете. Вам нужно преобразовать сигнал во временной области в сигнал в частотной области. Бас — это нижняя часть частотной области.

Первое, что вам нужно, это БПФ. Это принимает несколько образцов в качестве входных данных. Типичным значением будет 2048 выборок. Если ваш вход представляет собой сигнал 48 кГц, это разделит сигнал на 1024 элемента по 47 Гц каждый. Нижние 5 бинов или около того содержат басовую часть вашего сигнала. (Бин 0 также содержит любое смещение постоянного тока, что может быть проблематичным)

Затем вам нужно преобразовать эти 5 бункеров в энергию; это просто возведение в квадрат 5 значений и их суммирование.

person MSalters    schedule 08.11.2019
comment
Есть еще один вариант, не использующий БПФ... вместо этого вы можете использовать полосовой цифровой КИХ-фильтр. Но я согласен, что использование FFT проще (но медленнее), так как для FIR вам нужно выполнить математику для его проектирования (значения коэффициентов и количество...) - person Spektre; 08.11.2019