Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
4-1222095827
denissoft
2008-09-22 19:03
2009.11.15
Как перехватить функцию CreateFile


4-1221320169
<>
2008-09-13 19:36
2009.11.15
Как добавить пункт к меню программы на панели задач?


2-1254224323
VladOfMonster
2009-09-29 15:38
2009.11.15
Двойная буферизация


2-1254420825
Drowsy
2009-10-01 22:13
2009.11.15
Текстовый файл и пустые строки.


15-1252931163
нуб
2009-09-14 16:26
2009.11.15
HDD ежесекундно тревожат.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский