0

我正在使用一个名为“MidiPipe”的程序来使用 midi 控制器来触发我的 mac 上的操作。

基本上我需要发生的是当我同时按下我的midi控制器上的两个键时,我需要一个动作发生,但消息是分开进来的。我需要将一条消息设置为变量,然后将其设置为侧面检查是否有另一条消息进入,然后检查它们是否是正确的消息组合。如果是,我需要采取行动。这是我的 Alist 的图像,当我按下键 21 和 24 时,它基本上是我的 midi 控制器的输入。此外,这里是我目前拥有的代码,但它不起作用。

http://pastebin.com/sD7vxVpg

http://i.imgur.com/EQTB7.png

谢谢阅读

〜弗兰克

4

2 回答 2

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
于 2012-06-08T14:20:04.280 回答
0

这是给你的一个想法。我们将创建一个保持打开状态的 applescript 应用程序。此应用程序将一直运行。这个例子有 2 个可以使用的变量,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 并运行它...

tell application "stayOpenApp" to launch

该代码将让 stayOpenApp 启动。现在我们可以随时运行这段代码来让 stayOpenApp 告诉我们变量的状态......

tell application "stayOpenApp" to runMe()

如果在某些时候我们想改变一个变量的状态,我们可以使用这个......

tell application "stayOpenApp" to setKey1(1)

现在,如果您再次使用 runMe() 检查变量的状态,您会注意到变化。

因此,使用这些技术,您可以将信息传递给正在运行的 applescript 的变量并检查变量的状态。我希望这能给你一些关于如何解决你的问题的想法。祝你好运。

于 2012-06-08T14:21:15.400 回答