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