我正在将一个30岁以上的Turbo Pascal程序转换为FireMonkey。似乎没有等效的东西之一是SOUND命令。我在StackOverflow的其他地方发现它可以用Windows哔声(在VCL中)替换,但我需要一个适用于Android上的FireMonkey的解决方案。我的程序会显示歌词以及每个声音,因此我无法录制声音并播放MP3文件。我还想在Turbo Pascal中保持SOUND命令的笨拙的一音符8位声音。主要命令是Sound(Round(Frequency))。知道如何在FireMonkey中模仿它吗?以下是播放每个音符的原始代码,以防它有用:
procedure Playnote(speed,Octave,Note,Duration: integer);
var
Frequency : real;
I : integer;
begin
if note = 0 then sleep(speed*duration) // was "delay" in Turboo Pascal
else begin
Frequency := 32.625;
for I := 1 to Octave do Frequency := Frequency * 2;
for I := 1 to Note - 1 do Frequency := Frequency * 1.059463094;
if Duration <> 0 then begin
if soundon then Sound(Round(Frequency));
sleep(speed*Duration); // was "delay" in Turboo Pascal
NoSound;
end
else if soundon then Sound(Round(Frequency));
end;
end; {end PLAYNOTE }
对于更多背景知识,它是一款文字冒险游戏。有一个带自动点唱机的沙龙。在自动点唱机上播放歌曲可以为歌词提供线索,歌词会在歌曲播放时显示。