基本

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をこんなにも簡単に追加出来ると分かると、夢が広がりますよね。


MeldaのMChannelMatrixでチャンネルルーティング

MeldaProductionが出しているフリーのプラグインバンドルMFreeFXBundleには、いろいろと便利なプラグインが含まれています。今回はその中の一つMChannelMatrixを紹介します。


MChannelMatrixについて

MChannelMatrix01

MChannelMatrixはMeldaProductionから無料配布されているプラグインで、入力オーディオのチャンネルを指定のチャンネルに切り替えて出力するプラグインです。例えば、2chのステレオオーディオなら、LとRを入れ替えるとか両方のチャンネルをLの音にするとかいったことが可能です。

ステレオ入出力だけでなく8chなどのマルチチャンネルにも対応していますので、例えば2chの音源を4chの各チャンネルに振り分けたり、特定の目的で(例えばサラウンドのチャンネル順の修正等)チャンネルを入れ替えたりといった様々な用途に利用出来ます。

↓ MeldaProductionのMChannelMatrixについてのページはこちら

プラグインのインストール方法

MeldaのプラグインはMeldaProductionのDownloadページにあるインストーラーを使ってインストールします。インストーラーは1種類しかなくて、それにすべてのプラグインが含まれています。

インストールの途中でどのプラグインを入れるか指定するところがあるので、そこでMFreeFXBundleをクリックしてやれば、フリーのプラグインが選択されてインストールされます。

インストール方法の詳細は過去にまとめてあるのでそちらのページをご覧下さい。


MChannelMatrixの使い方

ここではREAPERでどのように使うかを示します。

基本的な使い方

MChannelMatrixの使い方は簡単で、Track FXにインサートして、入出力チャンネルの対応付けチェックを設定するだけです。

マトリックスの見方は、左側から各チャンネルの入力音声が入ってきて、チェックを入れたところから下方向の出力先チャンネルに出ていくという感じです。縦一列に全くチェックが入らない場合、そのチャンネルからは何も出力されないことになります(そのチャンネルが無音になる)。

MChMtx_InOut

[Volumes]というところをクリックすると、マトリックスに出力音量設定が表示されます。音量もここで調節したいという場合に使用します。

ChMtx_Volumes

SIDE-CHAIN側のマトリックスで、サイドチェイン入力についてもチャンネルルーティングを行えますが、普段滅多に使うことはないでしょう。


マルチチャンネル(サラウンド)での使い方

マルチチャンネルの場合2chより多くのチャンネルを使用するため、Trackのチャンネル設定などいくつかセットアップする必要があります。例えば8チャンネルを使用する場合、以下のような手順でセットアップします。

  1. Trackのオーディオチャンネル数設定
    Trackの[Route]ボタンをクリックし、[Track channels]を8に設定します。
    TrackCh8
  2. FXへの音声入出力ルーティング設定
    MChannelMatrixのFXを表示した状態で、FXウィンドウ上部の [8/16 in 8out] をクリックして、プラグインの入出力設定を行います。通常はデフォルトで以下の画像のように正しく設定されているハズなので、ここでは確認するだけです。
    TrackFX_InOut
  3. MChannelMatrixのサラウンド機能有効化設定
    MChannelMatrix右側のプラグインツールバーにある、Channel Modeでサラウンドを有効化([Activate Surround]で有効化し、一旦DAWを再起動する必要あり)して、その後Channel Modeを [Surround] にします。
    このプラグインツールバーのChannel Mode設定方法についてはこちらの記事で解説しているので、参考にしてみて下さい。
    MChMtx_ChModeSurround
    サラウンドに切り替えるとこうなります。
    MChMtx_Surround

これでセットアップが完了したので、MChannelMatrixをマルチチャンネルで使用できます。使い方はチャンネル数が増えただけで、ステレオの時と変わりません。


VOICEPEAKとREAPERで簡単に音声合成する方法

初稿:2022/12/05 00:10 - 最終更新:2023/02/04

前回はVOICEVOXとREAPERで音声合成を簡単に行う方法を紹介しましたが、今回は類似の音声合成ソフトであるVOICEPEAKをREAPER上で簡単に使う方法を紹介します。


VOICEPEAKとは

VoicepeakLogo

VOICEPEAKはDreamtonics社の開発した最新のAI音声合成技術syllaflowを搭載し、手軽に読み上げさせることが可能な入力文字読み上げソフトです。ただしこのソフトはフリーソフトではなく、販売されている商品となりますので、ご利用になる場合は別途購入する必要があります。


PeloReaper ExtensionのVOICEPEAK Integrationについて

