2016年12月24日土曜日

VOCALOID Editorで使用できるJobプラグイン APIを調べる

LUA言語を覚えるのも兼ねてJobプラグインを作ってみているけれど(コレとか)、「VOCALOID Editorで用意されているAPIって、もっとあるのでは? バージョンアップしてるのだし」と思ったので調べてみます。

APIを引き抜く

V3時代のリファレンスマニュアルによれば、LUAのグローバル変数【_G】にAPI名が一覧上に格納されているらしい。ここからAPI名っぽいものを探して引き抜くことにします。“探す”といっても、functionに該当するモノをfor文でクルクル回すだけなんですけどね。

for文を追加したJobプラグインを作成してVOCALOID Editorで実行すれば抜き出し完了。単純に抜き出しただけだと何故かLUA言語の関数も含まれていたので、VOCALOID APIっぽいもの(頭文字が「VS」)に絞ると、下記55個がヒット。

No.API名
1VSDlgAddField
2VSDlgDoModal
3VSDlgGetBoolValue
4VSDlgGetFloatValue
5VSDlgGetIntValue
6VSDlgGetStringValue
7VSDlgSetDialogTitle
8VSGetAudioDeviceName
9VSGetControlAt
10VSGetDefaultControlValue
11VSGetMasterTune
12VSGetMusicalPart
13VSGetMusicalPartSinger
14VSGetNextControl
15VSGetNextMonoWAVPart
16VSGetNextNote
17VSGetNextNoteEx
18VSGetNextNoteExpression
19VSGetNextStereoWAVPart
20VSGetNextTempo
21VSGetNextTimeSig
22VSGetNoteExpressionAt
23VSGetPitchSnapMode
24VSGetPreMeasure
25VSGetPreMeasureInTick
26VSGetResolution
27VSGetSequenceName
28VSGetSequencePath
29VSGetStereoWAVPart
30VSGetTempoAt
31VSGetTimeSigAt
32VSInsertControl
33VSInsertNote
34VSInsertNoteEx
35VSInsertNoteExpression
36VSMessageBox
37VSRemoveControl
38VSRemoveNote
39VSRemoveNoteExpression
40VSSeekToBeginControl
41VSSeekToBeginMonoWAVPart
42VSSeekToBeginNote
43VSSeekToBeginNoteExpression
44VSSeekToBeginStereoWAVPart
45VSSeekToBeginTempo
46VSSeekToBeginTimeSig
47VSSetMasterTune
48VSSetPitchSnapMode
49VSUpdateControl
50VSUpdateControlAt
51VSUpdateMusicalPart
52VSUpdateNote
53VSUpdateNoteEx
54VSUpdateNoteExpression
55VSUpdateNoteExpressionAt

新種?

抜き出したAPI55個の中で、気になったのは次の9個。「PitchSnapMode」はV4で追加された機能のはず。「NoteExpression」は何だろう? エクスプレッションピッチのことかな?

No.API名
1VSGetMasterTune
2VSGetNextNoteExpression
3VSGetNextStereoWAVPart
4VSGetNoteExpressionAt
5VSGetPitchSnapMode
6VSSetMasterTune
7VSSetPitchSnapMode
8VSUpdateNoteExpression
9VSUpdateNoteExpressionAt

元V3ユーザーとして気になったのは「MasterTune」と「NextStereoWAVPart」の2つ。

“MasterTune”ってことは、「全体の音程を調整できるってこと?」なのかと思って、VOCALOID Editorを見てみるとプリファレンスの[その他]に【マスターチューン】が追加されてました。いつの間にかできるようになってたんですね。

V3時代にはステレオWAVEファイルは1つしか取り込めなかったのですが、V4では複数取り込めるようになってました。1つのVSQXファイルで複数楽曲分のボーカルを作成できるようになったわけですね。そんな作り方はあまりしないでしょうけれど。。。利用シーンとしては、Aメロだけのオケ/Bメロだけのオケ/サビだけのオケをそれぞれ個別に取り込むような使い方ですかね? 1曲分フル尺でWAVEファイルを用意しなくてもよくなった、と。「VSGetNextStereoWAVPart」は次々にステレオWAVEファイルを参照するイメージでしょう、たぶん。

おまけ

API名を抜き出せたので、あとは使用方法を見つけ出さないといけないですね。「NoteExpression」については何を指してるのかも不明ですが。エクスプレッションピッチはVOCALOID Editorが自動で調整するパラメーターのはずだから、ユーザーが勝手に触れられないんじゃないかな?

2016年11月20日日曜日

Bloggerに音楽ファイルを貼り付ける方法を考える

音楽ファイルをBloggerに貼り付ける方法を変更したので、そのメモ書きです。

Blogger単体では無理

