Synthesizer V Studio スクリプトマニュアル
Synthesizer V Studio Pro にはスクリプト機能が備わっています。ユーザーは、自身でスクリプトを作ることでエディタに新機能を追加できます。
スクリプトの考え方はプラグインシステムに似ていますが、動的にリンクされたオブジェクト(例えば
.dll
)をロードする代わりに、Synthesizer V Studio
はソースコード形式でスクリプトをロードします。そのため、スクリプト開発に必要なのはテキストエディタだけです。一度記述したスクリプトは、Synthesizer
V Studio がサポートするすべてのプラットフォーム(Windows、Linux、macOS)に移植可能です。
対応言語
機能
スクリプトで何が可能なのか?
- ノート/グループ/パラメータ/トラックの読み取り、追加、編集、削除 ...
- 現在の選択範囲(ノートとグループ)へのアクセスと変更
- プロジェクトのナビゲーション(例:特定の範囲をスクロール、ズーム)
- プレイバックの制御
- カスタマイズ可能なダイアログを通したユーザーとのインタラクション
- 非同期コールバック機能 (例:
SV#setTimeout
を呼び出して関数の実行を遅らせる)
はじめに
- 基本的な例 を見てみましょう。
- より高度な例 も見てみましょう。
- テストスクリプト を見て学びましょう。
- 不明点については、クラスリファレンスを確認してください。
- ローカライゼーション を使用して国際化しましょう。
- 上級者の方は メモリ管理 を理解しましょう。
プログラミングの考え方
Synthesizer V Studio のスクリプト API はオブジェクト指向です。JavaScript と Lua スクリプトは呼び出し方法が若干異なりますが、同じ API を共有しています(下記セクション参照)。
ユーザーが操作できるオブジェクトには、データオブジェクトと UI 状態オブジェクトの 2 種類があります。
- データオブジェクトは、トラック、ノート、パラメータ ... など、プロジェクトの一部です。同様のスクリプト可能なソフトウェアで作業したことがあれば、すでにこれらに精通しているかもしれません。
- UI 状態オブジェクトはユーザーインターフェースの抽象化です。例えば、
PlaybackControl
オブジェクトは、再生、一時停止、ループ、シーク動作を管理します。
VOCALOID Job プラグインとの違い
ヤマハ の VOCALOID も、Lua スクリプト(「Job Plugin」)に対応しています。 VOCALOID 用のスクリプトは Synthesizer V Studio ではお使いいただけません。主な違いは以下の通りです。
- Job Plugin では、すべての API はグローバル関数として公開されています。Synthesizer V Studio
API では、グローバルオブジェクトはホストオブジェクト
SV
のみです。データ構造体とのインタラクションのほとんどはそれらのメソッドを介して行われます。Synthesizer V Studio API では、ノート、パラメータ、グループ、トラックへのランダムアクセスが可能です。
JavaScript と Lua の重要な違い
添え字
JavaScript の添え字は 0 から始まります。Lua の添え字は 1 から始まります。スクリプト API においてももちろん同様です。
例えば JavaScript における NoteGroup.getNote(0)
は Lua
においては NoteGroup:getNote(1)
となります。
メソッドの呼び出し
JavaScript API でのオブジェクト指向はプロトタイプベースです。呼び出しは
Class.Method(...)
という形を取ります。
Lua API ではメタテーブルベースとなっており、呼び出しは Class:Method(...)
という形を取ります。
ただし、メンバオブジェクトについては Lua でもドットでアクセスされます(例:SV#QUARTER
)。