Смекни!
smekni.com

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

else Value := MaxValue;

AudioData.WriteSample(i, Channel, Value);

end;

end;

procedure Echo(var AudioData: TAudioData; Start, Count, Number, Delay: Cardinal; Volume: Real);

var

TempAudio: TAudioData;

i, j, DelaySmp: Cardinal;

SummSmp: Int64;

Mult: Real;

Smp: Integer;

Channel: Word;

MaxValue: Cardinal;

begin

for i := 1 to AudioData.nBlockAlign div AudioData.nChannels do

MaxValue := MaxValue*256;

MaxValue := MaxValue div 2 - 1;

TempAudio := TAudioData.Create;

TempAudio.nChannels := AudioData.nChannels;

TempAudio.nSamplesPerSec := AudioData.nSamplesPerSec;

TempAudio.nBitsPerSample := AudioData.nBitsPerSample;

TempAudio.Calculate_nBlockAlign;

DelaySmp := Round(Delay*AudioData.nSamplesPerSec/1000);

for Channel := 0 to AudioData.nChannels-1 do

for i := Start to Start+Count-1 do

begin

AudioData.ReadSample(i, Channel, Smp);

SummSmp := Smp;

Mult := Volume;

for j := 1 to Number do

begin

if i-Start < DelaySmp*j then

Smp := 0

else

AudioData.ReadSample(i-DelaySmp*j, Channel, Smp);

SummSmp := SummSmp + Round(Mult*Smp);

Mult := Mult*Volume;

end;

Smp := Round(SummSmp/(Number+1));

if Abs(Smp)>MaxValue then

if Smp<0 then Smp := -MaxValue

else Smp := MaxValue;

TempAudio.WriteSample(i-Start, Channel, Smp);

end;

OverwriteAudio(TempAudio, AudioData, Start);

TempAudio.Destroy;

Normalize(AudioData, Start, Count);

end;

procedure Reverberation(var AudioData: TAudioData; Start, Count, Number, Delay: Cardinal; Volume: Real);

var

TempAudio: TAudioData;

i, j, k, DelaySmp: Cardinal;

SummSmp: Int64;

SmpBuf: array[0..64] of Int64;

Mult: Real;

Smp: Integer;

Channel: Word;

MaxValue: Cardinal;

begin

for i := 1 to AudioData.nBlockAlign div AudioData.nChannels do

MaxValue := MaxValue*256;

MaxValue := MaxValue div 2 - 1;

TempAudio := TAudioData.Create;

TempAudio.nChannels := AudioData.nChannels;

TempAudio.nSamplesPerSec := AudioData.nSamplesPerSec;

TempAudio.nBitsPerSample := AudioData.nBitsPerSample;

TempAudio.Calculate_nBlockAlign;

DelaySmp := Round(Delay*AudioData.nSamplesPerSec/1000);

for Channel := 0 to AudioData.nChannels-1 do

for i := Start to Start+Count-1 do

begin

for j := Number downto 0 do

begin

if i-Start < DelaySmp*j then

Smp := 0

else

AudioData.ReadSample(i-DelaySmp*j, Channel, Smp);

SmpBuf[j] := Smp;

end;

Mult := Volume;

for j := 1 to Number do

begin

for k := 1 to Number do

SmpBuf[k-1] := SmpBuf[k-1] + Round(SmpBuf[k]*Mult);

Mult := Mult*Volume;

end;

Smp := Round(SmpBuf[0]/(Number+1));

if Abs(Smp)>MaxValue then

if Smp<0 then Smp := -MaxValue

else Smp := MaxValue;

TempAudio.WriteSample(i-Start, Channel, Smp);

end;

OverwriteAudio(TempAudio, AudioData, Start);

TempAudio.Destroy;

Normalize(AudioData, Start, Count);

end;

procedure ChangeVolumeOfAudio(var AudioData: TAudioData; Start, Count: Cardinal; Volume: Real);

var

MaxValue: Cardinal;

Value: Integer;

i: Cardinal;

FinalVolume: Real;

Channel: Word;

begin

MaxValue := 1;

for i := 1 to AudioData.nBlockAlign div AudioData.nChannels do

MaxValue := MaxValue*256;

