-
Привет, это X-Raym.
-
И это руководство по
написанию скриптов в Reaper 5.
-
Полагаю, вы
уже наслышаны о REAPER,
-
среда для различных манипуляций с аудио.
-
И эта серия руководств
"Основы ReaScript"
-
введёт вас в курс того,
что в скриптах происходит.
-
Или, другими словами,
научить писать скрипты.
-
Рекомендую прочитать интервью,
которое я дал The REAPER Blog.
-
Там я поясняю всё,
что нужно знать в первую очередь
-
Цель этого видео - начать кодить
-
практикованием.
-
Мы сделаем это за несколько шагов.
-
Мы увидим в первом видео,
-
как использовать консоль и зачем.
-
Мы создадим новый экшн / скрипт
-
запустив окно с экшнами,
затем кликнув ReaScript -> New
-
Откроется папка с
пользовательскими скриптами
-
и я введу имя нового скрипта.
-
"Мой новый скрипт"
-
Затем допишу расширение, ".lua".
-
Расширение определяет, какой язык я хочу
использовать для написания этого с крипта.
-
Существует два языка, встроенные
в REAPER - это LUA и EEL
-
Писать скрипты также можно на Python,
для этого требуются сторонние библиотеки
-
Мы выберем встроенные
интерпретаторы языков,
-
кроме того, с ними кодить проще.
-
Они также более гибкие и
быстры в исполнении.
-
Если я нажму Save, появится окно
-
"Среда для разработки ReaScript ",
-
в которой вы можете писать
скрипт прямо внутри REAPER,
-
что очень круто
-
Это новая фишка в REAPER 5,
-
как и интегиированный интерпретатор lua.
-
Начнём писать скрипт, который покажет
нам сообщение в консоли.
-
Консоль призвана помочь в
разработке скрипта.
-
Для того, чтобы её открыть нам нужна
функция "ShowConsoleMsg()"
-
Так как это встроенная функция REAPER,
-
нам нужно написать префикс "reaper."
-
В качестве параметра, мы пишем
string переменную в кавычках
-
Ctrl+S сохраняет и запускает скрипт.
-
Консоль открылась, как вы видите.
-
С тем сообщением, которые мы написали.
-
Если я нажму Start снова,
-
сообщение снова появится после того,
что у нас уже было в консоли.
-
Для очистки консоли мы можем
нажать "Clear".
-
Идея консоли в том, чтобы показывать
переменную и её значение.
-
Создадим переменную.
-
Пусть это будет string переменная
"Hello world".
-
Здесь мы заменяем переменную
string на имя переменной.
-
Теперь отображается значение переменной
в консоли.
-
Как и ранее.
-
Теперь, чтобы показать вторую стркоу
-
создадим вторую переменную
и назовём её "How are you today?"
-
Просто продублируем функцию.
-
И выберем вторую переменную как параметр.
-
Если я вывожу результат,
-
вы видите, что значения
идут один за другим.
-
Консоль не была очищена.
-
Это напрягает, так как часто запускаю
консоль в процессе кодинга
-
Для очистки консоли напишем
-
reaper. ShowConsoleMsg()
-
с кавычками вместо переменной.
-
Этим мы очистим консоль.
-
Пример. Если я удалю всё
это и нажму save + run,
-
консоль очистится.
-
Если я восстановлю всё обратно
-
две линии вернутся назад,
-
Если я нажму "Start".
-
Ничего не изменится,
так как консоль очищена
-
и strings переменные отобразятся снова.
-
Теперь я хочу создать промежуток
между двумя переменными.
-
Пишем reaper. ShowConsoleMsg()
-
и в качестве параметра напишем "\n".
-
Этот код создаёт разделитель
-
Разделительная линия теперь между двух
string переменных
-
Вместо того, чтобы писать несколько
функций
-
т.е. ShowConsoleMsg несколько раз
-
Я могу написать это в одной функции.
-
Т.е. выполнить это одновременно
-
Что это даёт:
-
если я нажимаю "save + run",
получаю тот же результат
-
Я могу также добавить другие
strings после этого.
-
Например, "I'm fine, thank you"
-
Разделитель не был добавлен,
могу добавить его
-
Или в начале, например.
-
Можно и здесь, вывод будет тем же
-
или как мы сделали раньше
-
Всё это будет иметь один результат.
-
Чтобы постоянно не писать длинное
"reaper.ShowConsoleMsg" каждый раз
-
и постоянно добавлять разделители,
-
я могу создать функцию,
которую я назову "Msg"
-
Она будет иметь один параметр
-
Функция должна заканчиваться на "end"
-
Напишу содержание - то, что функция будет
выполнять при вызове.
-
Она будет показывать то,
что мы указали в её параметрах
-
И добавлю разделитель.
-
Это означает,
-
что если я вызываю функцию
-
вместе с её указанными параметрами
-
string переменной в данном случае,
-
и string2
-
Здесь мы видим ошибку
-
"reaper. ShowConsole is unknown"
-
Я забыл дописать "Msg" в имя встроенной функции
-
теперь разделители добавляются авоматически
-
Не буду это переписывать
-
Просто продублирую
-
Как вы видите, разделители добавляются автоматически,
-
это ускоряет процесс кодинга.
-
ShowConsoleMsg может принимать числа.
-
Если я напишу "6",
-
вы увидите, что выход консоли - "6".
-
Но если переменной, которую мы
хотим показать, не существует
-
например, string3,
-
то я получу ошибку, которая
говорит мне,
-
что я пытаюсь соединить не существующее
значение со string.
-
Nil - это тип переменной в LUA, которая
определяет,
-
что переменная не была обозначена ранее,
или её значение nil.
-
Я получу тот же результат, если поставлю
nil в качестве параметра.
-
Как вы видите, ошибка.
-
то же самое будет с string3...
-
значение которой nil
-
Важно избегать таких типов
сообщений в скрипте,
-
Это означает, что скрипт имеет баг,
и не выполнится полностью.
-
Чтобы быть уверенными в том,
что наш скрипт работает,
-
мы используем lua функцию (не рипера),
-
с помощью которой мы конвертируем
используемый параметр.
-
Если я запущу скрипт заново, "nil" отобразится как текст,
-
и ошибки больше не будет.
-
Наша функция готова для того, чтобы быть
использованной в следующем скрипте.