Lib UTAU ヘルプ
TUtauData
最終更新:
libutau
-
view
概要
TUtauData は、Lib UTAU の中心となるクラスです。UTAU 本体から受け取るパイプファイルの内容全体を管理します。
TUtauData を頂点とするデータの has a 関係は、以下のようになっています。
- TUtauData
- 1 個の TUtauSectionVersion([#VERSION] セクション)
- 1 個の TUtauSectionSettings([#SETTING] セクション)
- 複数個の TGenonSettings(原音設定)
- 複数個の TUtauSectionNote(音符セクション([#0001] など))
TUtauData は、各セクションへのアクセサを提供するほか、音符セクションの追加・削除などを行うことができます。
また、UTAU 本体とのパイプファイルのやり取り(入出力)の機能も提供します。
public メンバ関数
コンストラクタ
TUtauData();
特段何もしません。
デストラクタ
~TUtauData();
特段何もしません。
AddSectionNote()
status_t AddSectionNote(const TUtauSectionNote& oSectionNote);
音符セクションを末尾に追加します。
UTAU 上に音符の追加を反映させるためには、追加する音符セクションのセクション名を SECTION_NAME_INSERT にする必要があります。
AddSectionNote() を呼びだすと、以前に SectionNoteAt() で取得したポインタは無効になります。
- 引数
- oSectionNote ... 追加したい音符セクションのデータです。
- 返値
- B_OK ... 正常に追加できました。
- B_ERROR ... 何らかのエラーが発生しました。
CountSectionNotes()
int32 CountSectionNotes() const;
音符セクションの数を返します。[#PREV] セクションや [#NEXT] セクションがある場合、それらも数に含まれます。
- 引数
- 無し
- 返値
- 音符セクションの数
Export()
status_t Export(const string& oPath) const;
変更内容をパイプファイルに書き出します。変更されていない部分は書き出しません。
- 引数
- oPath ... パイプファイルのパスです。
- 返値
- B_OK ... 正常にパイプファイルに書き出せました。
- B_ERROR ... 何らかのエラーが発生しました。
InsertSectionNote()
status_t InsertSectionNote(const TUtauSectionNote& oSectionNote, int32 oIndex);
音符セクションを挿入します(途中に追加します)。
UTAU 上に音符の挿入を反映させるためには、挿入する音符セクションのセクション名を SECTION_NAME_INSERT にする必要があります。
InsertSectionNote() を呼びだすと、以前に SectionNoteAt() で取得したポインタは無効になります。
- 引数
- oSectionNote ... 挿入したい音符セクションのデータです。
- oIndex ... 挿入する位置です。oIndex の直前に挿入されます。0 なら先頭、CountSectionNotes() なら末尾に挿入されます。
- 返値
- B_OK ... 正常に追加できました。
- B_ERROR ... 何らかのエラーが発生しました。
RemoveSectionNote()
status_t RemoveSectionNote(int32 oIndex);
音符セクションを削除します。
RemoveSectionNote() で音符を削除しても、UTAU 上では意図した削除にならないことに注意して下さい。UTAU 上に音符の削除を反映させるためには、RemoveSectionNote() 関数を使うのではなく、音符のセクション名を SECTION_NAME_DELETE に設定します。
RemoveSectionNote() を呼びだすと、以前に SectionNoteAt() で取得したポインタは無効になります。
- 引数
- oIndex ... 削除する位置です。0 なら先頭、CountSectionNotes()-1 なら末尾の音符を削除します。
- 返値
- B_OK ... 正常に追加できました。
- B_ERROR ... 何らかのエラーが発生しました。
ReplaceSectionNote()
status_t ReplaceSectionNote(const TUtauSectionNote& oSectionNote, int32 oIndex);
音符セクションを置換します。
ReplaceSectionNote() を呼びだすと、以前に SectionNoteAt() で取得したポインタは無効になります。
- 引数
- oSectionNote ... 置換したい音符セクションのデータです。
- oIndex ... 置換する位置です。0 なら先頭、CountSectionNotes()-1 なら末尾の音符を置換します。
- 返値
- B_OK ... 正常に追加できました。
- B_ERROR ... 何らかのエラーが発生しました。
SectionNoteAt()
const TUtauSectionNote* SectionNoteAt(int32 oIndex) const;
TUtauSectionNote* SectionNoteAt(int32 oIndex);
音符セクション([#PREV][#NEXT] セクションを含む)へのポインタを取得します。
- 引数
- oIndex ... 取得したい音符セクションのインデックス。0~CountSectionNotes()-1 の範囲で指定して下さい。
[#PREV] セクションがある場合、oIndex に 0 を指定すると [#PREV] セクションが返ります。[#PREV] セクションがない場合、oIndex に 0 を指定すると、最初の選択音符のセクションが返ります。
- oIndex ... 取得したい音符セクションのインデックス。0~CountSectionNotes()-1 の範囲で指定して下さい。
- 返値
- 音符セクションへのポインタ。インデックスが不正な場合は NULL が返ります。
SectionNotesNormalBegin()
int32 SectionNotesNormalBegin() const;
音符セクションのうち、[#PREV] を除いて先頭のセクションのインデックスを返します。
すなわち、[#PREV] セクションが無い場合は 0 を返し、[#PREV] セクションがある場合は 1 を返します。
- 引数
- 無し
- 返値
- [#PREV] を除いて先頭のセクションのインデックス
SectionNotesNormalEnd()
int32 SectionNotesNormalEnd() const;
音符セクションのうち、[#NEXT] を除いて末尾のセクションのインデックスを返します。
有効値 +1 が返ってくることに注意して下さい。STL の end() のようなイメージです。
すなわち、[#NEXT] セクションが無い場合は CountSectionNotes() と同じ値が返り、[#NEXT] セクションがある場合は CountSectionNotes()-1 が返ります。いずれの場合も SectionNoteAt(SectionNotesNormalEnd()-1) で、[#NEXT] を除いて末尾のセクションにアクセスできます。
- 引数
- 無し
- 返値
- [#NEXT] を除いて末尾のセクションのインデックス
SectionSettings()
const TUtauSectionSettings* SectionSettings() const;
[#SETTING] セクションへのポインタを取得します。
- 引数
- 無し
- 返値
- [#SETTING] セクションへのポインタ
SectionVersion()
const TUtauSectionVersion* SectionVersion() const;
[#VERSION] セクションへのポインタを取得します。
- 引数
- 無し
- 返値
- [#VERSION] セクションへのポインタ
SetTo()
status_t SetTo(const string& oPath);
UTAU 本体から渡されるパイプファイルの内容をすべて読み込みます。
- 引数
- oPath ... パイプファイルのパスです。
- 返値
- B_OK ... 正常にパイプファイルを読み込めました。
- B_ERROR ... 何らかのエラーが発生しました。
public メンバ変数
public メンバ変数はありません。
設計思想
TUtauData は、基本的には各セクションのデータを保持し、各セクションへのアクセサを提供するだけです。セクションの前後関係も管理しています。
各セクションのデータ操作は、各セクションに任せています。