fc2ブログ
 
■アフィリリンク

iTunes Store(Japan)
iTunes Store(Japan)
Mac ソフトのことなら act2.com
act2.com
リンクシェア アフィリエイト紹介プログラム

■プロフィール

飴屋/菖蒲

Author:飴屋/菖蒲
(あめや・あやめ)
「UTAU」の作者です。

■アクセスカウンタ

08/10/20設置

■リンク
■ブログ内検索

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ
■RSSフィード
■Amazon

アソシエイトリンク

UTAU編集プラグインの仕様
記事にするネタが思いつかないので、仕様を走り書きしてみる。
ちなみに実装はもう済んでたりします。

プラグインメニュー

↓興味ある方はどうぞ


UTAU編集プラグイン仕様

0.概要
UTAU編集プラグイン機能は、UTAU本体の編集機能を拡張する仕組みを提供する。
UTAU編集プラグインはUTAU本体から選択範囲の情報を受け取り、それを任意に編集して本体に返す。
UTAU編集プラグインはUTAU本体から呼ばれる実行ファイル形式をとる。

1.ファイル構成
plugin.txt    設定ファイル
[実行ファイル] プラグイン本体

実行ファイルは設定ファイルに記述するので、実行形式ならば任意の名前で良い。
これらのファイルはUTAUのディレクトリ下のplugins(2008/5/7訂正)ディレクトリの更に下にプラグイン毎のディレクトリを作成してその中に格納する。
プラグイン本体は必要に応じて複数ファイル構成にしても構わない。
ただし、実行時ディレクトリは規定できないので、プラグイン自身でモジュールパス取得API等を使用して関連ファイルの場所を取得すること。

2.設定ファイルの記述
設定ファイルには以下のエントリがある。

name=
execute=

nameにはプラグインの名前を記述する。この名前はメニューにそのまま表示されるので機能の名称であることが望ましい。
executeには本体がプラグインとして実行する実行形式ファイル名を記述する。

3.入出力の仕方

入力
UTAU本体は選択範囲の情報を一時ファイルに出力して、プラグインのコマンドライン引数にそのファイル名を渡す。
プラグインはそのファイルを読み込んで音符の情報を取得する。

出力
プラグインは選択範囲の情報を編集後、結果を標準出力に書き出す。
この際、一度書き出し始めたら途中でインターバルをあけずに、最後まで出力することが望ましい。

【仕様変更08/06/02】
プラグインは選択範囲の情報を編集後、結果を入力の一時ファイルに上書きしてください。


4.データ形式
以下のような複数のセッションからなるテキスト形式とする。
文字コードはShiftJIS、改行はCR+LFとする。

