Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2013, 02:57   #1
Andy_G
 
Регистрация: 21.11.2012
Сообщений: 8
Сообщение Элементарное звуковое наполнение готового wav файла

Всем доброго времени суток! Есть готовая структура пустого wav файла. Помогите создать любое элементарное звуковое наполнение этого файла.

program wwav;
type
TWaveHeader = record
Marker1: Array[0..3] of Char;
BytesFollowing: LongInt;
Marker2: Array[0..3] of Char;
Marker3: Array[0..3] of Char;
Fixed1: LongInt;
FormatTag: Word;
Channels: Word;
SampleRate: LongInt;
BytesPerSecond: LongInt;
BytesPerSample: Word;
BitsPerSample: Word;
Marker4: Array[0..3] of Char;
DataBytes: LongInt;
end;

procedure CreateWavFile(const aSampleRate,aDuration,aBits,aChanne ls:integer;
const aName:String);
var WaveHeader:TwaveHeader;

f:file;
DataBytes:longint;
i:longint;
spm:longint;
begin
DataBytes := aChannels;
DataBytes := DataBytes * aSampleRate;
DataBytes := DataBytes * aBits;
DataBytes := DataBytes div 8;
DataBytes := DataBytes * aDuration;
DataBytes := DataBytes div 1000;

WaveHeader.Marker1 := 'RIFF';
WaveHeader.BytesFollowing := DataBytes + 36;
WaveHeader.Marker2 := 'WAVE';
WaveHeader.Marker3 := 'fmt';
WaveHeader.Fixed1 := 16;
WaveHeader.FormatTag := 1;
WaveHeader.SampleRate := aSampleRate;
WaveHeader.Channels := aChannels;
WaveHeader.BytesPerSecond := aChannels;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond * aSampleRate;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond * aBits;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond div 8;
WaveHeader.BytesPerSample := aChannels * aBits div 8;
WaveHeader.BitsPerSample := aBits;
WaveHeader.Marker4 := 'data';
WaveHeader.DataBytes := DataBytes;
Assign(f,aName);
Rewrite(f,i);
BlockWrite(f,WaveHeader,SizeOf(Wave Header));
for i:=0 to WaveHeader.DataBytes-1 do
begin
//любой звук
end;
Close(f);
end;
begin
CreateWavFile(44100,3000,8,1,'mwav. wav');
end.

Последний раз редактировалось Andy_G; 26.05.2013 в 03:01.
Andy_G вне форума Ответить с цитированием
Старый 26.05.2013, 09:52   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вы, вообще-то, сами понимаете, о чем просите?
Цитата:
Всем доброго времени суток! Есть готовая структура пустого расказа. Помогите создать любое элементарное художественное наполнение этого рассказа.
Если надо чем-то заполнить звуковой буфер, то
Код:
//любой звук
заменяете на
Код:
random(MaxSoundWalue);
И будет что-то весьма приближенное к белому шуму.
s-andriano вне форума Ответить с цитированием
Старый 26.05.2013, 13:14   #3
Andy_G
 
Регистрация: 21.11.2012
Сообщений: 8
По умолчанию

Компилятор фри паскаля выдает ошибку: Identifier not found "MaxSoundWalue".

Пробовал сделать изменение звука по синусоиде, но все равно wav файл пустой

вместо.
//любой звук

написал:
Spm:=Round(sin(2*Pi*(5*i/aSampleRate)*(500*i/aSampleRate)));
BlockWrite(f,Spm,1);

Все нормально компилируется, но файл пустой. Где ошибка?
Andy_G вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание Wav-файла DelhiProgramer Мультимедиа в Delphi 1 13.08.2012 14:14
декомпиляция Wav файла DzetaHunter Общие вопросы Delphi 3 14.01.2011 13:17
Анализ Wav файла lacost Общие вопросы по Java, Java SE, Kotlin 4 17.12.2010 12:09
Спектр wav файла varvara16 Мультимедиа в Delphi 3 01.02.2010 08:10
Наполнение файла мусором (перед удалением) Delphi Lime Помощь студентам 5 09.10.2009 11:07