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