Система обработки аудиоинформации. Подсистема фильтрации и обработки сигнала

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



и получаемых массивов 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 соответственно).

  1. Алгоритм создания эффекта эха
  2. i::=1;
  3. MaxValue::=MaxValue*256;
  4. i::=i+1;
  5. Если i?(AudioData.nBlockAlign/AudioData.nChannels),то переход к п.2 иначе к п.5;
  6. MaxValue::=MaxValue/2 1;
  7. TempAudio.nChannels ::= AudioData.nChannels;
  8. TempAudio.nSamplesPerSec := AudioData.nSamplesPerSec;
  9. TempAudio.nBitsPerSample := AudioData.nBitsPerSample;
  10. DelaySmp := Round(Delay*AudioData.nSamplesPerSec/1000);
  11. Channel :: =0;
  12. (AudioData.nChannels-1),.31.12;">Если Channel > (AudioData.nChannels-1),то переход к п.31 иначе к п.12;
  13. i ::= Start;
  14. Если i > (Start+Count-1), то переход к п.30 иначе к п.14;
  15. Прочитать Smp;
  16. SummSmp ::= Smp; Mult::=Volume;
  17. j ::= 1;
  18. Если j > Number, то переход к п.23 иначе к п.18;
  19. Если (i Start) < (DelaySmp*j), то переход к п.19 иначе к п.20;
  20. Smp ::= 0;
  21. Прочитать Smp;
  22. SummSmp ::= SummSmp + Mult*Smp; Mult ::= Mult*Volume;
  23. j ::= j+1; переход к 17;
  24. Smp ::= SummSmp/(Number + 1);
  25. Если |Smp|>MaxValue, то переход к п.25 иначе к п.28;
  26. Если Smp<0, то переход к п.26 иначе к п.27;
  27. Smp ::= -MaxValue;
  28. Smp ::= MaxValue;
  29. Запись Smp в TempAudio;
  30. i ::= i+1; переход к п.13;
  31. Сhannel :: = Channel+1; переход к п.11;
  32. AudioData ::= TempAudio;
  33. Конец.
  1. Требования к контрольному примеру

Контрольный пример должен содержать примеры применения эффекта реверберации с различными параметрами.

  1. Список условных обозначений

AudioData совокупность значений амплитуд и времен;

Start указатель на место в массиве данных,с которого начинать обработку;

Count количество элементов массивов, которые необходимо обработать;

Number количество отражений;

Delay время между отражениями;

Volume громкость отклика относительно предыдущего;

TempAudio получаемая совокупность значений амплитуд и времен;

SmpBuf хранит выборку аудиоданных;

Mult коэффициент для получения значения амплитуды отражения;

Smp текущая амплитуда;

Channel количество каналов;

MaxValue макс. значение амплитуды в обрабатываемом фрагменте;

DelaySmp = Ti Ti-1.

  1. Описание алгоритма изменения темпа звука
  1. Назначение и характеристика алгоритма изменения темпа звука

Данный алгоритм применяется для замедления или ускорения скорости воспроизведения звукового сигнала.

  1. Используемая информация

При реализации данного алгоритма используются массивы информации, сформированные из входных данных. Массивы содержат информацию о величине амплитуды звукового сигнала в определенные моменты времени. Количество пар массивов определяется числом каналов (ЧК).

A = {A1,A2,тАж,An} массив амплитуд звукового сигнала;

T = {T1,T2,тАж,Tn} массив со значениями времени, где n зависит от частоты дискретизации (ЧД), битрейта (Б) и размера файла;

Ti Ti-1 определяется частотой дискретизации.

При реализации алгоритма учитываются следующие параметры, которые подаются в качестве параметров на вход алгоритма: величина новой скорости воспроизведения в процентах от текущей (Ск).

  1. Результаты решения

В результате реализации алгоритма формируется новый массив значений времени T, массив с амлитудами A остается неизменным. Структура выходного файла при этом соответствует описанной в п.2.1.2.

  1. Математическое описание алгоритма изменения темпа звука

Для получения выходного массива T используются следующие формулы:

T1 = T1 * Ск/100;

T2 = T2 * Ск/100;

тАж

Tn = Tn * Ск/100.

Описание используемых обозначений приведено в п.2.4.2.

  1. Алгоритм изменения темпа звука
  2. Если (Speed=1)или(Speed=0), то переход к п.31 иначе к п.2;
  3. TempAudio.nChannels := AudioData.nChannels;
  4. TempAudio.nSamplesPerSec := AudioData.nSamplesPerSec;
  5. TempAudio.nBitsPerSample := AudioData.nBitsPerSample;
  6. TempAudio.nBlockAlign := AudioData.nBlockAlign;
  7. NewCount := Round(Count/Speed);
  8. Если Speed > 1 , то переход к п.8 иначе к п.14;
  9. i ::= NewCount; Interval ::= Speed;
  10. AudioData.Data.Position ::= Start*AudioData.nBlockAlign;
  11. Если i <> 0 , то переход к п.11 иначе к п.14;
  12. Прочитать Buf из AudioData; Записать Buf в TempAudio;
  13. AudioData.Data.Position ::= AudioData.Data.Position - AudioData.nBlockAlign + ]Interval[*AudioData.nBlockAlign;
  14. Interval := Interval-]Interval[+Speed; i ::= i 1; переход к п.10;
  15. Speed ::= 1/Speed;
  16. Channel ::= 0;
  17. (AudioData.nChannels-1),.31.17;">Если Channel > (AudioData.nChannels-1), то переход к п.31 иначе к п.17;
  18. i ::= 0; j ::= 0; Interval ::= Speed;
  19. Если i<>Count, то переход к п.19 иначе к п.30;
  20. Прочитать Smp1;
  21. Если (i+1) <> Count, то переход к п.21 иначе к п.22;
  22. Прочитать Smp2;
  23. Smp2 ::= Smp1;
  24. k ::= ]Interval[;
  25. n::=0;
  26. Если n > (k-1), то переход к п.28 иначе к п.26;
  27. Записать в TempAudio (Smp1+(Smp2-Smp1)/k*n);
  28. n ::= n+1; переход к п.25;
  29. Interval ::= Interval - ]Interval[ + Speed;
  30. i :: = i+1; j ::= j+k; переход к п.18;
  31. переход к п.16;
  32. Конец.
  1. Требования к контрольному примеру

Контрольный пример должен содержать примеры изменения темпа звука: увеличение и уменьшение скорости его воспроизведения.

  1. Список условных обозначений

AudioData совокупность значений амплитуд и времен;

Start указатель на место в массиве данных,с которого начинать обработку;

Speed новая скорость звукового сигнала в процентах от текущей;

TempAudio получаемая совокупность значений амплитуд и времен;

Smp1, Smp2 переменные для хранения амплитуд;

Channel количество каналов;