将Turbo Pascal SOUND命令转换为FireMonkey

时间:2016-07-10 19:01:44

标签: firemonkey pascal turbo-pascal

我正在将一个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 }

对于更多背景知识,它是一款文字冒险游戏。有一个带自动点唱机的沙龙。在自动点唱机上播放歌曲可以为歌词提供线索,歌词会在歌曲播放时显示。

0 个答案:

没有答案