Привет, это 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" отобразится как текст,
и ошибки больше не будет.
Наша функция готова для того, чтобы быть
использованной в следующем скрипте.