Lib UTAU ヘルプ
TUtauSectionNote
最終更新:
libutau
-
view
(工事中)
概要
TUtauSectionNote は、パイプファイルの音符 1 セクション分のデータを取り扱うクラスです。
TUtauSection クラスから派生しており、TUtauSection クラスの機能に加えて、音符や休符に関する情報の設定・取得を行う機能を備えています。
public メンバ関数
SetCorrectedPitch()
status_t SetCorrectedPitch(const vector<TPointD>& oCorrectedPitch);
Mode 2 ピッチを設定します。
Mode 2 ピッチは TUtauSection::SetValue() で KEY_NAME_PBS や KEY_NAME_PBW などによっても設定することができますが、SetCorrectedPitch() はより直感的に設定できます。
引数は vector<TPointD> なので任意の数の TPointD を与えることができ、TPointD 1 つがピッチ制御点 1 つに対応します。
TPointD::x がピッチ制御点の、音符の先頭からの時刻(ミリ秒単位)です。音符の先頭というのは、先行発声は考慮されないことに注意して下さい。従って、先行発声の部分のピッチを指定する場合は、TPointD::x が負の値を取ることになります。例えば、先行発声が 30 ミリ秒の音符の場合、先行発声の部分のピッチを制御したければ、TPointD::x に -30 を与える必要があります。また、KEY_NAME_PBW とは異なり、TPointD::x は前のピッチ制御点との差分ではありません。常に、音符の先頭からの時刻ですので注意して下さい。
TPointD::y がピッチ制御点の、ピッチシフト量です。単位は 10 セントです。つまり、y を 10 にすると半音上がり、y を -10 にすると半音下がります。これは KEY_NAME_PBY での指定方法と同様です。
ここで例として、長さ 500 ミリ秒の音符を想定しましょう。先行発声は 30 ミリ秒とします(つまり合計で 530 ミリ秒の長さがあります)。
先行発声開始時に、半音下がったところのピッチから始まり、先行発声終了時(音符の始まり)に本来のピッチ(シフト 0)となり、音符の半分経過時に半音上がり、音符の終了時に再び本来のピッチとなるような制御をしたい場合は、以下のようなコードになるでしょう。
vector<TPointD> aPitches; aPitches.push_back(TPointD(-30, -10)); aPitches.push_back(TPointD( 0, 0)); aPitches.push_back(TPointD(250, 10)); aPitches.push_back(TPointD(500, 0)); aUtauData.SectionNoteAt(aIndex)->SetCorrectedPitch(aPitches);
- 引数
- oCorrectedPitch ... ピッチ制御点群です。
- 返値
- B_OK ... ピッチを設定できました。
- B_ERROR ... ピッチを設定できませんでした。
public メンバ変数
public メンバ変数はありません。
設計思想
(工事中)