我正在将一个 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 }
对于更多背景知识,这是一款文字冒险游戏。有一个带自动点唱机的轿车。在自动点唱机上播放歌曲会为您提供歌词中的线索,这些线索会在歌曲播放时显示。