😎

はじめて作る UTAU プラグイン(開発チュートリアル)中編

2024/06/08に公開

つづき

前編では、UTAU プラグイン開発の前段階として、アプリ作りの流れを実践しました。

中編では、UTAU プラグイン開発に必要な知識を整理していきます。

UTAU プラグインの仕組み

このチュートリアルで作るプラグインは「半音上げプラグイン」です。選択された音符を半音上げるプラグインです。

ユーザーの操作としては以下のようになります。

  1. UTAU 画面で音符を選択する
  2. UTAU から半音上げプラグインを起動する
  3. (必要に応じて半音上げプラグインの画面上で何かしらの操作をする)
  4. UTAU 画面の音符が半音上がる

これを「アプリの動作」という観点から見ると、以下のようになります。

  1. [UTAU]選択された音符の情報をファイルに保存
  2. [半音上げプラグイン]そのファイルを読み込み、選択された音符の情報を把握
  3. [半音上げプラグイン]音符を半音上げる
  4. [半音上げプラグイン]変更後の音符の情報をファイルに保存
  5. [UTAU]そのファイルを読み込み、変更後の音符を画面に反映

つまるところ、プラグインがやるべきことというのは

  • 音符情報ファイルの読み込み
  • 音符の変更(半音上げる)
  • 音符情報ファイルの保存

となります。今回作る半音上げプラグインに限らず、UTAU プラグイン共通の考え方です。

音符情報ファイルの中身

プラグインが読み込む(=UTAU が保存する)音符情報ファイルはどのような内容なのでしょうか。実は、簡単に確認できます。

UTAU で何か音符を入力してから、[ツール → プラグイン → スクリプト表示]メニューでスクリプト表示プラグインを起動してみてください。音符情報ファイルの内容が表示されます。

音符情報ファイルは INI ファイルと同じような形式になっており、[#SETTING] [#0000] といったセクション(UTAU ではセッションと呼んでいます)ごとに情報がまとめられています。

[#0000] [#0001] のような数字のセクションが音符を表しており、Lyric=あ なら歌詞が「あ」、NoteNum=60 なら音高が「C4」といった具合です。NoteNum の数字は大きいほうが音が高くなります。

[#0000]
Length=480
Lyric=あ
NoteNum=60
Intensity=100
Moduration=0

音符情報ファイル(一時ファイル)の詳しい情報は、UTAU 公式ブログUTAU ユーザー互助会@ウィキにまとめられています。

さてここで、[#0000] セクションにある NoteNum= の後ろの数字を 1 増やしてみてください。例えば、NoteNum=60 なら NoteNum=61 に増やします。

OK ボタンをクリックすると、先頭の音符が半音上がったことと思います。

まさに、半音上げプラグインでやるべきことがこれです。音符情報ファイルの NoteNum= の後ろの数字を 1 増やし、音符情報ファイルを更新することにより、半音上げプラグインとしての動作ができます。

UTAU プラグイン開発準備

半音上げプラグインは UTAU プラグインとして、UTAU のメニューに登録される必要があります。

そのためには、2 つのことをする必要があります。

  1. プラグインフォルダーに plugin.txt を作成する
  2. プラグインフォルダーにアプリを配置する

plugin.txt の作成

UTAU をインストールしたフォルダーの中に plugins というフォルダーがあります。このフォルダーが様々なプラグインを配置するためのフォルダーです。

例えば、UTAU を C:\App\UTAU にインストールしているなら、プラグインフォルダーは C:\App\UTAU\plugins です。

プラグインフォルダーの中に サンプル というフォルダーがあり、その中に

  • plugin.txt
  • utauplugin.exe

という 2 つのファイルが入っています。

UTAU プラグインはこのように、plugin.txt とプラグイン本体(.exe ファイル)の 2 つのファイルが最低でも必要です。

まずは plugin.txt を作りましょう。

プラグインフォルダーの中に 半音上げ というフォルダーを作ってください。

メモ帳などのテキストエディタに以下の内容を入力し、半音上げ フォルダーの中に plugin.txt というファイル名で保存します。

name=半音上げ
execute=HanonAge.exe

注意点として、文字コードを Shift-JIS (ANSI) にしてください。例えばメモ帳の場合、デフォルトでは文字コードが UTF-8 になっているので、名前を付けて保存する際に、文字コードを ANSI にします。

アプリの配置

半音上げプラグインも同じフォルダーに配置されるように設定していきましょう。

前編で Hello world した時と同じように、Visual Studio で新しいプロジェクトを作成します。既に Visual Studio が起動している場合は、[ファイル → 新規作成 → プロジェクト]メニューで新しいプロジェクトを作成できます。

Hello world と同様、「Windows フォームアプリ C#」テンプレートを選びます。左側に「最近使用したプロジェクトテンプレート」が表示されているので、今回は簡単に選べます。

プロジェクト名は「HanonAge」とします(plugin.txt の execute に書いた名前(拡張子は除く)と同じにする必要があります)。フレームワークは .NET 8.0 とします。

新しい HanonAge プロジェクトが作れたら、アプリをプラグインフォルダーに配置するための設定をします。

右側ソリューションエクスプローラーで太字になっている「HanonAge」(ソリューションではなくその下)をダブルクリックすると、HanonAge タブが開きます。XML 形式でプロジェクトの設定が書かれています。

<PropertyGroup>~</PropertyGroup> の間に様々な設定が書かれていますが、ここに以下の 3 行を追加してください(</PropertyGroup> の前)。

<OutputPath>C:\App\UTAU\plugins\半音上げ</OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>

<OutputPath> がアプリを配置するフォルダーを指定しているところです。ご自身のパソコンの UTAU をインストールしたフォルダー名に合わせてください(先ほど plugin.txt を保存したフォルダーと同じフォルダーにします)。

この設定がうまくいったかを確認する前に、普通のアプリとして起動するか確認しましょう。[デバッグ → デバッグの開始]メニューをクリックし、Form1 アプリが起動することを確認してください。確認できたら Form1 アプリを終了します。

次に、UTAU プラグインとして起動するかを確認します。

UTAU の[ツール → プラグイン → リロード]メニューをクリックすると、[ツール → プラグイン → 半音上げ]メニューが表示されるので、クリックすると、Form1 アプリが起動します。

これで、開発中のアプリが UTAU プラグインとして起動できるようになりました。

今後 UTAU プラグインの内容を更新した際は、

  • Visual Studo の[ビルド → ソリューションのビルド]メニューで新しいプラグインをビルド
  • UTAU の[ツール → プラグイン → 半音上げ]メニューで起動

とすることで、更新したバージョンの動作確認をすることができます。

ちなみに、エクスプローラーで半音上げフォルダーを見てみると、HanonAge.exe が作成されているのが分かります(他にもいくつかのファイルが作成されています)。

中編まとめ

中編では UTAU プラグインの仕組みを学び、アプリをプラグインとして起動する設定を行いました。

また、半音上げプラグインがやるべきことは「音符情報ファイルの NoteNum= の後ろの数字を 1 増やす」ということを認識しました。

次回は、いよいよ半音上げプラグインを作成します。

次回

Discussion