VOICEPEAK v1.1.0ベータ版からは、VOICEPEAKのエディタだけでなく、コマンドラインでの実行もサポートしました。PeloReaperにはそれを応用したVOICEPEAK Integration機能が実装されています。

逆にこのv1.1.0ベータ版より前のバージョンや体験版などを用いても正しく動作しませんので、PeloReaperの機能を用いるには、VOICEPEAKの製品版の購入が必須となる点にご注意下さい。また、ベータ版については、製品購入後AHSのユーザー登録を経て、ユーザーのダウンロードページにてダウンロードが可能となっています。


環境構築方法

PeloReaper Extension for REAPERをインストール

以下の記事を参考に、PeloReaper Extension for REAPERを事前にインストールしておいて下さい。



VOICEPEAKのインストール

VOICEPEAKを購入後、インストーラーで普通にインストールを行って下さい。一旦VOICEPEAKを起動して、VOICEPEAKエディタ上で普通に音声合成が出来るかどうかチェックして下さい。

VoicepeakEditor01
↑ 普通に文章の読み上げが出来ていればOK


PeloReaperのVOICEPEAK環境設定

REAPER上で以下のActionを実行して、環境設定のウィンドウを表示します。

[PeloReaper] VOICEPEAK: Show VOICEPEAK settings window...

ウィンドウ上の[voicepeak.exe Path]というテキストボックスに、インストールしたvoicepeak.exeの場所を設定します。

VPI_SetupPref
↑ 自分でインストールした場所を設定する

あとは[Save and rebuild cache]ボタンを押せば完了です。この時、VOICEPEAKを今後実行するのを高速化するためのキャッシュ情報が構築されます(進捗が分かるウィンドウが表示されます)。環境によりますが、数秒~数十秒程度で終わるのでしばらくお待ちください。

また、今後AHSからVOICEPEAK製品が登場する予定になっているようですが、新製品をインストールした場合もこのキャッシュ構築が再度必要になりますので、覚えておきましょう。

これで環境構築は完了です。


REAPER上で音声合成を行う

REAPERで以下のActionを実行します。

[PeloReaper] VOICEPEAK: Generate dialogue with VOICEPEAK TTS...

TTS設定のウィンドウが表示されますので、ナレーターを選択してテキストを入力し、[Generate]ボタンをクリックすれば音声合成が実行されます。

VPI_TTS01

Emotionsグループでは感情パラメータ、Optionsグループでは話す速度やピッチの調整が可能です。速度やピッチの値の範囲については、数値入力のボックスにマウスカーソルを重ねるとヒントが表示されます。

VPI_Tooltip01

ちなみに上記ダイアログのテキストボックスは複数行入力できるようになっており、行を分けるとそれぞれが1つのwavファイルとして生成されるようになっています。

↓ 実行例
VPI_TTSEx02

CSVファイルを使って沢山のセリフを一括音声合成

セリフが沢山あるという場合、一括で音声合成を実行できると便利なので、CSVファイルでの一括音声合成機能も実装しました。行ごとにナレーターや配置時刻も指定可能です。

CSVファイルを用意して音声合成を実行

CSVファイルの仕様はPeloReaperのマニュアルPDFに記載されているのでそちらに譲るとして、CSVの行ごとに、以下のような情報を用意します。

  • ナレーター名
    ナレーター(話者)の名前を指定します(例:Female 1)。
  • セリフテキスト
    音声合成されるセリフのテキスト
  • 配置時刻(省略可能)
    秒もしくはタイムコード(HH:MM:SS:FF)で指定

他にも感情設定など細かく設定は可能ですが、そのあたりはPeloReaperのマニュアルをご覧下さい。PeloRaperのマニュアルは以下のActionで表示することができます。

[PeloReaper] Misc: Open PeloReaper document (ExtensionGuide: Japanese/English)

VPI_CSV01

Excelだと最低限で上図のような感じに記入してから、CSVファイルとしてファイルに保存します(Excelメニューの「ファイル>名前を付けて保存>CSV(コンマ区切り)で保存)。

VPI_CSV02
↑ 書き出したCSVファイル

