我需要在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语句并得到一个不同的错误......
答案 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,并且脚本永远不会离开循环。