作り方

PeloReaper Extensionの情報やダウンロードはこちらからどうぞ。
PeloReaper Extension for REAPER is here.
ReaperBanner01_w250 AudioSoftBanner01_w250

ReaScript入門(1): ReaScriptの初歩的なこと~Hello World

今回からREAPER上で動作させられるスクリプトやその動作環境などについて解説していきます。少しでもReaScript入門のハードルを下げていければと思っていますが、どうなることやら。


ReaScriptイントロダクション

ReaScriptとは

ReaScriptとはREAPER上で動かせるスクリプト(もしくはその実行環境のこと)を指します。厳密な解説は下記リンクの公式サイトに譲るとして、ひとまず「スクリプトを追加することでREAPERのActionを追加できる」のだと理解していれば十分かと思います。

ReaScriptからはREAPER本体やExtensionから提供されるAPIを呼び出したり、他の既存のActionを実行したりといったことが出来ます。APIはActionを作るためのプログラムの部品のようなもので、例えばTrackの個数を返してくれる関数など様々なものがあります。

では「これで何を実現できるか」というのは多岐にわたるのですが、例えば以下のようなものでしょうか。

  • 手間がかかる定型作業を1つのAction(スクリプト)で実行させるような自動化(Item編集やMIDI編集、FXのパラメータ設定等様々な作業に応用可能)
  • 既存のActionの動作では満足いかなかった場合に、自分専用にカスタムした動きのActionを作って作業オペレーションを最適化
  • カスタムGUIを作成して自分用のツールを作る
これらの他にもアイデア次第で自分のやりたい事を実現出来ると思います。

また、REAPER上で動作するスクリプトという意味では、オーディオFXやMIDI FXを作れるJSFX、動画などの画像処理を行うVideo Processorスクリプトなどもありますが、この記事の系列では扱いません。Video Processorについてはこの辺りで過去にいろいろ記事を書きましたので、そちらを見てもらうと良いかと思います。


ReaScript自作の必要性

ではどういった時にReaScriptを自作する必要があるのでしょうか?

REAPERを使い始めた初心者の方は、いきなりReaScriptを書く必要はありません。既に便利なActionやスクリプトが沢山ありますので、それを使って自分の作業環境を良くしていければ十分じゃないかと思います。

ReaScript自作に手を出す前に、試しに使ってみて把握しておくと良さそうなところをいくつかリストアップしておきますので参考にしてみて下さい(下に行くほど高度・面倒)。

  • デフォルトでREAPERに実装されている様々なActionを使ってみる。
  • SWSもインストールして、これに含まれるActionも使ってみる。
  • REAPER標準のCustom Action(複数のActionを並べて順番に実行できる、一般的なツールだとマクロ機能のようなもの)でActionを組み合わせて実行してみる。
  • ReaPackで有志の方が作成したスクリプトをダウンロードしていろいろ試してみる。
  • おまけとしてSWSのCycle Actionを試すのもアリですが、もうこのあたりからプログラミング色が強くなってきます(プログラミングに慣れてくればReaScriptで書いた方が楽かも)。

こういった既存の機能をいろいろと使っていくと、それらでは細かいところに手が届かないように感じたりする場面が出てきたりします。そう感じて更に自分に最適なActionが欲しくなってきたら、いよいよReaScriptを書く必要性が高まってきたと言えるでしょう。

とはいえReaScript自体に興味があるなら、もろもろすっ飛ばしていきなりスクリプトを作り始めてもいいと思います。上記の内容はあくまで参考までにということで。


ReaScript作成に使用できるプログラミング言語

ReaScriptを作成するのに使用できる言語はReaScript公式ページに記載されていますが、EEL2、Lua、Pythonから選ぶことが出来ます。Pythonはセットアップが必要なので、デフォルトの状態で使えるのはEEL2とLuaになります。

言語追加セットアップ解説
EEL2 不要 REAPERを含むCockosのツール専用の範囲ではあちこちで使われている言語。Video processorやJSFX等のオーディオ処理等にも用いられており、スクリプト実行パフォーマンスが良いとされています。REAPER内のみだけでスクリプトを組む前提なら、覚えておくといろいろなものを作れるようになるので便利な一方、REAPER以外ではほぼ使われていない言語なので、3つの言語のうち習得ハードルは最も高いと言えるでしょう。
Lua 不要 ReaScriptを書くのに最も標準的に使われている言語で、ネットにもLua言語解説の記事は多数存在するので習得が比較的容易です。REAPER以外のオーディオ関連ツールでもLuaの採用率は高い(例:Steinberg HALion、UVI Falcon、SurgeXT、Synthesizer V、Renoiseなど)ので、習得しておくとREAPER以外でも役に立つ可能性があります。何か特別な理由がなければLuaがオススメです。
Python 必要 上記2つの言語が割とコンパクトな規模のものなのに対して、様々なモジュールを用いて複雑な作業を割と容易に実現できるのがPythonの良いところ。言語自体の解説記事なども多く、習得が比較的容易。一見最強の選択肢に見えますが、いくつかデメリットも存在します。
  • REAPERでPythonを使うには追加のセットアップが必要。スクリプトを他人に配るなら、相手側にも同じPythonをインストールしたりする必要があったり、それに伴う面倒な環境依存問題に悩むことがあるかも。
  • 公式サイトにも書かれていますが、一部の機能がPythonではサポートされていなかったりします。
  • うろおぼえ的な記憶だと、Pythonスクリプト起動には若干時間がかかるので、スクリプトを高速に連打するようなことをやるとLuaと比べてかなり処理が遅くなることもあったような・・・(最近試してないので、既に改善されている可能性はあります)。

