Обнаружение приращения значения Applescript

avatar
Víctor Bernardino
1 июля 2021 в 18:33
51
1
0

Я использую midi-сообщения для запуска команд Applescript через MidiPipe. Сообщения Midi содержат 3 элемента, и я хочу запустить команду, когда значение третьего элемента увеличивается на +1

if (item 1 of message = 176) then 
    if (item 2 of message = 97) then
        if (item 3 of message + 1) then -- this doesn't work 
            tell application "System Events"
                key code 126

Это работает, когда нужное мне значение фиксировано, но я не знаю, как определить положительное или отрицательное приращение (диапазон 0-127)

Источник

Ответы (1)

avatar
red_menace
1 июля 2021 в 21:49
0

В AppleScript нет ничего подобного. Вам нужно будет отслеживать, каким было предыдущее значение, сравнивать/обновлять его с тем, что есть сейчас, и предпринимать соответствующие действия. Вы не упоминаете, как вызывается сценарий или какое состояние вы сохраняете, но ваш фрагмент будет выглядеть примерно так:

property previous : missing value -- keep track of the previous value
if previous is missing value then set previous to item 3 of message -- initial value

-- other stuff

if item 1 of message = 176 then
    if item 2 of message = 97 then
        set change to (item 3 of message) - previous -- get any difference
        if change < 0 then set change to -change -- absolute value
        if change is not 0 and change = 1 then -- or whatever threshold comparison
            set previous to item 3 of message -- update
            tell application "System Events"
                key code 126
                -- other stuff
            end tell
        end if
    end if
end if

У меня нет MidiPipe для тестирования, но если сценарий не будет сохранять постоянные свойства, вам нужно будет сделать что-то вроде чтения из файла или использовать NSUserDefaults, чтобы сохранить значение переменная previous между запусками.