Система обработки аудиоинформации. Подсистема фильтрации и обработки сигнала
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
и получаемых массивов A и T;
m = n + n*Кол + То;
T1i = Tn + Ti + То;
T2i = 2*Tn + Ti + 2*То;
тАж
ТКолi =Кол*Тn + Ti + Кол*То;
A1i = Гр/100*Ai;
A2i = Гр/100*A1i;
тАж
Aколi = Гр/100*A[кол-1]i
Описание используемых обозначений приведено в п.2.3.2.
Затем все полученные массивы амплитуд и времен объединяются в один общий массив (A и T соответственно).
- Алгоритм создания эффекта эха
 - i::=1;
 - MaxValue::=MaxValue*256;
 - i::=i+1;
 - Если i?(AudioData.nBlockAlign/AudioData.nChannels),то переход к п.2 иначе к п.5;
 - MaxValue::=MaxValue/2 1;
 - TempAudio.nChannels ::= AudioData.nChannels;
 - TempAudio.nSamplesPerSec := AudioData.nSamplesPerSec;
 - TempAudio.nBitsPerSample := AudioData.nBitsPerSample;
 - DelaySmp := Round(Delay*AudioData.nSamplesPerSec/1000);
 - Channel :: =0;
 - (AudioData.nChannels-1),.31.12;">Если Channel > (AudioData.nChannels-1),то переход к п.31 иначе к п.12;
 - i ::= Start;
 - Если i > (Start+Count-1), то переход к п.30 иначе к п.14;
 - Прочитать Smp;
 - SummSmp ::= Smp; Mult::=Volume;
 - j ::= 1;
 - Если j > Number, то переход к п.23 иначе к п.18;
 - Если (i Start) < (DelaySmp*j), то переход к п.19 иначе к п.20;
 - Smp ::= 0;
 - Прочитать Smp;
 - SummSmp ::= SummSmp + Mult*Smp; Mult ::= Mult*Volume;
 - j ::= j+1; переход к 17;
 - Smp ::= SummSmp/(Number + 1);
 - Если |Smp|>MaxValue, то переход к п.25 иначе к п.28;
 - Если Smp<0, то переход к п.26 иначе к п.27;
 - Smp ::= -MaxValue;
 - Smp ::= MaxValue;
 - Запись Smp в TempAudio;
 - i ::= i+1; переход к п.13;
 - Сhannel :: = Channel+1; переход к п.11;
 - AudioData ::= TempAudio;
 - Конец.
 
- Требования к контрольному примеру
 
Контрольный пример должен содержать примеры применения эффекта реверберации с различными параметрами.
- Список условных обозначений
 
AudioData совокупность значений амплитуд и времен;
Start указатель на место в массиве данных,с которого начинать обработку;
Count количество элементов массивов, которые необходимо обработать;
Number количество отражений;
Delay время между отражениями;
Volume громкость отклика относительно предыдущего;
TempAudio получаемая совокупность значений амплитуд и времен;
SmpBuf хранит выборку аудиоданных;
Mult коэффициент для получения значения амплитуды отражения;
Smp текущая амплитуда;
Channel количество каналов;
MaxValue макс. значение амплитуды в обрабатываемом фрагменте;
DelaySmp = Ti Ti-1.
- Описание алгоритма изменения темпа звука
 
- Назначение и характеристика алгоритма изменения темпа звука
 
Данный алгоритм применяется для замедления или ускорения скорости воспроизведения звукового сигнала.
- Используемая информация
 
При реализации данного алгоритма используются массивы информации, сформированные из входных данных. Массивы содержат информацию о величине амплитуды звукового сигнала в определенные моменты времени. Количество пар массивов определяется числом каналов (ЧК).
A = {A1,A2,тАж,An} массив амплитуд звукового сигнала;
T = {T1,T2,тАж,Tn} массив со значениями времени, где n зависит от частоты дискретизации (ЧД), битрейта (Б) и размера файла;
Ti Ti-1 определяется частотой дискретизации.
При реализации алгоритма учитываются следующие параметры, которые подаются в качестве параметров на вход алгоритма: величина новой скорости воспроизведения в процентах от текущей (Ск).
- Результаты решения
 
В результате реализации алгоритма формируется новый массив значений времени T, массив с амлитудами A остается неизменным. Структура выходного файла при этом соответствует описанной в п.2.1.2.
- Математическое описание алгоритма изменения темпа звука
 
Для получения выходного массива T используются следующие формулы:
T1 = T1 * Ск/100;
T2 = T2 * Ск/100;
тАж
Tn = Tn * Ск/100.
Описание используемых обозначений приведено в п.2.4.2.
- Алгоритм изменения темпа звука
 - Если (Speed=1)или(Speed=0), то переход к п.31 иначе к п.2;
 - TempAudio.nChannels := AudioData.nChannels;
 - TempAudio.nSamplesPerSec := AudioData.nSamplesPerSec;
 - TempAudio.nBitsPerSample := AudioData.nBitsPerSample;
 - TempAudio.nBlockAlign := AudioData.nBlockAlign;
 - NewCount := Round(Count/Speed);
 - Если Speed > 1 , то переход к п.8 иначе к п.14;
 - i ::= NewCount; Interval ::= Speed;
 - AudioData.Data.Position ::= Start*AudioData.nBlockAlign;
 - Если i <> 0 , то переход к п.11 иначе к п.14;
 - Прочитать Buf из AudioData; Записать Buf в TempAudio;
 - AudioData.Data.Position ::= AudioData.Data.Position - AudioData.nBlockAlign + ]Interval[*AudioData.nBlockAlign;
 - Interval := Interval-]Interval[+Speed; i ::= i 1; переход к п.10;
 - Speed ::= 1/Speed;
 - Channel ::= 0;
 - (AudioData.nChannels-1),.31.17;">Если Channel > (AudioData.nChannels-1), то переход к п.31 иначе к п.17;
 - i ::= 0; j ::= 0; Interval ::= Speed;
 - Если i<>Count, то переход к п.19 иначе к п.30;
 - Прочитать Smp1;
 - Если (i+1) <> Count, то переход к п.21 иначе к п.22;
 - Прочитать Smp2;
 - Smp2 ::= Smp1;
 - k ::= ]Interval[;
 - n::=0;
 - Если n > (k-1), то переход к п.28 иначе к п.26;
 - Записать в TempAudio (Smp1+(Smp2-Smp1)/k*n);
 - n ::= n+1; переход к п.25;
 - Interval ::= Interval - ]Interval[ + Speed;
 - i :: = i+1; j ::= j+k; переход к п.18;
 - переход к п.16;
 - Конец.
 
- Требования к контрольному примеру
 
Контрольный пример должен содержать примеры изменения темпа звука: увеличение и уменьшение скорости его воспроизведения.
- Список условных обозначений
 
AudioData совокупность значений амплитуд и времен;
Start указатель на место в массиве данных,с которого начинать обработку;
Speed новая скорость звукового сигнала в процентах от текущей;
TempAudio получаемая совокупность значений амплитуд и времен;
Smp1, Smp2 переменные для хранения амплитуд;
Channel количество каналов;