いろいろ書いてしまいましたが、ザックリまとめると

  • 一般的にはLuaがオススメ
  • 多少手間はあるけど複雑な事をサクッとやりたいならPythonも使う
あたりが落としどころでしょうか。

※今後の記事ではLuaを使用することを前提として解説を進めていきます。また、Lua言語自体の書き方や言語仕様等の説明も出来るだけ割愛させて頂くことにして、ReaScript固有の部分に的を絞って解説しますのでご了承下さい。


(おまけ)REAPER Extensionについて

REAPERのAPIは上記で紹介したスクリプト言語からだけでなく、C言語から呼び出す方法も用意されています。C言語で作成されたREAPERのプラグインは特別にREAPER Extensionと呼ばれています。こちらはLua等のテキストファイルを追加すればサクッとActionを追加出来るというような代物ではなく、作成のハードルは非常に高くなっています。

過去に当ブログでもREAPER Extensionの作り方についてこの辺りの記事で解説していますが、ゴリゴリのエンジニア向けの内容となります。本記事の読者向けには「まぁそんなものもあるのね」くらいに知っておいてもらえればOKです。


ReaScriptを作成してみる

ReaScript作成~実行方法

それでは簡単なReaScriptを作成して、実行してみましょう。

  1. REAPERメインメニューから [Actions > Show action list...] でAction Listを表示します。
  2. Action List下部にある [New action...] ボタンをクリックして [New ReaScript...] を選ぶと、スクリプトの保存場所を聞かれます。 ReaScript_HelloWorld_AddNewScript
  3. ファイルの種類は [Lua files (*.lua)] で、ファイル名は任意に指定します(ファイル名はそのままAction名になるのと、利便性の都合上日本語は用いずに半角英数のみのファイル名にしておくのがオススメです)。
    ここでは HelloReaperWorld.lua という名前にして保存します。
    ReaScript_HelloWorld_AddNewScriptFile
  4. 保存するとスクリプトを編集するテキストエディタが表示されますが、実はもうこの時点でスクリプト自体の作成(とそれに対応するActionの追加)は完了していて、Action Listに「Script: HelloReaperWorld.lua」というActionが並んでいると思います。もちろん、実行も可能です(スクリプトが空なので何も起きませんが)。
    ReaScript_HelloWorld_Action

Hello World:テキストを表示するプログラムの作成

では作成したスクリプトにエディタ上で以下のコードを追加して、Ctrl+Sで保存してみましょう。保存すると、同時にActionも実行されます。

reaper.ShowConsoleMsg("Hello REAPER World!!")

ReaScript_HelloWorld_Code_01

REAPERのコンソールウィンドウが開いて、「Hello REAPER World!!」と表示されたのではないでしょうか。
ReaScript_HelloWorld_Result

これでLuaによる初めての自作ReaScriptの完成です! あとはいつでもAction Listから呼び出すことが可能です。

プログラムの簡単な解説

  • REAPERのAPIは、Luaだと「reaper.API名(パラメータ)」のような形で呼び出せます。
  • 「ShowConsoleMsg」はREAPERのコンソールウィンドウにメッセージを表示するAPIで、パラメータとして "Hello REAPER World!!" という文字列をセットしています。

作成したスクリプトを後から修正したい場合

また、後からこのスクリプトを修正したい場合は、追加したスクリプトのActionをAction Listで選択して [Edit action...] ボタンで編集出来ます。

ReaScript_HelloWorld_EditScript


作成したスクリプトを削除したい場合

既に作成してあるスクリプトのActionを選択して、Action Listの [Delete] ボタンで削除できます。

ReaScript_HelloWorld_DeleteScript


既に作っておいたScriptを読み込んでActionにしたい場合

最初にスクリプトを作成する時と似ていますが、Action Listのボタンで [New action... > Load ReaScript...] からスクリプトのファイルをロードすればOKです。

ReaScript_LoadScriptFile



今回はここまで。前置きが長かった割に、スクリプトを作り始めたらあっという間だったのではないでしょうか。Actionをこんなにも簡単に追加出来ると分かると、夢が広がりますよね。