MaxValue := MaxValue div 2 - 1;

FinalVolume := Volume;

for Channel := 0 to AudioData.nChannels-1 do

begin

Volume := 1;

for i := Start to Start+Count-1 do

begin

AudioData.ReadSample(i, Channel, Value);

//Value := Trunc(Value*Exp(Volume/20));

Value := Trunc(Value*Volume);

if Abs(Value)>MaxValue then

if Value<0 then Value := -MaxValue

else Value := MaxValue;

AudioData.WriteSample(i, Channel, Value);

Volume := Volume + (FinalVolume-1)/Count;

end;

end;

end;

procedure ReChangeVolumeOfAudio(var AudioData: TAudioData; Start, Count: Cardinal; Volume: Real);

var

MaxValue: Cardinal;

Value: Integer;

i: Cardinal;

FinalVolume: Real;

Channel: Word;

begin

MaxValue := 1;

for i := 1 to AudioData.nBlockAlign div AudioData.nChannels do

MaxValue := MaxValue*256;

MaxValue := MaxValue div 2 - 1;

FinalVolume := Volume;

for Channel := 0 to AudioData.nChannels-1 do

begin

Volume := 0;

for i := Start to Start+Count-1 do

begin

AudioData.ReadSample(i, Channel, Value);

//Value := Trunc(Value*Exp(Volume/20));

Value := Trunc(Value*Volume);

if Abs(Value)>MaxValue then

if Value<0 then Value := -MaxValue

else Value := MaxValue;

AudioData.WriteSample(i, Channel, Value);

Volume := Volume + FinalVolume/Count;

end;

end;

end;

end.


ПРИЛОЖЕНИЕ 2

РУКОВОДСТВО ПРОГРАММИСТА

П. 2.1. НАЗНАЧЕНИЕ ПРОГРАММЫ

Программа обработки и фильтрации звуковых сигналов имеет идентификатор AudioEditor и предназначена для обработки звуковых сигналов, записанных в файлах одного из следующих форматов: Microsoft RIFF/WAVE (*.wav), MP3 (*.mp3), Elecronic Music (*.em1). Программа AudioEditor выполняет следующие функции:

1) возможность открытия и анализа файлов форматов Microsoft Wave, MP3 и Electronic Music;

2) отображение структуры звукового сигнала, записанного в файле, в графическом виде с возможностью изменения масштаба;

3) обеспечение возможности основных операций редактирования: выделение части сигнала, ее удаление, копирование и вставку. Обеспечение возможности вставки звукового сигнала из другого файла;

4) возможность изменения основных параметров цифрового звука: частоты дискретизации, битрейта, числа каналов;

5) изменение темпа (скорости) звукового сигнала, уровня громкости, обращение звукового сигнала;

6) применение звуковых эффектов к сигналу (эха, реверберации, возрастания, затухания) с указанием необходимых для них параметров.

Программа AudioEditor входит в состав системы обработки аудиоинформации. Эта система позволяет получить преобразованный звуковой сигнал с заданными характеристиками звучания, а также осуществить сжатие измененного звукового файла для уменьшения занимаемого им размера без значительной потери качества его звучания.

П. 2.2. УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ

Программа AudioEditor предъявляет следующие требования к техническим средствам:

1) стандартный x86-совместимый ПК;

2) тактовая частота процессора не менее 900 МГц;

3) объем оперативной памяти не менее 128 Мб;

4) разрешение экрана монитора не менее 1024x768.

Программа AudioEditor предъявляет следующие требования к программным средствам:

1) операционная система семейства Windows (Windows 9x/ME/NT/2000/XP);

2) среда для разработки приложений Borland Delphi 7.

П. 2.3. ХАРАКТЕРИСТИКА ПРОГРАММЫ

Программа AudioEditor требует для своего функционирования наличия в проекте файлов, содержащих звуковые сигналы, записанные в файлах следующих форматов: Microsoft RIFF/WAVE (*.wav), MP3 (*.mp3), Elecronic Music (*.em1). В связи с этим перед запуском данного модуля рекомендуется сформировать соответствующие файлы со звуковыми сигналами.

В состав программы входят следующие файлы, необходимые для ее функционирования:

1) AudioEditor.exe – исполняемый файл, содержащий основной интерфейс программы;