Bloggerでは画像については一括で管理して記事中に貼り付けることができます。でも、MP3のような音楽ファイルについては同様な機能が無くて、外部のサービスを使って参照するようにしないとダメ。これまでは『TmBox』に音楽を投稿して、そのリンクをブログ記事に貼り付けるようにしてました。

ところが、最近になって『TmBox』は仕様変更をしていたようで、自分のブログ記事を眺めてると音楽ファイルのリンクが途切れていたり、再生プレイヤーが非表示なってしまっていたり、とレイアウトが崩壊しているではないですか! どうやら外部サイトへの貼り付け機能も削除されてしまったみたいです。これは困った。。。実験的に作ってみた音源を貼り付けるのに便利だったのになぁ。

外部のサービスが仕様変更するたびにレイアウトに気を配るのはメンドウです。でも、わざわざ他サイトに移動してもらって聞いてもらうより、ブログ記事内で聞けるほうが便利だと思うので諦めたくもない。自分でコントロールできるようにするには、自サーバーを用意して、そのサーバーに音楽ファイルを置き、プレイヤーをブログに設置する、というのが良さそうです。最近だとHTML5のaudioタグを使うともっとラクチンになりそう。

DropBoxの出番

自サーバーを用意するのは大変なので、DropBoxの共有機能で代用してみることにします。次の手順でプレイヤーを設置できます。

  1. DropBoxに音楽ファイルを置く
  2. 音楽ファイルを共有設定オンにしてリンクを取得する
  3. ブログ記事内でプレイヤーを設置したい場所にaudioタグを置く
  4. audioタグの属性srcに音楽ファイルのリンクを入れる
  5. 音楽ファイルのリンクの末尾「?dl=0」を「?dl=1」に変更する

この作業を繰り返して全ファイルを移しました。思ってたよりファイル数が少なくて良かった。。。こんなかんじになりました。

おまけ

全てのブラウザでHTML5の対応がされているわけではないから、JavaScriptで場合分けする必要があるかもですね。IEに関してはバージョン判定するようにしてはいるけれど、それ以外は後々かな。

2016年11月19日土曜日

VOCALOID 英語DBで単語が足りなかったのでユーザー辞書を設定する

YAMAHAから新しいVOCALOIDライブラリが発売されましたね。CYBER SONGMAN。カッコイイ声!

CYBER SONGMANを買うとアメリカ英語な発音ができるようになるユーザー辞書も付いてくるらしい。“CYBER SONGMAN専用”と書いてあるから、Sachikoの『Sachikobushi』みたく他のライブラリでは使用できない仕様なのだろうか? そもそも英語DBにしか設定できない“ユーザー辞書”ってどう使うんだ?

基本、気にしなくて良い

日本語DBのVOCALOIDを使っていると全く意識しないけれど、「1ノートにつき、1母音」が原則(音素記号を直接編集すれば、そこそこ母音を追加できるのは実験済み)となっている。英語DBでも同じで「1ノートにつき、1母音」となる。

例えば、「car」であれば1ノート。「apple」は2ノート必要になる。英単語を歌詞として入力するとVOCALOID Editorが自動的に英単語を母音の単位で分割して各ノートに割り当ててくれる。歌詞の流し込み機能を使うときはノートの数と“英単語の母音の数”が一致するように注意する。

ただし、VOCALOID Editorは全ての英単語を自動的に母音分割できる訳ではなく、VOCALOID Editor内の辞書に登録されている英単語だけが対象になっている。あんまり使用されない英単語や専門用語などは登録されてないので母音分割されない。たとえば、「freewheelingly」はVOCALOID Editorに登録されてない英単語なので母音分割に失敗する。失敗すると「うー」としか歌ってくれなくなる!

ユーザー辞書の出番

母音分割に失敗してしまうような英単語をVOCALOID Editorがキチンと処理できるようにユーザー辞書へ登録してあげる。ユーザー辞書に1度登録してしまえば、辞書へ登録したように歌ってくれるようになる。

英単語を登録したいユーザー辞書を選択(初めて登録するときは新規作成)して、英単語を入力する。英単語の登録方法は、【英単語を母音分割してほしい箇所にハイフンを挿入した状態で入力】⇒【登録する英単語の発音をVOCALOIDの音素記号で入力】⇒[追加]ボタンをクリック、の3ステップ。登録画面に載っているサンプルを見ながら適切な音素記号を探し出す必要がある。コレが地味に大変。登録したい単語と似たような単語があったり、複数の単語に分解できたりするのであれば、それを参考に音素記号を決めたほうがラクだと思う。

母音分割の失敗例として挙げた「freewheelingly」もユーザー辞書に登録後は4ノートに分割されるようになる。発音も登録したとおりの音素記号を使うようになる。

おまけ

VOCALOID Editorに予め登録されている英単語は何を基準に選ばれているのだろう? 「〇〇辞書 準拠」のようなかんじだろうか? VOCALOID Editor内の辞書を検索できると便利かな?