Форум: "Media";
Текущий архив: 2009.11.15;
Скачать: [xml.tar.bz2];
ВнизВоспроизвести WAV из части файла. Найти похожие ветки
← →
AlexanderMS © (2008-01-09 17:59) [0]Есть один большой файл, который состоит из нескольких файлов (несжатый архив), в числе которых и WAV-файл. Нужно воспроизвести этот WAV-файл с помощью DirectSound (известно смещение относительно начала архива и длина файла), не заводя дополнительных файлов. Подскажите, пожалуйста, как это можно сделать?
← →
@!!ex © (2008-01-09 18:43) [1]Прочитать в память кусок, создать сэпл DirectSound, передать ему этот кусок... и гиде проблема???
← →
AlexanderMS © (2008-01-09 19:10) [2]
> гиде проблема???
Проблема в том, что я совершенно не изучал и не разбирался с DirectSound, подключил готовый звуковой движок и всё (конечно, я не прав, но времени на всё не хватает). Вот код загрузки из файла:constructor TSound.Create(FileName : string);
var
R : HRESULT;
pConfig : IUnknown;
begin
FVolume := 75;
AutoDelete := true;
AddSoundToArray(Self);
if not assigned(Loader) then
begin
;//Log("Playing "" + FileName + ""... The SoundManager isn""t loaded !", true);
end else begin
R := Loader.LoadObjectFromFile(CLSID_DirectMusicSegment, IDirectMusicSegment8,
pwidechar(WideString(FileName)), Segment);
if FAILED(R) then
begin
//Log("The Sound "" + FileName + "" isn""t loaded: " + DMErrorString(R), true);
// ShowError("The Sound "" + FileName + "" isn""t loaded: " + DMErrorString(R));
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;
Понятия не имею, куда и что можно добавить. :)
← →
@!!ex © (2008-01-09 19:33) [3]> [2] AlexanderMS © (09.01.08 19:10)
Не знаю что за движок используешь.
Если влом разбиратся с чистым DS, используй fmod, у него можно сэмплэ загружаться откуда угодно, и из памяти тоже.
P.S.
DirectMusic и DirectSound - разные вещи.
Дело в том, что DM НЕ загружает сэмпл в память полностью, а подгружает по мере проигрывания. Тебе использовать DM не кактит вообще.
← →
Сергей М. © (2008-01-10 08:55) [4]
> AlexanderMS
см. sndPlaySound() с флагом SND_MEMORY
← →
AlexanderMS © (2008-01-10 10:00) [5]
> см. sndPlaySound() с флагом SND_MEMORY
У меня игра, и несколько звуков должно играть асинхронно.
> Не знаю что за движок используешь.
Движок Devil"s Engine.
---
Буду разбираться.
← →
Сергей М. © (2008-01-10 14:29) [6]
> несколько звуков должно играть
В DS наверняка есть соотв. объекты/методы/свойства.
В кр.случае ничто не мешает месить аудиопотоки ручками и готовую смесь подавать на съедение той же sndPlaySound()
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2009.11.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c