Спроектируйте отлогий эквалайзер
[
задает опции с помощью одного или нескольких B
,A
] =
designShelvingEQ(___,Name,Value
)Name,Value
парные аргументы.
Спроектируйте три БИХ-эквалайзера низкой полки второго порядка с помощью designShelvingEQ
. Три отлогих эквалайзера используют три отдельных наклонных спецификации.
Задайте частоту дискретизации, пиковое усиление, наклонный коэффициент и нормированную частоту среза для трех отлогих эквалайзеров. Частота дискретизации находится в Гц. Пиковое усиление находится в дБ.
Fs = 44.1e3; gain = 5; slope1 = 0.5; slope2 = 0.75; slope3 = 1; Fc = 1000/(Fs/2);
Спроектируйте коэффициенты фильтра с помощью заданных параметров.
[B1,A1] = designShelvingEQ(gain,slope1,Fc,"Orientation","row"); [B2,A2] = designShelvingEQ(gain,slope2,Fc,"Orientation","row"); [B3,A3] = designShelvingEQ(gain,slope3,Fc,"Orientation","row");
Визуализируйте свое создание фильтра.
fvtool( ... dsp.BiquadFilter([B1,A1]), ... dsp.BiquadFilter([B2,A2]), ... dsp.BiquadFilter([B3,A3]), ... "Fs",Fs, ... "FrequencyScale","Log"); legend("slope = 0.5", ... "slope = 0.75", ... "slope = 1");
Создайте считывающее устройство звукового файла и объекты средства записи аудио устройства. Используйте частоту дискретизации читателя как частота дискретизации средства записи. Вызовите setup
уменьшать вычислительную загрузку инициализации в цикле аудиопотока.
frameSize = 256; fileReader = dsp.AudioFileReader( ... "RockGuitar-16-44p1-stereo-72secs.wav", ... "SamplesPerFrame",frameSize); sampleRate = fileReader.SampleRate; deviceWriter = audioDeviceWriter( ... "SampleRate",sampleRate); setup(fileReader) setup(deviceWriter,ones(frameSize,2))
Проигрывайте звуковой сигнал через свое устройство.
count = 0; while count < 2500 audio = step(fileReader); play(deviceWriter,audio); count = count + 1; end reset(fileReader)
Спроектируйте эквалайзер низкой полки секций второго порядка (SOS).
gain = 10; slope = 3; Fc = 0.025; [B,A] = designShelvingEQ(gain,slope,Fc);
Визуализируйте свое отлогое создание фильтра.
SOS = [B',[1,A']]; fvtool(dsp.BiquadFilter("SOSMatrix",SOS), ... "Fs",fileReader.SampleRate, ... "FrequencyScale","Log");
Создайте biquad объект фильтра.
myFilter = dsp.BiquadFilter( ... "SOSMatrixSource","Input port", ... "ScaleValuesInputPort",false);
Создайте спектр, объект анализатора визуализировать исходный звуковой сигнал и звуковой сигнал прошел через ваш эквалайзер низкой полки.
scope = dsp.SpectrumAnalyzer( ... "SampleRate",sampleRate, ... "PlotAsTwoSidedSpectrum",false, ... "FrequencyScale","Log", ... "FrequencyResolutionMethod","WindowLength", ... "WindowLength",frameSize, ... "Title","Original and Equalized Signal", ... "ShowLegend",true, ... "ChannelNames",{'Original Signal','Equalized Signal'});
Проигрывайте компенсируемый звуковой сигнал и визуализируйте исходные и компенсируемые спектры.
setup(scope,ones(frameSize,2)) count = 0; while count < 2500 originalSignal = fileReader(); equalizedSignal = myFilter(originalSignal,B,A); scope([originalSignal(:,1),equalizedSignal(:,1)]); deviceWriter(equalizedSignal); count = count + 1; end
Как лучшая практика, выпустите свои объекты, однажды сделанные.
release(fileReader) release(deviceWriter) release(scope)
Спроектируйте трех БИХ второго порядка высокие эквалайзеры полки с помощью designShelvingEQ
. Три отлогих эквалайзера используют три отдельных спецификации усиления.
Задайте частоту дискретизации, пиковое усиление, наклонный коэффициент и нормированную частоту среза для трех отлогих эквалайзеров. Частота дискретизации находится в Гц. Пиковое усиление находится в дБ.
Fs = 44.1e3; gain1 = -6; gain2 = 6; gain3 = 12; slope = 0.8; Fc = 18000/(Fs/2);
Спроектируйте коэффициенты фильтра с помощью заданных параметров.
[B1,A1] = designShelvingEQ(gain1,slope,Fc,"hi","Orientation","row"); [B2,A2] = designShelvingEQ(gain2,slope,Fc,"hi","Orientation","row"); [B3,A3] = designShelvingEQ(gain3,slope,Fc,"hi","Orientation","row");
Визуализируйте свое создание фильтра.
fvtool([B1,A1;[1 0 0 1 0 0]], ... [B2,A2;[1 0 0 1 0 0]], ... [B3,A3;[1 0 0 1 0 0]], ... "Fs",Fs); legend("gain = -6 dB", ... "gain = 6 dB", ... "gain = 12 dB", ... "Location","NorthWest")
gain
— Пиковое усиление (дБ)Пиковое усиление в дБ, заданном как действительный скаляр в области значений –12 к 12.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
slope
— Наклонный коэффициентНаклонный коэффициент, заданный как действительный скаляр в области значений от 0 до 5.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Fc
— Нормированная частота срезаНормированная частота среза, заданная как действительный скаляр в области значений от 0 до 1, где 1 соответствует частоте Найквиста (π рад/выборка).
Нормированная частота среза реализована как половина отлогого усиления фильтра или gain
/2 дБ.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
type
— Отфильтруйте тип'lo'
(значение по умолчанию) | 'hi'
Отфильтруйте тип, заданный как 'lo'
или 'hi'
.
'lo'
– Низко откладывание эквалайзера
'hi'
– Высоко откладывание эквалайзера
Типы данных: char |
string
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Orientation',"row"
'Orientation'
— Ориентация возвращенных коэффициентов фильтра"column"
(значение по умолчанию) | "row"
Ориентация возвращенных коэффициентов фильтра, заданных как разделенная запятой пара, состоящая из 'Orientation'
и "column"
или "row"
:
Установите 'Orientation'
к "row"
для функциональной совместимости с FVTool, dsp.DynamicFilterVisualizer
, и dsp.FourthOrderSectionFilter
.
Установите 'Orientation'
к "column"
для функциональной совместимости с dsp.BiquadFilter
.
Типы данных: char |
string
B
— Коэффициенты фильтра числителяКоэффициенты фильтра числителя, возвращенные как вектор. Размер и интерпретация B
зависит от Orientation
:
Если 'Orientation'
установлен в "column"
, затем B
возвращен как трехэлементный вектор-столбец.
Если 'Orientation'
установлен в "row"
, затем B
возвращен как трехэлементный вектор-строка.
.
A
— Коэффициенты фильтра знаменателяКоэффициенты фильтра знаменателя спроектированного БИХ-фильтра второго порядка, возвращенного как вектор. Размер и интерпретация A
зависит от Orientation
:
Если 'Orientation'
установлен в "column"
, затем A
возвращен как двухэлементный вектор-столбец. A
не включает ведущий коэффициент единицы.
Если 'Orientation'
установлен в "row"
, затем A
возвращен как трехэлементный вектор-строка.
[1] Бристоу-Джонсон, Роберт. "Формулы поваренной книги для Аудио Коэффициенты Фильтра EQ Biquad". Полученный доступ 02 марта 2016. http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt.
designParamEQ
| designVarSlopeFilter
| multibandParametricEQ
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.