1行ごとに最低限2つのフィールド(ナレーター名、テキスト)は必須ですが、それ以降の項目は任意です。CSVの行の先頭にシャープ(#)を記入すると、その行はスキップされます。

CSVファイルを用意出来たら、以下のActionでそのCSVファイルを選択すれば、一括で音声合成が行われてwavファイルが自動的にREAPERにインポートされます。

[PeloReaper] VOICEPEAK: Generate dialogue with VOICEPEAK TTS (CVS: ShiftJIS)...

ナレーター名について

ナレーター名は以下のActionを実行してCSVファイルに情報をかき出すことで、確認することが可能です。

[PeloReaper] VOICEPEAK: Save VOICEPEAK narrator infos to csv file...

NarratorInfos01
↑ ナレーター名と利用できる感情パラメータ一覧

セリフTrackを用いたセリフ作成と音声合成の効率化

セリフTrackとEmpty Itemを用いることで、台本作成やセリフの配置作業を効率的に行う仕組みを実装しましたので、それについて説明します。

Empty Itemについて

REAPERのItemにはメモ書き(Item Notes)を設定出来ますが、Empty Itemを用いるとItem上にそのメモ書きを表示してくれるという便利な機能があります。セリフをEmpty Itemで配置して、それらを一括で音声合成することも可能です。

ちなみにEmpty Itemは何かTrackを選択し(配置先)、時間選択範囲を指定して、

Insert empty item

というActionを実行すれば作成できます。このEmpty Itemをダブルクリックするとメモ書き(Item Notes)を記入するダイアログが出ますので、そこでセリフを設定します。

EmptyItem01

セリフTrackの作成

Empty Itemを配置したTrackの名前にナレーター名を記載することで、このTrackがセリフTrackになります(後でこの名前は音声合成などに用いられます)。

↓ セリフTrackを作成した例
VPI_DlgTracks01

PeloReaper v2023.02.03以降では、選択したTrackにNarrator名をGUIで選択して設定するActionを追加してありますので、簡単にセリフTrackのセットアップが行えるようになりました。

[PeloReaper] VOICEPEAK: Set VOICEPEAK narrator name to selected tracks...
VoicepeakNarratorSelection

セリフ用Empty ItemをGUIで編集

Itemを一つ選択して以下のActionを実行すると、そのItemのItem NotesをGUIで編集出来ます。また、Narrator名もこのItemのあるTrackのTrack名に設定されます。

[PeloReaper] VOICEPEAK: Edit item notes and select narrator(track name) with dialog...
VPEditItemNotesDialog

選択したセリフ入りEmpty Itemから音声合成

セリフTrack上にある、セリフを記入したEmpty Itemたちを選択状態にして、以下のActionを実行すれば即座に音声合成を行うことが出来ます。

[PeloReaper] VOICEPEAK: Generate dialogue from selected item notes with VOICEPEAK TTS

↓ 実行例(クリックで拡大)
VPI_TTSEx01

セリフTrackのCSVエクスポート・インポート

セリフTrackを選択して以下のActionを実行することで、選択したセリフTrackの情報をCSVファイルに書き出すことが出来ます。

[PeloReaper] VOICEPEAK: Save selected dialogue tracks to csv file...

逆に以下のActionでCSVをインポートすることも可能です。

[PeloReaper] VOICEPEAK: Create dialogue empty items from csv file (CSV: UTF8/ShiftJIS)...

これらのActionを使うことでセリフTrackの情報を読み書き出来るので、セリフの台本をREAPER上で作ったり、CSVをExcelで編集することで作ったりと、方法を自由に選択出来るようになっています。


音声の調整について

音声の細かい調整についてはREAPER上で出来ませんが、今のところ以下のような使い方を想定しています。

  1. 音声合成を実際にやってみて、読み方がそもそもおかしいとかイントネーションがおかしいといった場合は、VOICEPEAKエディタのユーザー辞書管理機能(ウィンドウ上部の本のようなアイコン)で調整する(大抵の他のTTSソフトでもこの辞書育成が肝になっているので、慣れている人にとってはお馴染みかと思います)。
  2. どうしても細かい発音調整が必要なセリフに関してのみ、VOICEPEAK Editorでセリフ入力&調整してwavを書き出し、手動でREAPERにインポートする。

そのうちもうちょっと良いワークフローが思いつくかもしれませんが、現状での筆者の利用方法想定は上記のような感じです。


おまけ:動画に字幕・テロップを簡単に付ける

VOICEPEAKで声をあてて何かの簡単な解説動画を作るような場合、更に手っ取り早く字幕を付けたいと思うことも多いでしょう。それをサポートする機能がPeloReaperにありますので、こちらの記事もどうぞ。


最後に

VOICEVOXの場合と同様、REAPER上でサクっとVOICEPEAKを呼び出せたら作業が楽になりそうだったので、今回の機能を実装してみました。Action名などもVOICEVOXのものとほぼ同じようなものにしてあります。

VOICEPEAKの製品購入が必要な点は若干敷居が高いかもしれませんが、興味のある人に使ってもらえたら嬉しいです。


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

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

twitter: @pelori

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