2) borlndmm.dll – менеджер разделяемой памяти от Borland;

3) cc3260mt.dll – многопоточная библиотека от Borland;

4) stlpmt45.dll – библиотека стандартных шаблонов STL от Borland.

Программа является интерактивной, т.е. требующей взаимодействия с пользователем.

Вся настройка программы происходит в интерактивном режиме, то есть через специальные диалоги настройки в оболочке самого приложения.

П. 2.4. ОБРАЩЕНИЕ К ПРОГРАММЕ

Для вызова программы необходимо запустить на выполнение файл AudioEditor.exe.

Описание файлов программы:

AudioForm.pas – функции для обработки формы с основными параметрами звукового сигнала;

AudioFormat.pas – функции для изменения основных параметров звука (битрейт, частота дискретизации, число каналов), создания эффектов (реверберации, эха, возрастания, затухания), изменения структуры звукового сигнала, изменения темпа и громкости, обращения;

EffectsForm.pas – функции для обработки формы с параметрами звуковых эффектов;

EM1_Format.pas – функции для работы с файлами формата Electronic Music;

FileUtils.pas – функции для работы с файлами любых типов;

Help.pas – функции для отображения справочной информации по программе;

Main.pas – функции для обработки главного окна программы;

MP3_Format.pas – функции для работы с файлами формата MP3;

MP3Form.pas – функции для обработки формы с параметрами MP3;

PCM_Format.pas – функции для работы с файлами формата Microsoft RIFF/WAVE;

AudioDeformator.res – ресурсы программы;

AudioForm.dfm – файл с описанием формы для изменения основных параметров звукового сигнала (частота дискретизации, битрейт, число каналов);

EffectsForm.dfm – файл с описанием формы для задания параметров звуковых эффектов;

Help.dfm – файл с описанием формы для отображения справочной информации по программе;

Main.dfm – файл с описанием главной формы программы;

MP3Form.dfm – файл с описанием формы для задания параметров MP3.

П. 2.5. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ

Входными данными являются звуковые сигналы, записанные в файлах одного из следующих форматов: Microsoft RIFF/WAVE (*.wav), MP3 (*.mp3), Elecronic Music (*.em1).

Выходными данными являются измененные звуковые сигналы, записанный в файлах, структура которых аналогична структуре входных.

П. 2.6. СООБЩЕНИЯ

В ходе работы программы на экране могут появиться сообщения, которые приведены в табл.П.2.1.

Таблица П.2.1

Сообщения, появляющиеся в ходе работы программы

Сообщение Описание
Пожалуйста подождите… Появляется в случае, когда программой производится выполнение длительной операции (например, открытие файла большого размера или его обработка). Необходимо дождаться исчезновения этого сообщения для дальнейшей работы с программой
Ошибка открытия файла Невозможно открыть файл, так как его формат не входит в число поддерживаемых приложением (*.em1, *.wav, *.mp3) Необходимо открыть файл в поддерживаемом формате.
Ошибка сохранения файла Невозможно сохранить файл. Причиной может являться нехватка свободного дискового пространства или отсутствие прав на запись файлав указанной директории
Сохранить изменения в файле? Появляется в том случае, если файл был изменен, но изменения не были сохранены, а пользователь вызвал процедуру выхода из программы

ПРИЛОЖЕНИЕ 3

РУКОВОДСТВО ОПЕРАТОРА

П. 3.1. НАЗНАЧЕНИЕ ПРОГРАММЫ

Программа обработки и фильтрации звуковых сигналов имеет идентификатор AudioEditor и предназначена для обработки звуковых сигналов, записанных в файлах одного из следующих форматов: Microsoft RIFF/WAVE (*.wav), MP3 (*.mp3), Elecronic Music (*.em1). Программа AudioEditor выполняет следующие функции:

1) возможность открытия и анализа файлов форматов Microsoft Wave, MP3 и Electronic Music;

2) отображение структуры звукового сигнала, записанного в файле, в графическом виде с возможностью изменения масштаба;

3) обеспечение возможности основных операций редактирования: выделение части сигнала, ее удаление, копирование и вставку. Обеспечение возможности вставки звукового сигнала из другого файла;