Help

  • Автор темы KiberPank
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

KiberPank

#1
Помогите как в delphi проиграть определенную композицию ускорено???
 
Z

zubr

#2
Весь код писать некогда, когда то делал, будет время пороюсь у себя в исходниках (может завтра). Для изменения скорости воспроизведения юзай функцию waveOutSetPlaybackRate - но работать будет, если звуковой адаптер поддерживает изменение скорости.
 
Z

zubr

#3
Вот код:
Код:
uses MMSystem;

var
format:TWaveFormatEx;
hzv:HWaveOut;
hider:WaveHdr;
buf:PChar;
fl:TMemoryStream;

procedure TForm1.Button1Click(Sender: TObject);//Кнопка Пуск
begin
fl:=TMemoryStream.Create;
fl.LoadFromFile('D:\путь к звуковому файлу\файл.wav');
buf:=StrAlloc(fl.Size);
fl.Read(buf^, fl.Size);
format.wFormatTag:=WAVE_FORMAT_PCM;
format.nChannels:=2;
format.nSamplesPerSec:=44100;//нормальная скорость (для увеличения коэффициент k*44100)
format.nAvgBytesPerSec:=fl.Size;
format.nBlockAlign:=4;
format.wBitsPerSample:=16;
format.cbSize:=0;
waveOutOpen(@hzv, WAVE_MAPPER, @format, 0, 0, CALLBACK_NULL);
hider.lpData:=@buf^;
hider.dwBufferLength:=fl.Size;
fl.Free;
waveOutPrepareHeader(hzv, @hider, SizeOf(hider));
waveOutWrite(hzv, @hider, SizeOf(hider));
end;

procedure TForm1.Button2Click(Sender: TObject);//Кнопка Стоп
begin
waveOutPause(hzv);
waveOutUnPrepareHeader(hzv, @hider, SizeOf(hider));
waveOutClose(hzv);
StrDispose(buf);
end;
 
Статус
Закрыто для дальнейших ответов.