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.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.1. НАЗНАЧЕНИЕ ПРОГРАММЫ
Программа обработки и фильтрации звуковых сигналов имеет идентификатор AudioEditor и предназначена для обработки звуковых сигналов, записанных в файлах одного из следующих форматов: Microsoft RIFF/WAVE (*.wav), MP3 (*.mp3), Elecronic Music (*.em1). Программа AudioEditor выполняет следующие функции:
1) возможность открытия и анализа файлов форматов Microsoft Wave, MP3 и Electronic Music;
2) отображение структуры звукового сигнала, записанного в файле, в графическом виде с возможностью изменения масштаба;
3) обеспечение возможности основных операций редактирования: выделение части сигнала, ее удаление, копирование и вставку. Обеспечение возможности вставки звукового сигнала из другого файла;