[#SETTING]
Tempo=174.00
VoiceDir=F:\work\くぎゅ\Kugyuloid
CacheDir=F:\xflv\もう少しもう少し\夕日坂\夕日坂kugyu.cache
[#PREV]
Length=480
Lyric=か
NoteNum=57
PreUtterance=7
VoiceOverlap=3
Intensity=75
Moduration=9
PBType=5
Piches=-200.12,-199.67,-198.31,-196.07,-192.95,-189,-184.23,-178.72,-172.47,-165.6,-158.09,-150.1,-141.62,-132.8,-123.64,-114.31,-104.81,-95.31,-85.81,-76.48,-67.32,-58.5,-50.02,-42.03,-34.52,-27.65,-21.4,-15.89,-11.12,-7.17,-4.05,-1.81,-0.46,-0.01
Flags=B0
[#0002]
Length=480
Lyric=え
NoteNum=62
PreUtterance=13
VoiceOverlap=6
Intensity=100
Moduration=9
PBType=5
Piches=-500.13,-497.59,-490,-477.57,-460.43,-439.11,-413.82,-385.34,-353.94,-320.61,-285.65,-250.16,-214.48,-179.71,-146.19,-114.95,-86.31,-61.14,-39.7,-22.64,-10.13,-2.56,-0.01
Envelope=0,50,35,0,100,100,0
[#NEXT]
Length=480
Lyric=り
NoteNum=62
PreUtterance=0
VoiceOverlap=0
Intensity=100
Moduration=9
Envelope=0,18,35,0,100,100,0

解説
#SETTING は読み取り専用で、ここを改変しても本体には反映されない。
#PREV には選択範囲の先頭の一つ前の音符の情報が格納される。
#NEXT には選択範囲の最後の次の音符の情報が格納される。
#PREV と #NEXT は選択範囲の場所によっては付加されないこともある。
#0000 のような数字のセッションが選択範囲の音符情報である。
 ※数字には意味が無く、格納順序通りに本体の選択範囲に適用されることに注意すること。

エントリ
Length 音符の長さ
Lyric 詞
NoteNum 音階番号
PreUtterance 先行発声
VoiceOverlap オーバーラップ
Intensity 音の強さ
Moduration モジュレーション
PBType ピッチベンドのタイプ("5"と"OldData"のみ可能)
Piches ピッチ数列
Envelope エンベロープ
Flags プロパティのflagsにBREとNoFormantFilterを表わす記号を付加した文字列。

エントリの省略
プラグインが結果を返す時、セッションのヘッダ([#0000]←これ)は省略できないが、
エントリに関しては送ったエントリが返されない場合、本体は「変更なし」と解釈するのでエントリ自体を省略することが出来る。
従って変更のない音符はセッションのヘッダだけを返せば良いことになる。

特殊なセッション
#INSERT
 プラグイン側で[#INSERT]というセッションを挿入すると、その位置に音符を追加することが出来る。
#DELETE
 プラグイン側で数字のセッション(選択範囲内の音符)を[#DELETE]に変えるとその位置の音符が削除される。

5.処理のキャンセル
プラグインからの出力に有効なセッションが含まれていない場合、本体は選択範囲に対して何も行わない。
よって、処理無しだからといって、入力と同じ文字列を返す必要は無く、何も返さないで終了するか、エラーメッセージ等を返すことで、処理のキャンセルは実現できる。

6.サンプルコード
 →VC++による実装サンプル
VC++による実装サンプル(修正版)
http://utau2008.web.fc2.com/utauplugin.zip

プラグインサンプル
UTAUマニュアル | 20:29:31 | Trackback(0) | Comments(14)
コメント
こんな機能も追加できるのでしょうか
作っていて感じたのは、音量を後から調整するときに一音づつプロパティを開いて確認、修正をするのが結構大変でした。
プラグインで音量の設定情報を抜き、グラフのようなものを表示して、そこから編集できたら便利そうだなぁと思いました
プログラムや音楽の知識はまったくないので的外れな事を言っていたらごめんなさい
2008-04-20 日 12:01:16 | URL | トロッコ [編集]
いえいえ
そういうのも可能ですよ。
私も自分で使ってて、不便というか、細かい音量調整が弱点でした。
2008-04-21 月 02:18:55 | URL | 管理人 [編集]
上に書いた機能を実装しますか?
上に書いたような機能を初めから実装するんですか?
私はこれ見て便利だと思います。
2008-04-21 月 13:37:04 | URL | 臨月 [編集]
どっちかな?
ええと、「上に書いた」というのはトロッコさんの書いた音量調整のことでしょうか?
便利そうに思ったのなら、記事内容じゃなくてそっちですよね?
プラグインの開発はまだしません。
だれか他の人が作ってくれないかなー、と考えてのプラグインなので。
ただ、音量調整自体は別の形で、もう少しアクセスしやすい場所に持ってこようとは思ってます。
2008-04-21 月 16:09:38 | URL | 管理人 [編集]
トロッコさんの書いた方です。
>>ええと、「上に書いた」というのはトロッコさんの書いた音量調整のことでしょうか?

はいそうです。ぜひ実装してほしいです。
2008-04-21 月 22:44:07 | URL | 臨月 [編集]
プラグインを作っているのですが、戻りの反映がうまくいきません
試しにv175に付属のサンプルを動かしてみると、本来ダイアログ上で変えた内容が反映されるのだと思うのですが、既にそれが動いていない状態です
どこかのバージョンで標準入力がおかしくなっていませんか?
2008-06-02 月 14:23:43 | URL | 菜梨 [編集]
すみません大変なことが
よくよく調べてみると、pluginの仕組み全然動いていませんでした。
そもそも、標準入力を読むのがVB6のデバッグ実行ならちゃんと働くのに、コンパイルしてexeにするとどうやっても動きません。(pluginだけEXEのテストを忘れていました)
なので、大変申し訳ないのですが、確実に動くように受け取りもファイルを使うように仕様変更します。
具体的には受け渡しファイルに結果を上書きしてください。

開発用に修正したutau実行モジュールとプラグインの修正サンプルソースを用意しました。
http://utau2008.web.fc2.com/newfile.html
正式アナウンスと修正リリースは後ほどしますが取り急ぎ。
2008-06-02 月 21:32:15 | URL | あめや [編集]
そうだったのですねorz
結構前から受け取りは試していたのですが、標準出力ということで、コマンドラインでテストしていたので気がつきませんでした
開発用で試したところ、うまく反映されました
ありがとうございます
2008-06-02 月 23:54:12 | URL | 菜梨 [編集]
プラグインが表示されません
プラグインを作ろうと考えているのですが、サンプルプラグインをpluginsフォルダに入れているのに、ツール>プラグイン のメニューの所に「(なし)」と表示されるだけで、プラグインが起動できません。
違う場所にUTAUをインストールしてみたりしましたが、全く同じでした。

解決する方法などあるのでしょうか?
2008-06-12 木 19:07:02 | URL | [編集]
確認してください
以下のチェック項目を確認してください。

1.サンプルフォルダを丸ごとpluginsの下にコピーしましたか?

2.「[インストールディレクトリ]\plugins\sample」の下にplugin.txtと実行ファイルは入っていますか?

3.余分なフォルダはできていませんか?
例:「[インストールディレクトリ]\plugins\sample\sample」×

4.plugin.txtに名前と実行ファイル名は記述されていますか?
----サンプルの----
name=スクリプト表示
execute=utauplugin.exe
-------------------

5.プラグインを配置したディレクトリとは別のUTAU.exeを実行していませんか?

以上ですが、いかがでしょうか?
2008-06-12 木 19:43:28 | URL | あめや [編集]
すべて確認しましたが、何も問題はありませんでした。

何が原因なのでしょうかねぇ...orz
2008-06-12 木 19:52:08 | URL | [編集]
それでは
Zip版は始めからサンプルプラグインが入っていて、
解凍後、何もしないでもサンプルプラグインがメニューに出るようになっているのですが、
もし試していないなら、最新のzip版をダウンロードして試していただけますか?
それでもダメとなるとちょっとお手上げなんですが……。
ちなみにOSはVista? XP?
2008-06-12 木 21:54:25 | URL | あめや [編集]
元々それで試してみてたんですが、無理でした。
ちなみにWindows XPです。
2008-06-13 金 18:04:08 | URL | [編集]
できました
ずっと表示させる方法を模索していたのですが、原因がわかりました。
結局、ドライブの設定を「ドライブを圧縮してディスク容量を空ける」の設定にしていたのが原因でした。
pluginsフォルダだけその設定を詳細設定で外すとUTAUプラグインが正常に表示されました。
2008-07-25 金 13:44:32 | URL | [編集]
コメントの投稿

管理者にだけ表示を許可する