我是否需要在if语句中使用while循环?

时间:2011-02-15 16:08:22

标签: applescript

我需要在Applescript中编写一些我从未使用过的东西,但对于这个特定的问题,这更像是一个通用的编程问题。

问题:我正在使用Midipipe从两个不同的设备接收midi输入。

我想使用第一个设备的输入来调制第二个设备输出。事情是第一个设备将发送一个midi音符,然后第二个设备将发送任意数量的音符,所有音符都需要调制。苹果脚本需要不断调整这些音符,但是一旦第一个设备发送另一个音符,它就会改变调制。

所以我想我需要这样的东西:

设备1将从通道1上的注释1-16发送

设备2将从通道2上的注释1-7发送

Device one = x
Device two = y

if x = 1
 while x = 1
  return y
 end while
end if

if x = 2
 while x = 2
  y = y + 12 --moving y notes up one octave
 end while
end if

if x = 3
 while x = 3
  y = y + 24 --moving y notes up one octave
 end while
end if

etc

事情还没有成功,我不确定这是否与我的逻辑有关?我收到错误“预期其他但发现时”。我试图输入一个else语句并得到一个不同的错误......

1 个答案:

答案 0 :(得分:2)

then和其他ifs之后你错过了if x = 1

第一次的时间是不必要的:

if x = 1 then
 while x = 1
  return y
 end while
end if

这与

相同
if x = 1 then
 return y
end

因为你会在循环开始时返回y,这会停止循环。

在第二和第三个时刻,你将获得无限循环。这是因为你的循环正在监视x变量,但是你只改变了y。因此,x将永远是3,并且脚本永远不会离开循环。