這個怎麼樣?這將通過「messageList」,一旦145號出現,它將作爲一個開關切換,用「修改器」修改第二個數字,直到145再次出現。那是你要的嗎?
global detectedKey
set detectedKey to false
global modifier
set modifier to "1"
global message
set messageList to {"144,4,127", "145,5,127", "144,1,127", "144,2,127", "145,4,127", "144,1,127", "144,2,127"}
repeat with incomingMessage in messageList
display dialog " incoming: " & incomingMessage & "\n outgoing :" & process(incomingMessage) & "\n modifier: " & modifier
end repeat
on process(incomingMessage)
set a to item 1 of seperate(incomingMessage)
set b to item 2 of seperate(incomingMessage)
set c to item 3 of seperate(incomingMessage)
if detectedKey is true then
set outgoingMessage to "144" & "," & b * modifier & "," & c
if a is equal to "145" then
set detectedKey to false
set modifier to "1"
set outgoingMessage to "144" & "," & b * modifier & "," & c
end if
else if detectedKey is false then
if a is equal to "145" then
set detectedKey to true
set modifier to b
set outgoingMessage to "144" & "," & b * modifier & "," & c
else if a is equal to "144" then
set outgoingMessage to a & "," & b & "," & c
end if
end if
return outgoingMessage
end process
on seperate(message)
set oldDelimiters to text item delimiters
set AppleScript's text item delimiters to {","}
return text items of message
set AppleScript's text item delimiters to oldDelimiters
end seperate
我不知道我理解你的問題的權利,但你的意思是給定三個數(A,B,C)要運行,一旦被= 145多家被起了扳機,所有以下注釋被修改爲(a≠145,b * 8,c),直到a = 145的下一個音符出現爲止?如果是這樣,是否希望下一個觸發事件創建音符(a≠145,b * 8,c)或(a≠145,b * 8 * 8,c)或(a≠145,b,c)或完全不同的東西? – Asmus 2011-02-16 09:36:29