Help

Тема в разделе "Delphi - FAQ", создана пользователем KiberPank, 30 ноя 2004.

Статус темы:
Закрыта.
  1. KiberPank

    KiberPank Гость

    Помогите как в delphi проиграть определенную композицию ускорено???
     
  2. zubr

    zubr Гость

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

    zubr Гость

    Вот код:
    Код (Text):
    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;
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей