-
Есть один большой файл, который состоит из нескольких файлов (несжатый архив), в числе которых и WAV-файл. Нужно воспроизвести этот WAV-файл с помощью DirectSound (известно смещение относительно начала архива и длина файла), не заводя дополнительных файлов. Подскажите, пожалуйста, как это можно сделать?
-
Прочитать в память кусок, создать сэпл DirectSound, передать ему этот кусок... и гиде проблема???
-
> гиде проблема???
Проблема в том, что я совершенно не изучал и не разбирался с DirectSound, подключил готовый звуковой движок и всё (конечно, я не прав, но времени на всё не хватает). Вот код загрузки из файла: constructor TSound.Create(FileName : string);
var
R : HRESULT;
pConfig : IUnknown;
begin
FVolume := 75;
AutoDelete := true;
AddSoundToArray(Self);
if not assigned(Loader) then
begin
; end else begin
R := Loader.LoadObjectFromFile(CLSID_DirectMusicSegment, IDirectMusicSegment8,
pwidechar(WideString(FileName)), Segment);
if FAILED(R) then
begin
Segment := nil;
Exit;
end;
if SUCCEEDED(Segment.GetAudioPathConfig(pConfig)) then begin
R := Performance.CreateAudioPath(pConfig,
true,
Path);
pConfig := nil;
end else begin
R := Performance.CreateStandardAudioPath(MONO_STEREO[InitStereo],
InitChannels, true, Path);
end;
if FAILED(R) then DirectMusicLog(R);
SetVolume(FVolume);
Segment.Download(Performance);
end;
end; Понятия не имею, куда и что можно добавить. :)
-
> [2] AlexanderMS © (09.01.08 19:10)
Не знаю что за движок используешь. Если влом разбиратся с чистым DS, используй fmod, у него можно сэмплэ загружаться откуда угодно, и из памяти тоже.
P.S. DirectMusic и DirectSound - разные вещи. Дело в том, что DM НЕ загружает сэмпл в память полностью, а подгружает по мере проигрывания. Тебе использовать DM не кактит вообще.
-
> AlexanderMS
см. sndPlaySound() с флагом SND_MEMORY
-
> см. sndPlaySound() с флагом SND_MEMORY
У меня игра, и несколько звуков должно играть асинхронно.
> Не знаю что за движок используешь.
Движок Devil's Engine.
--- Буду разбираться.
-
> несколько звуков должно играть
В DS наверняка есть соотв. объекты/методы/свойства.
В кр.случае ничто не мешает месить аудиопотоки ручками и готовую смесь подавать на съедение той же sndPlaySound()
|