Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Воспроизведение wav-файлов


Автор: NoX 4.12.2003, 18:16
Тут надумал я wav файлик програмно проиграть... а как не знаю.
Может компонент какой есть ? Или кусок кода кто даст? confused.gif

Автор: Полудненко Олег 4.12.2003, 19:03
Есть такой компонент как МедиаПлеер. Он стандартный. Юзать глянеш по хелпу.

Автор: Cashey 4.12.2003, 19:08
Компонент MediaPlayer или ф-ция PlaySound.
PS На эту тему уже несколько топиков открывалось... Поищи... Там и примеры были...

Автор: noner 18.8.2004, 11:04
В делфи лучше всего использовать DXSound (из DirectX) компоненту.
А может кто подскажет как проиграть wav из под Паскаля в Dos qstn.gif

Автор: RA 18.8.2004, 13:59
Код

uses MMSystem
.............
var
 abc: pchar;
 abc2: pchar;
 abc3: string;
.................
Function PlaySound(filename : String);
begin
mciSendString('Close MM', abc, 200, 0);
abc2 := PChar('Open ' + filename + ' Alias MM');
mciSendString(abc2, abc, 200, 0);
mciSendString('Play MM', abc, 200, 0);
end;

Автор: dvamaster 18.8.2004, 15:14
Вот что нарыл в Kuliba.chm

Формат Wave-файла
Вот он:



Код
--------------------------------------------------------------------------------
   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;


Для создания собственного WAV-файла сделайте следующее:



Код
--------------------------------------------------------------------------------
   DataBytes := Channels;
DataBytes := DataBytes * SampleRate;
DataBytes := DataBytes * Resolution;
DataBytes := DataBytes div 8;
DataBytes := DataBytes * Duration;
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 := SampleRate;
WaveHeader.Channels := Channels;
WaveHeader.BytesPerSecond := Channels;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond * SampleRate;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond * Resolution;
WaveHeader.BytesPerSecond := WaveHeader.BytesPerSecond div 8;
WaveHeader.BytesPerSample := Channels * Resolution div 8;
WaveHeader.BitsPerSample := Resolution;
WaveHeader.Marker4 := 'data';
WaveHeader.DataBytes := DataBytes;


Остальная часть файлы является звуковыми данными. Порядок следования: верхний уровень для левого канала, верхний уровень для правого канала и так далее. Для моно или 8-битных файлов сделайте соответствующие изменения.

Автор: Marriage 18.8.2004, 21:51
dvamaster
Буду признателен если расскажешь что есть
а)Resolution
б)SampleRate
в)Наверно, главное
КАК СОЗДАТЬ ФАЙЛ, ЧТОБЫ НЕ БЫЛО НИКАКОГО ШУМА ???
ЕСли будешь РУЧКАМИ создавать, сплошной шум будет...
Как эти биты создавать .

Автор: dvamaster 19.8.2004, 12:12
Это все что я нашел.

С одной стороны Kuliba.chm довольно не плохая помощь, но там кратко описано. выше - это просто полная копия от туда.

Про SampleRate:
Это насколько понимаю частота.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)