Может подскажет кто, как реализовать подобное для Sound FX?
Перед проигрыванием Sound FX - убавление громкости играющей деки, после проигранного Sound FX, возвращение громкости обратно. Пытался вставить из этого примера, работает только изначальное снижение громкости, но как только запускается наложение Sound FX (код ниже), то громкость резко возвращается на исходную,
То есть по сути, не выходит нормально сделать тайм ожидания, для возвращения громкости.
Исходное
var Song : TSongInfo;
var P : TPlayer;
PAL.Loop := True;
PAL.WaitForTime('+00:05:00');
P := SoundFX;
if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom,NoRules);
if Song <> nil then
begin
P.QueueSong(Song); //
P.Play;
end;
end;
То, что пытался сляпать (ибо не варю пока в pal)
var Song : TSongInfo;
var P : TPlayer;
var i : integer;
PAL.Loop := True;
i := ActivePlayer.GetVolume;
PAL.WaitForTime('+00:05:00');
ActivePlayer.Volume := i - 40;
ActivePlayer.Volume := i - 80;
ActivePlayer.Volume := i - 120;
ActivePlayer.Volume := i - 160;
P := SoundFX;
if P <> nil then
begin
Song := CAT['Sound FX (All)'].ChooseSong(smRandom,NoRules);
if Song <> nil then
begin
PAL.WaitForTime('+00:00:10');
ActivePlayer.Volume := i - 160;
ActivePlayer.Volume := i - 120;
ActivePlayer.Volume := i - 80;
ActivePlayer.Volume := i - 40;
ActivePlayer.Volume := i;
P.QueueSong(Song);
P.Play;
end;
end;
Как и куда только не вставлял PAL.WaitForTime с возвратом громкости, но результата не удалось получить. Как только стартует наложение Sound FX, громкость просто резко возвращается.
Помогите подправить в работоспособный вариант... (может уже было решение где-то этой проблемы, не удалось найти)