Synthesizer V Studio スクリプトマニュアル

English | 日本語

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)。