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

English | 日本語

Synthesizer V Studio 2 Pro にはスクリプト機能が備わっています。ユーザーは、自身でスクリプトを作ることでエディタに新機能を追加できます。

スクリプトの考え方はプラグインシステムに似ていますが、動的にリンクされたオブジェクト(例えば .dll)をロードする代わりに、Synthesizer V Studio はソースコード形式でスクリプトをロードします。そのため、スクリプト開発に必要なのはテキストエディタだけです。一度記述したスクリプトは、Synthesizer V Studio がサポートするすべてのプラットフォーム(Windows、macOS)に移植可能です。

対応言語

機能

スクリプトで何が可能なのか?

  • ノート/グループ/パラメータ/トラックの読み取り、追加、編集、削除 ...
  • 現在の選択範囲(ノートとグループ)へのアクセスと変更
  • プロジェクトのナビゲーション(例:特定の範囲をスクロール、ズーム)
  • プレイバックの制御
  • カスタマイズ可能なダイアログを通したユーザーとのインタラクション
  • 非同期コールバック機能 (例: SV#setTimeout を呼び出して関数の実行を遅らせる)

はじめに

  • 基本的な例 を見てみましょう。
  • より高度な例 も見てみましょう。
  • テストスクリプト を見て学びましょう。
  • 不明点については、クラスリファレンスを確認してください。
  • ローカライゼーション を使用して国際化しましょう。
  • 上級者の方は メモリ管理 を理解しましょう。

プログラミングの考え方

Synthesizer V Studio のスクリプト API はオブジェクト指向です。JavaScript と Lua スクリプトは呼び出し方法が若干異なりますが、同じ API を共有しています(下記セクション参照)。

ユーザーが操作できるオブジェクトには、データオブジェクトと UI 状態オブジェクトの 2 種類があります。

  • データオブジェクトは、トラック、ノート、パラメータ ... など、プロジェクトの一部です。同様のスクリプト可能なソフトウェアで作業したことがあれば、すでにこれらに精通しているかもしれません。
  • UI 状態オブジェクトはユーザーインターフェースの抽象化です。例えば、PlaybackControl オブジェクトは、再生、一時停止、ループ、シーク動作を管理します。

他のプラグインとの違い

他の多くのプラグインやDAWにおいても、Synthesizer V Studio と同様にスクリプト機能を提供しています。例えば、VOCALOID は Job Plugin をサポートとし、 REAPER には ReaScript が組み込まれています。 これらのプラットフォームにおいてスクリプティングの経験があれば、 Synthesizer V Studio のスクリプト機能の利用も比較的容易に始められます。 正し、プログラミングモデルに重要な違いがあります。

  • 多くのスクリプト環境では、API はグローバル関数として公開されています。 これに対して Synthesizer V Studio では SV という単一のグローバルオブジェクトのみが公開され、ほとんどのプロジェクトデータとのやり取りは専用のデータ型オブジェクトのメソッドを通じて行われます。
  • VOCALOID の Job Plugin は MIDI イベントの概念に基づいているのに対して、 Synthesizer V Studio ではノート、パラメータ、 グループ、 トラックがオブジェクトして表現され、プロジェクトファイル内の構造を忠実に反映しています。

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