h1 – громкость исходного звукового сигнала;
h2 – громкость отклика.
Рис.2.5.
В данном случае h2=h1/2, то есть громкость отклика в два раза меньше громкости исходного сигнала .
Количество откликов в данном случае равно 1.
Изменение темпа.
На рис. 2.6 представлен исходный звуковой сигнал. На рис. 2.7 представлен измененный звуковой сигнал с уменьшенным в два раза темпом, на рис. 2.8 – с увеличенным в два раза темпом. На оси абцисс откладывается время, а по оси ординат значение амплитуды (громкости) звукового сигнала в определенный момент времени.
Исходный сигнал Увеличение темпа
Рис. 2.6 Рис. 2.7
Уменьшение темпа
Рис. 2.8
Изменение общего уровня громкости
На рис. 2.9 представлен исходный звуковой сигнал. На рис. 2.10 представлен измененный звуковой сигнал с уменьшенной в два раза громкостью, на рис. 2.11 – с увеличенной в два раза громкостью. На оси абцисс откладывается время, а по оси ординат значение амплитуды (громкости) звукового сигнала в определенный момент времени.
Исходный сигнал Уменьшение громкости
Рис. 2.9 Рис. 2.10
Увеличение громкости
Рис. 2.11
Эффекты возрастающей и затухающей громкости.
На рис. 2.12 представлен исходный звуковой сигнал, а на рис. 2.13 и рис. 2.14 применение к исходному сигналу эффекта возрастающей и затухающей громкости соответственно. На оси абцисс откладывается время, а по оси ординат значение амплитуды (громкости) звукового сигнала в определенный момент времени.
Исходный сигнал Возрастание громкости
Рис. 2.12 Рис.2.13
Затухание громкости
Рис. 2.14
Обращение звукового сигнала. На рис. 2.15 представлен исходный звуковой сигнал, а на рис. 2.16 – обращенный.
Исходный сигнал Обращенный сигнал
Рис. 2.15 Рис. 2.16
Данный алгоритм применяется к исходному звуковому сигналу для создания эффекта реверберации: придание звучанию объемности, характерной для большого зала, где каждый звук порождает соответствующий, медленно угасающий отзвук. Получается путем добавления к исходному сигналу затухающей серии его задержанных во времени копий. Это имитирует затухание звука в помещении, когда за счет многократных отражений от стен, потолка и прочих поверхностей звук приобретает полноту и гулкость, а после прекращения звучания источника затухает не сразу, а постепенно. При этом время между последовательными отзвуками ассоциируется с величиной помещения, а их интенсивность – с его гулкостью.
При реализации данного алгоритма используются массивы информации, сформированные из входных данных. Массивы содержат информацию о величине амплитуды звукового сигнала в определенные моменты времени. Количество пар массивов определяется числом каналов.
A = {A1,A2,…,An} – массив амплитуд звукового сигнала.
T = {T1,T2,…,Tn} – массив со значениями времени, где n зависит от частоты дискретизации, битрейта и размера файла.
Ti – Ti-1 определяется частотой дискретизации.
При реализации алгоритма учитываются следующие параметры эффекта реверберации, которые подаются в качестве параметров на вход алгоритма:
To – время между отражениями;
Гр – громкость отражения относительно предыдущего в процентах;
Kол – количество отражений.
В результате реализации алгоритма формируются новые массивы амплитуд и значений времени A’ и T’. Структура выходного файла при этом соответствует описанной в п.2.1.2.
Для получения выходных массивов A’ и T’ необходимо предварительно получить Кол пар дополнительных массивов А(А1,А2,…,Акол) и Т(Т1,Т2,…,Ткол) с отражениями, а затем совместить их:
m – размерности получаемых массивов A’ и T’
m = n + n*Кол;
T1i = Ti + 1*То;
T2i = Ti + 2*То;
…
ТКолi = Ti + Кол*То;
A1i = Гр/100*Ai;
A2i = Гр/100*A1i;
…
Aкол = Гр/100*A[кол-1]i
Описание используемых обозначений приведено в п.2.2.2.
Затем все полученные массивы амплитуд и времен объединяются в один общий массив (A’ и T’ соответственно).
1. i::=1;
2. MaxValue::=MaxValue*256;
3. i::=i+1;
4. Если i≤(AudioData.nBlockAlign/AudioData.nChannels),то переход к п.2 иначе к п.5;
5. MaxValue::=MaxValue/2 – 1;
6. TempAudio.nChannels ::= AudioData.nChannels;
7. TempAudio.nSamplesPerSec := AudioData.nSamplesPerSec;
8. TempAudio.nBitsPerSample := AudioData.nBitsPerSample;
9. DelaySmp := Round(Delay*AudioData.nSamplesPerSec/1000);
10. Channel :: =0;
11. Если Channel > (AudioData.nChannels-1),то переход к п. 38 иначе к п.12
12. i :: = Start;
13. Если i > (Start+Count-1), то переход к п. 37 иначе к п.14;
14. j :: = Number;
15. Если j < 0, то переход к п.21 иначе к п.16;
16. Если (i - Start) < (DelaySmp*j), то переход к п.17 иначе к п.18;
17. Smp ::= 0;
18. Прочитать из файла значение Smp;
19. SmpBuf [j] ::= Smp;
20. j ::= j+1; переход к п.15;
21. Mult ::= Volume;
22. j::=1;
23. Если j>Number, то переход к п.30 иначе к п.24;
24. k::=1;
25. Если k>Number, то переход к п.28 иначе к п.26;
26. SmpBuf[k-1] := SmpBuf[k-1] + Round(SmpBuf[k]*Mult);
27. k::=k+1; переход к п.25;
28. Mult ::= Mult*Volume;
29. j::=j+1; переход к п.23;
30. Smp := Round(SmpBuf[0]/(Number+1));
31. Если |Smp|>MaxValue, то переход к п.32 иначе к п.35;
32. Если Smp<0, то переход к п.33 иначе к п.34;
33. Smp::= - MaxValue;
34. Smp::=MaxValue;
35. Запись Smp в TempAudio;
36. i::=i+1; переход к п.13;
37. Сhannel ::= Channel+1; переход к п.11;
38. AudioData ::= TempAudio;
39. Конец.
Контрольный пример должен содержать примеры применения эффекта реверберации с различными параметрами.
AudioData – совокупность значений амплитуд и времен;
Start – указатель на место в массиве данных,с которого начинать обработку;
Count – количество элементов массивов, которые необходимо обработать;
Number – количество отражений;
Delay – время между отражениями;
Volume – громкость отклика относительно предыдущего;
TempAudio – получаемая совокупность значений амплитуд и времен;
SmpBuf – хранит выборку аудиоданных;
Mult – коэффициент для получения значения амплитуды отражения;
Smp – текущая амплитуда;
Channel – количество каналов;
MaxValue – макс. значение амплитуды в обрабатываемом фрагменте;
DelaySmp = Ti – Ti-1.
Данный алгоритм применяется к исходному звуковому сигналу для создания эффекта эха: реализация повторения звукового сигнала с помощью временных преобразований таким образом, чтобы человеческое ухо воспринимало полученный сигнал как эхо. При этом слух перестает субъективно воспринимать отражения, как призвуки основного сигнала, и начинает воспринимать их как повторения. Эхо обычно реализуется так же, как и естественное - с затуханием повторяющихся копий.