on runme(message)
if (item 1 of message = 145) then
set x to item 2 of message
else if (item 1 of message = 144) then
set y to item 2 of message
end if
if (item 1 of message = 145) then
return message
else
set y to x * 8
return {item 1 of message, y, item 3 of message}
end if
end runme
我是Applescript的新手。我正在接收MIDI音符消息(消息)。它们采用三个数字的形式(即:145、0、127)
我需要做的是侦听以145开头的Midi音符编号,然后查看其项目2。然后,我需要将其乘以8并将其另存为以144开头的Midi音符编号的项目2。
每个笔记中有145个笔记时,会有144个笔记开始。因此,我需要保留该变量,直到出现145个笔记为止。
问题是我认为每次midi音符通过时该脚本都会重新运行?我需要以某种方式记住每个音符实例的y变量,直到带有145的新音符出现并对其进行更改为止。
像泥一样清澈?
最佳答案
在函数范围之外声明一个全局变量。请参阅以下示例:
global y -- declare y
set y as 0 -- initialize y
on function ()
set y as (y + 1)
end function
function() -- call function
return y
这将返回
1
,因为您可以在函数内部访问y
。函数结束后,将保留y
的值。了解更多:http://developer.apple.com/library/mac/#documentation/applescript/conceptual/applescriptlangguide/conceptual/ASLR_variables.html#//apple_ref/doc/uid/TP40000983-CH223-SW10