REAPERのステップシーケンサー (1) Megababyとドラムマップ

REAPER付属のステップシーケンサーとその改造版(MOD)などの情報をまとめておきます。ステップシーケンサーのMOD!? と思うかもしれませんが、REAPERのステップシーケンサーはJSスクリプトで出来ているので、頑張れば自分で改造できてしまうのです。


REAPER付属のステップシーケンサー

REAPERには標準でステップシーケンサーがいくつか付属していますので、まずはこれらを軽く紹介します。このステップシーケンサーはMIDI FX扱いなので、FX追加ウィンドウのAll PluginsかJSカテゴリの中を探すとあります。


MIDI Sequencer Baby

もともとREAPERに付属していたもので、無印のバージョン1とバージョン2(v2)があります。

SeqBabyV1
JS: MIDI Sequencer Baby

SeqBabyV2
JS: MIDI Sequencer Baby v2

見た目はスッキリですが、機能としてはちょっと物足りないかなという感じです。実際、後述のMODが良くできているので、恐らくこれら古いバージョンを使う機会はないでしょう。ただ、もし自分でMODが作りたいというのであれば、これらはプログラム自体もシンプルなので参考にしやすいのではないかと思います。


MIDI Sequencer Megababy

これも現在ではREAPERに付属していますが、もともとはjnif氏が作成したMOD版(sequencer_baby_v2_jnif)のようです。

SeqMegababy

左側にピアノロール・ドラムマップ表示が追加されたり、Note毎のパラメータ設定が出来たりと、かなりパワーアップしています。

これについては過去に後正面氏のブログにて紹介されているので細かくは説明しませんが、ここまでくると結構機能も増えて実用に耐えそうな感じですね。


Megababyのドラムマップについて補足

NI Battery 3/4用のドラムマップファイルインストール方法

Battery4
↑ NI Battery 4

Megababyのスクリプトを開くと分かりますが、jnifさんが配布していたものに付いていたNI Battery 3/4 用のドラムマップファイルは、REAPERには付属していません。REAPER公式のResourcesサイトで配布されている sequencer_baby_v2_jnif.zip に含まれているので、以下のリンクのページからダウンロードしましょう。

DownloadBabyv2jnif

ダウンロードしたzipを解凍するとseqbaby_data というフォルダがあるので、これをREAPERリソースフォルダ(REAPERのメニューから [Options>show REAPER resource path in explorer/finder...] で開く)にある Data フォルダ内にコピーすればインストール完了です(既に_Default Kit.txtだけがあるseqbaby_dataフォルダがあるかと思いますが、上書きでOK)。
CopyBatteryDrumMap
↑ こんな感じの配置になるようにコピー

Battery 3/4標準付属のドラムキット全部に対応しているのか確認してはいませんが、Batteryをよく使う人は試してみると良さそうです。


ドラムマップファイル作成方法

各ドラムマップのテキストを開くと分かるように、各行にMIDI Note番号と表示名をTab文字で区切って列挙しただけのシンプルなファイルなので自分で作ることも可能です。Batteryに限らず他のドラム系プラグインと一緒に使う場合でも、頻繁に使うキットのドラムマップを作っておけば便利そうです。

もちろんテキストエディタで一行ずつ入力していくのもよいのですが、ここではExcelを使う方法を紹介しておきます。Excelなら連番入力なども入力しやすいですし、REAPER関連の設定ファイルはテキストで出来ていることが多いので、他でもこのやり方が役立つ場合があります。

また、ExcelはバージョンによってGUIや手順が若干違うかもしれませんので、そのあたりは適宜読み替えて下さい。

まずは既存のドラムマップファイルをExcelで読み込む方法。

  1. Excelでファイルを開く時に、ファイルの種類を [テキスト ファイル(*.pm;*.txt;*.csv)] に設定して、ドラムマップのテキストファイルを開きます。
    ExcelLoadText01
  2. ウィザードの[元のデータ形式]で [カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ] を選択して [次へ]。
    ExcelLoadText02
  3. ウィザードの[区切り文字]で [タブ] を指定して[次へ]
    ExcelLoadText03
  4. 列のデータ形式は標準のままで問題ないかと。これで[完了]
    ExcelLoadText04
  5. 読み込めた状態
    ExcelLoadText05

そしてExcelからの書き出し。こちらは簡単で、ファイルに名前を付けて保存から [ファイルの種類] に [テキスト (タブ区切り) (*.txt)] を選択して保存するだけです。
ExcelSaveText01

先頭に1つ追加してみた例
ExcelSaveText02

簡単ですね。


このブログについて
ぺろりがREAPERで遊びたいというだけのブログかもしれない

必ずこちらをお読みください

twitter: @pelori

管理人用
  • ライブドアブログ