Проект эквалайзера полок
[
задает опции с использованием одного или нескольких 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");
Создайте аудио файла считыватель и аудио устройство объекты средства записи. Используйте частоту дискретизации считывающего устройства в качестве частоты дискретизации средства записи.
frameSize = 256; fileReader = dsp.AudioFileReader("RockGuitar-16-44p1-stereo-72secs.wav","SamplesPerFrame",frameSize); deviceWriter = audioDeviceWriter("SampleRate",fileReader.SampleRate);
Воспроизведите аудиосигнал через устройство.
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");
Создайте объект биквадного фильтра.
myFilter = dsp.BiquadFilter( ... "SOSMatrixSource","Input port", ... "ScaleValuesInputPort",false);
Создайте объект анализатора спектра, чтобы визуализировать исходный аудиосигнал, и аудиосигнал прошел через ваш низкополочный эквалайзер.
scope = dsp.SpectrumAnalyzer( ... "SampleRate",fileReader.SampleRate, ... "PlotAsTwoSidedSpectrum",false, ... "FrequencyScale","Log", ... "FrequencyResolutionMethod","WindowLength", ... "WindowLength",frameSize, ... "Title","Original and Equalized Signal", ... "ShowLegend",true, ... "ChannelNames",{'Original Signal','Equalized Signal'});
Воспроизведение уравненного аудиосигнала и визуализация исходного и уравненного спектров.
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] Бристоу-Джонсон, Роберт. «Формулы Cookbook для коэффициентов биквадного фильтра Audio EQ». Доступ получен 02 марта 2016 года. http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt.
designParamEQ
| designVarSlopeFilter
| multibandParametricEQ
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.