NewCount – новое количество отметок времени.
Данный алгоритм применяется для увеличения или уменьшения громкости (амплитуды) звукового сигнала.
При реализации данного алгоритма используются массивы информации, сформированные из входных данных. Массивы содержат информацию о величине амплитуды звукового сигнала в определенные моменты времени. Количество пар массивов определяется числом каналов (ЧК).
A = {A1,A2,…,An} – массив амплитуд звукового сигнала;
T = {T1,T2,…,Tn} – массив со значениями времени, где n зависит от частоты дискретизации (ЧД), битрейта (Б) и размера файла;
Ti – Ti-1 определяется частотой дискретизации.
При реализации алгоритма учитываются следующие параметры, которые подаются в качестве параметров на вход алгоритма: величина новой громкости звукового сигнала в процентах от текущей (Гр).
В результате реализации алгоритма формируется новый массив значений амплитуд A’, массив с временем T остается неизменным. Структура выходного файла при этом соответствует описанной в п.2.1.2.
Для получения выходного массива A’ используются следующие формулы:
A’1 = А1 * Гр/100;
A’2 = А2 * Гр/100;
…
A’n = An * Гр/100.
Описание используемых обозначений приведено в п.2.5.2.
1. MaxValue ::= 1;
2. i ::= 0;
3. Если i > (AudioData.nBlockAlign/AudioData.nChannels), то переход к п.5 иначе к п.4;
4. MaxValue ::= MaxValue * 256;
5. MaxValue ::= MaxValue/2 – 1;
6. Channel ::=0;
7. Если Channel > (AudioData.nChannels – 1), то переход к п.19 иначе к п.8;
8. Volume ::= 1; i ::= Start;
9. Если i > (Start+Count-1), то переход к п.18 иначе к п.10;
10. Прочитать Value из файла;
11. Value ::= ]Value*Volume[;
12. Если |Value|>MaxValue, то переход к п.13 иначе к п.16;
13. Если Value<0, то переход к п.14 иначе к п.15;
14. Value ::= -MaxValue; переход к п.16;
15. Value ::= MaxValue;
16. Записать Value в файл;
17. i ::= i+1; переход к п.9;
18. Channel ::= Channel+1; переход к п.7;
19. Конец.
Контрольный пример должен содержать примеры изменения громкости звука: увеличение и уменьшение амплитуды звукового сигнала.
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 определяется частотой дискретизации.
В результате реализации алгоритма формируется новый массив значений амплитуд A’, массив с временем T остается неизменным. Структура выходного файла при этом соответствует описанной в п.2.1.2.
Для получения выходного массива A’ используются следующие формулы:
A’1 = А1 * 1/n;
A’2 = А2 * 2/n;
…
A’n = An.
Описание используемых обозначений приведено в п.2.6.2.
1. MaxValue ::= 1;
2. i ::= 0;
3. Если i > (AudioData.nBlockAlign/AudioData.nChannels), то переход к п.5 иначе к п.4;
4. MaxValue ::= MaxValue * 256;
5. MaxValue ::= MaxValue/2 – 1; FinalVolume ::= Volume;
6. Channel ::=0;
7. Если Channel > (AudioData.nChannels – 1), то переход к п.20 иначе к п.8;
8. Volume ::= 1; i ::= Start;
9. Если i > (Start+Count-1), то переход к п.19 иначе к п.10;
10. Прочитать Value из файла;
11. Value ::= ]Value*Volume[;
12. Если |Value|>MaxValue, то переход к п.13 иначе к п.16;
13. Если Value<0, то переход к п.14 иначе к п.15;
14. Value ::= -MaxValue; переход к п.16;
15. Value ::= MaxValue;
16. Записать Value в файл;
17. Volume ::= Volume + FinalVolume/Count;
18. i ::= i+1; переход к п.9;
19. Channel ::= Channel+1; переход к п.7;
20. Конец.
Контрольный пример должен содержать примеры применения эффекта возрастающей громкости к звуковому сигналу.
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 определяется частотой дискретизации.
В результате реализации алгоритма формируется новый массив значений амплитуд A’, массив с временем T остается неизменным. Структура выходного файла при этом соответствует описанной в п.2.1.2.
Для получения выходного массива A’ используются следующие формулы:
n – количество временных интервалов;
A’1 = А1 * n/n;
A’2 = А2 * (n-1)/n;
…
A’n-1 = An-1 * 2/n;
A’n = An * 1/n.
Описание используемых обозначений приведено в п.2.7.2.
1. MaxValue ::= 1;
2. i ::= 0;
3. Если i > (AudioData.nBlockAlign/AudioData.nChannels), то переход к п.5 иначе к п.4;
4. MaxValue ::= MaxValue * 256;
5. MaxValue ::= MaxValue/2 – 1; FinalVolume ::= Volume;
6. Channel ::=0;
7. Если Channel > (AudioData.nChannels – 1), то переход к п.20 иначе к п.8;
8. Volume ::= 1; i ::= Start;
9. Если i > (Start+Count-1), то переход к п.19 иначе к п.10;
10. Прочитать Value из файла;
11. Value ::= ]Value*Volume[;
12. Если |Value|>MaxValue, то переход к п.13 иначе к п.16;
13. Если Value<0, то переход к п.14 иначе к п.15;
14. Value ::= -MaxValue; переход к п.16;
15. Value ::= MaxValue;
16. Записать Value в файл;
17. Volume ::= Volume + (FinalVolume-1)/Count;
18. i ::= i+1; переход к п.9;
19. Channel ::= Channel+1; переход к п.7;
20. Конец.
Контрольный пример должен содержать примеры применения эффекта затухающей громкости к звуковому сигналу различных форм.
AudioData – совокупность значений амплитуд и времен;
Start – указатель на место в массиве данных,с которого начинать обработку;
Count – количество элементов массивов, которые необходимо обработать;
Number – количество отражений;
Delay – время между отражениями;
Volume – громкость отклика относительно предыдущего;
TempAudio – получаемая совокупность значений амплитуд и времен;
SmpBuf – хранит выборку аудиоданных;
Mult – коэффициент для получения значения амплитуды отражения;
Smp – текущая амплитуда;
Channel – количество каналов;
MaxValue – макс. значение амплитуды в обрабатываемом фрагменте;
DelaySmp = Ti – Ti-1.
Данный алгоритм применяется для обращения воспроизведения звукового сигнала.
При реализации данного алгоритма используются массивы информации, сформированные из входных данных. Массивы содержат информацию о величине амплитуды звукового сигнала в определенные моменты времени. Количество пар массивов определяется числом каналов (ЧК).