Нужен ли цикл while внутри оператора if для этого? - PullRequest
0 голосов
/ 15 февраля 2011

Мне нужно запрограммировать что-то в Applescript, которое я никогда не использовал, но это больше общий вопрос программирования для этой конкретной проблемы.

Проблема: я использую Midipipe для получения мидивход от двух разных устройств.

Я хочу использовать вход первого устройства для модуляции выхода второго устройства.Дело в том, что первое устройство отправит одну промежуточную заметку, а затем второе устройство отправит произвольное количество заметок, которые должны быть модулированы.Сценарий apple должен непрерывно модулировать эти заметки, но затем, как только первое устройство отправляет другую заметку, оно меняет модуляцию.

Так что я думаю, что мне нужно что-то вроде этого:

Устройство одно будет отправлять из заметок 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 и получил другую ошибку ...

1 Ответ

2 голосов
/ 15 февраля 2011

Вам не хватает then после if x = 1 и других ifs.

Время в первом случае, если не нужно:

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

Это то же самое, что

if x = 1 then
 return y
end

, потому что вы вернете y, когда цикл начнетсяостанавливает цикл.

Во второй и третий раз вы получите бесконечный цикл.Это потому, что ваш цикл отслеживает переменную x, но вы меняете только y.Таким образом, x будет 3 навсегда, и скрипт никогда не выйдет из цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...