我正在使用名为“MidiPipe”的程序来使用midi控制器触发我的Mac上的操作。
基本上我需要发生的是当我同时按下midi控制器上的两个键时,我需要一个动作才会发生,但是这些消息是分开进行的。我需要将一条消息设置为变量,然后将其设置为侧检查是否有其他消息,然后检查它们是否是正确的消息组合。如果是,我需要采取行动。这是我的Alist的图像,当我按下键21和24时,它基本上是我的midi控制器的输入。此外,这里是我目前没有的代码。
感谢您阅读
〜弗兰克
答案 0 :(得分:0)
就像这样:
property lastSecondItemis21 : false --item 2 of last message
on runme(message)
if (item 1 of message = 144) and (item 2 of message = 21) and (item 3 of message > 0) then
set lastSecondItemis21 to true
else if lastSecondItemis21 then
set lastSecondItemis21 to false
if (item 1 of message = 144) and (item 2 of message = 24) and (item 3 of message > 0) then
--<do action>
end if
end if
end runme
答案 1 :(得分:0)
这是给你的一个想法。我们将创建一个保持开放的AppleScript应用程序。此应用程序将一直运行。这个例子有两个你可以使用的变量,key1和key2。每当我要求应用程序“运行”时,它会告诉我两个变量的状态......在这种情况下,它们是否有值。
因此,要尝试此示例,您需要做的第一件事是将此代码保存为保持打开的应用程序。我打电话给我的应用程序“stayOpenApp”。
property key1 : missing value
property key2 : missing value
on run
if key1 is not missing value and key2 is not missing value then
set theMessage to "Both keys have values."
else if key1 is not missing value then
set theMessage to "Only key 1 has a value."
else if key2 is not missing value then
set theMessage to "Only key 2 has a value."
else
set theMessage to "Neither key has a value."
end if
tell me to activate
display dialog theMessage
end run
on quit
-- reset the variables before quitting
set key1 to missing value
set key2 to missing value
continue quit
end quit
on runMe()
tell me to run
end runMe
on setKey1(theValue)
set key1 to theValue
end setKey1
on getKey1()
return key1
end getKey1
on setKey2(theValue)
set key2 to theValue
end setKey2
on getKey2()
return key2
end getKey2
您会注意到它有2个变量作为属性。脚本的底部是每个变量的getter和setter。这允许外部AppleScript获取变量的值或设置变量的值。要按照此示例创建以下单独的AppleScript并运行它...
tell application "stayOpenApp" to launch
该代码将启动stayOpenApp。现在我们可以随时运行此代码以使stayOpenApp告诉我们变量的状态......
tell application "stayOpenApp" to runMe()
如果在某些时候我们想要改变变量的状态,我们可以使用它......
tell application "stayOpenApp" to setKey1(1)
现在,如果您再次使用runMe()检查变量的状态,您会注意到更改。
因此,使用这些技术,您可以使用一种方法将信息传递给正在运行的AppleScript的变量,并检查变量的状态。我希望这能为您提供一些如何解决问题的想法。祝你好运。