2011-02-15 113 views
0

我需要在Applescript中編寫我從未使用過的東西,但這更多的是針對這個特定問題的一般編程問題。我是否需要一個while循環在if語句中?

問題:我正在使用Midipipe從兩個不同的設備接收MIDI輸入。

我想使用第一個設備的輸入來調製第二個設備輸出。第一個設備會發送一個MIDI短信,然後第二個設備發送任意數量的音符,這些音符都需要進行調製。蘋果腳本需要不斷調整這些音符,但只要第一個設備發送另一個音符,它就會改變調製。

所以我想我需要的是這樣的:

設備中的一個將筆記1-16發送通道1臺

設備中的兩個將筆記1-7送通道2

Device one = x 
Device two = y 

if x = 1 
while x = 1 
    return y 
end while 
end if 

if x = 2 
while x = 2 
    y = y + 12 --moving y notes up one octave 
end while 
end if 

if x = 3 
while x = 3 
    y = y + 24 --moving y notes up one octave 
end while 
end if 

etc 

事情還沒有起作用,我不確定這是否是我的邏輯問題?我收到錯誤「預計其他,但發現」。我試圖把一個else語句,並得到了一個不同的錯誤...

回答

2

你錯過了thenif x = 1和其他ifs。

的,而在第一,如果是不必要的:

if x = 1 then 
while x = 1 
    return y 
end while 
end if 

這是塔一樣

if x = 1 then 
return y 
end 

因爲當循環開始,而這個停止循環,你將返回年。

在第二次和第三次,你會得到一個無限循環。這是因爲你的循環正在監視x變量,但你只改變了y。所以,x將永遠是3,並且腳本永遠不會退出循環。

+0

嗯......我需要弄清楚每次播放「設備二」輸入時如何返回y一次,而是根據最近x值決定的方式進行調製......任何想法? – Joel 2011-02-15 16:36:59