< Return to Video

Lua Scripting with REAPER 5 - Part. 1: The Console Output

  • 0:00 - 0:02
    Привет, это X-Raym.
  • 0:02 - 0:07
    И это руководство по
    написанию скриптов в Reaper 5.
  • 0:07 - 0:10
    Полагаю, вы
    уже наслышаны о REAPER,
  • 0:10 - 0:13
    среда для различных манипуляций с аудио.
  • 0:13 - 0:20
    И эта серия руководств
    "Основы ReaScript"
  • 0:20 - 0:23
    введёт вас в курс того,
    что в скриптах происходит.
  • 0:23 - 0:27
    Или, другими словами,
    научить писать скрипты.
  • 0:27 - 0:33
    Рекомендую прочитать интервью,
    которое я дал The REAPER Blog.
  • 0:33 - 0:40
    Там я поясняю всё,
    что нужно знать в первую очередь
  • 0:40 - 0:45
    Цель этого видео - начать кодить
  • 0:45 - 0:50
    практикованием.
  • 0:50 - 0:53
    Мы сделаем это за несколько шагов.
  • 0:53 - 0:56
    Мы увидим в первом видео,
  • 0:56 - 0:58
    как использовать консоль и зачем.
  • 0:58 - 1:03
    Мы создадим новый экшн / скрипт
  • 1:03 - 1:09
    запустив окно с экшнами,
    затем кликнув ReaScript -> New
  • 1:09 - 1:13
    Откроется папка с
    пользовательскими скриптами
  • 1:13 - 1:15
    и я введу имя нового скрипта.
  • 1:15 - 1:20
    "Мой новый скрипт"
  • 1:20 - 1:25

    Затем допишу расширение, ".lua".
  • 1:25 - 1:29
    Расширение определяет, какой язык я хочу
    использовать для написания этого с крипта.
  • 1:29 - 1:33
    Существует два языка, встроенные
    в REAPER - это LUA и EEL
  • 1:33 - 1:38
    Писать скрипты также можно на Python,
    для этого требуются сторонние библиотеки
  • 1:38 - 1:42
    Мы выберем встроенные
    интерпретаторы языков,
  • 1:42 - 1:45
    кроме того, с ними кодить проще.
  • 1:45 - 1:50
    Они также более гибкие и
    быстры в исполнении.
  • 1:52 - 1:54
    Если я нажму Save, появится окно
  • 1:54 - 1:57
    "Среда для разработки ReaScript ",
  • 1:57 - 2:02
    в которой вы можете писать
    скрипт прямо внутри REAPER,
  • 2:02 - 2:05
    что очень круто
  • 2:05 - 2:08
    Это новая фишка в REAPER 5,
  • 2:08 - 2:11
    как и интегиированный интерпретатор lua.
  • 2:11 - 2:17
    Начнём писать скрипт, который покажет
    нам сообщение в консоли.
  • 2:17 - 2:22
    Консоль призвана помочь в
    разработке скрипта.
  • 2:22 - 2:26
    Для того, чтобы её открыть нам нужна
    функция "ShowConsoleMsg()"
  • 2:32 - 2:35
    Так как это встроенная функция REAPER,
  • 2:35 - 2:39
    нам нужно написать префикс "reaper."
  • 2:42 - 2:48
    В качестве параметра, мы пишем
    string переменную в кавычках
  • 2:53 - 2:59
    Ctrl+S сохраняет и запускает скрипт.
  • 2:59 - 3:04
    Консоль открылась, как вы видите.
  • 3:04 - 3:06
    С тем сообщением, которые мы написали.
  • 3:06 - 3:09
    Если я нажму Start снова,
  • 3:09 - 3:16
    сообщение снова появится после того,
    что у нас уже было в консоли.
  • 3:16 - 3:19
    Для очистки консоли мы можем
    нажать "Clear".
  • 3:19 - 3:25
    Идея консоли в том, чтобы показывать
    переменную и её значение.
  • 3:27 - 3:30
    Создадим переменную.
  • 3:30 - 3:38
    Пусть это будет string переменная
    "Hello world".
  • 3:38 - 3:46
    Здесь мы заменяем переменную
    string на имя переменной.
  • 3:46 - 3:52
    Теперь отображается значение переменной
    в консоли.
  • 3:52 - 3:54
    Как и ранее.
  • 3:54 - 4:01
    Теперь, чтобы показать вторую стркоу
  • 4:01 - 4:09
    создадим вторую переменную
    и назовём её "How are you today?"
  • 4:13 - 4:17
    Просто продублируем функцию.
  • 4:17 - 4:22
    И выберем вторую переменную как параметр.
  • 4:22 - 4:23
    Если я вывожу результат,
  • 4:25 - 4:31
    вы видите, что значения
    идут один за другим.
  • 4:31 - 4:35
    Консоль не была очищена.
  • 4:35 - 4:41
    Это напрягает, так как часто запускаю
    консоль в процессе кодинга
  • 4:41 - 4:44
    Для очистки консоли напишем
  • 4:45 - 4:47
    reaper. ShowConsoleMsg()
  • 4:48 - 4:51
    с кавычками вместо переменной.
  • 4:51 - 4:53
    Этим мы очистим консоль.
  • 4:54 - 4:58
    Пример. Если я удалю всё
    это и нажму save + run,
  • 4:58 - 5:00
    консоль очистится.
  • 5:00 - 5:01
    Если я восстановлю всё обратно
  • 5:03 - 5:07
    две линии вернутся назад,
  • 5:07 - 5:09
    Если я нажму "Start".
  • 5:10 - 5:13
    Ничего не изменится,
    так как консоль очищена
  • 5:13 - 5:16
    и strings переменные отобразятся снова.
  • 5:17 - 5:22
    Теперь я хочу создать промежуток
    между двумя переменными.
  • 5:22 - 5:28
    Пишем reaper. ShowConsoleMsg()
  • 5:28 - 5:36
    и в качестве параметра напишем "\n".
  • 5:36 - 5:38
    Этот код создаёт разделитель
  • 5:38 - 5:42
    Разделительная линия теперь между двух
    string переменных
  • 5:42 - 5:46
    Вместо того, чтобы писать несколько
    функций
  • 5:46 - 5:48
    т.е. ShowConsoleMsg несколько раз
  • 5:48 - 5:53
    Я могу написать это в одной функции.
  • 6:00 - 6:02
    Т.е. выполнить это одновременно
  • 6:02 - 6:07
    Что это даёт:
  • 6:09 - 6:14
    если я нажимаю "save + run",
    получаю тот же результат
  • 6:14 - 6:20
    Я могу также добавить другие
    strings после этого.
  • 6:20 - 6:27
    Например, "I'm fine, thank you"
  • 6:29 - 6:33
    Разделитель не был добавлен,
    могу добавить его
  • 6:33 - 6:37
    Или в начале, например.
  • 6:37 - 6:42
    Можно и здесь, вывод будет тем же
  • 6:42 - 6:45
    или как мы сделали раньше
  • 6:49 - 6:52
    Всё это будет иметь один результат.
  • 6:52 - 7:00
    Чтобы постоянно не писать длинное
    "reaper.ShowConsoleMsg" каждый раз
  • 7:00 - 7:03
    и постоянно добавлять разделители,
  • 7:03 - 7:09
    я могу создать функцию,
    которую я назову "Msg"
  • 7:09 - 7:14
    Она будет иметь один параметр
  • 7:19 - 7:20
    Функция должна заканчиваться на "end"
  • 7:20 - 7:24
    Напишу содержание - то, что функция будет
    выполнять при вызове.
  • 7:24 - 7:30
    Она будет показывать то,
    что мы указали в её параметрах
  • 7:31 - 7:35
    И добавлю разделитель.
  • 7:35 - 7:36
    Это означает,
  • 7:38 - 7:40
    что если я вызываю функцию
  • 7:42 - 7:45
    вместе с её указанными параметрами
  • 7:45 - 7:46
    string переменной в данном случае,
  • 7:50 - 7:51
    и string2
  • 7:55 - 7:58
    Здесь мы видим ошибку
  • 7:58 - 8:00
    "reaper. ShowConsole is unknown"
  • 8:00 - 8:04
    Я забыл дописать "Msg" в имя встроенной функции
  • 8:05 - 8:08
    теперь разделители добавляются авоматически
  • 8:08 - 8:10
    Не буду это переписывать
  • 8:10 - 8:12
    Просто продублирую
  • 8:14 - 8:17
    Как вы видите, разделители добавляются автоматически,
  • 8:17 - 8:19
    это ускоряет процесс кодинга.
  • 8:21 - 8:28
    ShowConsoleMsg может принимать числа.
  • 8:28 - 8:31
    Если я напишу "6",
  • 8:31 - 8:34
    вы увидите, что выход консоли - "6".
  • 8:34 - 8:37
    Но если переменной, которую мы
    хотим показать, не существует
  • 8:37 - 8:41
    например, string3,
  • 8:41 - 8:44
    то я получу ошибку, которая
    говорит мне,
  • 8:44 - 8:50
    что я пытаюсь соединить не существующее
    значение со string.
  • 8:50 - 8:54
    Nil - это тип переменной в LUA, которая
    определяет,
  • 8:54 - 8:59
    что переменная не была обозначена ранее,
    или её значение nil.
  • 9:00 - 9:06
    Я получу тот же результат, если поставлю
    nil в качестве параметра.
  • 9:06 - 9:08
    Как вы видите, ошибка.
  • 9:08 - 9:11
    то же самое будет с string3...
  • 9:15 - 9:17
    значение которой nil
  • 9:19 - 9:25
    Важно избегать таких типов
    сообщений в скрипте,
  • 9:25 - 9:27
    Это означает, что скрипт имеет баг,
    и не выполнится полностью.
  • 9:28 - 9:31
    Чтобы быть уверенными в том,
    что наш скрипт работает,
  • 9:31 - 9:33
    мы используем lua функцию (не рипера),
  • 9:33 - 9:40
    с помощью которой мы конвертируем
    используемый параметр.
  • 9:40 - 9:44
    Если я запущу скрипт заново, "nil" отобразится как текст,
  • 9:44 - 9:46
    и ошибки больше не будет.
  • 9:46 - 9:51
    Наша функция готова для того, чтобы быть
    использованной в следующем скрипте.
Title:
Lua Scripting with REAPER 5 - Part. 1: The Console Output
Description:

more » « less
Video Language:
French
Duration:
09:57

Russian subtitles

Revisions